diff --git a/localization/i18n/OrcaSlicer.pot b/localization/i18n/OrcaSlicer.pot index db3174b0e48..4fea2ad475c 100644 --- a/localization/i18n/OrcaSlicer.pot +++ b/localization/i18n/OrcaSlicer.pot @@ -8,7 +8,7 @@ msgid "" msgstr "" "Project-Id-Version: PACKAGE VERSION\n" "Report-Msgid-Bugs-To: \n" -"POT-Creation-Date: 2024-07-30 10:20+0900\n" +"POT-Creation-Date: 2024-08-03 18:54+0200\n" "PO-Revision-Date: YEAR-MO-DA HO:MI+ZONE\n" "Last-Translator: FULL NAME \n" "Language-Team: LANGUAGE \n" @@ -11054,6 +11054,9 @@ msgid "" "speed to print. For 100%% overhang, bridge speed is used." msgstr "" +msgid "Filament to print walls" +msgstr "" + msgid "" "Line width of inner wall. If expressed as a %, it will be computed over the " "nozzle diameter." @@ -11087,12 +11090,21 @@ msgid "" "environment variables." msgstr "" +msgid "Printer type" +msgstr "" + +msgid "Type of the printer" +msgstr "" + msgid "Printer notes" msgstr "" msgid "You can put your notes regarding the printer here." msgstr "" +msgid "Printer variant" +msgstr "" + msgid "Raft contact Z distance" msgstr "" @@ -11542,6 +11554,12 @@ msgid "" "internal solid infill" msgstr "" +msgid "Solid infill" +msgstr "" + +msgid "Filament to print solid infill" +msgstr "" + msgid "" "Line width of internal solid infill. If expressed as a %, it will be " "computed over the nozzle diameter." @@ -14443,151 +14461,151 @@ msgstr "" msgid "User cancelled." msgstr "" - -#: resources/data/hints.ini: [hint:Precise wall] -msgid "Precise wall\nDid you know that turning on precise wall can improve precision and layer consistency?" -msgstr "" - -#: resources/data/hints.ini: [hint:Sandwich mode] -msgid "Sandwich mode\nDid you know that you can use sandwich mode (inner-outer-inner) to improve precision and layer consistency if your model doesn't have very steep overhangs?" -msgstr "" - -#: resources/data/hints.ini: [hint:Chamber temperature] -msgid "Chamber temperature\nDid you know that OrcaSlicer supports chamber temperature?" -msgstr "" - -#: resources/data/hints.ini: [hint:Calibration] -msgid "Calibration\nDid you know that calibrating your printer can do wonders? Check out our beloved calibration solution in OrcaSlicer." -msgstr "" - -#: resources/data/hints.ini: [hint:Auxiliary fan] -msgid "Auxiliary fan\nDid you know that OrcaSlicer supports Auxiliary part cooling fan?" -msgstr "" - -#: resources/data/hints.ini: [hint:Air filtration] -msgid "Air filtration/Exhaust Fan\nDid you know that OrcaSlicer can support Air filtration/Exhaust Fan?" -msgstr "" - -#: resources/data/hints.ini: [hint:G-code window] -msgid "G-code window\nYou can turn on/off the G-code window by pressing the C key." -msgstr "" - -#: resources/data/hints.ini: [hint:Switch workspaces] -msgid "Switch workspaces\nYou can switch between Prepare and Preview workspaces by pressing the Tab key." -msgstr "" - -#: resources/data/hints.ini: [hint:How to use keyboard shortcuts] -msgid "How to use keyboard shortcuts\nDid you know that Orca Slicer offers a wide range of keyboard shortcuts and 3D scene operations." -msgstr "" - -#: resources/data/hints.ini: [hint:Reverse on odd] -msgid "Reverse on odd\nDid you know that Reverse on odd feature can significantly improve the surface quality of your overhangs?" -msgstr "" - -#: resources/data/hints.ini: [hint:Cut Tool] -msgid "Cut Tool\nDid you know that you can cut a model at any angle and position with the cutting tool?" -msgstr "" - -#: resources/data/hints.ini: [hint:Fix Model] -msgid "Fix Model\nDid you know that you can fix a corrupted 3D model to avoid a lot of slicing problems on the Windows system?" -msgstr "" - -#: resources/data/hints.ini: [hint:Timelapse] -msgid "Timelapse\nDid you know that you can generate a timelapse video during each print?" -msgstr "" - -#: resources/data/hints.ini: [hint:Auto-Arrange] -msgid "Auto-Arrange\nDid you know that you can auto-arrange all objects in your project?" -msgstr "" - -#: resources/data/hints.ini: [hint:Auto-Orient] -msgid "Auto-Orient\nDid you know that you can rotate objects to an optimal orientation for printing by a simple click?" -msgstr "" - -#: resources/data/hints.ini: [hint:Lay on Face] -msgid "Lay on Face\nDid you know that you can quickly orient a model so that one of its faces sits on the print bed? Select the \"Place on face\" function or press the F key." -msgstr "" - -#: resources/data/hints.ini: [hint:Object List] -msgid "Object List\nDid you know that you can view all objects/parts in a list and change settings for each object/part?" -msgstr "" - -#: resources/data/hints.ini: [hint:Search Functionality] -msgid "Search Functionality\nDid you know that you use the Search tool to quickly find a specific Orca Slicer setting?" -msgstr "" - -#: resources/data/hints.ini: [hint:Simplify Model] -msgid "Simplify Model\nDid you know that you can reduce the number of triangles in a mesh using the Simplify mesh feature? Right-click the model and select Simplify model." -msgstr "" - -#: resources/data/hints.ini: [hint:Slicing Parameter Table] -msgid "Slicing Parameter Table\nDid you know that you can view all objects/parts on a table and change settings for each object/part?" -msgstr "" - -#: resources/data/hints.ini: [hint:Split to Objects/Parts] -msgid "Split to Objects/Parts\nDid you know that you can split a big object into small ones for easy colorizing or printing?" -msgstr "" - -#: resources/data/hints.ini: [hint:Subtract a Part] -msgid "Subtract a Part\nDid you know that you can subtract one mesh from another using the Negative part modifier? That way you can, for example, create easily resizable holes directly in Orca Slicer." -msgstr "" - -#: resources/data/hints.ini: [hint:STEP] -msgid "STEP\nDid you know that you can improve your print quality by slicing a STEP file instead of an STL?\nOrca Slicer supports slicing STEP files, providing smoother results than a lower resolution STL. Give it a try!" -msgstr "" - -#: resources/data/hints.ini: [hint:Z seam location] -msgid "Z seam location\nDid you know that you can customize the location of the Z seam, and even paint it on your print, to have it in a less visible location? This improves the overall look of your model. Check it out!" -msgstr "" - -#: resources/data/hints.ini: [hint:Fine-tuning for flow rate] -msgid "Fine-tuning for flow rate\nDid you know that flow rate can be fine-tuned for even better-looking prints? Depending on the material, you can improve the overall finish of the printed model by doing some fine-tuning." -msgstr "" - -#: resources/data/hints.ini: [hint:Split your prints into plates] -msgid "Split your prints into plates\nDid you know that you can split a model that has a lot of parts into individual plates ready to print? This will simplify the process of keeping track of all the parts." -msgstr "" - -#: resources/data/hints.ini: [hint:Speed up your print with Adaptive Layer Height] -msgid "Speed up your print with Adaptive Layer Height\nDid you know that you can print a model even faster, by using the Adaptive Layer Height option? Check it out!" -msgstr "" - -#: resources/data/hints.ini: [hint:Support painting] -msgid "Support painting\nDid you know that you can paint the location of your supports? This feature makes it easy to place the support material only on the sections of the model that actually need it." -msgstr "" - -#: resources/data/hints.ini: [hint:Different types of supports] -msgid "Different types of supports\nDid you know that you can choose from multiple types of supports? Tree supports work great for organic models, while saving filament and improving print speed. Check them out!" -msgstr "" - -#: resources/data/hints.ini: [hint:Printing Silk Filament] -msgid "Printing Silk Filament\nDid you know that Silk filament needs special consideration to print it successfully? Higher temperature and lower speed are always recommended for the best results." -msgstr "" - -#: resources/data/hints.ini: [hint:Brim for better adhesion] -msgid "Brim for better adhesion\nDid you know that when printing models have a small contact interface with the printing surface, it's recommended to use a brim?" -msgstr "" - -#: resources/data/hints.ini: [hint:Set parameters for multiple objects] -msgid "Set parameters for multiple objects\nDid you know that you can set slicing parameters for all selected objects at one time?" -msgstr "" - -#: resources/data/hints.ini: [hint:Stack objects] -msgid "Stack objects\nDid you know that you can stack objects as a whole one?" -msgstr "" - -#: resources/data/hints.ini: [hint:Flush into support/objects/infill] -msgid "Flush into support/objects/infill\nDid you know that you can save the wasted filament by flushing them into support/objects/infill during filament change?" -msgstr "" - -#: resources/data/hints.ini: [hint:Improve strength] -msgid "Improve strength\nDid you know that you can use more wall loops and higher sparse infill density to improve the strength of the model?" -msgstr "" - -#: resources/data/hints.ini: [hint:When need to print with the printer door opened] -msgid "When need to print with the printer door opened\nDid you know that opening the printer door can reduce the probability of extruder/hotend clogging when printing lower temperature filament with a higher enclosure temperature. More info about this in the Wiki." -msgstr "" - -#: resources/data/hints.ini: [hint:Avoid warping] -msgid "Avoid warping\nDid you know that when printing materials that are prone to warping such as ABS, appropriately increasing the heatbed temperature can reduce the probability of warping." -msgstr "" + +#: resources/data/hints.ini: [hint:Precise wall] +msgid "Precise wall\nDid you know that turning on precise wall can improve precision and layer consistency?" +msgstr "" + +#: resources/data/hints.ini: [hint:Sandwich mode] +msgid "Sandwich mode\nDid you know that you can use sandwich mode (inner-outer-inner) to improve precision and layer consistency if your model doesn't have very steep overhangs?" +msgstr "" + +#: resources/data/hints.ini: [hint:Chamber temperature] +msgid "Chamber temperature\nDid you know that OrcaSlicer supports chamber temperature?" +msgstr "" + +#: resources/data/hints.ini: [hint:Calibration] +msgid "Calibration\nDid you know that calibrating your printer can do wonders? Check out our beloved calibration solution in OrcaSlicer." +msgstr "" + +#: resources/data/hints.ini: [hint:Auxiliary fan] +msgid "Auxiliary fan\nDid you know that OrcaSlicer supports Auxiliary part cooling fan?" +msgstr "" + +#: resources/data/hints.ini: [hint:Air filtration] +msgid "Air filtration/Exhaust Fan\nDid you know that OrcaSlicer can support Air filtration/Exhaust Fan?" +msgstr "" + +#: resources/data/hints.ini: [hint:G-code window] +msgid "G-code window\nYou can turn on/off the G-code window by pressing the C key." +msgstr "" + +#: resources/data/hints.ini: [hint:Switch workspaces] +msgid "Switch workspaces\nYou can switch between Prepare and Preview workspaces by pressing the Tab key." +msgstr "" + +#: resources/data/hints.ini: [hint:How to use keyboard shortcuts] +msgid "How to use keyboard shortcuts\nDid you know that Orca Slicer offers a wide range of keyboard shortcuts and 3D scene operations." +msgstr "" + +#: resources/data/hints.ini: [hint:Reverse on odd] +msgid "Reverse on odd\nDid you know that Reverse on odd feature can significantly improve the surface quality of your overhangs?" +msgstr "" + +#: resources/data/hints.ini: [hint:Cut Tool] +msgid "Cut Tool\nDid you know that you can cut a model at any angle and position with the cutting tool?" +msgstr "" + +#: resources/data/hints.ini: [hint:Fix Model] +msgid "Fix Model\nDid you know that you can fix a corrupted 3D model to avoid a lot of slicing problems on the Windows system?" +msgstr "" + +#: resources/data/hints.ini: [hint:Timelapse] +msgid "Timelapse\nDid you know that you can generate a timelapse video during each print?" +msgstr "" + +#: resources/data/hints.ini: [hint:Auto-Arrange] +msgid "Auto-Arrange\nDid you know that you can auto-arrange all objects in your project?" +msgstr "" + +#: resources/data/hints.ini: [hint:Auto-Orient] +msgid "Auto-Orient\nDid you know that you can rotate objects to an optimal orientation for printing by a simple click?" +msgstr "" + +#: resources/data/hints.ini: [hint:Lay on Face] +msgid "Lay on Face\nDid you know that you can quickly orient a model so that one of its faces sits on the print bed? Select the \"Place on face\" function or press the F key." +msgstr "" + +#: resources/data/hints.ini: [hint:Object List] +msgid "Object List\nDid you know that you can view all objects/parts in a list and change settings for each object/part?" +msgstr "" + +#: resources/data/hints.ini: [hint:Search Functionality] +msgid "Search Functionality\nDid you know that you use the Search tool to quickly find a specific Orca Slicer setting?" +msgstr "" + +#: resources/data/hints.ini: [hint:Simplify Model] +msgid "Simplify Model\nDid you know that you can reduce the number of triangles in a mesh using the Simplify mesh feature? Right-click the model and select Simplify model." +msgstr "" + +#: resources/data/hints.ini: [hint:Slicing Parameter Table] +msgid "Slicing Parameter Table\nDid you know that you can view all objects/parts on a table and change settings for each object/part?" +msgstr "" + +#: resources/data/hints.ini: [hint:Split to Objects/Parts] +msgid "Split to Objects/Parts\nDid you know that you can split a big object into small ones for easy colorizing or printing?" +msgstr "" + +#: resources/data/hints.ini: [hint:Subtract a Part] +msgid "Subtract a Part\nDid you know that you can subtract one mesh from another using the Negative part modifier? That way you can, for example, create easily resizable holes directly in Orca Slicer." +msgstr "" + +#: resources/data/hints.ini: [hint:STEP] +msgid "STEP\nDid you know that you can improve your print quality by slicing a STEP file instead of an STL?\nOrca Slicer supports slicing STEP files, providing smoother results than a lower resolution STL. Give it a try!" +msgstr "" + +#: resources/data/hints.ini: [hint:Z seam location] +msgid "Z seam location\nDid you know that you can customize the location of the Z seam, and even paint it on your print, to have it in a less visible location? This improves the overall look of your model. Check it out!" +msgstr "" + +#: resources/data/hints.ini: [hint:Fine-tuning for flow rate] +msgid "Fine-tuning for flow rate\nDid you know that flow rate can be fine-tuned for even better-looking prints? Depending on the material, you can improve the overall finish of the printed model by doing some fine-tuning." +msgstr "" + +#: resources/data/hints.ini: [hint:Split your prints into plates] +msgid "Split your prints into plates\nDid you know that you can split a model that has a lot of parts into individual plates ready to print? This will simplify the process of keeping track of all the parts." +msgstr "" + +#: resources/data/hints.ini: [hint:Speed up your print with Adaptive Layer Height] +msgid "Speed up your print with Adaptive Layer Height\nDid you know that you can print a model even faster, by using the Adaptive Layer Height option? Check it out!" +msgstr "" + +#: resources/data/hints.ini: [hint:Support painting] +msgid "Support painting\nDid you know that you can paint the location of your supports? This feature makes it easy to place the support material only on the sections of the model that actually need it." +msgstr "" + +#: resources/data/hints.ini: [hint:Different types of supports] +msgid "Different types of supports\nDid you know that you can choose from multiple types of supports? Tree supports work great for organic models, while saving filament and improving print speed. Check them out!" +msgstr "" + +#: resources/data/hints.ini: [hint:Printing Silk Filament] +msgid "Printing Silk Filament\nDid you know that Silk filament needs special consideration to print it successfully? Higher temperature and lower speed are always recommended for the best results." +msgstr "" + +#: resources/data/hints.ini: [hint:Brim for better adhesion] +msgid "Brim for better adhesion\nDid you know that when printing models have a small contact interface with the printing surface, it's recommended to use a brim?" +msgstr "" + +#: resources/data/hints.ini: [hint:Set parameters for multiple objects] +msgid "Set parameters for multiple objects\nDid you know that you can set slicing parameters for all selected objects at one time?" +msgstr "" + +#: resources/data/hints.ini: [hint:Stack objects] +msgid "Stack objects\nDid you know that you can stack objects as a whole one?" +msgstr "" + +#: resources/data/hints.ini: [hint:Flush into support/objects/infill] +msgid "Flush into support/objects/infill\nDid you know that you can save the wasted filament by flushing them into support/objects/infill during filament change?" +msgstr "" + +#: resources/data/hints.ini: [hint:Improve strength] +msgid "Improve strength\nDid you know that you can use more wall loops and higher sparse infill density to improve the strength of the model?" +msgstr "" + +#: resources/data/hints.ini: [hint:When need to print with the printer door opened] +msgid "When need to print with the printer door opened\nDid you know that opening the printer door can reduce the probability of extruder/hotend clogging when printing lower temperature filament with a higher enclosure temperature. More info about this in the Wiki." +msgstr "" + +#: resources/data/hints.ini: [hint:Avoid warping] +msgid "Avoid warping\nDid you know that when printing materials that are prone to warping such as ABS, appropriately increasing the heatbed temperature can reduce the probability of warping." +msgstr "" diff --git a/localization/i18n/ca/OrcaSlicer_ca.po b/localization/i18n/ca/OrcaSlicer_ca.po index bfb8efd99fa..da702fafcf1 100644 --- a/localization/i18n/ca/OrcaSlicer_ca.po +++ b/localization/i18n/ca/OrcaSlicer_ca.po @@ -8,7 +8,7 @@ msgid "" msgstr "" "Project-Id-Version: \n" "Report-Msgid-Bugs-To: \n" -"POT-Creation-Date: 2024-06-30 15:44+0200\n" +"POT-Creation-Date: 2024-08-03 18:54+0200\n" "PO-Revision-Date: 2024-07-07 18:43+0200\n" "Last-Translator: \n" "Language-Team: \n" @@ -79,9 +79,6 @@ msgstr "Angle de farciment intel·ligent" msgid "On overhangs only" msgstr "Només als voladissos" -msgid "Auto support threshold angle: " -msgstr "Angle llindar de suport automàtic: " - msgid "Circle" msgstr "Cercle" @@ -101,6 +98,9 @@ msgstr "Permet pintar només les facetes seleccionades per: \"%1%\"" msgid "Highlight faces according to overhang angle." msgstr "Ressalteu les cares segons l'angle del voladís." +msgid "Auto support threshold angle: " +msgstr "Angle llindar de suport automàtic: " + msgid "No auto support" msgstr "No suports automàtics" @@ -4170,15 +4170,6 @@ msgstr "Temps total" msgid "Total cost" msgstr "Cost total" -msgid "up to" -msgstr "fins a" - -msgid "above" -msgstr "sobre" - -msgid "from" -msgstr "des de" - msgid "Color Scheme" msgstr "Esquema de color" @@ -4242,12 +4233,12 @@ msgstr "Canvis de filament" msgid "Cost" msgstr "Cost" -msgid "Color change" -msgstr "Canvi de color" - msgid "Print" msgstr "Imprimir" +msgid "Color change" +msgstr "Canvi de color" + msgid "Printer" msgstr "Impressora" @@ -6180,6 +6171,14 @@ msgstr "S'ha detectat un objecte amb múltiples peces" msgid "The file does not contain any geometry data." msgstr "El fitxer no conté cap dada de geometria." +msgid "" +"Your object appears to be too large. It will be scaled down to fit the heat " +"bed automatically." +msgstr "" + +msgid "Object too large" +msgstr "Objecte massa gran" + msgid "" "Your object appears to be too large, Do you want to scale it down to fit the " "heat bed automatically?" @@ -6187,9 +6186,6 @@ msgstr "" "El teu objecte sembla ser massa gran, Vols reduir-lo per adaptar-lo " "automàticament al llit?" -msgid "Object too large" -msgstr "Objecte massa gran" - msgid "Export STL file:" msgstr "Exportar el fitxer STL:" @@ -6568,9 +6564,6 @@ msgstr "Voleu continuar?" msgid "Language selection" msgstr "Selecció d'idiomes" -msgid "Switching application language while some presets are modified." -msgstr "Canviant l'idioma de l'aplicació mentre es modifiquen alguns perfils." - msgid "Changing application language" msgstr "Canviant de l'idioma de l'aplicació" @@ -6774,6 +6767,12 @@ msgstr "" "Amb aquesta opció habilitada, podeu enviar una tasca a diversos dispositius " "alhora i gestionar múltiples dispositius." +msgid "Auto arrange plate after cloning" +msgstr "" + +msgid "Auto arrange plate after object cloning" +msgstr "" + msgid "Network" msgstr "Xarxa" @@ -7706,8 +7705,8 @@ msgstr "" msgid "" "When recording timelapse without toolhead, it is recommended to add a " "\"Timelapse Wipe Tower\" \n" -"by right-click the empty position of build plate and choose \"Add " -"Primitive\"->\"Timelapse Wipe Tower\"." +"by right-click the empty position of build plate and choose \"Add Primitive" +"\"->\"Timelapse Wipe Tower\"." msgstr "" "Quan graveu timelapse sense capçal d'impressió, es recomana afegir una " "\"Torre de Purga Timelapse\" \n" @@ -7784,12 +7783,21 @@ msgstr "Filament de suport" msgid "Tree supports" msgstr "Suports d'arbre" -msgid "Skirt" -msgstr "Faldilla" +msgid "Multimaterial" +msgstr "Multimaterial" msgid "Prime tower" msgstr "Torre de Purga" +msgid "Filament for Features" +msgstr "" + +msgid "Ooze prevention" +msgstr "" + +msgid "Skirt" +msgstr "Faldilla" + msgid "Special mode" msgstr "Ajustos especials" @@ -7843,6 +7851,9 @@ msgstr "" "Rang de temperatures del broquet recomanat per a aquest filament. 0 " "significa que no es configura" +msgid "Flow ratio and Pressure Advance" +msgstr "" + msgid "Print chamber temperature" msgstr "Temperatura de la cambra d'impressió" @@ -7952,9 +7963,6 @@ msgstr "Codi-G Inicial del Filament" msgid "Filament end G-code" msgstr "Codi-G Final del Filament" -msgid "Multimaterial" -msgstr "Multimaterial" - msgid "Wipe tower parameters" msgstr "Paràmetres de la Torre de Purga" @@ -8044,12 +8052,30 @@ msgstr "Limitació de la sacsejada( Jerk )" msgid "Single extruder multimaterial setup" msgstr "Configuració d'extrusor únic multimaterial" +msgid "Number of extruders of the printer." +msgstr "" + +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 "" + +msgid "Nozzle diameter" +msgstr "Diàmetre del broquet( nozzle )" + msgid "Wipe tower" msgstr "Torre de Purga" msgid "Single extruder multimaterial parameters" msgstr "Paràmetres d'extrusor únic multimaterial" +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 "" + msgid "Layer height limits" msgstr "Límits d'alçada de capa" @@ -8559,11 +8585,8 @@ msgstr "Llista d'objectes" msgid "Import geometry data from STL/STEP/3MF/OBJ/AMF files" msgstr "Importar dades de geometria des de fitxers STL/STEP/3MF/OBJ/AMF" -msgid "⌘+Shift+G" -msgstr "⌘+Maj+G" - -msgid "Ctrl+Shift+G" -msgstr "Ctrl+Maj+G" +msgid "Shift+G" +msgstr "" msgid "Paste from clipboard" msgstr "Enganxa des del porta-retalls" @@ -8614,33 +8637,18 @@ msgstr "Maj+Tab" msgid "Collapse/Expand the sidebar" msgstr "Replegar/Expandir barra lateral" -msgid "⌘+Any arrow" -msgstr "⌘+Qualsevol fletxa" +msgid "Any arrow" +msgstr "" msgid "Movement in camera space" msgstr "Moviment a l'espai de la càmera" -msgid "⌥+Left mouse button" -msgstr "⌥+Botó esquerre del ratolí" - msgid "Select a part" msgstr "Seleccionar una peça" -msgid "⌘+Left mouse button" -msgstr "⌘+Botó esquerre del ratolí" - msgid "Select multiple objects" msgstr "Seleccionar múltiples objectes" -msgid "Ctrl+Any arrow" -msgstr "Ctrl+Qualsevol fletxa" - -msgid "Alt+Left mouse button" -msgstr "Alt+Botó esquerre del ratolí" - -msgid "Ctrl+Left mouse button" -msgstr "Ctrl+Botó esquerre del ratolí" - msgid "Shift+Left mouse button" msgstr "Maj+Botó esquerre del ratolí" @@ -8743,24 +8751,12 @@ msgstr "Plataforma" msgid "Move: press to snap by 1mm" msgstr "Moure: Clicka per ajustar en passos d'1 mm" -msgid "⌘+Mouse wheel" -msgstr "⌘+Roda del ratolí" - msgid "Support/Color Painting: adjust pen radius" msgstr "Suport/Pintat de color: configuració del radi de la ploma" -msgid "⌥+Mouse wheel" -msgstr "⌥+Roda del ratolí" - msgid "Support/Color Painting: adjust section position" msgstr "Suport/Pintat de color: configuració de la posició de la secció" -msgid "Ctrl+Mouse wheel" -msgstr "Ctrl+Roda del ratolí" - -msgid "Alt+Mouse wheel" -msgstr "Alt+Roda del ratolí" - msgid "Gizmo" msgstr "Gizmo" @@ -9082,6 +9078,11 @@ msgstr "" msgid "No object can be printed. Maybe too small" msgstr "No es pot imprimir cap objecte. Potser que sigui massa petit" +msgid "" +"Your print is very close to the priming regions. Make sure there is no " +"collision." +msgstr "" + msgid "" "Failed to generate gcode for invalid custom G-code.\n" "\n" @@ -9328,11 +9329,10 @@ msgid "Variable layer height is not supported with Organic supports." msgstr "Alçada de Capa Variable no és compatible amb suports Orgànics." msgid "" -"Different nozzle diameters and different filament diameters is not allowed " -"when prime tower is enabled." +"Different nozzle diameters and different filament diameters may not work " +"well when the prime tower is enabled. It's very experimental, so please " +"proceed with caution." msgstr "" -"No es permeten diferents diàmetres de broquet i diferents diàmetres de " -"filament quan s'habilita la Torre de Purga." msgid "" "The Wipe Tower is currently only supported with the relative extruder " @@ -9342,10 +9342,9 @@ msgstr "" "relatiu de l'extrusor ( use_relative_e_distances=1 )." msgid "" -"Ooze prevention is currently not supported with the prime tower enabled." +"Ooze prevention is only supported with the wipe tower when " +"'single_extruder_multi_material' is off." msgstr "" -"Actualment, la Prevenció d'Ooze( goteig ) no és compatible amb la Torre de " -"Purga habilitada." msgid "" "The prime tower is currently only supported for the Marlin, RepRap/Sprinter, " @@ -10842,6 +10841,86 @@ msgstr "" msgid "Pressure advance(Klipper) AKA Linear advance factor(Marlin)" msgstr "Avanç de Pressió Lineal( Klipper ) AKA Factor d'Avanç Lineal( Marlin )" +msgid "Enable adaptive pressure advance (beta)" +msgstr "" + +#, c-format, boost-format +msgid "" +"With increasing print speeds (and hence increasing volumetric flow through " +"the nozzle) and increasing accelerations, it has been observed that the " +"effective PA value typically decreases. This means that a single PA value is " +"not always 100% optimal for all features and a compromise value is usually " +"used that does not cause too much bulging on features with lower flow speed " +"and accelerations while also not causing gaps on faster features.\n" +"\n" +"This feature aims to address this limitation by modeling the response of " +"your printer's extrusion system depending on the volumetric flow speed and " +"acceleration it is printing at. Internally, it generates a fitted model that " +"can extrapolate the needed pressure advance for any given volumetric flow " +"speed and acceleration, which is then emmited to the printer depending on " +"the current print conditions.\n" +"\n" +"When enabled, the pressure advance value above is overriden. However, a " +"reasonable default value above is strongly recomended to act as a fallback " +"and for when tool changing.\n" +"\n" +msgstr "" + +msgid "Adaptive pressure advance measurements (beta)" +msgstr "" + +msgid "" +"Add sets of pressure advance (PA) values, the volumetric flow speeds and " +"accelerations they were measured at, separated by a comma. One set of values " +"per line. For example\n" +"0.04,3.96,3000\n" +"0.033,3.96,10000\n" +"0.029,7.91,3000\n" +"0.026,7.91,10000\n" +"\n" +"How to calibrate:\n" +"1. Run the pressure advance test for at least 3 speeds per acceleration " +"value. It is recommended that the test is run for at least the speed of the " +"external perimeters, the speed of the internal perimeters and the fastest " +"feature print speed in your profile (usually its the sparse or solid " +"infill). Then run them for the same speeds for the slowest and fastest print " +"accelerations,and no faster than the recommended maximum acceleration as " +"given by the klipper input shaper.\n" +"2. Take note of the optimal PA value for each volumetric flow speed and " +"acceleration. You can find the flow number by selecting flow from the color " +"scheme drop down and move the horizontal slider over the PA pattern lines. " +"The number should be visible at the bottom of the page. The ideal PA value " +"should be decreasing the higher the volumetric flow is. If it is not, " +"confirm that your extruder is functioning correctly.The slower and with less " +"acceleration you print, the larger the range of acceptable PA values. If no " +"difference is visible, use the PA value from the faster test.3. Enter the " +"triplets of PA values, Flow and Accelerations in the text box here and save " +"your filament profile\n" +"\n" +msgstr "" + +msgid "Enable adaptive pressure advance for overhangs (beta)" +msgstr "" + +msgid "" +"Enable adaptive PA for overhangs as well as when flow changes within the " +"same feature. This is an experimental option, as if the PA profile is not " +"set accurately, it will cause uniformity issues on the external surfaces " +"before and after overhangs.\n" +msgstr "" + +msgid "Pressure advance for bridges" +msgstr "" + +msgid "" +"Pressure advance value for bridges. Set to 0 to disable. \n" +"\n" +" A lower PA value when printing bridges helps reduce the appearance of " +"slight under extrusion immediately after bridges. This is caused by the " +"pressure drop in the nozzle when printing in the air and a lower PA helps " +"counteract this." +msgstr "" + msgid "" "Default line width if other line widths are set to 0. If expressed as a %, " "it will be computed over the nozzle diameter." @@ -11049,6 +11128,21 @@ msgstr "" "El filament es refreda en ser mogut cap endavant i cap enrere als tubs de " "refredament. Especifica el nombre que vulgueu d'aquests moviments." +msgid "Stamping loading speed" +msgstr "" + +msgid "Speed used for stamping." +msgstr "" + +msgid "Stamping distance measured from the center of the cooling tube" +msgstr "" + +msgid "" +"If set to nonzero value, filament is moved toward the nozzle between the " +"individual cooling moves (\"stamping\"). This option configures how long " +"this movement should be before the filament is retracted again." +msgstr "" + msgid "Speed of the first cooling move" msgstr "Velocitat del primer moviment de refredament" @@ -11480,15 +11574,15 @@ msgstr "Velocitat màxima del ventilador a la capa" msgid "" "Fan speed will be ramped up linearly from zero at layer " -"\"close_fan_the_first_x_layers\" to maximum at layer " -"\"full_fan_speed_layer\". \"full_fan_speed_layer\" will be ignored if lower " -"than \"close_fan_the_first_x_layers\", in which case the fan will be running " -"at maximum allowed speed at layer \"close_fan_the_first_x_layers\" + 1." +"\"close_fan_the_first_x_layers\" to maximum at layer \"full_fan_speed_layer" +"\". \"full_fan_speed_layer\" will be ignored if lower than " +"\"close_fan_the_first_x_layers\", in which case the fan will be running at " +"maximum allowed speed at layer \"close_fan_the_first_x_layers\" + 1." msgstr "" "La velocitat del ventilador augmentarà linealment de zero a la capa " -"\"close_fan_the_first_x_layers\" al màxim a la capa " -"\"full_fan_speed_layer\". S'ignorarà \"full_fan_speed_layer\" si és inferior " -"a \"close_fan_the_first_x_layers\", en aquest cas el ventilador funcionarà a " +"\"close_fan_the_first_x_layers\" al màxim a la capa \"full_fan_speed_layer" +"\". S'ignorarà \"full_fan_speed_layer\" si és inferior a " +"\"close_fan_the_first_x_layers\", en aquest cas el ventilador funcionarà a " "la velocitat màxima permesa a la capa \"close_fan_the_first_x_layers\" + 1." msgid "layer" @@ -11900,10 +11994,12 @@ msgstr "" msgid "Interlocking depth of a segmented region" msgstr "Profunditat d'entrellaçament d'una regió segmentada" -msgid "Interlocking depth of a segmented region. Zero disables this feature." +msgid "" +"Interlocking depth of a segmented region. It will be ignored if " +"\"mmu_segmented_region_max_width\" is zero or if " +"\"mmu_segmented_region_interlocking_depth\"is bigger then " +"\"mmu_segmented_region_max_width\". Zero disables this feature." msgstr "" -"Profunditat d'entrellaçament d'una regió segmentada. Zero desactiva aquesta " -"funció." msgid "Use beam interlocking" msgstr "Utilitzar feixos d'entrellaçament" @@ -12326,9 +12422,6 @@ msgstr "" "intentar mantenir el temps mínim de capa anterior, quan \"alentir per a un " "millor refredament de la capa\" està habilitat." -msgid "Nozzle diameter" -msgstr "Diàmetre del broquet( nozzle )" - msgid "Diameter of nozzle" msgstr "Diàmetre del broquet" @@ -12432,6 +12525,11 @@ msgstr "" "retracció per a models complexos i estalviar temps d'impressió, però fer que " "el laminat i la generació de Codi-G siguin més lents" +msgid "" +"This option will drop the temperature of the inactive extruders to prevent " +"oozing." +msgstr "" + msgid "Filename format" msgstr "Format del nom del fitxer" @@ -12482,6 +12580,9 @@ msgstr "" "utilitzar una velocitat diferent per imprimir. Per al voladís del 100%%, " "s'utilitza la velocitat de pont." +msgid "Filament to print walls" +msgstr "" + msgid "" "Line width of inner wall. If expressed as a %, it will be computed over the " "nozzle diameter." @@ -12531,12 +12632,21 @@ msgstr "" "fitxer Codi-G com a primer argument, i poden accedir als paràmetres de " "configuració d'OrcaSlicer llegint variables d'entorn." +msgid "Printer type" +msgstr "" + +msgid "Type of the printer" +msgstr "" + msgid "Printer notes" msgstr "Notes de la impressora" msgid "You can put your notes regarding the printer here." msgstr "Podeu posar les vostres notes sobre la impressora aquí." +msgid "Printer variant" +msgstr "" + msgid "Raft contact Z distance" msgstr "Distància Z de contacte de la Vora d'Adherència" @@ -13123,6 +13233,12 @@ msgstr "" "L'àrea de farciment poc dens que sigui més petita que el valor del llindar " "serà substituït per un farciment sòlid intern" +msgid "Solid infill" +msgstr "" + +msgid "Filament to print solid infill" +msgstr "" + msgid "" "Line width of internal solid infill. If expressed as a %, it will be " "computed over the nozzle diameter." @@ -13189,6 +13305,31 @@ msgstr "Tradicional" msgid "Temperature variation" msgstr "Variació de temperatura" +#. TRN PrintSettings : "Ooze prevention" > "Temperature variation" +msgid "" +"Temperature difference to be applied when an extruder is not active. The " +"value is not used when 'idle_temperature' in filament settings is set to non " +"zero value." +msgstr "" + +msgid "Preheat time" +msgstr "" + +msgid "" +"To reduce the waiting time after tool change, Orca can preheat the next tool " +"while the current tool is still in use. This setting specifies the time in " +"seconds to preheat the next tool. Orca will insert a M104 command to preheat " +"the tool in advance." +msgstr "" + +msgid "Preheat steps" +msgstr "" + +msgid "" +"Insert multiple preheat commands(e.g. M104.1). Only useful for Prusa XL. For " +"other printers, please set it to 1." +msgstr "" + msgid "Start G-code" msgstr "Codi-G inicial" @@ -13878,12 +14019,6 @@ msgstr "" "Angle del vèrtex del con que s'utilitza per estabilitzar la Torre de Purga. " "Un angle més gran significa una base més ampla." -msgid "Wipe tower purge lines spacing" -msgstr "Espaiat de les línies de la Torre de Purga" - -msgid "Spacing of purge lines on the wipe tower." -msgstr "Espaiat de les línies de purga de la Torre de Purga." - msgid "Maximum wipe tower print speed" msgstr "Velocitat màxima d'impressió de la torre de purga" @@ -13929,9 +14064,6 @@ msgstr "" "Per als perímetres externs de la torre de purga, s'utilitza la velocitat " "perimetral interna independentment d'aquesta configuració." -msgid "Wipe tower extruder" -msgstr "Extrusor de la Torre de Purga" - msgid "" "The extruder to use when printing perimeter of the wipe tower. Set to 0 to " "use the one that is available (non-soluble would be preferred)." @@ -13988,6 +14120,30 @@ msgstr "Distància màxima dels ponts" msgid "Maximal distance between supports on sparse infill sections." msgstr "Distància màxima entre suports a les seccions amb farciment poc dens." +msgid "Wipe tower purge lines spacing" +msgstr "Espaiat de les línies de la Torre de Purga" + +msgid "Spacing of purge lines on the wipe tower." +msgstr "Espaiat de les línies de purga de la Torre de Purga." + +msgid "Extra flow for purging" +msgstr "" + +msgid "" +"Extra flow used for the purging lines on the wipe tower. This makes the " +"purging lines thicker or narrower than they normally would be. The spacing " +"is adjusted automatically." +msgstr "" + +msgid "Idle temperature" +msgstr "" + +msgid "" +"Nozzle temperature when the tool is currently not used in multi-tool setups." +"This is only used when 'Ooze prevention' is active in Print Settings. Set to " +"0 to disable." +msgstr "" + msgid "X-Y hole compensation" msgstr "Compensació de forat( contorn intern ) X-Y" @@ -14343,6 +14499,14 @@ msgstr "" "En l'actualitat es preveu un cebament addicional de l'extrusora després de " "la deretracció." +msgid "Absolute E position" +msgstr "" + +msgid "" +"Current position of the extruder axis. Only used with absolute extruder " +"addressing." +msgstr "" + msgid "Current extruder" msgstr "Extrusora actual" @@ -14393,6 +14557,12 @@ msgstr "" "Vector de booleans que indica si s'utilitza un extrusor donat en la " "impressió." +msgid "Has single extruder MM priming" +msgstr "" + +msgid "Are the extra multi-material priming regions used in this print?" +msgstr "" + msgid "Volume per extruder" msgstr "Volum per extrusora" @@ -14556,6 +14726,14 @@ msgstr "Nom de la impressora física" msgid "Name of the physical printer used for slicing." msgstr "Nom de la impressora física utilitzada per laminar." +msgid "Number of extruders" +msgstr "" + +msgid "" +"Total number of extruders, regardless of whether they are used in the " +"current print." +msgstr "" + msgid "Layer number" msgstr "Número de capa" @@ -15688,8 +15866,8 @@ msgstr "" "Vols reescriure'l?" msgid "" -"We would rename the presets as \"Vendor Type Serial @printer you " -"selected\". \n" +"We would rename the presets as \"Vendor Type Serial @printer you selected" +"\". \n" "To add preset for more printers, Please go to printer selection" msgstr "" "Canviaríem el nom dels perfils seleccionats com a \"Proveïdor Tipus " @@ -17033,6 +17211,77 @@ msgstr "" "augmentar adequadament la temperatura del llit pot reduir la probabilitat de " "deformació." +#~ msgid "up to" +#~ msgstr "fins a" + +#~ msgid "above" +#~ msgstr "sobre" + +#~ msgid "from" +#~ msgstr "des de" + +#~ msgid "Switching application language while some presets are modified." +#~ msgstr "" +#~ "Canviant l'idioma de l'aplicació mentre es modifiquen alguns perfils." + +#~ msgid "⌘+Shift+G" +#~ msgstr "⌘+Maj+G" + +#~ msgid "Ctrl+Shift+G" +#~ msgstr "Ctrl+Maj+G" + +#~ msgid "⌘+Any arrow" +#~ msgstr "⌘+Qualsevol fletxa" + +#~ msgid "⌥+Left mouse button" +#~ msgstr "⌥+Botó esquerre del ratolí" + +#~ msgid "⌘+Left mouse button" +#~ msgstr "⌘+Botó esquerre del ratolí" + +#~ msgid "Ctrl+Any arrow" +#~ msgstr "Ctrl+Qualsevol fletxa" + +#~ msgid "Alt+Left mouse button" +#~ msgstr "Alt+Botó esquerre del ratolí" + +#~ msgid "Ctrl+Left mouse button" +#~ msgstr "Ctrl+Botó esquerre del ratolí" + +#~ msgid "⌘+Mouse wheel" +#~ msgstr "⌘+Roda del ratolí" + +#~ msgid "⌥+Mouse wheel" +#~ msgstr "⌥+Roda del ratolí" + +#~ msgid "Ctrl+Mouse wheel" +#~ msgstr "Ctrl+Roda del ratolí" + +#~ msgid "Alt+Mouse wheel" +#~ msgstr "Alt+Roda del ratolí" + +#~ msgid "" +#~ "Different nozzle diameters and different filament diameters is not " +#~ "allowed when prime tower is enabled." +#~ msgstr "" +#~ "No es permeten diferents diàmetres de broquet i diferents diàmetres de " +#~ "filament quan s'habilita la Torre de Purga." + +#~ msgid "" +#~ "Ooze prevention is currently not supported with the prime tower enabled." +#~ msgstr "" +#~ "Actualment, la Prevenció d'Ooze( goteig ) no és compatible amb la Torre " +#~ "de Purga habilitada." + +#~ msgid "" +#~ "Interlocking depth of a segmented region. Zero disables this feature." +#~ msgstr "" +#~ "Profunditat d'entrellaçament d'una regió segmentada. Zero desactiva " +#~ "aquesta funció." + +#~ msgid "Wipe tower extruder" +#~ msgstr "Extrusor de la Torre de Purga" + #~ msgid "Associate prusaslicer://" #~ msgstr "Associar prusaslicer://" diff --git a/localization/i18n/cs/OrcaSlicer_cs.po b/localization/i18n/cs/OrcaSlicer_cs.po index 484a81da9f6..5c5c4aba538 100644 --- a/localization/i18n/cs/OrcaSlicer_cs.po +++ b/localization/i18n/cs/OrcaSlicer_cs.po @@ -7,7 +7,7 @@ msgid "" msgstr "" "Project-Id-Version: \n" "Report-Msgid-Bugs-To: \n" -"POT-Creation-Date: 2024-06-30 15:44+0200\n" +"POT-Creation-Date: 2024-08-03 18:54+0200\n" "PO-Revision-Date: 2023-09-30 15:15+0200\n" "Last-Translator: René Mošner \n" "Language-Team: \n" @@ -78,9 +78,6 @@ msgstr "Úhel chytrého vybarvení" msgid "On overhangs only" msgstr "Pouze na převisech" -msgid "Auto support threshold angle: " -msgstr "Auto podpěry hraniční úhlel: " - msgid "Circle" msgstr "Kruh" @@ -100,6 +97,9 @@ msgstr "Umožňuje malovat pouze na fasety vybrané pomocí: \"%1%\"" msgid "Highlight faces according to overhang angle." msgstr "Zvýrazněte plochy podle úhlu převisů." +msgid "Auto support threshold angle: " +msgstr "Auto podpěry hraniční úhlel: " + msgid "No auto support" msgstr "Žádné automatické podpěry" @@ -4085,15 +4085,6 @@ msgstr "Celkový čas" msgid "Total cost" msgstr "Celková cena" -msgid "up to" -msgstr "až do" - -msgid "above" -msgstr "nad" - -msgid "from" -msgstr "z" - msgid "Color Scheme" msgstr "Barevné schéma" @@ -4157,12 +4148,12 @@ msgstr "Doby výměny Filamentu" msgid "Cost" msgstr "Náklady" -msgid "Color change" -msgstr "Změna barvy" - msgid "Print" msgstr "Tisk" +msgid "Color change" +msgstr "Změna barvy" + msgid "Printer" msgstr "Tiskárna" @@ -6048,6 +6039,14 @@ msgstr "Byl detekován objekt s více částmi" msgid "The file does not contain any geometry data." msgstr "Soubor neobsahuje žádná geometrická data." +msgid "" +"Your object appears to be too large. It will be scaled down to fit the heat " +"bed automatically." +msgstr "" + +msgid "Object too large" +msgstr "Objekt je příliš velký" + msgid "" "Your object appears to be too large, Do you want to scale it down to fit the " "heat bed automatically?" @@ -6055,9 +6054,6 @@ msgstr "" "Váš objekt se zdá být příliš velký, chcete jej zmenšit, aby se vešel na " "vyhřívanou podložku automaticky?" -msgid "Object too large" -msgstr "Objekt je příliš velký" - msgid "Export STL file:" msgstr "Exportovat STL soubor:" @@ -6425,9 +6421,6 @@ msgstr "Chcete pokračovat?" msgid "Language selection" msgstr "Výběr jazyka" -msgid "Switching application language while some presets are modified." -msgstr "Přepínání jazyka aplikace při změně některých předvoleb." - msgid "Changing application language" msgstr "Změna jazyka aplikace" @@ -6607,6 +6600,12 @@ msgid "" "same time and manage multiple devices." msgstr "" +msgid "Auto arrange plate after cloning" +msgstr "" + +msgid "Auto arrange plate after object cloning" +msgstr "" + msgid "Network" msgstr "Síť" @@ -7565,12 +7564,21 @@ msgstr "Filament na podpěry" msgid "Tree supports" msgstr "Stromové podpěry" -msgid "Skirt" -msgstr "Obrys" +msgid "Multimaterial" +msgstr "Multimateriál" msgid "Prime tower" msgstr "Čistící věž" +msgid "Filament for Features" +msgstr "" + +msgid "Ooze prevention" +msgstr "" + +msgid "Skirt" +msgstr "Obrys" + msgid "Special mode" msgstr "Speciální režim" @@ -7627,6 +7635,9 @@ msgid "Recommended nozzle temperature range of this filament. 0 means no set" msgstr "" "Doporučený rozsah teploty trysky tohoto filamentu. 0 znamená nenastaveno" +msgid "Flow ratio and Pressure Advance" +msgstr "" + msgid "Print chamber temperature" msgstr "Teplota v tiskové komoře" @@ -7735,9 +7746,6 @@ msgstr "Filament Začátek G-kók" msgid "Filament end G-code" msgstr "Filament Konec G-kód" -msgid "Multimaterial" -msgstr "Multimateriál" - msgid "Wipe tower parameters" msgstr "Parametry čistící věže" @@ -7827,12 +7835,30 @@ msgstr "Omezení Jerk-Ryv" msgid "Single extruder multimaterial setup" msgstr "Nastavení multimateriálu s jedním extruderem" +msgid "Number of extruders of the printer." +msgstr "" + +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 "" + +msgid "Nozzle diameter" +msgstr "Průměr trysky" + msgid "Wipe tower" msgstr "Čistící věž" msgid "Single extruder multimaterial parameters" msgstr "Parametry jednoho multimateriálového extruderu" +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 "" + msgid "Layer height limits" msgstr "Výškové limity vrstvy" @@ -8308,11 +8334,8 @@ msgstr "Seznam objektů" msgid "Import geometry data from STL/STEP/3MF/OBJ/AMF files" msgstr "Import geometrických dat ze souborů STL/STEP/3MF/OBJ/AMF" -msgid "⌘+Shift+G" -msgstr "⌘+Shift+G" - -msgid "Ctrl+Shift+G" -msgstr "Ctrl+Shift+G" +msgid "Shift+G" +msgstr "" msgid "Paste from clipboard" msgstr "Vložit ze schránky" @@ -8362,33 +8385,18 @@ msgstr "Shift+Tab" msgid "Collapse/Expand the sidebar" msgstr "Sbalit/Rozbalit postranní panel" -msgid "⌘+Any arrow" -msgstr "⌘+libovolná šipka" +msgid "Any arrow" +msgstr "" msgid "Movement in camera space" msgstr "Posun výběru v ortogonálním prostoru kamery" -msgid "⌥+Left mouse button" -msgstr "⌥+levé tlačítko myši" - msgid "Select a part" msgstr "Vyberte část" -msgid "⌘+Left mouse button" -msgstr "⌘+levé tlačítko myši" - msgid "Select multiple objects" msgstr "Vyberte více objektů" -msgid "Ctrl+Any arrow" -msgstr "Ctrl+libovolná šipka" - -msgid "Alt+Left mouse button" -msgstr "Alt+levé tlačítko myši" - -msgid "Ctrl+Left mouse button" -msgstr "Ctrl+levé tlačítko myši" - msgid "Shift+Left mouse button" msgstr "Shift+levé tlačítko myši" @@ -8491,24 +8499,12 @@ msgstr "Podložka" msgid "Move: press to snap by 1mm" msgstr "Posunout: stisknutím přitáhnete o 1 mm" -msgid "⌘+Mouse wheel" -msgstr "⌘+kolečko myši" - msgid "Support/Color Painting: adjust pen radius" msgstr "Podpěry/Barva: upravit poloměr pera" -msgid "⌥+Mouse wheel" -msgstr "⌥+kolečko myši" - msgid "Support/Color Painting: adjust section position" msgstr "Podpěry/Barva: upravit polohu sekce" -msgid "Ctrl+Mouse wheel" -msgstr "Ctrl+kolečko myši" - -msgid "Alt+Mouse wheel" -msgstr "Alt+kolečko myši" - msgid "Gizmo" msgstr "Gizmo" @@ -8813,6 +8809,11 @@ msgstr "" msgid "No object can be printed. Maybe too small" msgstr "Nelze vytisknout žádný objekt. Možná je příliš malý" +msgid "" +"Your print is very close to the priming regions. Make sure there is no " +"collision." +msgstr "" + msgid "" "Failed to generate gcode for invalid custom G-code.\n" "\n" @@ -9052,8 +9053,9 @@ msgid "Variable layer height is not supported with Organic supports." msgstr "Variabilní výška vrstvy není podporována s organickými podpěrami." msgid "" -"Different nozzle diameters and different filament diameters is not allowed " -"when prime tower is enabled." +"Different nozzle diameters and different filament diameters may not work " +"well when the prime tower is enabled. It's very experimental, so please " +"proceed with caution." msgstr "" msgid "" @@ -9064,7 +9066,8 @@ msgstr "" "exruderu (use_relative_e_distances=1)." msgid "" -"Ooze prevention is currently not supported with the prime tower enabled." +"Ooze prevention is only supported with the wipe tower when " +"'single_extruder_multi_material' is off." msgstr "" msgid "" @@ -10351,6 +10354,86 @@ msgstr "" msgid "Pressure advance(Klipper) AKA Linear advance factor(Marlin)" msgstr "Předstih tlaku (Klipper) AKA Lineární faktor předstihu (Marlin)" +msgid "Enable adaptive pressure advance (beta)" +msgstr "" + +#, c-format, boost-format +msgid "" +"With increasing print speeds (and hence increasing volumetric flow through " +"the nozzle) and increasing accelerations, it has been observed that the " +"effective PA value typically decreases. This means that a single PA value is " +"not always 100% optimal for all features and a compromise value is usually " +"used that does not cause too much bulging on features with lower flow speed " +"and accelerations while also not causing gaps on faster features.\n" +"\n" +"This feature aims to address this limitation by modeling the response of " +"your printer's extrusion system depending on the volumetric flow speed and " +"acceleration it is printing at. Internally, it generates a fitted model that " +"can extrapolate the needed pressure advance for any given volumetric flow " +"speed and acceleration, which is then emmited to the printer depending on " +"the current print conditions.\n" +"\n" +"When enabled, the pressure advance value above is overriden. However, a " +"reasonable default value above is strongly recomended to act as a fallback " +"and for when tool changing.\n" +"\n" +msgstr "" + +msgid "Adaptive pressure advance measurements (beta)" +msgstr "" + +msgid "" +"Add sets of pressure advance (PA) values, the volumetric flow speeds and " +"accelerations they were measured at, separated by a comma. One set of values " +"per line. For example\n" +"0.04,3.96,3000\n" +"0.033,3.96,10000\n" +"0.029,7.91,3000\n" +"0.026,7.91,10000\n" +"\n" +"How to calibrate:\n" +"1. Run the pressure advance test for at least 3 speeds per acceleration " +"value. It is recommended that the test is run for at least the speed of the " +"external perimeters, the speed of the internal perimeters and the fastest " +"feature print speed in your profile (usually its the sparse or solid " +"infill). Then run them for the same speeds for the slowest and fastest print " +"accelerations,and no faster than the recommended maximum acceleration as " +"given by the klipper input shaper.\n" +"2. Take note of the optimal PA value for each volumetric flow speed and " +"acceleration. You can find the flow number by selecting flow from the color " +"scheme drop down and move the horizontal slider over the PA pattern lines. " +"The number should be visible at the bottom of the page. The ideal PA value " +"should be decreasing the higher the volumetric flow is. If it is not, " +"confirm that your extruder is functioning correctly.The slower and with less " +"acceleration you print, the larger the range of acceptable PA values. If no " +"difference is visible, use the PA value from the faster test.3. Enter the " +"triplets of PA values, Flow and Accelerations in the text box here and save " +"your filament profile\n" +"\n" +msgstr "" + +msgid "Enable adaptive pressure advance for overhangs (beta)" +msgstr "" + +msgid "" +"Enable adaptive PA for overhangs as well as when flow changes within the " +"same feature. This is an experimental option, as if the PA profile is not " +"set accurately, it will cause uniformity issues on the external surfaces " +"before and after overhangs.\n" +msgstr "" + +msgid "Pressure advance for bridges" +msgstr "" + +msgid "" +"Pressure advance value for bridges. Set to 0 to disable. \n" +"\n" +" A lower PA value when printing bridges helps reduce the appearance of " +"slight under extrusion immediately after bridges. This is caused by the " +"pressure drop in the nozzle when printing in the air and a lower PA helps " +"counteract this." +msgstr "" + msgid "" "Default line width if other line widths are set to 0. If expressed as a %, " "it will be computed over the nozzle diameter." @@ -10535,6 +10618,21 @@ msgstr "" "Filament je chlazen pohyby tam a zpět v chladicí trubičce. Zadejte " "požadovaný počet těchto pohybů." +msgid "Stamping loading speed" +msgstr "" + +msgid "Speed used for stamping." +msgstr "" + +msgid "Stamping distance measured from the center of the cooling tube" +msgstr "" + +msgid "" +"If set to nonzero value, filament is moved toward the nozzle between the " +"individual cooling moves (\"stamping\"). This option configures how long " +"this movement should be before the filament is retracted again." +msgstr "" + msgid "Speed of the first cooling move" msgstr "Rychlost prvního pohybu chlazení" @@ -11328,7 +11426,11 @@ msgstr "Maximální šířka segmentované oblasti. Nula tuto funkci vypne." msgid "Interlocking depth of a segmented region" msgstr "Hloubka propojení segmentované oblasti" -msgid "Interlocking depth of a segmented region. Zero disables this feature." +msgid "" +"Interlocking depth of a segmented region. It will be ignored if " +"\"mmu_segmented_region_max_width\" is zero or if " +"\"mmu_segmented_region_interlocking_depth\"is bigger then " +"\"mmu_segmented_region_max_width\". Zero disables this feature." msgstr "" msgid "Use beam interlocking" @@ -11723,9 +11825,6 @@ msgid "" "cooling is enabled." msgstr "" -msgid "Nozzle diameter" -msgstr "Průměr trysky" - msgid "Diameter of nozzle" msgstr "Průměr trysky" @@ -11823,6 +11922,11 @@ msgstr "" "vytékání není vidět. To může zkrátit dobu retrakcí u složitého modelu a " "ušetřit čas tisku, ale zpomalit krájení a generování G-kódu" +msgid "" +"This option will drop the temperature of the inactive extruders to prevent " +"oozing." +msgstr "" + msgid "Filename format" msgstr "Formát názvu souboru" @@ -11871,6 +11975,9 @@ msgstr "" "Zjistěte procento převisů vzhledem k šířce extruze a použijte jinou rychlost " "tisku. Pro 100%% převisy se použije rychlost mostu." +msgid "Filament to print walls" +msgstr "" + msgid "" "Line width of inner wall. If expressed as a %, it will be computed over the " "nozzle diameter." @@ -11910,12 +12017,21 @@ msgstr "" "předána absolutní cesta k souboru G-kódu jako první argument a mohou přístup " "k nastavení konfigurace Orca Slicer čtením proměnných prostředí." +msgid "Printer type" +msgstr "" + +msgid "Type of the printer" +msgstr "" + msgid "Printer notes" msgstr "Poznámky o tiskárně" msgid "You can put your notes regarding the printer here." msgstr "Zde můžete uvést poznámky týkající se tiskárny." +msgid "Printer variant" +msgstr "" + msgid "Raft contact Z distance" msgstr "Mezera mezi objektem a raftem v ose Z" @@ -12418,6 +12534,12 @@ msgstr "" "Řídká oblast výplně, která je menší než hraniční hodnota, je nahrazena " "vnitřní plnou výplní" +msgid "Solid infill" +msgstr "" + +msgid "Filament to print solid infill" +msgstr "" + msgid "" "Line width of internal solid infill. If expressed as a %, it will be " "computed over the nozzle diameter." @@ -12477,6 +12599,31 @@ msgstr "Tradiční" msgid "Temperature variation" msgstr "Kolísání teploty" +#. TRN PrintSettings : "Ooze prevention" > "Temperature variation" +msgid "" +"Temperature difference to be applied when an extruder is not active. The " +"value is not used when 'idle_temperature' in filament settings is set to non " +"zero value." +msgstr "" + +msgid "Preheat time" +msgstr "" + +msgid "" +"To reduce the waiting time after tool change, Orca can preheat the next tool " +"while the current tool is still in use. This setting specifies the time in " +"seconds to preheat the next tool. Orca will insert a M104 command to preheat " +"the tool in advance." +msgstr "" + +msgid "Preheat steps" +msgstr "" + +msgid "" +"Insert multiple preheat commands(e.g. M104.1). Only useful for Prusa XL. For " +"other printers, please set it to 1." +msgstr "" + msgid "Start G-code" msgstr "Začátek G-kódu" @@ -13128,12 +13275,6 @@ msgstr "" "Úhel na vrcholu kužele, který se používá ke stabilizaci čistící věže. Větší " "úhel znamená širší základnu." -msgid "Wipe tower purge lines spacing" -msgstr "Rozteč čistících linek v čistící věži" - -msgid "Spacing of purge lines on the wipe tower." -msgstr "Rozteč čistících linek v čistící věži." - msgid "Maximum wipe tower print speed" msgstr "" @@ -13159,9 +13300,6 @@ msgid "" "regardless of this setting." msgstr "" -msgid "Wipe tower extruder" -msgstr "Extruder čistící věže" - msgid "" "The extruder to use when printing perimeter of the wipe tower. Set to 0 to " "use the one that is available (non-soluble would be preferred)." @@ -13217,6 +13355,30 @@ msgstr "Maximální vzdálenost přemostění" msgid "Maximal distance between supports on sparse infill sections." msgstr "Maximální vzdálenost mezi podpěrami u částí s řídkou výplní." +msgid "Wipe tower purge lines spacing" +msgstr "Rozteč čistících linek v čistící věži" + +msgid "Spacing of purge lines on the wipe tower." +msgstr "Rozteč čistících linek v čistící věži." + +msgid "Extra flow for purging" +msgstr "" + +msgid "" +"Extra flow used for the purging lines on the wipe tower. This makes the " +"purging lines thicker or narrower than they normally would be. The spacing " +"is adjusted automatically." +msgstr "" + +msgid "Idle temperature" +msgstr "" + +msgid "" +"Nozzle temperature when the tool is currently not used in multi-tool setups." +"This is only used when 'Ooze prevention' is active in Print Settings. Set to " +"0 to disable." +msgstr "" + msgid "X-Y hole compensation" msgstr "X-Y Kompenzace otvoru" @@ -13544,6 +13706,14 @@ msgstr "Extra deretrakce" msgid "Currently planned extra extruder priming after deretraction." msgstr "Současně naplánované extra čištění extruderu po deretrakci." +msgid "Absolute E position" +msgstr "" + +msgid "" +"Current position of the extruder axis. Only used with absolute extruder " +"addressing." +msgstr "" + msgid "Current extruder" msgstr "Aktuální extruder" @@ -13592,6 +13762,12 @@ msgstr "Je extruder použitý?" msgid "Vector of bools stating whether a given extruder is used in the print." msgstr "" +msgid "Has single extruder MM priming" +msgstr "" + +msgid "Are the extra multi-material priming regions used in this print?" +msgstr "" + msgid "Volume per extruder" msgstr "Objem pro každý extruder" @@ -13740,6 +13916,14 @@ msgstr "Fyzický název tiskárny" msgid "Name of the physical printer used for slicing." msgstr "Název fyzické tiskárny použité pro slicování." +msgid "Number of extruders" +msgstr "" + +msgid "" +"Total number of extruders, regardless of whether they are used in the " +"current print." +msgstr "" + msgid "Layer number" msgstr "Číslo vrstvy" @@ -15911,6 +16095,57 @@ msgid "" "probability of warping." msgstr "" +#~ msgid "up to" +#~ msgstr "až do" + +#~ msgid "above" +#~ msgstr "nad" + +#~ msgid "from" +#~ msgstr "z" + +#~ msgid "Switching application language while some presets are modified." +#~ msgstr "Přepínání jazyka aplikace při změně některých předvoleb." + +#~ msgid "⌘+Shift+G" +#~ msgstr "⌘+Shift+G" + +#~ msgid "Ctrl+Shift+G" +#~ msgstr "Ctrl+Shift+G" + +#~ msgid "⌘+Any arrow" +#~ msgstr "⌘+libovolná šipka" + +#~ msgid "⌥+Left mouse button" +#~ msgstr "⌥+levé tlačítko myši" + +#~ msgid "⌘+Left mouse button" +#~ msgstr "⌘+levé tlačítko myši" + +#~ msgid "Ctrl+Any arrow" +#~ msgstr "Ctrl+libovolná šipka" + +#~ msgid "Alt+Left mouse button" +#~ msgstr "Alt+levé tlačítko myši" + +#~ msgid "Ctrl+Left mouse button" +#~ msgstr "Ctrl+levé tlačítko myši" + +#~ msgid "⌘+Mouse wheel" +#~ msgstr "⌘+kolečko myši" + +#~ msgid "⌥+Mouse wheel" +#~ msgstr "⌥+kolečko myši" + +#~ msgid "Ctrl+Mouse wheel" +#~ msgstr "Ctrl+kolečko myši" + +#~ msgid "Alt+Mouse wheel" +#~ msgstr "Alt+kolečko myši" + +#~ msgid "Wipe tower extruder" +#~ msgstr "Extruder čistící věže" + #~ msgid "Printer local connection failed, please try again." #~ msgstr "Lokální připojení k tiskárně selhalo, zkuste to znovu." diff --git a/localization/i18n/de/OrcaSlicer_de.po b/localization/i18n/de/OrcaSlicer_de.po index 4cb5df317c4..7547eaeee66 100644 --- a/localization/i18n/de/OrcaSlicer_de.po +++ b/localization/i18n/de/OrcaSlicer_de.po @@ -3,7 +3,7 @@ msgid "" msgstr "" "Project-Id-Version: Orca Slicer\n" "Report-Msgid-Bugs-To: \n" -"POT-Creation-Date: 2024-06-30 15:44+0200\n" +"POT-Creation-Date: 2024-08-03 18:54+0200\n" "PO-Revision-Date: \n" "Last-Translator: Heiko Liebscher \n" "Language-Team: \n" @@ -74,9 +74,6 @@ msgstr "Intelligenter Füllwinkel" msgid "On overhangs only" msgstr "Nur an Überhängen" -msgid "Auto support threshold angle: " -msgstr "Winkel für automatische Supports: " - msgid "Circle" msgstr "Kreis" @@ -97,6 +94,9 @@ msgstr "" msgid "Highlight faces according to overhang angle." msgstr "Markieren der Flächen entsprechend dem Überhangwinkel." +msgid "Auto support threshold angle: " +msgstr "Winkel für automatische Supports: " + msgid "No auto support" msgstr "Kein automatischer Support" @@ -4214,15 +4214,6 @@ msgstr "Gesamtdauer" msgid "Total cost" msgstr "Geamtkosten" -msgid "up to" -msgstr "bis zu" - -msgid "above" -msgstr "über" - -msgid "from" -msgstr "von" - msgid "Color Scheme" msgstr "Farbschema" @@ -4286,12 +4277,12 @@ msgstr "Filamentwechselzeiten" msgid "Cost" msgstr "Kosten" -msgid "Color change" -msgstr "Farbwechsel" - msgid "Print" msgstr "aktuelle Platte drucken" +msgid "Color change" +msgstr "Farbwechsel" + msgid "Printer" msgstr "Drucker" @@ -6241,6 +6232,16 @@ msgstr "Objekt mit mehreren Teilen wurde entdeckt" msgid "The file does not contain any geometry data." msgstr "Die Datei enthält keine Geometriedaten." +msgid "" +"Your object appears to be too large. It will be scaled down to fit the heat " +"bed automatically." +msgstr "" +"Ihr Objekt scheint zu groß zu sein. Es wird automatisch verkleinert, um auf " +"das Druckbett zu passen." + +msgid "Object too large" +msgstr "Objekt zu groß" + msgid "" "Your object appears to be too large, Do you want to scale it down to fit the " "heat bed automatically?" @@ -6248,9 +6249,6 @@ msgstr "" "Ihr Objekt scheint zu groß zu sein. Möchten Sie es verkleinern, um es " "automatisch an das Druckbett anzupassen?" -msgid "Object too large" -msgstr "Objekt zu groß" - msgid "Export STL file:" msgstr "Exportiere STL Datei:" @@ -6636,10 +6634,6 @@ msgstr "Möchten Sie fortfahren?" msgid "Language selection" msgstr "Sprachauswahl" -msgid "Switching application language while some presets are modified." -msgstr "" -"Umschalten der Anwendungssprache, während einige Profile geändert werden." - msgid "Changing application language" msgstr "Anwendungssprache ändern" @@ -6832,6 +6826,12 @@ msgstr "" "Wenn diese Option aktiviert ist, können Sie eine Aufgabe gleichzeitig an " "mehrere Geräte senden und mehrere Geräte verwalten." +msgid "Auto arrange plate after cloning" +msgstr "Druckplatte nach dem Klonen automatisch anordnen" + +msgid "Auto arrange plate after object cloning" +msgstr "Druckplatte nach dem Klonen von Objekten automatisch anordnen" + msgid "Network" msgstr "Netzwerk" @@ -7855,12 +7855,21 @@ msgstr "Supportfilament" msgid "Tree supports" msgstr "Baumstützen" -msgid "Skirt" -msgstr "Saum" +msgid "Multimaterial" +msgstr "Multimaterial" msgid "Prime tower" msgstr "Reinigungsturm" +msgid "Filament for Features" +msgstr "Filament für Funktionen" + +msgid "Ooze prevention" +msgstr "Ooze-Prävention" + +msgid "Skirt" +msgstr "Saum" + msgid "Special mode" msgstr "Spezialmodus" @@ -7914,6 +7923,9 @@ msgstr "" "Empfohlener Düsentemperaturbereich für dieses Filament. 0 bedeutet nicht " "gesetzt" +msgid "Flow ratio and Pressure Advance" +msgstr "Flussverhältnis und Pressure Advance" + msgid "Print chamber temperature" msgstr "Druckkammertemperatur" @@ -8025,9 +8037,6 @@ msgstr "Filament Start G-Code" msgid "Filament end G-code" msgstr "Filament End G-Code" -msgid "Multimaterial" -msgstr "Multimaterial" - msgid "Wipe tower parameters" msgstr "Reinigungsturm-Parameter" @@ -8117,12 +8126,36 @@ msgstr "Jerkbegrenzung" msgid "Single extruder multimaterial setup" msgstr "Single-Extruder-Multimaterial-Einstellung" +msgid "Number of extruders of the printer." +msgstr "Anzahl der Extruder des Druckers." + +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 "" +"Single-Extruder-Multimaterial ist ausgewählt, \n" +"und alle Extruder müssen denselben Durchmesser haben.\n" +"Möchten Sie den Durchmesser für alle Extruder auf den Wert des ersten " +"Extruder-Düsendurchmessers ändern?" + +msgid "Nozzle diameter" +msgstr "Düsendurchmesser" + msgid "Wipe tower" msgstr "Reinigungsturm" msgid "Single extruder multimaterial parameters" msgstr "Single-Extruder-Multimaterial-Parameter" +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 Single-Extruder-Multimaterial-Drucker, die Durchmesser aller " +"Extruder werden auf den neuen Wert gesetzt. Möchten Sie fortfahren?" + msgid "Layer height limits" msgstr "Höhenbegrenzungen für Schichten" @@ -8641,11 +8674,8 @@ msgstr "Liste der Objekte" msgid "Import geometry data from STL/STEP/3MF/OBJ/AMF files" msgstr "Importiere Geometriedaten aus STL/STEP/3MF/OBJ/AMF-Dateien" -msgid "⌘+Shift+G" -msgstr "⌘+Umschalttaste+G" - -msgid "Ctrl+Shift+G" -msgstr "Strg+Umschalt+G" +msgid "Shift+G" +msgstr "Umschalt+G" msgid "Paste from clipboard" msgstr "Aus Zwischenablage einfügen" @@ -8696,33 +8726,18 @@ msgstr "Umschalt+Tab" msgid "Collapse/Expand the sidebar" msgstr "Seitenleiste zu-/aufklappen" -msgid "⌘+Any arrow" -msgstr "⌘+beliebiger Pfeil" +msgid "Any arrow" +msgstr "Beliebiger Pfeil" msgid "Movement in camera space" msgstr "Bewegung im Kameraraum" -msgid "⌥+Left mouse button" -msgstr "⌥+Linke Maustaste" - msgid "Select a part" msgstr "Teil auswählen" -msgid "⌘+Left mouse button" -msgstr "⌘+Linke Maustaste" - msgid "Select multiple objects" msgstr "Mehrere Objekte auswählen" -msgid "Ctrl+Any arrow" -msgstr "Strg + beliebige Pfeiltaste" - -msgid "Alt+Left mouse button" -msgstr "Alt + Linke Maustaste" - -msgid "Ctrl+Left mouse button" -msgstr "Strg + Linke Maustaste" - msgid "Shift+Left mouse button" msgstr "Umschalt+Linke Maustaste" @@ -8825,24 +8840,12 @@ msgstr "Druckplatte" msgid "Move: press to snap by 1mm" msgstr "Verschieben: Drücken, um in 1 mm einzurasten" -msgid "⌘+Mouse wheel" -msgstr "⌘+Mausrad" - msgid "Support/Color Painting: adjust pen radius" msgstr "Stützen/Farbmalen: Stiftradius einstellen" -msgid "⌥+Mouse wheel" -msgstr "⌥+Mausrad" - msgid "Support/Color Painting: adjust section position" msgstr "Stützen/Farbmalen: Position des Abschnitts anpassen" -msgid "Ctrl+Mouse wheel" -msgstr "Strg + Mausrad" - -msgid "Alt+Mouse wheel" -msgstr "Alt + Mausrad" - msgid "Gizmo" msgstr "Gizmo" @@ -9160,6 +9163,13 @@ msgid "No object can be printed. Maybe too small" msgstr "" "Es kann kein Objekt gedruckt werden. Vielleicht sind die Objekte zu klein." +msgid "" +"Your print is very close to the priming regions. Make sure there is no " +"collision." +msgstr "" +"Ihr Druck ist sehr nahe an den Priming-Regionen. Stellen Sie sicher, dass es " +"keine Kollision gibt." + msgid "" "Failed to generate gcode for invalid custom G-code.\n" "\n" @@ -9408,11 +9418,13 @@ msgstr "" "Variable Schichthöhe wird nicht mit organischen Stützstrukturen unterstützt." msgid "" -"Different nozzle diameters and different filament diameters is not allowed " -"when prime tower is enabled." +"Different nozzle diameters and different filament diameters may not work " +"well when the prime tower is enabled. It's very experimental, so please " +"proceed with caution." msgstr "" "Unterschiedliche Düsendurchmesser und unterschiedliche Filamentdurchmesser " -"sind nicht zulässig, wenn der Reinigungsturm aktiviert ist." +"funktionieren möglicherweise nicht gut, wenn der Reinigungsturm aktiviert " +"ist. Es ist sehr experimentell, also gehen Sie bitte vorsichtig vor." msgid "" "The Wipe Tower is currently only supported with the relative extruder " @@ -9422,8 +9434,11 @@ msgstr "" "unterstützt (use_relative_e_distances=1)." msgid "" -"Ooze prevention is currently not supported with the prime tower enabled." -msgstr "Ooze Prevention wird derzeit nicht mit dem Reinigungsturm unterstützt." +"Ooze prevention is only supported with the wipe tower when " +"'single_extruder_multi_material' is off." +msgstr "" +"Ooze-Prävention wird nur mit dem Reinigungsturm unterstützt, wenn " +"'single_extruder_multi_material' ausgeschaltet ist." msgid "" "The prime tower is currently only supported for the Marlin, RepRap/Sprinter, " @@ -10922,6 +10937,146 @@ msgstr "" msgid "Pressure advance(Klipper) AKA Linear advance factor(Marlin)" msgstr "Pressure advance(Klipper)AKA Linear advance Faktor(Marlin)" +msgid "Enable adaptive pressure advance (beta)" +msgstr "" + +#, c-format, boost-format +msgid "" +"With increasing print speeds (and hence increasing volumetric flow through " +"the nozzle) and increasing accelerations, it has been observed that the " +"effective PA value typically decreases. This means that a single PA value is " +"not always 100% optimal for all features and a compromise value is usually " +"used that does not cause too much bulging on features with lower flow speed " +"and accelerations while also not causing gaps on faster features.\n" +"\n" +"This feature aims to address this limitation by modeling the response of " +"your printer's extrusion system depending on the volumetric flow speed and " +"acceleration it is printing at. Internally, it generates a fitted model that " +"can extrapolate the needed pressure advance for any given volumetric flow " +"speed and acceleration, which is then emmited to the printer depending on " +"the current print conditions.\n" +"\n" +"When enabled, the pressure advance value above is overriden. However, a " +"reasonable default value above is strongly recomended to act as a fallback " +"and for when tool changing.\n" +"\n" +msgstr "" +"Mit zunehmender Druckgeschwindigkeit (und damit zunehmendem Volumenstrom " +"durch die Düse) und zunehmenden Beschleunigungen wurde beobachtet, dass der " +"effektive PA-Wert in der Regel abnimmt. Dies bedeutet, dass ein einzelner PA-" +"Wert nicht immer zu 100% optimal für alle Funktionen ist und in der Regel " +"ein Kompromisswert verwendet wird, der keine zu starke Ausbeulung bei " +"Funktionen mit niedrigerer Fließgeschwindigkeit und Beschleunigungen " +"verursacht, während er auch keine Lücken bei schnelleren Funktionen " +"verursacht.\n" +"\n" +"Dieses Feature zielt darauf ab, diese Einschränkung zu beheben, indem die " +"Reaktion des Extrusionssystems Ihres Druckers in Abhängigkeit von der " +"Volumenfließgeschwindigkeit und Beschleunigung, mit der gedruckt wird, " +"modelliert wird. Intern wird ein angepasstes Modell generiert, das den " +"benötigten Druckvorschub für eine beliebige gegebene Volumenfließgeschwindig-" +"keit und Beschleunigung extrapolieren kann, der dann je nach den aktuellen " +"Druckbedingungen an den Drucker ausgegeben wird.\n" +"\n" +"Wenn diese Option aktiviert ist, wird der obige Druckvorschubwert überschrie-" +"ben. Es wird jedoch dringend empfohlen, einen vernünftigen Standardwert " +"oben zu verwenden, um als Fallback und für den Werkzeugwechsel zu dienen.\n" +"\n" + +msgid "Adaptive pressure advance measurements (beta)" +msgstr "Adaptive Pressure Advance Messung (experimentell)" + +msgid "" +"Add sets of pressure advance (PA) values, the volumetric flow speeds and " +"accelerations they were measured at, separated by a comma. One set of values " +"per line. For example\n" +"0.04,3.96,3000\n" +"0.033,3.96,10000\n" +"0.029,7.91,3000\n" +"0.026,7.91,10000\n" +"\n" +"How to calibrate:\n" +"1. Run the pressure advance test for at least 3 speeds per acceleration " +"value. It is recommended that the test is run for at least the speed of the " +"external perimeters, the speed of the internal perimeters and the fastest " +"feature print speed in your profile (usually its the sparse or solid " +"infill). Then run them for the same speeds for the slowest and fastest print " +"accelerations,and no faster than the recommended maximum acceleration as " +"given by the klipper input shaper.\n" +"2. Take note of the optimal PA value for each volumetric flow speed and " +"acceleration. You can find the flow number by selecting flow from the color " +"scheme drop down and move the horizontal slider over the PA pattern lines. " +"The number should be visible at the bottom of the page. The ideal PA value " +"should be decreasing the higher the volumetric flow is. If it is not, " +"confirm that your extruder is functioning correctly.The slower and with less " +"acceleration you print, the larger the range of acceptable PA values. If no " +"difference is visible, use the PA value from the faster test.3. Enter the " +"triplets of PA values, Flow and Accelerations in the text box here and save " +"your filament profile\n" +"\n" +msgstr "" +"Fügen Sie Sätze von Druckvorschub (PA)-Werten, den Volumenfließgeschwindig-" +"keiten und Beschleunigungen, bei denen sie gemessen wurden, durch ein Komma " +"getrennt hinzu. Ein Satz von Werten pro Zeile. Zum Beispiel\n" +"0,04,3,96,3000\n" +"0,033,3,96,10000\n" +"0,029,7,91,3000\n" +"0,026,7,91,10000\n" +"\n" +"Wie einstellen?\n" +"1. PA Test für mindestens 3 Geschwindigkeiten pro Beschleunigung " +"durchführen. Es wird empfohlen, dass der Test mindestens für die Geschwindig-" +"keit der äußeren Umfänge, die Geschwindigkeit der inneren Umfänge und die " +"schnellste Funktionendruckgeschwindigkeit in Ihrem Profil (normalerweise ist " +"es das dünne oder massive Infill) durchgeführt wird. Führen Sie sie dann für " +"die gleichen Geschwindigkeiten für die langsamsten und schnellsten " +"Druckbeschleunigungen durch und nicht schneller als die empfohlene maximale " +"Beschleunigung, wie sie vom Klipper-Eingabe-Shaper angegeben wird.\n" +"2. Notieren Sie den optimalen PA-Wert für jede Volumenfließgeschwindigkeit " +"und Beschleunigung. Sie können die Fließzahl auswählen, indem Sie Fluss aus" +"dem Farbschema-Dropdown auswählen und den horizontalen Schieberegler über den " +"PA-Musterlinien bewegen. Die Zahl sollte am unteren Rand der Seite sichtbar " +"sein. Der ideale PA-Wert sollte abnehmen, je höher die Volumenfließgeschwin-" +"digkeit ist. Wenn dies nicht der Fall ist, bestätigen Sie, dass Ihr Extruder " +"korrekt funktioniert. Je langsamer und mit weniger Beschleunigung Sie drucken, " +"desto größer ist der Bereich der akzeptablen PA-Werte. Wenn kein Unterschied " +"sichtbar ist, verwenden Sie den PA-Wert aus dem schnelleren Test.3. Geben Sie " +"die Triplets von PA-Werten, Fluss und Beschleunigungen im Textfeld hier ein " +"und speichern Sie Ihr Filamentprofil\n" +"\n" + +msgid "Enable adaptive pressure advance for overhangs (beta)" +msgstr "Adaptives PA für Überhänge aktivieren (experimentell)" + +msgid "" +"Enable adaptive PA for overhangs as well as when flow changes within the " +"same feature. This is an experimental option, as if the PA profile is not " +"set accurately, it will cause uniformity issues on the external surfaces " +"before and after overhangs.\n" +msgstr "" +"Adaptives PA für Überhänge aktivieren, sowie wenn der Fluss innerhalb der " +"gleichen Funktion geändert wird. Dies ist eine experimentelle Option, da bei " +"einer ungenauen Einstellung des PA-Profils Gleichmäßigkeitsprobleme auf den " +"externen Oberflächen vor und nach Überhängen verursacht werden.\n" + +msgid "Pressure advance for bridges" +msgstr "Pressure Advance für Brücken" + +msgid "" +"Pressure advance value for bridges. Set to 0 to disable. \n" +"\n" +" A lower PA value when printing bridges helps reduce the appearance of " +"slight under extrusion immediately after bridges. This is caused by the " +"pressure drop in the nozzle when printing in the air and a lower PA helps " +"counteract this." +msgstr "" +"Pressure Advance-Wert für Brücken. Auf 0 setzen, um zu deaktivieren.\n" +"\n" +"Ein niedrigerer PA-Wert beim Drucken von Brücken hilft, das Auftreten einer " +"leichten Unterextrusion unmittelbar nach Brücken zu reduzieren. Dies wird " +"durch den Druckabfall in der Düse beim Drucken in der Luft verursacht, und " +"ein niedrigerer PA hilft, dem entgegenzuwirken." + msgid "" "Default line width if other line widths are set to 0. If expressed as a %, " "it will be computed over the nozzle diameter." @@ -11130,6 +11285,25 @@ msgstr "" "Das Filament wird gekühlt, indem es in den Kühlrohren hin und her bewegt " "wird. Geben Sie die gewünschte Anzahl dieser Bewegungen an." +msgid "Stamping loading speed" +msgstr "Lade-Geschwindigkeit für das Stamping" + +msgid "Speed used for stamping." +msgstr "Geschwindigkeit, die für das Stamping verwendet wird." + +msgid "Stamping distance measured from the center of the cooling tube" +msgstr "Stamping-Abstand, gemessen vom Zentrum des Kühlrohrs" + +msgid "" +"If set to nonzero value, filament is moved toward the nozzle between the " +"individual cooling moves (\"stamping\"). This option configures how long " +"this movement should be before the filament is retracted again." +msgstr "" +"Wenn ein Wert ungleich Null eingestellt ist, wird das Filament zwischen den " +"einzelnen Kühlbewegungen (\"Stamping\") in Richtung der Düse bewegt. Diese " +"Option konfiguriert, wie lange diese Bewegung sein soll, bevor das Filament " +"wieder zurückgezogen wird." + msgid "Speed of the first cooling move" msgstr "Geschwindigkeit der ersten Kühlbewegung" @@ -11855,7 +12029,9 @@ msgid "Pellet Modded Printer" msgstr "Pellet-Modifizierter Drucker" msgid "Enable this option if your printer uses pellets instead of filaments" -msgstr "aktivieren Sie diese Option, wenn Ihr Drucker Pellets anstelle von Filamenten verwendet" +msgstr "" +"aktivieren Sie diese Option, wenn Ihr Drucker Pellets anstelle von " +"Filamenten verwendet" msgid "Support multi bed types" msgstr "Unterstützung mehrerer Betttypen" @@ -11982,10 +12158,13 @@ msgstr "" msgid "Interlocking depth of a segmented region" msgstr "Interlock-Struktur-Tiefe eines segmentierten Bereichs" -msgid "Interlocking depth of a segmented region. Zero disables this feature." +msgid "" +"Interlocking depth of a segmented region. It will be ignored if " +"\"mmu_segmented_region_max_width\" is zero or if " +"\"mmu_segmented_region_interlocking_depth\"is bigger then " +"\"mmu_segmented_region_max_width\". Zero disables this feature." msgstr "" -"Interlock-Struktur-Tiefe eines segmentierten Bereichs. Null deaktiviert diese " -"Funktion." + msgid "Use beam interlocking" msgstr "Verwende Interlock-Strukturen" @@ -11996,8 +12175,8 @@ msgid "" "models printed in different materials." msgstr "" "Erzeugen Sie eine verzahnte Struktur an den Stellen, an denen sich " -"unterschiedliche Filamente berühren. Dies verbessert die Haftung zwischen den " -"Filamenten, insbesondere bei Modellen, die aus verschiedenen Materialien " +"unterschiedliche Filamente berühren. Dies verbessert die Haftung zwischen " +"den Filamenten, insbesondere bei Modellen, die aus verschiedenen Materialien " "gedruckt werden." msgid "Interlocking beam width" @@ -12013,7 +12192,7 @@ msgid "Orientation of interlock beams." msgstr "Ausrichtung der Interlock-Strukturen." msgid "Interlocking beam layers" -msgstr "Interlock-Struktur Schichten" +msgstr "Interlock-Struktur Schichten" msgid "" "The height of the beams of the interlocking structure, measured in number of " @@ -12029,9 +12208,9 @@ msgid "" "The distance from the boundary between filaments to generate interlocking " "structure, measured in cells. Too few cells will result in poor adhesion." msgstr "" -"Der Abstand von der Grenze zwischen den Filamenten, um die Interlock-Strukturen-" -"zu generieren, gemessen in Zellen. Zu wenige Zellen führen zu einer schlechten " -"Haftung." +"Der Abstand von der Grenze zwischen den Filamenten, um die Interlock-" +"Strukturen-zu generieren, gemessen in Zellen. Zu wenige Zellen führen zu " +"einer schlechten Haftung." msgid "Interlocking boundary avoidance" msgstr "Vermeidung von Interlock-Strukturgrenzen" @@ -12040,8 +12219,8 @@ msgid "" "The distance from the outside of a model where interlocking structures will " "not be generated, measured in cells." msgstr "" -"Der Abstand von der Außenseite eines Modells, an dem keine Interlock-Strukturen " -"generiert werden, gemessen in Zellen." +"Der Abstand von der Außenseite eines Modells, an dem keine Interlock-" +"Strukturen generiert werden, gemessen in Zellen." msgid "Ironing Type" msgstr "Glättungsmethode" @@ -12399,9 +12578,6 @@ msgstr "" "die minimale Schichtzeit einzuhalten, wenn die Verlangsamung für eine " "bessere Schichtkühlung aktiviert ist." -msgid "Nozzle diameter" -msgstr "Düsendurchmesser" - msgid "Diameter of nozzle" msgstr "Düsendurchmesser" @@ -12503,6 +12679,13 @@ msgstr "" "bei komplexeren Modellen verkürzen und Druckzeit sparen, verlangsamt aber " "das Slicen und die G-Code Generierung." +msgid "" +"This option will drop the temperature of the inactive extruders to prevent " +"oozing." +msgstr "" +"Diese Option senkt die Temperatur der inaktiven Extruder, um das Herauslaufen " +"des Filaments zu verhindern." + msgid "Filename format" msgstr "Format des Dateinamens" @@ -12554,6 +12737,9 @@ msgstr "" "verwenden hierfür eine unterschiedliche Druckgeschwindigkeiten. Bei einem " "100%% Überhang wird die Brückengeschwindigkeit verwendet." +msgid "Filament to print walls" +msgstr "Filament für den Druck der Wände" + msgid "" "Line width of inner wall. If expressed as a %, it will be computed over the " "nozzle diameter." @@ -12604,12 +12790,21 @@ msgstr "" "zur G-Code-Datei als erstes Argument und können die Orca Slicer-" "Konfigurationseinstellungen durch Lesen von Umgebungsvariablen abrufen." +msgid "Printer type" +msgstr "Druckertyp" + +msgid "Type of the printer" +msgstr "Typ des Druckers" + msgid "Printer notes" msgstr "Druckernotizen" msgid "You can put your notes regarding the printer here." msgstr "Sie können hier Ihre Notizen zum Drucker eintragen." +msgid "Printer variant" +msgstr "Druckervariante" + msgid "Raft contact Z distance" msgstr "Z Abstand Objekt Druckbasis " @@ -13194,6 +13389,12 @@ msgstr "" "Innere Füllbereiche, die kleiner als dieser Wert sind, werden durch massive " "Füllungen ersetzt." +msgid "Solid infill" +msgstr "Massive Füllung" + +msgid "Filament to print solid infill" +msgstr "Filament für den Druck der massiven Füllung" + msgid "" "Line width of internal solid infill. If expressed as a %, it will be " "computed over the nozzle diameter." @@ -13264,6 +13465,41 @@ msgstr "Traditionell" msgid "Temperature variation" msgstr "Temperaturvariation" +#. TRN PrintSettings : "Ooze prevention" > "Temperature variation" +msgid "" +"Temperature difference to be applied when an extruder is not active. The " +"value is not used when 'idle_temperature' in filament settings is set to non " +"zero value." +msgstr "" +"Temperaturunterschied, der angewendet wird, wenn ein Extruder nicht aktiv " +"ist. Der Wert wird nicht verwendet, wenn 'idle_temperature' in den " +"Filament-Einstellungen auf einen Wert ungleich Null gesetzt ist." + +msgid "Preheat time" +msgstr "Vorheizzeit" + +msgid "" +"To reduce the waiting time after tool change, Orca can preheat the next tool " +"while the current tool is still in use. This setting specifies the time in " +"seconds to preheat the next tool. Orca will insert a M104 command to preheat " +"the tool in advance." +msgstr "" +"Um die Wartezeit nach dem Werkzeugwechsel zu reduzieren, kann Orca das " +"nächste Werkzeug vorheizen, während das aktuelle Werkzeug noch in Gebrauch " +"ist. Diese Einstellung gibt die Zeit in Sekunden an, um das nächste Werkzeug " +"vorzuheizen. Orca fügt einen M104-Befehl ein, um das Werkzeug im Voraus zu " +"vorzuheizen." + +msgid "Preheat steps" +msgstr "Vorheizschritte" + +msgid "" +"Insert multiple preheat commands(e.g. M104.1). Only useful for Prusa XL. For " +"other printers, please set it to 1." +msgstr "" +"Fügen Sie mehrere Vorheizbefehle ein (z.B. M104.1). Nur nützlich für Prusa " +"XL. Für andere Drucker bitte auf 1 setzen." + msgid "Start G-code" msgstr "Start G-Code" @@ -13952,12 +14188,6 @@ msgstr "" "Winkel an der Spitze des Kegels, der zum Stabilisieren des Reinigungsturms " "verwendet wird. Ein größerer Winkel bedeutet eine breitere Basis." -msgid "Wipe tower purge lines spacing" -msgstr "Wischabstand der Reinigungsturmpurges" - -msgid "Spacing of purge lines on the wipe tower." -msgstr "Abstand der Reinigungsturmpurges." - msgid "Maximum wipe tower print speed" msgstr "Maximale Druckgeschwindigkeit des Reinigungsturms" @@ -14005,9 +14235,6 @@ msgstr "" "Für die äußeren Umfänge des Reinigungsturms wird die Geschwindigkeit des " "inneren Umfangs unabhängig von dieser Einstellung verwendet." -msgid "Wipe tower extruder" -msgstr "Reinigungsturm-Extruder" - msgid "" "The extruder to use when printing perimeter of the wipe tower. Set to 0 to " "use the one that is available (non-soluble would be preferred)." @@ -14067,6 +14294,36 @@ msgstr "Maximale Brückenlänge" msgid "Maximal distance between supports on sparse infill sections." msgstr "Maximaler Abstand zwischen Stützstrukturen auf dünnem Infill." +msgid "Wipe tower purge lines spacing" +msgstr "Wischabstand der Reinigungsturmpurges" + +msgid "Spacing of purge lines on the wipe tower." +msgstr "Abstand der Reinigungsturmpurges." + +msgid "Extra flow for purging" +msgstr "Zusätzlicher Fluss für Reinigung" + +msgid "" +"Extra flow used for the purging lines on the wipe tower. This makes the " +"purging lines thicker or narrower than they normally would be. The spacing " +"is adjusted automatically." +msgstr "" +"Zusätzlicher Fluss, der für die Reinigungslinien auf dem Reinigungsturm " +"verwendet wird. Dadurch werden die Reinigungslinien dicker oder schmaler, " +"als sie normalerweise wären. Der Abstand wird automatisch angepasst." + +msgid "Idle temperature" +msgstr "Leerlauftemperatur" + +msgid "" +"Nozzle temperature when the tool is currently not used in multi-tool setups." +"This is only used when 'Ooze prevention' is active in Print Settings. Set to " +"0 to disable." +msgstr "" +"Düsentemperatur, wenn das Werkzeug in Mehrwerkzeug-Setups derzeit nicht " +"verwendet wird. Dies wird nur verwendet, wenn die „Ausflussverhinderung“ in " +"den Druckeinstellungen aktiviert ist. Auf 0 setzen, um zu deaktivieren." + msgid "X-Y hole compensation" msgstr "X-Y-Loch-Kompensation" @@ -14422,6 +14679,15 @@ msgstr "Zusätzlicher Rückzug" msgid "Currently planned extra extruder priming after deretraction." msgstr "Derzeit geplantes zusätzliches Extruder-Priming nach dem Rückzug." +msgid "Absolute E position" +msgstr "Absolute E-Position" + +msgid "" +"Current position of the extruder axis. Only used with absolute extruder " +"addressing." +msgstr "" +"Aktuelle Position der Extruderachse. Wird nur bei absoluter Extruderadressierung verwendet." + msgid "Current extruder" msgstr "Aktueller Extruder" @@ -14472,6 +14738,12 @@ msgstr "" "Vektor von Booleschen Werten, die angeben, ob ein bestimmter Extruder im " "Druck verwendet wird." +msgid "Has single extruder MM priming" +msgstr "Hat einzelnes Extruder-MM-Priming" + +msgid "Are the extra multi-material priming regions used in this print?" +msgstr "Werden die zusätzlichen Multi-Material-Priming-Regionen in diesem Druck verwendet?" + msgid "Volume per extruder" msgstr "Volumen pro Extruder" @@ -14633,6 +14905,16 @@ msgstr "Name des physischen Druckers" msgid "Name of the physical printer used for slicing." msgstr "Name des physischen Druckers, der zum Slicen verwendet wird." +msgid "Number of extruders" +msgstr "Anzahl der Extruder" + +msgid "" +"Total number of extruders, regardless of whether they are used in the " +"current print." +msgstr "" +"Gesamtanzahl der Extruder, unabhängig davon, ob sie im aktuellen Druck " +"verwendet werden." + msgid "Layer number" msgstr "Schichtnummer" @@ -17115,6 +17397,77 @@ msgstr "" "wie z.B. ABS, durch eine entsprechende Erhöhung der Heizbetttemperatur die " "Wahrscheinlichkeit von Verwerfungen verringert werden kann." +#~ msgid "up to" +#~ msgstr "bis zu" + +#~ msgid "above" +#~ msgstr "über" + +#~ msgid "from" +#~ msgstr "von" + +#~ msgid "Switching application language while some presets are modified." +#~ msgstr "" +#~ "Umschalten der Anwendungssprache, während einige Profile geändert werden." + +#~ msgid "⌘+Shift+G" +#~ msgstr "⌘+Umschalttaste+G" + +#~ msgid "Ctrl+Shift+G" +#~ msgstr "Strg+Umschalt+G" + +#~ msgid "⌘+Any arrow" +#~ msgstr "⌘+beliebiger Pfeil" + +#~ msgid "⌥+Left mouse button" +#~ msgstr "⌥+Linke Maustaste" + +#~ msgid "⌘+Left mouse button" +#~ msgstr "⌘+Linke Maustaste" + +#~ msgid "Ctrl+Any arrow" +#~ msgstr "Strg + beliebige Pfeiltaste" + +#~ msgid "Alt+Left mouse button" +#~ msgstr "Alt + Linke Maustaste" + +#~ msgid "Ctrl+Left mouse button" +#~ msgstr "Strg + Linke Maustaste" + +#~ msgid "⌘+Mouse wheel" +#~ msgstr "⌘+Mausrad" + +#~ msgid "⌥+Mouse wheel" +#~ msgstr "⌥+Mausrad" + +#~ msgid "Ctrl+Mouse wheel" +#~ msgstr "Strg + Mausrad" + +#~ msgid "Alt+Mouse wheel" +#~ msgstr "Alt + Mausrad" + +#~ msgid "" +#~ "Different nozzle diameters and different filament diameters is not " +#~ "allowed when prime tower is enabled." +#~ msgstr "" +#~ "Unterschiedliche Düsendurchmesser und unterschiedliche " +#~ "Filamentdurchmesser sind nicht zulässig, wenn der Reinigungsturm " +#~ "aktiviert ist." + +#~ msgid "" +#~ "Ooze prevention is currently not supported with the prime tower enabled." +#~ msgstr "" +#~ "Ooze Prevention wird derzeit nicht mit dem Reinigungsturm unterstützt." + +#~ msgid "" +#~ "Interlocking depth of a segmented region. Zero disables this feature." +#~ msgstr "" +#~ "Interlock-Struktur-Tiefe eines segmentierten Bereichs. Null deaktiviert " +#~ "diese Funktion." + +#~ msgid "Wipe tower extruder" +#~ msgstr "Reinigungsturm-Extruder" + #~ msgid "Current association: " #~ msgstr "Aktuelle Zuordnung:" diff --git a/localization/i18n/en/OrcaSlicer_en.po b/localization/i18n/en/OrcaSlicer_en.po index 3ad19dc3f68..922551be481 100644 --- a/localization/i18n/en/OrcaSlicer_en.po +++ b/localization/i18n/en/OrcaSlicer_en.po @@ -3,7 +3,7 @@ msgid "" msgstr "" "Project-Id-Version: Orca Slicer\n" "Report-Msgid-Bugs-To: \n" -"POT-Creation-Date: 2024-06-30 15:44+0200\n" +"POT-Creation-Date: 2024-08-03 18:54+0200\n" "PO-Revision-Date: \n" "Last-Translator: \n" "Language-Team: \n" @@ -74,9 +74,6 @@ msgstr "Smart fill angle" msgid "On overhangs only" msgstr "On overhangs only" -msgid "Auto support threshold angle: " -msgstr "Auto support threshold angle: " - msgid "Circle" msgstr "Circle" @@ -96,6 +93,9 @@ msgstr "Allows painting only on facets selected by: \"%1%\"" msgid "Highlight faces according to overhang angle." msgstr "Highlight faces according to overhang angle." +msgid "Auto support threshold angle: " +msgstr "Auto support threshold angle: " + msgid "No auto support" msgstr "No auto support" @@ -4041,15 +4041,6 @@ msgstr "Total time" msgid "Total cost" msgstr "Total cost" -msgid "up to" -msgstr "up to" - -msgid "above" -msgstr "above" - -msgid "from" -msgstr "from" - msgid "Color Scheme" msgstr "Color scheme" @@ -4113,12 +4104,12 @@ msgstr "Filament change times" msgid "Cost" msgstr "Cost" -msgid "Color change" -msgstr "Color change" - msgid "Print" msgstr "Print" +msgid "Color change" +msgstr "Color change" + msgid "Printer" msgstr "Printer" @@ -5999,6 +5990,14 @@ msgstr "An object with multiple parts was detected" msgid "The file does not contain any geometry data." msgstr "The file does not contain any geometry data." +msgid "" +"Your object appears to be too large. It will be scaled down to fit the heat " +"bed automatically." +msgstr "" + +msgid "Object too large" +msgstr "Object too large" + msgid "" "Your object appears to be too large, Do you want to scale it down to fit the " "heat bed automatically?" @@ -6006,9 +6005,6 @@ msgstr "" "Your object appears to be too large, Do you want to scale it down to fit the " "print bed automatically?" -msgid "Object too large" -msgstr "Object too large" - msgid "Export STL file:" msgstr "Export STL file:" @@ -6372,9 +6368,6 @@ msgstr "Do you want to continue?" msgid "Language selection" msgstr "Language selection" -msgid "Switching application language while some presets are modified." -msgstr "Switching application language while some presets are modified." - msgid "Changing application language" msgstr "Changing application language" @@ -6556,6 +6549,12 @@ msgstr "" "With this option enabled, you can send a task to multiple devices at the " "same time and manage multiple devices." +msgid "Auto arrange plate after cloning" +msgstr "" + +msgid "Auto arrange plate after object cloning" +msgstr "" + msgid "Network" msgstr "" @@ -7535,12 +7534,21 @@ msgstr "Filament for Supports" msgid "Tree supports" msgstr "" -msgid "Skirt" +msgid "Multimaterial" msgstr "" msgid "Prime tower" msgstr "Prime tower" +msgid "Filament for Features" +msgstr "" + +msgid "Ooze prevention" +msgstr "" + +msgid "Skirt" +msgstr "" + msgid "Special mode" msgstr "Special mode" @@ -7592,6 +7600,9 @@ msgstr "Recommended nozzle temperature" msgid "Recommended nozzle temperature range of this filament. 0 means no set" msgstr "Recommended nozzle temperature range of this filament. 0 means not set" +msgid "Flow ratio and Pressure Advance" +msgstr "" + msgid "Print chamber temperature" msgstr "" @@ -7700,9 +7711,6 @@ msgstr "Filament start G-code" msgid "Filament end G-code" msgstr "Filament end G-code" -msgid "Multimaterial" -msgstr "" - msgid "Wipe tower parameters" msgstr "" @@ -7792,12 +7800,30 @@ msgstr "Jerk limitation" msgid "Single extruder multimaterial setup" msgstr "" +msgid "Number of extruders of the printer." +msgstr "" + +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 "" + +msgid "Nozzle diameter" +msgstr "Nozzle diameter" + msgid "Wipe tower" msgstr "" msgid "Single extruder multimaterial parameters" msgstr "" +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 "" + msgid "Layer height limits" msgstr "Layer height limits" @@ -8270,11 +8296,8 @@ msgstr "Objects list" msgid "Import geometry data from STL/STEP/3MF/OBJ/AMF files" msgstr "Import geometry data from STL/STEP/3MF/OBJ/AMF files" -msgid "⌘+Shift+G" -msgstr "⌘+Shift+G" - -msgid "Ctrl+Shift+G" -msgstr "Ctrl+Shift+G" +msgid "Shift+G" +msgstr "" msgid "Paste from clipboard" msgstr "Paste from clipboard" @@ -8324,33 +8347,18 @@ msgstr "Shift+Tab" msgid "Collapse/Expand the sidebar" msgstr "Collapse/Expand the sidebar" -msgid "⌘+Any arrow" -msgstr "⌘+Any arrow" +msgid "Any arrow" +msgstr "" msgid "Movement in camera space" msgstr "Movement in camera space" -msgid "⌥+Left mouse button" -msgstr "⌥+Left mouse button" - msgid "Select a part" msgstr "Select a part" -msgid "⌘+Left mouse button" -msgstr "⌘+Left mouse button" - msgid "Select multiple objects" msgstr "Select multiple objects" -msgid "Ctrl+Any arrow" -msgstr "Ctrl+Any arrow" - -msgid "Alt+Left mouse button" -msgstr "Alt+Left mouse button" - -msgid "Ctrl+Left mouse button" -msgstr "Ctrl+Left mouse button" - msgid "Shift+Left mouse button" msgstr "Shift+Left mouse button" @@ -8453,24 +8461,12 @@ msgstr "Plater" msgid "Move: press to snap by 1mm" msgstr "Move: press to snap by 1mm" -msgid "⌘+Mouse wheel" -msgstr "⌘+Mouse wheel" - msgid "Support/Color Painting: adjust pen radius" msgstr "Support/Color Painting: adjust pen radius" -msgid "⌥+Mouse wheel" -msgstr "⌥+Mouse wheel" - msgid "Support/Color Painting: adjust section position" msgstr "Support/Color Painting: adjust section position" -msgid "Ctrl+Mouse wheel" -msgstr "Ctrl+Mouse wheel" - -msgid "Alt+Mouse wheel" -msgstr "Alt+Mouse wheel" - msgid "Gizmo" msgstr "Gizmo" @@ -8776,6 +8772,11 @@ msgstr "" msgid "No object can be printed. Maybe too small" msgstr "No object can be printed. It may be too small." +msgid "" +"Your print is very close to the priming regions. Make sure there is no " +"collision." +msgstr "" + msgid "" "Failed to generate gcode for invalid custom G-code.\n" "\n" @@ -9010,11 +9011,10 @@ msgid "Variable layer height is not supported with Organic supports." msgstr "Variable layer height is not supported with Organic supports." msgid "" -"Different nozzle diameters and different filament diameters is not allowed " -"when prime tower is enabled." +"Different nozzle diameters and different filament diameters may not work " +"well when the prime tower is enabled. It's very experimental, so please " +"proceed with caution." msgstr "" -"Different nozzle diameters and different filament diameters is not allowed " -"when prime tower is enabled." msgid "" "The Wipe Tower is currently only supported with the relative extruder " @@ -9024,9 +9024,9 @@ msgstr "" "addressing (use_relative_e_distances=1)." msgid "" -"Ooze prevention is currently not supported with the prime tower enabled." +"Ooze prevention is only supported with the wipe tower when " +"'single_extruder_multi_material' is off." msgstr "" -"Ooze prevention is currently not supported with the prime tower enabled." msgid "" "The prime tower is currently only supported for the Marlin, RepRap/Sprinter, " @@ -10274,6 +10274,86 @@ msgstr "" msgid "Pressure advance(Klipper) AKA Linear advance factor(Marlin)" msgstr "" +msgid "Enable adaptive pressure advance (beta)" +msgstr "" + +#, c-format, boost-format +msgid "" +"With increasing print speeds (and hence increasing volumetric flow through " +"the nozzle) and increasing accelerations, it has been observed that the " +"effective PA value typically decreases. This means that a single PA value is " +"not always 100% optimal for all features and a compromise value is usually " +"used that does not cause too much bulging on features with lower flow speed " +"and accelerations while also not causing gaps on faster features.\n" +"\n" +"This feature aims to address this limitation by modeling the response of " +"your printer's extrusion system depending on the volumetric flow speed and " +"acceleration it is printing at. Internally, it generates a fitted model that " +"can extrapolate the needed pressure advance for any given volumetric flow " +"speed and acceleration, which is then emmited to the printer depending on " +"the current print conditions.\n" +"\n" +"When enabled, the pressure advance value above is overriden. However, a " +"reasonable default value above is strongly recomended to act as a fallback " +"and for when tool changing.\n" +"\n" +msgstr "" + +msgid "Adaptive pressure advance measurements (beta)" +msgstr "" + +msgid "" +"Add sets of pressure advance (PA) values, the volumetric flow speeds and " +"accelerations they were measured at, separated by a comma. One set of values " +"per line. For example\n" +"0.04,3.96,3000\n" +"0.033,3.96,10000\n" +"0.029,7.91,3000\n" +"0.026,7.91,10000\n" +"\n" +"How to calibrate:\n" +"1. Run the pressure advance test for at least 3 speeds per acceleration " +"value. It is recommended that the test is run for at least the speed of the " +"external perimeters, the speed of the internal perimeters and the fastest " +"feature print speed in your profile (usually its the sparse or solid " +"infill). Then run them for the same speeds for the slowest and fastest print " +"accelerations,and no faster than the recommended maximum acceleration as " +"given by the klipper input shaper.\n" +"2. Take note of the optimal PA value for each volumetric flow speed and " +"acceleration. You can find the flow number by selecting flow from the color " +"scheme drop down and move the horizontal slider over the PA pattern lines. " +"The number should be visible at the bottom of the page. The ideal PA value " +"should be decreasing the higher the volumetric flow is. If it is not, " +"confirm that your extruder is functioning correctly.The slower and with less " +"acceleration you print, the larger the range of acceptable PA values. If no " +"difference is visible, use the PA value from the faster test.3. Enter the " +"triplets of PA values, Flow and Accelerations in the text box here and save " +"your filament profile\n" +"\n" +msgstr "" + +msgid "Enable adaptive pressure advance for overhangs (beta)" +msgstr "" + +msgid "" +"Enable adaptive PA for overhangs as well as when flow changes within the " +"same feature. This is an experimental option, as if the PA profile is not " +"set accurately, it will cause uniformity issues on the external surfaces " +"before and after overhangs.\n" +msgstr "" + +msgid "Pressure advance for bridges" +msgstr "" + +msgid "" +"Pressure advance value for bridges. Set to 0 to disable. \n" +"\n" +" A lower PA value when printing bridges helps reduce the appearance of " +"slight under extrusion immediately after bridges. This is caused by the " +"pressure drop in the nozzle when printing in the air and a lower PA helps " +"counteract this." +msgstr "" + msgid "" "Default line width if other line widths are set to 0. If expressed as a %, " "it will be computed over the nozzle diameter." @@ -10449,6 +10529,21 @@ msgid "" "Specify desired number of these moves." msgstr "" +msgid "Stamping loading speed" +msgstr "" + +msgid "Speed used for stamping." +msgstr "" + +msgid "Stamping distance measured from the center of the cooling tube" +msgstr "" + +msgid "" +"If set to nonzero value, filament is moved toward the nozzle between the " +"individual cooling moves (\"stamping\"). This option configures how long " +"this movement should be before the filament is retracted again." +msgstr "" + msgid "Speed of the first cooling move" msgstr "" @@ -11166,8 +11261,12 @@ msgstr "" msgid "Interlocking depth of a segmented region" msgstr "Interlocking depth of a segmented region" -msgid "Interlocking depth of a segmented region. Zero disables this feature." -msgstr "Interlocking depth of a segmented region. Zero disables this feature." +msgid "" +"Interlocking depth of a segmented region. It will be ignored if " +"\"mmu_segmented_region_max_width\" is zero or if " +"\"mmu_segmented_region_interlocking_depth\"is bigger then " +"\"mmu_segmented_region_max_width\". Zero disables this feature." +msgstr "" msgid "Use beam interlocking" msgstr "" @@ -11521,9 +11620,6 @@ msgid "" "cooling is enabled." msgstr "" -msgid "Nozzle diameter" -msgstr "Nozzle diameter" - msgid "Diameter of nozzle" msgstr "The diameter of the nozzle" @@ -11613,6 +11709,11 @@ msgstr "" "oozing can't been seen. This can reduce times of retraction for complex " "model and save printing time, but make slicing and G-code generation slower." +msgid "" +"This option will drop the temperature of the inactive extruders to prevent " +"oozing." +msgstr "" + msgid "Filename format" msgstr "Filename format" @@ -11656,6 +11757,9 @@ msgstr "" "This detects the overhang percentage relative to line width and uses a " "different speed to print. For 100%% overhang, bridging speed is used." +msgid "Filament to print walls" +msgstr "" + msgid "" "Line width of inner wall. If expressed as a %, it will be computed over the " "nozzle diameter." @@ -11689,12 +11793,21 @@ msgid "" "environment variables." msgstr "" +msgid "Printer type" +msgstr "" + +msgid "Type of the printer" +msgstr "" + msgid "Printer notes" msgstr "Printer notes" msgid "You can put your notes regarding the printer here." msgstr "You can put your notes regarding the printer here." +msgid "Printer variant" +msgstr "" + msgid "Raft contact Z distance" msgstr "Raft contact Z distance" @@ -12191,6 +12304,12 @@ msgstr "" "Sparse infill areas which are smaller than this threshold value are replaced " "by internal solid infill." +msgid "Solid infill" +msgstr "" + +msgid "Filament to print solid infill" +msgstr "" + msgid "" "Line width of internal solid infill. If expressed as a %, it will be " "computed over the nozzle diameter." @@ -12255,6 +12374,31 @@ msgstr "Traditional" msgid "Temperature variation" msgstr "Temperature variation" +#. TRN PrintSettings : "Ooze prevention" > "Temperature variation" +msgid "" +"Temperature difference to be applied when an extruder is not active. The " +"value is not used when 'idle_temperature' in filament settings is set to non " +"zero value." +msgstr "" + +msgid "Preheat time" +msgstr "" + +msgid "" +"To reduce the waiting time after tool change, Orca can preheat the next tool " +"while the current tool is still in use. This setting specifies the time in " +"seconds to preheat the next tool. Orca will insert a M104 command to preheat " +"the tool in advance." +msgstr "" + +msgid "Preheat steps" +msgstr "" + +msgid "" +"Insert multiple preheat commands(e.g. M104.1). Only useful for Prusa XL. For " +"other printers, please set it to 1." +msgstr "" + msgid "Start G-code" msgstr "Start G-code" @@ -12869,12 +13013,6 @@ msgid "" "Larger angle means wider base." msgstr "" -msgid "Wipe tower purge lines spacing" -msgstr "" - -msgid "Spacing of purge lines on the wipe tower." -msgstr "" - msgid "Maximum wipe tower print speed" msgstr "" @@ -12900,9 +13038,6 @@ msgid "" "regardless of this setting." msgstr "" -msgid "Wipe tower extruder" -msgstr "" - msgid "" "The extruder to use when printing perimeter of the wipe tower. Set to 0 to " "use the one that is available (non-soluble would be preferred)." @@ -12952,6 +13087,30 @@ msgstr "" msgid "Maximal distance between supports on sparse infill sections." msgstr "" +msgid "Wipe tower purge lines spacing" +msgstr "" + +msgid "Spacing of purge lines on the wipe tower." +msgstr "" + +msgid "Extra flow for purging" +msgstr "" + +msgid "" +"Extra flow used for the purging lines on the wipe tower. This makes the " +"purging lines thicker or narrower than they normally would be. The spacing " +"is adjusted automatically." +msgstr "" + +msgid "Idle temperature" +msgstr "" + +msgid "" +"Nozzle temperature when the tool is currently not used in multi-tool setups." +"This is only used when 'Ooze prevention' is active in Print Settings. Set to " +"0 to disable." +msgstr "" + msgid "X-Y hole compensation" msgstr "X-Y hole compensation" @@ -13254,6 +13413,14 @@ msgstr "" msgid "Currently planned extra extruder priming after deretraction." msgstr "" +msgid "Absolute E position" +msgstr "" + +msgid "" +"Current position of the extruder axis. Only used with absolute extruder " +"addressing." +msgstr "" + msgid "Current extruder" msgstr "" @@ -13296,6 +13463,12 @@ msgstr "" msgid "Vector of bools stating whether a given extruder is used in the print." msgstr "" +msgid "Has single extruder MM priming" +msgstr "" + +msgid "Are the extra multi-material priming regions used in this print?" +msgstr "" + msgid "Volume per extruder" msgstr "" @@ -13440,6 +13613,14 @@ msgstr "" msgid "Name of the physical printer used for slicing." msgstr "" +msgid "Number of extruders" +msgstr "" + +msgid "" +"Total number of extruders, regardless of whether they are used in the " +"current print." +msgstr "" + msgid "Layer number" msgstr "" @@ -15742,6 +15923,71 @@ msgstr "" "ABS, appropriately increasing the heatbed temperature can reduce the " "probability of warping?" +#~ msgid "up to" +#~ msgstr "up to" + +#~ msgid "above" +#~ msgstr "above" + +#~ msgid "from" +#~ msgstr "from" + +#~ msgid "Switching application language while some presets are modified." +#~ msgstr "Switching application language while some presets are modified." + +#~ msgid "⌘+Shift+G" +#~ msgstr "⌘+Shift+G" + +#~ msgid "Ctrl+Shift+G" +#~ msgstr "Ctrl+Shift+G" + +#~ msgid "⌘+Any arrow" +#~ msgstr "⌘+Any arrow" + +#~ msgid "⌥+Left mouse button" +#~ msgstr "⌥+Left mouse button" + +#~ msgid "⌘+Left mouse button" +#~ msgstr "⌘+Left mouse button" + +#~ msgid "Ctrl+Any arrow" +#~ msgstr "Ctrl+Any arrow" + +#~ msgid "Alt+Left mouse button" +#~ msgstr "Alt+Left mouse button" + +#~ msgid "Ctrl+Left mouse button" +#~ msgstr "Ctrl+Left mouse button" + +#~ msgid "⌘+Mouse wheel" +#~ msgstr "⌘+Mouse wheel" + +#~ msgid "⌥+Mouse wheel" +#~ msgstr "⌥+Mouse wheel" + +#~ msgid "Ctrl+Mouse wheel" +#~ msgstr "Ctrl+Mouse wheel" + +#~ msgid "Alt+Mouse wheel" +#~ msgstr "Alt+Mouse wheel" + +#~ msgid "" +#~ "Different nozzle diameters and different filament diameters is not " +#~ "allowed when prime tower is enabled." +#~ msgstr "" +#~ "Different nozzle diameters and different filament diameters is not " +#~ "allowed when prime tower is enabled." + +#~ msgid "" +#~ "Ooze prevention is currently not supported with the prime tower enabled." +#~ msgstr "" +#~ "Ooze prevention is currently not supported with the prime tower enabled." + +#~ msgid "" +#~ "Interlocking depth of a segmented region. Zero disables this feature." +#~ msgstr "" +#~ "Interlocking depth of a segmented region. Zero disables this feature." + #~ msgid "Please input a valid value (K in 0~0.3)" #~ msgstr "Please input a valid value (K in 0~0.3)" diff --git a/localization/i18n/es/OrcaSlicer_es.po b/localization/i18n/es/OrcaSlicer_es.po index e27d124ecc3..c124c2eadee 100644 --- a/localization/i18n/es/OrcaSlicer_es.po +++ b/localization/i18n/es/OrcaSlicer_es.po @@ -3,7 +3,7 @@ msgid "" msgstr "" "Project-Id-Version: Orca Slicer\n" "Report-Msgid-Bugs-To: \n" -"POT-Creation-Date: 2024-07-30 10:20+0900\n" +"POT-Creation-Date: 2024-08-03 18:54+0200\n" "PO-Revision-Date: \n" "Last-Translator: Carlos Fco. Caruncho Serrano \n" "Language-Team: \n" @@ -7382,10 +7382,9 @@ msgid "" "start printing." msgstr "" "Hay algunos filamentos desconocidos en los mapeados AMS. Por favor, " -"compruebe si son los filamentos requeridos. Si lo son, presione " -"\"Confirmar\" para empezar a imprimir. Por favor, compruebe si son los " -"filamentos requeridos. Si lo son, presione \"Confirmar\" para empezar a " -"imprimir." +"compruebe si son los filamentos requeridos. Si lo son, presione \"Confirmar" +"\" para empezar a imprimir. Por favor, compruebe si son los filamentos " +"requeridos. Si lo son, presione \"Confirmar\" para empezar a imprimir." #, c-format, boost-format msgid "nozzle in preset: %s %s" @@ -7748,13 +7747,13 @@ msgstr "" msgid "" "When recording timelapse without toolhead, it is recommended to add a " "\"Timelapse Wipe Tower\" \n" -"by right-click the empty position of build plate and choose \"Add " -"Primitive\"->\"Timelapse Wipe Tower\"." +"by right-click the empty position of build plate and choose \"Add Primitive" +"\"->\"Timelapse Wipe Tower\"." msgstr "" "Cuando se graba un timelapse sin cabezal, se recomienda añadir una \"Torre " "de Purga de Timelapse\" haciendo clic con el botón derecho del ratón en la " -"posición vacía de la bandeja de impresión y seleccionando \"Añadir " -"Primitivo\"->Torre de Purga de Timelapse\"." +"posición vacía de la bandeja de impresión y seleccionando \"Añadir Primitivo" +"\"->Torre de Purga de Timelapse\"." msgid "Line width" msgstr "Ancho de extrusión" @@ -11706,10 +11705,10 @@ msgstr "Velocidad máxima del ventilador en la capa" msgid "" "Fan speed will be ramped up linearly from zero at layer " -"\"close_fan_the_first_x_layers\" to maximum at layer " -"\"full_fan_speed_layer\". \"full_fan_speed_layer\" will be ignored if lower " -"than \"close_fan_the_first_x_layers\", in which case the fan will be running " -"at maximum allowed speed at layer \"close_fan_the_first_x_layers\" + 1." +"\"close_fan_the_first_x_layers\" to maximum at layer \"full_fan_speed_layer" +"\". \"full_fan_speed_layer\" will be ignored if lower than " +"\"close_fan_the_first_x_layers\", in which case the fan will be running at " +"maximum allowed speed at layer \"close_fan_the_first_x_layers\" + 1." msgstr "" "La velocidad de ventilador se incrementará linealmente de cero a " "\"close_fan_the_first_x_layers\" al máximo de capa \"full_fan_speed_layer\". " @@ -12717,6 +12716,9 @@ msgstr "" "utiliza diferentes velocidades para imprimir. Para el 100%% de voladizo, se " "utiliza la velocidad de puente." +msgid "Filament to print walls" +msgstr "" + msgid "" "Line width of inner wall. If expressed as a %, it will be computed over the " "nozzle diameter." @@ -12766,12 +12768,21 @@ msgstr "" "como primer argumento, y pueden acceder a los ajustes de configuración de " "OrcaSlicer leyendo variables de entorno." +msgid "Printer type" +msgstr "" + +msgid "Type of the printer" +msgstr "" + msgid "Printer notes" msgstr "Anotaciones de la impresora" msgid "You can put your notes regarding the printer here." msgstr "Puede colocar sus notas acerca de la impresora aquí." +msgid "Printer variant" +msgstr "" + msgid "Raft contact Z distance" msgstr "Distancia Z de contacto de la balsa(base de impresión)" @@ -13359,6 +13370,12 @@ msgstr "" "El área de relleno de baja densidad que es menor que el valor del umbral se " "sustituye por un relleno sólido interno" +msgid "Solid infill" +msgstr "" + +msgid "Filament to print solid infill" +msgstr "" + msgid "" "Line width of internal solid infill. If expressed as a %, it will be " "computed over the nozzle diameter." @@ -14486,10 +14503,9 @@ msgstr "" "NOTA: Las superficies inferior y superior no se verán afectadas por este " "valor para evitar huecos visuales en el exterior del modelo. Ajuste \"Umbral " "de Perímetro\" en la configuración avanzada para ajustar la sensibilidad de " -"lo que se considera una superficie superior. El \"Umbral de un Solo " -"Perímetro\" sólo es visible si este valor es superior al valor " -"predeterminado de 0,5, o si las superficies superiores de un solo perímetro " -"están activados." +"lo que se considera una superficie superior. El \"Umbral de un Solo Perímetro" +"\" sólo es visible si este valor es superior al valor predeterminado de 0,5, " +"o si las superficies superiores de un solo perímetro están activados." msgid "First layer minimum wall width" msgstr "Ancho mínimo del perímetro de la primera capa" @@ -15259,12 +15275,12 @@ msgstr "" "impresión de varios colores/materiales, la impresora utilizará el parámetro " "de compensación por defecto para el filamento durante cada cambio de " "filamento que tendrá un buen resultado en la mayoría de los casos.\n" -"un solo color/material, con la opción \"calibración de la dinámica de " -"flujo\" marcada en el menú de inicio de impresión, la impresora seguirá el " -"camino antiguo, calibrar el filamento antes de la impresión; cuando se " -"inicia una impresión de varios colores/materiales, la impresora utilizará el " -"parámetro de compensación por defecto para el filamento durante cada cambio " -"de filamento que tendrá un buen resultado en la mayoría de los casos.\n" +"un solo color/material, con la opción \"calibración de la dinámica de flujo" +"\" marcada en el menú de inicio de impresión, la impresora seguirá el camino " +"antiguo, calibrar el filamento antes de la impresión; cuando se inicia una " +"impresión de varios colores/materiales, la impresora utilizará el parámetro " +"de compensación por defecto para el filamento durante cada cambio de " +"filamento que tendrá un buen resultado en la mayoría de los casos.\n" "\n" "Tenga en cuenta que hay algunos casos que pueden hacer que los resultados de " "la calibración no sean fiables, como una adhesión insuficiente en la bandeja " @@ -16020,8 +16036,8 @@ msgstr "" "¿Quieres reescribirlo?" msgid "" -"We would rename the presets as \"Vendor Type Serial @printer you " -"selected\". \n" +"We would rename the presets as \"Vendor Type Serial @printer you selected" +"\". \n" "To add preset for more printers, Please go to printer selection" msgstr "" "Cambiaremos el nombre de los perfiles a \"Tipo Número de Serie @impresora " @@ -17428,14 +17444,14 @@ msgstr "" #~ "Cuando grabamos timelapse sin cabezal de impresión, es recomendable " #~ "añadir un \"Torre de Purga de Intervalo\" \n" #~ "presionando con el botón derecho la posición vacía de la bandeja de " -#~ "construcción y elegir \"Añadir Primitivo\"->\"Intervalo de Torre de " -#~ "Purga\"." +#~ "construcción y elegir \"Añadir Primitivo\"->\"Intervalo de Torre de Purga" +#~ "\"." #~ msgid "" -#~ "We would rename the presets as \"Vendor Type Serial @printer you " -#~ "selected\". \n" -#~ "We would rename the presets as \"Vendor Type Serial @printer you " -#~ "selected\". \n" +#~ "We would rename the presets as \"Vendor Type Serial @printer you selected" +#~ "\". \n" +#~ "We would rename the presets as \"Vendor Type Serial @printer you selected" +#~ "\". \n" #~ "To add preset for more printers, Please go to printer selection" #~ msgstr "" #~ "Cambiaríamos el nombre de los preajustes a \"Número de serie del Vendedor " diff --git a/localization/i18n/fr/OrcaSlicer_fr.po b/localization/i18n/fr/OrcaSlicer_fr.po index f7342ab1d7b..1f2edeab23e 100644 --- a/localization/i18n/fr/OrcaSlicer_fr.po +++ b/localization/i18n/fr/OrcaSlicer_fr.po @@ -6,7 +6,7 @@ msgid "" msgstr "" "Project-Id-Version: Orca Slicer\n" "Report-Msgid-Bugs-To: \n" -"POT-Creation-Date: 2024-06-30 15:44+0200\n" +"POT-Creation-Date: 2024-08-03 18:54+0200\n" "PO-Revision-Date: \n" "Last-Translator: \n" "Language-Team: Guislain Cyril, Thomas Lété\n" @@ -77,9 +77,6 @@ msgstr "Angle de remplissage intelligent" msgid "On overhangs only" msgstr "Sur les surplombs uniquement" -msgid "Auto support threshold angle: " -msgstr "Angle de seuil de support automatique : " - msgid "Circle" msgstr "Cercle" @@ -100,6 +97,9 @@ msgstr "" msgid "Highlight faces according to overhang angle." msgstr "Mettre en surbrillance les faces en fonction de l'angle de surplomb." +msgid "Auto support threshold angle: " +msgstr "Angle de seuil de support automatique : " + msgid "No auto support" msgstr "Pas de support auto" @@ -1315,7 +1315,7 @@ msgid "ShiftLeft mouse button" msgstr "ShiftLeft mouse button" msgid "Select feature" -msgstr "Sélectionner une fonctionnalité" +msgstr "Sélectionner un trait" msgid "Select point" msgstr "Sélectionner un point" @@ -4200,15 +4200,6 @@ msgstr "Durée totale" msgid "Total cost" msgstr "Coût total" -msgid "up to" -msgstr "jusqu'à" - -msgid "above" -msgstr "au-dessus" - -msgid "from" -msgstr "de" - msgid "Color Scheme" msgstr "Schéma de couleur" @@ -4272,12 +4263,12 @@ msgstr "Temps de changement de filament" msgid "Cost" msgstr "Coût" -msgid "Color change" -msgstr "Changement de couleur" - msgid "Print" msgstr "Imprimer" +msgid "Color change" +msgstr "Changement de couleur" + msgid "Printer" msgstr "Imprimante" @@ -4461,7 +4452,7 @@ msgstr "Le volume:" msgid "Size:" msgstr "Taille:" -#, c-format, boost-format +#, boost-format msgid "" "Conflicts of gcode paths have been found at layer %d, z = %.2lf mm. Please " "separate the conflicted objects farther (%s <-> %s)." @@ -5924,7 +5915,7 @@ msgid "View all object's settings" msgstr "Afficher tous les paramètres de l'objet" msgid "Material settings" -msgstr "" +msgstr "Réglages des matériaux" msgid "Remove current plate (if not last one)" msgstr "Retirer la plaque actuelle (si elle n'est pas la dernière)" @@ -6003,7 +5994,7 @@ msgid "Search plate, object and part." msgstr "Recherche de plaque, d'objet et de pièce." msgid "Pellets" -msgstr "" +msgstr "Pellets" msgid "" "No AMS filaments. Please select a printer in 'Device' page to load AMS info." @@ -6223,6 +6214,16 @@ msgstr "Un objet en plusieurs parties a été détecté" msgid "The file does not contain any geometry data." msgstr "Le fichier ne contient pas de données géométriques." +msgid "" +"Your object appears to be too large. It will be scaled down to fit the heat " +"bed automatically." +msgstr "" +"Votre objet est trop grand. Il sera automatiquement réduit pour s’adapter au " +"plateau." + +msgid "Object too large" +msgstr "Objet trop grand" + msgid "" "Your object appears to be too large, Do you want to scale it down to fit the " "heat bed automatically?" @@ -6230,9 +6231,6 @@ msgstr "" "Votre objet semble trop grand. Voulez-vous le réduire pour l'adapter " "automatiquement au plateau d'impression ?" -msgid "Object too large" -msgstr "Objet trop grand" - msgid "Export STL file:" msgstr "Exporter le fichier STL :" @@ -6623,11 +6621,6 @@ msgstr "Voulez-vous continuer?" msgid "Language selection" msgstr "Sélection de la langue" -msgid "Switching application language while some presets are modified." -msgstr "" -"Changer la langue de l'application pendant que certains préréglages sont " -"modifiés." - msgid "Changing application language" msgstr "Changer la langue de l'application" @@ -6647,19 +6640,19 @@ msgid "Choose Download Directory" msgstr "Choisissez le répertoire de téléchargement" msgid "Associate" -msgstr "" +msgstr "Associé" msgid "with OrcaSlicer so that Orca can open models from" -msgstr "" +msgstr "avec OrcaSlicer afin qu’Orca puisse ouvrir des modèles à partir de" msgid "Current Association: " -msgstr "" +msgstr "Association actuelle : " msgid "Current Instance" -msgstr "" +msgstr "Instance courante" msgid "Current Instance Path: " -msgstr "" +msgstr "Chemin d’accès à l’instance courante : " msgid "General Settings" msgstr "Paramètres généraux" @@ -6833,6 +6826,12 @@ msgstr "" "Si cette option est activée, vous pouvez envoyer une tâche à plusieurs " "appareils en même temps et gérer plusieurs appareils." +msgid "Auto arrange plate after cloning" +msgstr "Arrangement automatique de la plaque après le clonage" + +msgid "Auto arrange plate after object cloning" +msgstr "Arrangement automatique de la plaque après le clonage de l’objet" + msgid "Network" msgstr "Réseau" @@ -7793,8 +7792,8 @@ msgstr "" msgid "" "When recording timelapse without toolhead, it is recommended to add a " "\"Timelapse Wipe Tower\" \n" -"by right-click the empty position of build plate and choose \"Add Primitive" -"\"->\"Timelapse Wipe Tower\"." +"by right-click the empty position of build plate and choose \"Add " +"Primitive\"->\"Timelapse Wipe Tower\"." msgstr "" "Lorsque vous enregistrez un timelapse sans tête d’outil, il est recommandé " "d’ajouter une \"Tour d’essuyage timelapse\".\n" @@ -7871,12 +7870,21 @@ msgstr "Filament de support" msgid "Tree supports" msgstr "Supports arborescents" -msgid "Skirt" -msgstr "Jupe" +msgid "Multimaterial" +msgstr "Multi-matériaux" msgid "Prime tower" msgstr "Tour de purge" +msgid "Filament for Features" +msgstr "Filament pour les caractéristiques" + +msgid "Ooze prevention" +msgstr "Prévention des suintements" + +msgid "Skirt" +msgstr "Jupe" + msgid "Special mode" msgstr "Mode spécial" @@ -7930,6 +7938,9 @@ msgstr "" "Plage de température de buse recommandée pour ce filament. 0 signifie pas " "d'ensemble" +msgid "Flow ratio and Pressure Advance" +msgstr "Rapport de débit et avance de pression" + msgid "Print chamber temperature" msgstr "Température du caisson d’impression" @@ -7949,9 +7960,9 @@ msgid "" "Bed temperature when cool plate is installed. Value 0 means the filament " "does not support to print on the Cool Plate" msgstr "" -"Il s'agit de la température du plateau lorsque le plateau froid (\"Cool plate" -"\") est installé. Une valeur à 0 signifie que ce filament ne peut pas être " -"imprimé sur le plateau froid." +"Il s'agit de la température du plateau lorsque le plateau froid (\"Cool " +"plate\") est installé. Une valeur à 0 signifie que ce filament ne peut pas " +"être imprimé sur le plateau froid." msgid "Engineering plate" msgstr "Plaque Engineering" @@ -8043,9 +8054,6 @@ msgstr "G-code de démarrage du filament" msgid "Filament end G-code" msgstr "G-code de fin de filament" -msgid "Multimaterial" -msgstr "Multi-matériaux" - msgid "Wipe tower parameters" msgstr "Paramètres de la tour d’essuyage" @@ -8138,12 +8146,37 @@ msgstr "Limitation des secousses" msgid "Single extruder multimaterial setup" msgstr "Configuration multi-matériaux pour extrudeur unique" +msgid "Number of extruders of the printer." +msgstr "Nombre d’extrudeurs de l’imprimante." + +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 "" +"Extrudeur unique multi-matériaux est sélectionné, \n" +"et tous les extrudeurs doivent avoir le même diamètre.\n" +"Souhaitez-vous modifier le diamètre de tous les extrudeurs pour qu’il " +"corresponde à la première valeur du diamètre de la buse de l’extrudeur ?" + +msgid "Nozzle diameter" +msgstr "Diamètre de la buse" + msgid "Wipe tower" msgstr "Tour d’essuyage" msgid "Single extruder multimaterial parameters" msgstr "Paramètres multi-matériaux pour extrudeur unique" +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 "" +"Il s’agit d’une imprimante mono extrudeur multimatériaux, les diamètres de " +"tous les extrudeurs seront réglés sur la nouvelle valeur. Voulez-vous " +"continuer ?" + msgid "Layer height limits" msgstr "Limites de hauteur de couche" @@ -8672,11 +8705,8 @@ msgid "Import geometry data from STL/STEP/3MF/OBJ/AMF files" msgstr "" "Importez des données de géométrie à partir de fichiers STL/STEP/3MF/OBJ/AMF." -msgid "⌘+Shift+G" -msgstr "⌘+Maj+G" - -msgid "Ctrl+Shift+G" -msgstr "Ctrl+Maj+G" +msgid "Shift+G" +msgstr "Shift+G" msgid "Paste from clipboard" msgstr "Coller depuis le presse-papier" @@ -8728,33 +8758,18 @@ msgstr "Maj+Tab" msgid "Collapse/Expand the sidebar" msgstr "Réduire/développer la barre latérale" -msgid "⌘+Any arrow" -msgstr "⌘+n'importe quelle flèche" +msgid "Any arrow" +msgstr "Toutes les flèches" msgid "Movement in camera space" msgstr "Mouvement dans l'espace de la caméra" -msgid "⌥+Left mouse button" -msgstr "⌥+Bouton gauche de la souris" - msgid "Select a part" msgstr "Sélectionner une pièce" -msgid "⌘+Left mouse button" -msgstr "⌘+Bouton gauche de la souris" - msgid "Select multiple objects" msgstr "Sélectionnez tous les objets sur la plaque actuelle" -msgid "Ctrl+Any arrow" -msgstr "Ctrl+n'importe quelle flèche" - -msgid "Alt+Left mouse button" -msgstr "Alt+Bouton gauche de la souris" - -msgid "Ctrl+Left mouse button" -msgstr "Ctrl+Bouton gauche de la souris" - msgid "Shift+Left mouse button" msgstr "Maj+Bouton gauche de la souris" @@ -8857,29 +8872,17 @@ msgstr "Plateau" msgid "Move: press to snap by 1mm" msgstr "Déplacer : appuyez pour aligner de 1 mm" -msgid "⌘+Mouse wheel" -msgstr "⌘+Molette de la souris" - msgid "Support/Color Painting: adjust pen radius" msgstr "Support/Peinture couleur : ajustez le rayon du stylet" -msgid "⌥+Mouse wheel" -msgstr "⌥+Molette de la souris" - msgid "Support/Color Painting: adjust section position" msgstr "Support/Peinture couleur : ajuster la position de la section" -msgid "Ctrl+Mouse wheel" -msgstr "Ctrl+Molette de la souris" - -msgid "Alt+Mouse wheel" -msgstr "Alt+Molette de la souris" - msgid "Gizmo" msgstr "Gizmo" msgid "Set extruder number for the objects and parts" -msgstr "Définir le numéro d'extrudeuse pour les objets et les pièces" +msgstr "Définir le numéro d'extrudeur pour les objets et les pièces" msgid "Delete objects, parts, modifiers " msgstr "Supprimer des objets, des pièces, des modificateurs " @@ -9195,6 +9198,13 @@ msgstr "" msgid "No object can be printed. Maybe too small" msgstr "Aucun objet ne peut être imprimé. Peut-être trop petit" +msgid "" +"Your print is very close to the priming regions. Make sure there is no " +"collision." +msgstr "" +"Votre impression est très proche des régions d’amorçage. Assurez-vous qu’il " +"n’y a pas de collision." + msgid "" "Failed to generate gcode for invalid custom G-code.\n" "\n" @@ -9395,8 +9405,8 @@ msgid "" "during printing" msgstr "" "Impossible d'imprimer plusieurs filaments qui ont une grande différence de " -"température ensemble. Sinon, l'extrudeuse et la buse peuvent être bloquées " -"ou endommagées pendant l'impression" +"température ensemble. Sinon, l'extrudeur et la buse peuvent être bloquées ou " +"endommagées pendant l'impression" msgid "No extrusions under current settings." msgstr "Aucune extrusion dans les paramètres actuels." @@ -9447,11 +9457,13 @@ msgstr "" "organiques." msgid "" -"Different nozzle diameters and different filament diameters is not allowed " -"when prime tower is enabled." +"Different nozzle diameters and different filament diameters may not work " +"well when the prime tower is enabled. It's very experimental, so please " +"proceed with caution." msgstr "" -"L’utilisation de diamètres de buses et de filaments différents n’est pas " -"autorisée lorsque l’option « prime tower » est activée." +"Différents diamètres de buses et de filaments peuvent ne pas fonctionner " +"correctement lorsque la tour d’amorçage est activée. Il s’agit d’un projet " +"très expérimental, il convient donc de procéder avec prudence." msgid "" "The Wipe Tower is currently only supported with the relative extruder " @@ -9461,10 +9473,11 @@ msgstr "" "des extrudeurs (use_relative_e_distances=1)." msgid "" -"Ooze prevention is currently not supported with the prime tower enabled." +"Ooze prevention is only supported with the wipe tower when " +"'single_extruder_multi_material' is off." msgstr "" -"La prévention des dépôts de boue n’est actuellement pas prise en charge " -"lorsque la tour principale est activée." +"La prévention du suintement n’est possible qu’avec la tour d’essuyage " +"lorsque l’option ‘single_extruder_multi_material’ est désactivée." msgid "" "The prime tower is currently only supported for the Marlin, RepRap/Sprinter, " @@ -10870,7 +10883,7 @@ msgid "" "Clearance radius around extruder. Used for collision avoidance in by-object " "printing." msgstr "" -"Rayon de dégagement autour de l'extrudeuse : utilisé pour éviter les " +"Rayon de dégagement autour de l'extrudeur : utilisé pour éviter les " "collisions lors de l'impression par objets." msgid "Nozzle height" @@ -10987,6 +11000,146 @@ msgstr "" msgid "Pressure advance(Klipper) AKA Linear advance factor(Marlin)" msgstr "Pressure Advance (Klipper) AKA Linear Advance (Marlin)" +msgid "Enable adaptive pressure advance (beta)" +msgstr "Activer l’avance de pression adaptative (beta)" + +#, c-format, boost-format +msgid "" +"With increasing print speeds (and hence increasing volumetric flow through " +"the nozzle) and increasing accelerations, it has been observed that the " +"effective PA value typically decreases. This means that a single PA value is " +"not always 100%% optimal for all features and a compromise value is usually " +"used that does not cause too much bulging on features with lower flow speed " +"and accelerations while also not causing gaps on faster features.\n" +"\n" +"This feature aims to address this limitation by modeling the response of " +"your printer's extrusion system depending on the volumetric flow speed and " +"acceleration it is printing at. Internally, it generates a fitted model that " +"can extrapolate the needed pressure advance for any given volumetric flow " +"speed and acceleration, which is then emmited to the printer depending on " +"the current print conditions.\n" +"\n" +"When enabled, the pressure advance value above is overriden. However, a " +"reasonable default value above is strongly recomended to act as a fallback " +"and for when tool changing.\n" +"\n" +msgstr "" +"Avec l’augmentation des vitesses d’impression (et donc du débit volumétrique " +"à travers la buse) et des accélérations, il a été observé que la valeur " +"effective de PA diminue généralement. Cela signifie qu’une valeur PA unique " +"n’est pas toujours optimale à 100%% pour toutes les caractéristiques et " +"qu’une valeur de compromis est généralement utilisée pour éviter de trop " +"gonfler les caractéristiques avec une vitesse d’écoulement et des " +"accélérations plus faibles, tout en évitant de créer des interstices sur les " +"traits plus rapides.\n" +"\n" +"Cette fonction vise à remédier à cette limitation en modélisant la réponse " +"du système d’extrusion de votre imprimante en fonction de la vitesse du flux " +"volumétrique et de l’accélération de l’impression. En interne, elle génère " +"un modèle ajusté qui peut extrapoler l’avance de pression nécessaire pour " +"une vitesse de débit volumétrique et une accélération données, qui est " +"ensuite émise à l’imprimante en fonction des conditions d’impression " +"actuelles.\n" +"\n" +"Lorsqu’elle est activée, la valeur de l’avance de pression ci-dessus est " +"annulée. Cependant, une valeur par défaut raisonnable est fortement " +"recommandée pour servir de solution de secours et en cas de changement " +"d’outil.\n" + +msgid "Adaptive pressure advance measurements (beta)" +msgstr "Mesures adaptatives de l’avance de pression (beta)" + +msgid "" +"Add sets of pressure advance (PA) values, the volumetric flow speeds and " +"accelerations they were measured at, separated by a comma. One set of values " +"per line. For example\n" +"0.04,3.96,3000\n" +"0.033,3.96,10000\n" +"0.029,7.91,3000\n" +"0.026,7.91,10000\n" +"\n" +"How to calibrate:\n" +"1. Run the pressure advance test for at least 3 speeds per acceleration " +"value. It is recommended that the test is run for at least the speed of the " +"external perimeters, the speed of the internal perimeters and the fastest " +"feature print speed in your profile (usually its the sparse or solid " +"infill). Then run them for the same speeds for the slowest and fastest print " +"accelerations,and no faster than the recommended maximum acceleration as " +"given by the klipper input shaper.\n" +"2. Take note of the optimal PA value for each volumetric flow speed and " +"acceleration. You can find the flow number by selecting flow from the color " +"scheme drop down and move the horizontal slider over the PA pattern lines. " +"The number should be visible at the bottom of the page. The ideal PA value " +"should be decreasing the higher the volumetric flow is. If it is not, " +"confirm that your extruder is functioning correctly.The slower and with less " +"acceleration you print, the larger the range of acceptable PA values. If no " +"difference is visible, use the PA value from the faster test.3. Enter the " +"triplets of PA values, Flow and Accelerations in the text box here and save " +"your filament profile\n" +"\n" +msgstr "" +"Ajouter des séries de valeurs d'avance de pression (PA), les vitesses de " +"débit volumétrique et les accélérations auxquelles elles ont été mesurées, " +"séparées par une virgule. Un ensemble de valeurs par ligne. Par exemple\n" +"0.04,3.96,3000\n" +"0.033,3.96,10000\n" +"0.029,7.91,3000\n" +"0.026,7.91,10000\n" +"\n" +"Comment calibrer :\n" +"1. Effectuer le test d’avance de pression pour au moins 3 vitesses par " +"valeur d’accélération. Il est recommandé d’effectuer le test pour au moins " +"la vitesse des périmètres externes, la vitesse des périmètres internes et la " +"vitesse d’impression de la caractéristique la plus rapide de votre profil " +"(en général, il s’agit du remplissage clairsemé ou plein). Ensuite, il faut " +"les exécuter aux mêmes vitesses pour les accélérations d’impression les plus " +"lentes et les plus rapides, et pas plus vite que l’accélération maximale " +"recommandée par le modeleur d’entrée de klipper.\n" +"2. Notez la valeur optimale de PA pour chaque vitesse de flux volumétrique " +"et accélération. Vous pouvez trouver le numéro de débit en sélectionnant le " +"débit dans le menu déroulant du schéma de couleurs et en déplaçant le " +"curseur horizontal sur les lignes du schéma PA. Le chiffre doit être visible " +"en bas de la page. La valeur idéale du PA devrait diminuer au fur et à " +"mesure que le débit volumétrique augmente. Si ce n’est pas le cas, vérifiez " +"que votre extrudeur fonctionne correctement. Plus vous imprimez lentement et " +"avec peu d’accélération, plus la plage des valeurs PA acceptables est " +"grande. Si aucune différence n’est visible, utilisez la valeur PA du test le " +"plus rapide.3 Entrez les triplets de valeurs PA, de débit et d’accélérations " +"dans la zone de texte ici et sauvegardez votre profil de filament.\n" + +msgid "Enable adaptive pressure advance for overhangs (beta)" +msgstr "" +"Activation de l’avance de pression adaptative pour les surplombs (beta)" + +msgid "" +"Enable adaptive PA for overhangs as well as when flow changes within the " +"same feature. This is an experimental option, as if the PA profile is not " +"set accurately, it will cause uniformity issues on the external surfaces " +"before and after overhangs.\n" +msgstr "" +"Activer le PA adaptatif pour les surplombs ainsi que pour les changements de " +"débit au sein d’un même élément. Il s’agit d’une option expérimentale, car " +"si le profil PA n’est pas défini avec précision, il entraînera des problèmes " +"d’uniformité sur les surfaces externes avant et après les surplombs.\n" + +msgid "Pressure advance for bridges" +msgstr "Avance de pression pour les ponts" + +msgid "" +"Pressure advance value for bridges. Set to 0 to disable. \n" +"\n" +" A lower PA value when printing bridges helps reduce the appearance of " +"slight under extrusion immediately after bridges. This is caused by the " +"pressure drop in the nozzle when printing in the air and a lower PA helps " +"counteract this." +msgstr "" +"Valeur de l’avance de pression pour les ponts. Régler à 0 pour désactiver. \n" +"\n" +" Une valeur PA plus faible lors de l’impression de ponts permet de réduire " +"l’apparition d’une légère sous-extrusion immédiatement après les ponts. Ce " +"phénomène est dû à la chute de pression dans la buse lors de l’impression " +"dans l’air et une valeur PA plus faible permet d’y remédier." + msgid "" "Default line width if other line widths are set to 0. If expressed as a %, " "it will be computed over the nozzle diameter." @@ -11103,7 +11256,7 @@ msgstr "" "dans le G-code, il est donc important qu'il soit exact et précis." msgid "Pellet flow coefficient" -msgstr "" +msgstr "Coefficient d’écoulement des pellets" msgid "" "Pellet flow coefficient is emperically derived and allows for volume " @@ -11114,6 +11267,13 @@ msgid "" "\n" "filament_diameter = sqrt( (4 * pellet_flow_coefficient) / PI )" msgstr "" +"Le coefficient d’écoulement des pellets est dérivé de manière empirique et " +"permet de calculer le volume des imprimantes à pellets.\n" +"\n" +"En interne, il est converti en diamètre de filament. Tous les autres calculs " +"de volume restent inchangés.\n" +"\n" +"filament_diameter = sqrt( (4 * pellet_flow_coefficient) / PI )" msgid "Shrinkage" msgstr "Pourcentage de retrait" @@ -11186,6 +11346,26 @@ msgstr "" "Le filament est refroidi en étant déplacé d’avant en arrière dans les tubes " "de refroidissement. Précisez le nombre souhaité de ces mouvements." +msgid "Stamping loading speed" +msgstr "Vitesse de chargement du marquage" + +msgid "Speed used for stamping." +msgstr "Vitesse utilisée pour le marquage." + +msgid "Stamping distance measured from the center of the cooling tube" +msgstr "" +"Distance de marquage mesurée à partir du centre du tube de refroidissement" + +msgid "" +"If set to nonzero value, filament is moved toward the nozzle between the " +"individual cooling moves (\"stamping\"). This option configures how long " +"this movement should be before the filament is retracted again." +msgstr "" +"Si la valeur est différente de zéro, le filament est déplacé vers la buse " +"entre les différents mouvements de refroidissement («  marquage »). Cette " +"option permet de configurer la durée de ce mouvement avant que le filament " +"ne soit à nouveau rétracté." + msgid "Speed of the first cooling move" msgstr "Vitesse du premier mouvement de refroidissement" @@ -11622,10 +11802,10 @@ msgstr "Ventilateur à pleine vitesse à la couche" msgid "" "Fan speed will be ramped up linearly from zero at layer " -"\"close_fan_the_first_x_layers\" to maximum at layer \"full_fan_speed_layer" -"\". \"full_fan_speed_layer\" will be ignored if lower than " -"\"close_fan_the_first_x_layers\", in which case the fan will be running at " -"maximum allowed speed at layer \"close_fan_the_first_x_layers\" + 1." +"\"close_fan_the_first_x_layers\" to maximum at layer " +"\"full_fan_speed_layer\". \"full_fan_speed_layer\" will be ignored if lower " +"than \"close_fan_the_first_x_layers\", in which case the fan will be running " +"at maximum allowed speed at layer \"close_fan_the_first_x_layers\" + 1." msgstr "" "La vitesse du ventilateur augmentera de manière linéaire à partir de zéro à " "la couche \"close_fan_the_first_x_layers\" jusqu’au maximum à la couche " @@ -11917,10 +12097,12 @@ msgid "Klipper" msgstr "Klipper" msgid "Pellet Modded Printer" -msgstr "" +msgstr "Imprimante à pellets" msgid "Enable this option if your printer uses pellets instead of filaments" msgstr "" +"Activez cette option si votre imprimante utilise des pellets au lieu de " +"filaments." msgid "Support multi bed types" msgstr "Prise en charge de plusieurs types de plateaux" @@ -12043,55 +12225,73 @@ msgstr "" msgid "Interlocking depth of a segmented region" msgstr "Profondeur d’emboîtement d’une région segmentée" -msgid "Interlocking depth of a segmented region. Zero disables this feature." +msgid "" +"Interlocking depth of a segmented region. It will be ignored if " +"\"mmu_segmented_region_max_width\" is zero or if " +"\"mmu_segmented_region_interlocking_depth\"is bigger then " +"\"mmu_segmented_region_max_width\". Zero disables this feature." msgstr "" -"Profondeur d’imbrication d’une région segmentée. Zéro désactive cette " -"fonction." +"Profondeur d’imbrication d’une région segmentée. Elle sera ignorée si " +"« mmu_segmented_region_max_width » est égal à zéro ou si " +"« mmu_segmented_region_interlocking_depth » est supérieur à " +"« mmu_segmented_region_max_width ». La valeur zéro désactive cette " +"fonctionnalité." msgid "Use beam interlocking" -msgstr "" +msgstr "Utiliser l’emboîtement des poutres" msgid "" "Generate interlocking beam structure at the locations where different " "filaments touch. This improves the adhesion between filaments, especially " "models printed in different materials." msgstr "" +"Génère une structure de poutres imbriquées aux endroits où les différents " +"filaments se touchent. Cela améliore l’adhérence entre les filaments, en " +"particulier pour les modèles imprimés dans des matériaux différents." msgid "Interlocking beam width" -msgstr "" +msgstr "Largeur du faisceau d’emboîtement" msgid "The width of the interlocking structure beams." -msgstr "" +msgstr "La largeur des poutres de la structure d’emboîtement." msgid "Interlocking direction" -msgstr "" +msgstr "Sens d’emboîtement" msgid "Orientation of interlock beams." -msgstr "" +msgstr "Orientation des poutres de verrouillage." msgid "Interlocking beam layers" -msgstr "" +msgstr "Couches de poutres emboîtées" msgid "" "The height of the beams of the interlocking structure, measured in number of " "layers. Less layers is stronger, but more prone to defects." msgstr "" +"La hauteur des poutres de la structure d’emboîtement, mesurée en nombre de " +"couches. Moins il y a de couches, plus la structure est solide, mais plus " +"elle est sujette à des défauts." msgid "Interlocking depth" -msgstr "" +msgstr "Profondeur d’emboîtement" msgid "" "The distance from the boundary between filaments to generate interlocking " "structure, measured in cells. Too few cells will result in poor adhesion." msgstr "" +"La distance de la limite entre les filaments pour générer une structure " +"imbriquée, mesurée en cellules. Un nombre insuffisant de cellules entraîne " +"une mauvaise adhérence." msgid "Interlocking boundary avoidance" -msgstr "" +msgstr "Évitement des limites de l’imbrication" msgid "" "The distance from the outside of a model where interlocking structures will " "not be generated, measured in cells." msgstr "" +"La distance à partir de l’extérieur d’un modèle où les structures imbriquées " +"ne seront pas générées, mesurée en cellules." msgid "Ironing Type" msgstr "Type de lissage" @@ -12336,7 +12536,7 @@ msgid "" "The largest printable layer height for extruder. Used tp limits the maximum " "layer hight when enable adaptive layer height" msgstr "" -"La plus grande hauteur de couche imprimable pour l'extrudeuse. Utilisé tp " +"La plus grande hauteur de couche imprimable pour l'extrudeur. Utilisé tp " "limite la hauteur de couche maximale lorsque la hauteur de couche adaptative " "est activée" @@ -12450,7 +12650,7 @@ msgid "" "The lowest printable layer height for extruder. Used tp limits the minimum " "layer hight when enable adaptive layer height" msgstr "" -"La hauteur de couche imprimable la plus basse pour l'extrudeuse. Utilisé tp " +"La hauteur de couche imprimable la plus basse pour l'extrudeur. Utilisé tp " "limite la hauteur de couche minimale lorsque la hauteur de couche adaptative " "est activée" @@ -12466,9 +12666,6 @@ msgstr "" "de maintenir le temps de couche minimal ci-dessus, lorsque la fonction de " "ralentissement pour un meilleur refroidissement de la couche est activée." -msgid "Nozzle diameter" -msgstr "Diamètre de la buse" - msgid "Diameter of nozzle" msgstr "Diamètre de la buse" @@ -12575,6 +12772,13 @@ msgstr "" "peut réduire les rétractions pour les modèles complexes et économiser du " "temps d’impression, mais ralentit la découpe et la génération du G-code." +msgid "" +"This option will drop the temperature of the inactive extruders to prevent " +"oozing." +msgstr "" +"Cette option permet d’abaisser la température des extrudeurs inactifs afin " +"d’éviter le suintement." + msgid "Filename format" msgstr "Format du nom de fichier" @@ -12628,6 +12832,9 @@ msgstr "" "utilisez une vitesse différente pour imprimer. Pour un surplomb de 100%% la " "vitesse du pont est utilisée." +msgid "Filament to print walls" +msgstr "Filament pour imprimer les parois" + msgid "" "Line width of inner wall. If expressed as a %, it will be computed over the " "nozzle diameter." @@ -12678,12 +12885,21 @@ msgstr "" "code comme premier argument, et ils peuvent accéder aux paramètres de " "configuration Orca Slicer en lisant les variables d’environnement." +msgid "Printer type" +msgstr "Type d’imprimante" + +msgid "Type of the printer" +msgstr "Type de l’imprimante" + msgid "Printer notes" msgstr "Notes de l’mprimante" msgid "You can put your notes regarding the printer here." msgstr "Vous pouvez mettre vos notes concernant l’imprimante ici." +msgid "Printer variant" +msgstr "Variante de l’imprimante" + msgid "Raft contact Z distance" msgstr "Distance Z de contact du radeau" @@ -12762,7 +12978,7 @@ msgid "" "Some amount of material in extruder is pulled back to avoid ooze during long " "travel. Set zero to disable retraction" msgstr "" -"Une certaine quantité de matériau dans l'extrudeuse est retirée pour éviter " +"Une certaine quantité de matériau dans l'extrudeur est retirée pour éviter " "le suintement pendant les longs trajets. Définir zéro pour désactiver la " "rétraction" @@ -12834,12 +13050,14 @@ msgid "Spiral" msgstr "Spirale" msgid "Traveling angle" -msgstr "" +msgstr "Angle de déplacement" msgid "" "Traveling angle for Slope and Spiral Z hop type. Setting it to 90° results " "in Normal Lift" msgstr "" +"Angle de déplacement pour les sauts en Z en pente et en spirale. En le " +"réglant sur 90°, on obtient une levée normale." msgid "Only lift Z above" msgstr "Décalage en Z au-dessus uniquement" @@ -12914,7 +13132,7 @@ msgid "" "Speed for reloading filament into extruder. Zero means same speed with " "retraction" msgstr "" -"Vitesse de rechargement du filament dans l'extrudeuse. Zéro signifie même " +"Vitesse de rechargement du filament dans l'extrudeur. Zéro signifie même " "vitesse avec rétraction" msgid "Use firmware retraction" @@ -13268,6 +13486,12 @@ msgstr "" "La zone de remplissage inférieure à la valeur seuil est remplacée par un " "remplissage plein interne" +msgid "Solid infill" +msgstr "Remplissage solide" + +msgid "Filament to print solid infill" +msgstr "Filament pour l’impression de remplissage solide" + msgid "" "Line width of internal solid infill. If expressed as a %, it will be " "computed over the nozzle diameter." @@ -13336,6 +13560,42 @@ msgstr "Traditionnel" msgid "Temperature variation" msgstr "Variation de température" +#. TRN PrintSettings : "Ooze prevention" > "Temperature variation" +msgid "" +"Temperature difference to be applied when an extruder is not active. The " +"value is not used when 'idle_temperature' in filament settings is set to non " +"zero value." +msgstr "" +"Différence de température à appliquer lorsqu’un extrudeur n’est pas actif. " +"La valeur n’est pas utilisée lorsque ‘idle_temperature’ dans les paramètres " +"du filament est réglé sur une valeur non nulle." + +msgid "Preheat time" +msgstr "Durée du préchauffage" + +msgid "" +"To reduce the waiting time after tool change, Orca can preheat the next tool " +"while the current tool is still in use. This setting specifies the time in " +"seconds to preheat the next tool. Orca will insert a M104 command to preheat " +"the tool in advance." +msgstr "" +"Pour réduire le temps d’attente après un changement d’outil, Orca peut " +"préchauffer l’outil suivant pendant que l’outil actuel est encore en cours " +"d’utilisation. Ce paramètre spécifie le temps en secondes pour préchauffer " +"l’outil suivant. Orca insère une commande M104 pour préchauffer l’outil à " +"l’avance." + +msgid "Preheat steps" +msgstr "Étapes de préchauffage" + +msgid "" +"Insert multiple preheat commands(e.g. M104.1). Only useful for Prusa XL. For " +"other printers, please set it to 1." +msgstr "" +"Insérer plusieurs commandes de préchauffage (par exemple M104.1). Uniquement " +"utile pour la Prusa XL. Pour les autres imprimantes, veuillez le régler sur " +"1." + msgid "Start G-code" msgstr "G-code de démarrage" @@ -13421,8 +13681,8 @@ msgid "" "Use \"Even-odd\" for 3DLabPrint airplane models. Use \"Close holes\" to " "close all holes in the model." msgstr "" -"Utilisez « Pair-impair » pour les modèles d'avion 3DLabPrint. Utilisez « " -"Fermer les trous » pour fermer tous les trous du modèle." +"Utilisez « Pair-impair » pour les modèles d'avion 3DLabPrint. Utilisez " +"« Fermer les trous » pour fermer tous les trous du modèle." msgid "Regular" msgstr "Standard" @@ -14005,7 +14265,7 @@ msgid "Prime volume" msgstr "Premier volume" msgid "The volume of material to prime extruder on tower." -msgstr "Le volume de matériau à amorcer l'extrudeuse sur la tour." +msgstr "Le volume de matériau pour amorcer l'extrudeur sur la tour." msgid "Width of prime tower" msgstr "Largeur de la tour de purge." @@ -14026,12 +14286,6 @@ msgstr "" "Angle au sommet du cône utilisé pour stabiliser la tour d’essuyage. Un angle " "plus grand signifie une base plus large." -msgid "Wipe tower purge lines spacing" -msgstr "Espacement des lignes de purge de la tour d’essuyage" - -msgid "Spacing of purge lines on the wipe tower." -msgstr "Espacement des lignes de purge sur la tour d’essuyage." - msgid "Maximum wipe tower print speed" msgstr "Vitesse maximale d’impression de la tour d’essuyage" @@ -14078,9 +14332,6 @@ msgstr "" "Pour les périmètres externes de la tour d’essuyage, la vitesse du périmètre " "interne est utilisée indépendamment de ce paramètre." -msgid "Wipe tower extruder" -msgstr "Extrudeur de tour d’essuyage" - msgid "" "The extruder to use when printing perimeter of the wipe tower. Set to 0 to " "use the one that is available (non-soluble would be preferred)." @@ -14138,6 +14389,37 @@ msgstr "Distance de pont maximale" msgid "Maximal distance between supports on sparse infill sections." msgstr "Distance maximale entre les supports sur les sections de remplissage." +msgid "Wipe tower purge lines spacing" +msgstr "Espacement des lignes de purge de la tour d’essuyage" + +msgid "Spacing of purge lines on the wipe tower." +msgstr "Espacement des lignes de purge sur la tour d’essuyage." + +msgid "Extra flow for purging" +msgstr "Débit supplémentaire pour purger" + +msgid "" +"Extra flow used for the purging lines on the wipe tower. This makes the " +"purging lines thicker or narrower than they normally would be. The spacing " +"is adjusted automatically." +msgstr "" +"Débit supplémentaire utilisé pour les lignes de purge de la tour d’essuyage. " +"Cela rend les lignes de purge plus épaisses ou plus étroites qu’elles ne le " +"seraient normalement. L’espacement est ajusté automatiquement." + +msgid "Idle temperature" +msgstr "Température au repos" + +msgid "" +"Nozzle temperature when the tool is currently not used in multi-tool setups." +"This is only used when 'Ooze prevention' is active in Print Settings. Set to " +"0 to disable." +msgstr "" +"Température de la buse lorsque l’outil n’est pas utilisé dans les " +"configurations multi-outils. Cette fonction n’est utilisée que lorsque la " +"fonction « Prévention des suintements » est activée dans les paramètres " +"d’impression. Régler à 0 pour désactiver." + msgid "X-Y hole compensation" msgstr "Compensation de trou X-Y" @@ -14231,8 +14513,8 @@ msgid "" "Wipe tower is only compatible with relative mode. It is recommended on most " "printers. Default is checked" msgstr "" -"L’extrusion relative est recommandée lors de l’utilisation de l’option « " -"label_objects ». Certains extrudeurs fonctionnent mieux avec cette option " +"L’extrusion relative est recommandée lors de l’utilisation de l’option " +"« label_objects ». Certains extrudeurs fonctionnent mieux avec cette option " "non verrouillée (mode d’extrusion absolu). La tour d’essuyage n’est " "compatible qu’avec le mode relatif. Il est recommandé sur la plupart des " "imprimantes. L’option par défaut est cochée" @@ -14496,6 +14778,16 @@ msgstr "" "L’amorçage supplémentaire de l’extrudeuse après la dérétraction est " "actuellement prévu." +msgid "Absolute E position" +msgstr "Position E absolue" + +msgid "" +"Current position of the extruder axis. Only used with absolute extruder " +"addressing." +msgstr "" +"Position actuelle de l’axe de l’extrudeuse. Utilisé uniquement avec " +"l’adressage absolu de de I’extrudeur." + msgid "Current extruder" msgstr "Extrudeur actuel" @@ -14546,12 +14838,20 @@ msgstr "" "Vecteur de bools indiquant si un extrudeur donné est utilisé dans " "l’impression." +msgid "Has single extruder MM priming" +msgstr "Dispose d’un seul extrudeur MM d’amorçage" + +msgid "Are the extra multi-material priming regions used in this print?" +msgstr "" +"Les régions d’amorçage multimatériaux supplémentaires sont-elles utilisées " +"dans cette impression ?" + msgid "Volume per extruder" msgstr "Volume par extrudeur" msgid "Total filament volume extruded per extruder during the entire print." msgstr "" -"Volume total de filament extrudé par extrudeuse pendant toute la durée de " +"Volume total de filament extrudé par extrudeur pendant toute la durée de " "l’impression." msgid "Total toolchanges" @@ -14699,7 +14999,7 @@ msgid "" "containing one name for each extruder." msgstr "" "Noms des préréglages de filaments utilisés pour le découpage. La variable " -"est un vecteur contenant un nom pour chaque extrudeuse." +"est un vecteur contenant un nom pour chaque extrudeur." msgid "Printer preset name" msgstr "Nom du préréglage de l’imprimante" @@ -14713,6 +15013,16 @@ msgstr "Nom de l’imprimante physique" msgid "Name of the physical printer used for slicing." msgstr "Nom de l’imprimante physique utilisé pour la découpe." +msgid "Number of extruders" +msgstr "Nombre d’extrudeurs" + +msgid "" +"Total number of extruders, regardless of whether they are used in the " +"current print." +msgstr "" +"Nombre total d’extrudeurs, qu’ils soient ou non utilisées dans l’impression " +"en cours." + msgid "Layer number" msgstr "Numéro de couche" @@ -15863,8 +16173,8 @@ msgstr "" "Voulez-vous le réécrire ?" msgid "" -"We would rename the presets as \"Vendor Type Serial @printer you selected" -"\". \n" +"We would rename the presets as \"Vendor Type Serial @printer you " +"selected\". \n" "To add preset for more printers, Please go to printer selection" msgstr "" "Nous renommerions les préréglages en « Vendor Type Serial @printer you " @@ -16808,7 +17118,7 @@ msgid "Could not connect to SimplyPrint" msgstr "Impossible de se connecter à SimplyPrint" msgid "Internal error" -msgstr "" +msgstr "Erreur interne" msgid "Unknown error" msgstr "Erreur inconnue" @@ -16840,440 +17150,409 @@ msgstr "" msgid "User cancelled." msgstr "L’utilisateur a annulé." -#: resources/data/hints.ini: [hint:Precise wall] -msgid "" -"Precise wall\n" -"Did you know that turning on precise wall can improve precision and layer " -"consistency?" -msgstr "" -"Paroi précise\n" -"Saviez-vous que l’activation de la paroi précise peut améliorer la précision " -"et l’homogénéité des couches ?" +#~ msgid "Current association: " +#~ msgstr "Association actuelle : " -#: resources/data/hints.ini: [hint:Sandwich mode] -msgid "" -"Sandwich mode\n" -"Did you know that you can use sandwich mode (inner-outer-inner) to improve " -"precision and layer consistency if your model doesn't have very steep " -"overhangs?" -msgstr "" -"Mode sandwich\n" -"Saviez-vous que vous pouvez utiliser le mode sandwich (intérieur-extérieur-" -"intérieur) pour améliorer la précision et la cohérence des couches si votre " -"modèle n’a pas de porte-à-faux très prononcés ?" +#~ msgid "Associate prusaslicer://" +#~ msgstr "Associer prusaslicer://" -#: resources/data/hints.ini: [hint:Chamber temperature] -msgid "" -"Chamber temperature\n" -"Did you know that OrcaSlicer supports chamber temperature?" -msgstr "" -"Température du caisson\n" -"Saviez-vous qu’OrcaSlicer prend en charge la température du caisson ?" +#~ msgid "Not associated to any application" +#~ msgstr "N’est associé à aucune application" -#: resources/data/hints.ini: [hint:Calibration] -msgid "" -"Calibration\n" -"Did you know that calibrating your printer can do wonders? Check out our " -"beloved calibration solution in OrcaSlicer." -msgstr "" -"Calibrage\n" -"Saviez-vous que le calibrage de votre imprimante peut faire des merveilles ? " -"Découvrez notre solution de calibrage bien-aimée dans OrcaSlicer." +#~ msgid "" +#~ "Associate OrcaSlicer with prusaslicer:// links so that Orca can open " +#~ "models from Printable.com" +#~ msgstr "" +#~ "Associer OrcaSlicer aux liens prusaslicer:// afin qu’Orca puisse ouvrir " +#~ "des modèles provenant de Printable.com" -#: resources/data/hints.ini: [hint:Auxiliary fan] -msgid "" -"Auxiliary fan\n" -"Did you know that OrcaSlicer supports Auxiliary part cooling fan?" -msgstr "" -"Ventilateur auxiliaire\n" -"Saviez-vous qu’OrcaSlicer prend en charge le ventilateur auxiliaire de " -"refroidissement des pièces ?" +#~ msgid "Associate bambustudio://" +#~ msgstr "Associer bambustudio://" -#: resources/data/hints.ini: [hint:Air filtration] -msgid "" -"Air filtration/Exhaust Fan\n" -"Did you know that OrcaSlicer can support Air filtration/Exhaust Fan?" -msgstr "" -"Filtration de l’air/ventilateur d’extraction\n" -"Saviez-vous qu’OrcaSlicer peut prendre en charge la filtration de l’air/le " -"ventilateur d’extraction ?" +#~ msgid "" +#~ "Associate OrcaSlicer with bambustudio:// links so that Orca can open " +#~ "models from makerworld.com" +#~ msgstr "" +#~ "Associer OrcaSlicer aux liens bambustudio:// afin qu’Orca puisse ouvrir " +#~ "des modèles provenant de makerworld.com" -#: resources/data/hints.ini: [hint:G-code window] -msgid "" -"G-code window\n" -"You can turn on/off the G-code window by pressing the C key." -msgstr "" -"Fenêtre de G-code\n" -"Vous pouvez activer/désactiver la fenêtre G-code en appuyant sur la touche " -"C." +#~ msgid "Associate cura://" +#~ msgstr "Associer cura://" -#: resources/data/hints.ini: [hint:Switch workspaces] -msgid "" -"Switch workspaces\n" -"You can switch between Prepare and Preview workspaces by " -"pressing the Tab key." -msgstr "" -"Changer les espaces de travail\n" -"Vous pouvez alterner entre l’espace de travail Préparer et Aperçu en appuyant sur la touche Tab." +#~ msgid "" +#~ "Associate OrcaSlicer with cura:// links so that Orca can open models from " +#~ "thingiverse.com" +#~ msgstr "" +#~ "Associer OrcaSlicer aux liens cura:// pour qu’Orca puisse ouvrir les " +#~ "modèles de thingiverse.com" -#: resources/data/hints.ini: [hint:How to use keyboard shortcuts] -msgid "" -"How to use keyboard shortcuts\n" -"Did you know that Orca Slicer offers a wide range of keyboard shortcuts and " -"3D scene operations." -msgstr "" -"Comment utiliser les raccourcis clavier\n" -"Saviez-vous qu’Orca Slicer offre une large gamme de raccourcis clavier et " -"d’opérations sur les scènes 3D." +#~ msgid "Internel error" +#~ msgstr "Erreur interne" -#: resources/data/hints.ini: [hint:Reverse on odd] -msgid "" -"Reverse on odd\n" -"Did you know that Reverse on odd feature can significantly improve " -"the surface quality of your overhangs?" -msgstr "" -"Parois inversées sur couches impaires\n" -"Saviez-vous que la fonction Parois inversées sur couches impaires " -"peut améliorer de manière significative la qualité de la surface de vos " -"surplombs ?" +#~ msgid "" +#~ "Precise wall\n" +#~ "Did you know that turning on precise wall can improve precision and layer " +#~ "consistency?" +#~ msgstr "" +#~ "Paroi précise\n" +#~ "Saviez-vous que l’activation de la paroi précise peut améliorer la " +#~ "précision et l’homogénéité des couches ?" -#: resources/data/hints.ini: [hint:Cut Tool] -msgid "" -"Cut Tool\n" -"Did you know that you can cut a model at any angle and position with the " -"cutting tool?" -msgstr "" -"Outil de découpe\n" -"Saviez-vous que vous pouvez découper un modèle à n'importe quel angle et " -"dans n'importe quelle position avec l'outil de découpe ?" +#~ msgid "" +#~ "Sandwich mode\n" +#~ "Did you know that you can use sandwich mode (inner-outer-inner) to " +#~ "improve precision and layer consistency if your model doesn't have very " +#~ "steep overhangs?" +#~ msgstr "" +#~ "Mode sandwich\n" +#~ "Saviez-vous que vous pouvez utiliser le mode sandwich (intérieur-" +#~ "extérieur-intérieur) pour améliorer la précision et la cohérence des " +#~ "couches si votre modèle n’a pas de porte-à-faux très prononcés ?" -#: resources/data/hints.ini: [hint:Fix Model] -msgid "" -"Fix Model\n" -"Did you know that you can fix a corrupted 3D model to avoid a lot of slicing " -"problems on the Windows system?" -msgstr "" -"Réparer un modèle\n" -"Saviez-vous que vous pouvez réparer un modèle 3D corrompu pour éviter de " -"nombreux problèmes de découpage sur le système Windows ?" +#~ msgid "" +#~ "Chamber temperature\n" +#~ "Did you know that OrcaSlicer supports chamber temperature?" +#~ msgstr "" +#~ "Température du caisson\n" +#~ "Saviez-vous qu’OrcaSlicer prend en charge la température du caisson ?" -#: resources/data/hints.ini: [hint:Timelapse] -msgid "" -"Timelapse\n" -"Did you know that you can generate a timelapse video during each print?" -msgstr "" -"Timelapse\n" -"Saviez-vous que vous pouvez générer une vidéo en timelapse à chaque " -"impression ?" +#~ msgid "" +#~ "Calibration\n" +#~ "Did you know that calibrating your printer can do wonders? Check out our " +#~ "beloved calibration solution in OrcaSlicer." +#~ msgstr "" +#~ "Calibrage\n" +#~ "Saviez-vous que le calibrage de votre imprimante peut faire des " +#~ "merveilles ? Découvrez notre solution de calibrage bien-aimée dans " +#~ "OrcaSlicer." -#: resources/data/hints.ini: [hint:Auto-Arrange] -msgid "" -"Auto-Arrange\n" -"Did you know that you can auto-arrange all objects in your project?" -msgstr "" -"Agencement Automatique\n" -"Saviez-vous que vous pouvez agencement automatiquement tous les objets de " -"votre projet ?" +#~ msgid "" +#~ "Auxiliary fan\n" +#~ "Did you know that OrcaSlicer supports Auxiliary part cooling fan?" +#~ msgstr "" +#~ "Ventilateur auxiliaire\n" +#~ "Saviez-vous qu’OrcaSlicer prend en charge le ventilateur auxiliaire de " +#~ "refroidissement des pièces ?" -#: resources/data/hints.ini: [hint:Auto-Orient] -msgid "" -"Auto-Orient\n" -"Did you know that you can rotate objects to an optimal orientation for " -"printing by a simple click?" -msgstr "" -"Orientation Automatique\n" -"Saviez-vous que vous pouvez faire pivoter des objets dans une orientation " -"optimale pour l'impression d'un simple clic ?" +#~ msgid "" +#~ "Air filtration/Exhaust Fan\n" +#~ "Did you know that OrcaSlicer can support Air filtration/Exhaust Fan?" +#~ msgstr "" +#~ "Filtration de l’air/ventilateur d’extraction\n" +#~ "Saviez-vous qu’OrcaSlicer peut prendre en charge la filtration de l’air/" +#~ "le ventilateur d’extraction ?" -#: resources/data/hints.ini: [hint:Lay on Face] -msgid "" -"Lay on Face\n" -"Did you know that you can quickly orient a model so that one of its faces " -"sits on the print bed? Select the \"Place on face\" function or press the " -"F key." -msgstr "" -"Poser sur une face\n" -"Saviez-vous qu'il est possible d'orienter rapidement un modèle de manière à " -"ce que l'une de ses faces repose sur le plateau d'impression ? Sélectionnez " -"la fonction « Placer sur la face » ou appuyez sur la touche F." +#~ msgid "" +#~ "G-code window\n" +#~ "You can turn on/off the G-code window by pressing the C key." +#~ msgstr "" +#~ "Fenêtre de G-code\n" +#~ "Vous pouvez activer/désactiver la fenêtre G-code en appuyant sur la " +#~ "touche C." -#: resources/data/hints.ini: [hint:Object List] -msgid "" -"Object List\n" -"Did you know that you can view all objects/parts in a list and change " -"settings for each object/part?" -msgstr "" -"Liste d'objets\n" -"Saviez-vous que vous pouvez afficher tous les objets/pièces dans une liste " -"et modifier les paramètres de chaque objet/pièce ?" +#~ msgid "" +#~ "Switch workspaces\n" +#~ "You can switch between Prepare and Preview workspaces by " +#~ "pressing the Tab key." +#~ msgstr "" +#~ "Changer les espaces de travail\n" +#~ "Vous pouvez alterner entre l’espace de travail Préparer et " +#~ "Aperçu en appuyant sur la touche Tab." -#: resources/data/hints.ini: [hint:Search Functionality] -msgid "" -"Search Functionality\n" -"Did you know that you use the Search tool to quickly find a specific Orca " -"Slicer setting?" -msgstr "" -"Fonctionnalité de recherche\n" -"Saviez-vous que vous pouvez utiliser l’outil de recherche pour trouver " -"rapidement un paramètre spécifique de l’Orca Slicer ?" +#~ msgid "" +#~ "How to use keyboard shortcuts\n" +#~ "Did you know that Orca Slicer offers a wide range of keyboard shortcuts " +#~ "and 3D scene operations." +#~ msgstr "" +#~ "Comment utiliser les raccourcis clavier\n" +#~ "Saviez-vous qu’Orca Slicer offre une large gamme de raccourcis clavier et " +#~ "d’opérations sur les scènes 3D." -#: resources/data/hints.ini: [hint:Simplify Model] -msgid "" -"Simplify Model\n" -"Did you know that you can reduce the number of triangles in a mesh using the " -"Simplify mesh feature? Right-click the model and select Simplify model." -msgstr "" -"Simplifier le modèle\n" -"Saviez-vous que vous pouviez réduire le nombre de triangles dans un maillage " -"à l’aide de la fonction Simplifier le maillage ? Cliquez avec le bouton " -"droit de la souris sur le modèle et sélectionnez Simplifier le modèle." +#~ msgid "" +#~ "Reverse on odd\n" +#~ "Did you know that Reverse on odd feature can significantly improve " +#~ "the surface quality of your overhangs?" +#~ msgstr "" +#~ "Parois inversées sur couches impaires\n" +#~ "Saviez-vous que la fonction Parois inversées sur couches impaires " +#~ "peut améliorer de manière significative la qualité de la surface de vos " +#~ "surplombs ?" -#: resources/data/hints.ini: [hint:Slicing Parameter Table] -msgid "" -"Slicing Parameter Table\n" -"Did you know that you can view all objects/parts on a table and change " -"settings for each object/part?" -msgstr "" -"Tableau des paramètres de découpe\n" -"Saviez-vous que vous pouvez afficher tous les objets/pièces sur un tableau " -"et modifier les paramètres de chaque objet/pièce ?" +#~ msgid "" +#~ "Cut Tool\n" +#~ "Did you know that you can cut a model at any angle and position with the " +#~ "cutting tool?" +#~ msgstr "" +#~ "Outil de découpe\n" +#~ "Saviez-vous que vous pouvez découper un modèle à n'importe quel angle et " +#~ "dans n'importe quelle position avec l'outil de découpe ?" -#: resources/data/hints.ini: [hint:Split to Objects/Parts] -msgid "" -"Split to Objects/Parts\n" -"Did you know that you can split a big object into small ones for easy " -"colorizing or printing?" -msgstr "" -"Séparer en objets/parties\n" -"Saviez-vous que vous pouvez séparer un gros objet en petits objets pour les " -"colorier ou les imprimer facilement ?" +#~ msgid "" +#~ "Fix Model\n" +#~ "Did you know that you can fix a corrupted 3D model to avoid a lot of " +#~ "slicing problems on the Windows system?" +#~ msgstr "" +#~ "Réparer un modèle\n" +#~ "Saviez-vous que vous pouvez réparer un modèle 3D corrompu pour éviter de " +#~ "nombreux problèmes de découpage sur le système Windows ?" -#: resources/data/hints.ini: [hint:Subtract a Part] -msgid "" -"Subtract a Part\n" -"Did you know that you can subtract one mesh from another using the Negative " -"part modifier? That way you can, for example, create easily resizable holes " -"directly in Orca Slicer." -msgstr "" -"Soustraire une pièce\n" -"Saviez-vous que vous pouviez soustraire un maillage d’un autre à l’aide du " -"modificateur de partie négative ? De cette façon, vous pouvez, par exemple, " -"créer des trous facilement redimensionnables directement dans Orca Slicer." +#~ msgid "" +#~ "Timelapse\n" +#~ "Did you know that you can generate a timelapse video during each print?" +#~ msgstr "" +#~ "Timelapse\n" +#~ "Saviez-vous que vous pouvez générer une vidéo en timelapse à chaque " +#~ "impression ?" -#: resources/data/hints.ini: [hint:STEP] -msgid "" -"STEP\n" -"Did you know that you can improve your print quality by slicing a STEP file " -"instead of an STL?\n" -"Orca Slicer supports slicing STEP files, providing smoother results than a " -"lower resolution STL. Give it a try!" -msgstr "" -"STEP\n" -"Saviez-vous que vous pouvez améliorer votre qualité d'impression en " -"découpant un fichier .step au lieu d'un .stl ?\n" -"Orca Slicer prend en charge le découpage des fichiers .step, offrant des " -"résultats plus fluides qu'un .stl de résolution inférieure. Essayez !" +#~ msgid "" +#~ "Auto-Arrange\n" +#~ "Did you know that you can auto-arrange all objects in your project?" +#~ msgstr "" +#~ "Agencement Automatique\n" +#~ "Saviez-vous que vous pouvez agencement automatiquement tous les objets de " +#~ "votre projet ?" -#: resources/data/hints.ini: [hint:Z seam location] -msgid "" -"Z seam location\n" -"Did you know that you can customize the location of the Z seam, and even " -"paint it on your print, to have it in a less visible location? This improves " -"the overall look of your model. Check it out!" -msgstr "" -"Emplacement de la couture Z\n" -"Saviez-vous que vous pouvez personnaliser l'emplacement de la couture Z, et " -"même la peindre manuelle sur votre impression pour le placer dans un endroit " -"moins visible ? Cela améliore l'aspect général de votre modèle. Jetez-y un " -"coup d'œil !" +#~ msgid "" +#~ "Auto-Orient\n" +#~ "Did you know that you can rotate objects to an optimal orientation for " +#~ "printing by a simple click?" +#~ msgstr "" +#~ "Orientation Automatique\n" +#~ "Saviez-vous que vous pouvez faire pivoter des objets dans une orientation " +#~ "optimale pour l'impression d'un simple clic ?" -#: resources/data/hints.ini: [hint:Fine-tuning for flow rate] -msgid "" -"Fine-tuning for flow rate\n" -"Did you know that flow rate can be fine-tuned for even better-looking " -"prints? Depending on the material, you can improve the overall finish of the " -"printed model by doing some fine-tuning." -msgstr "" -"Réglage fin du débit\n" -"Saviez-vous que le débit peut être réglé avec précision pour obtenir des " -"impressions encore plus belles ? En fonction du matériau, vous pouvez " -"améliorer la finition générale du modèle imprimé en procédant à un réglage " -"fin." +#~ msgid "" +#~ "Lay on Face\n" +#~ "Did you know that you can quickly orient a model so that one of its faces " +#~ "sits on the print bed? Select the \"Place on face\" function or press the " +#~ "F key." +#~ msgstr "" +#~ "Poser sur une face\n" +#~ "Saviez-vous qu'il est possible d'orienter rapidement un modèle de manière " +#~ "à ce que l'une de ses faces repose sur le plateau d'impression ? " +#~ "Sélectionnez la fonction « Placer sur la face » ou appuyez sur la touche " +#~ "F." -#: resources/data/hints.ini: [hint:Split your prints into plates] -msgid "" -"Split your prints into plates\n" -"Did you know that you can split a model that has a lot of parts into " -"individual plates ready to print? This will simplify the process of keeping " -"track of all the parts." -msgstr "" -"Divisez vos impressions en plateaux\n" -"Saviez-vous que vous pouvez diviser un modèle comportant de nombreuses " -"pièces en plateaux individuels prêts à être imprimés ? Cela simplifie le " -"processus de suivi de toutes les pièces." +#~ msgid "" +#~ "Object List\n" +#~ "Did you know that you can view all objects/parts in a list and change " +#~ "settings for each object/part?" +#~ msgstr "" +#~ "Liste d'objets\n" +#~ "Saviez-vous que vous pouvez afficher tous les objets/pièces dans une " +#~ "liste et modifier les paramètres de chaque objet/pièce ?" -#: resources/data/hints.ini: [hint:Speed up your print with Adaptive Layer -#: Height] -msgid "" -"Speed up your print with Adaptive Layer Height\n" -"Did you know that you can print a model even faster, by using the Adaptive " -"Layer Height option? Check it out!" -msgstr "" -"Accélérez votre impression grâce à la Hauteur de Couche Adaptative\n" -"Saviez-vous que vous pouvez imprimer un modèle encore plus rapidement en " -"utilisant l'option Adaptive Layer Height ? Jetez-y un coup d'œil !" +#~ msgid "" +#~ "Search Functionality\n" +#~ "Did you know that you use the Search tool to quickly find a specific Orca " +#~ "Slicer setting?" +#~ msgstr "" +#~ "Fonctionnalité de recherche\n" +#~ "Saviez-vous que vous pouvez utiliser l’outil de recherche pour trouver " +#~ "rapidement un paramètre spécifique de l’Orca Slicer ?" -#: resources/data/hints.ini: [hint:Support painting] -msgid "" -"Support painting\n" -"Did you know that you can paint the location of your supports? This feature " -"makes it easy to place the support material only on the sections of the " -"model that actually need it." -msgstr "" -"Peinture de support\n" -"Saviez-vous que vous pouvez peindre l'emplacement de vos supports ? Cette " -"caractéristique permet de placer facilement le matériau de support " -"uniquement sur les sections du modèle qui en ont réellement besoin." +#~ msgid "" +#~ "Simplify Model\n" +#~ "Did you know that you can reduce the number of triangles in a mesh using " +#~ "the Simplify mesh feature? Right-click the model and select Simplify " +#~ "model." +#~ msgstr "" +#~ "Simplifier le modèle\n" +#~ "Saviez-vous que vous pouviez réduire le nombre de triangles dans un " +#~ "maillage à l’aide de la fonction Simplifier le maillage ? Cliquez avec le " +#~ "bouton droit de la souris sur le modèle et sélectionnez Simplifier le " +#~ "modèle." -#: resources/data/hints.ini: [hint:Different types of supports] -msgid "" -"Different types of supports\n" -"Did you know that you can choose from multiple types of supports? Tree " -"supports work great for organic models, while saving filament and improving " -"print speed. Check them out!" -msgstr "" -"Différents types de supports\n" -"Saviez-vous que vous pouvez choisir parmi plusieurs types de supports ? Les " -"supports arborescents fonctionnent parfaitement pour les modèles organiques " -"tout en économisant du filament et en améliorant la vitesse d'impression. " -"Découvrez-les !" +#~ msgid "" +#~ "Slicing Parameter Table\n" +#~ "Did you know that you can view all objects/parts on a table and change " +#~ "settings for each object/part?" +#~ msgstr "" +#~ "Tableau des paramètres de découpe\n" +#~ "Saviez-vous que vous pouvez afficher tous les objets/pièces sur un " +#~ "tableau et modifier les paramètres de chaque objet/pièce ?" -#: resources/data/hints.ini: [hint:Printing Silk Filament] -msgid "" -"Printing Silk Filament\n" -"Did you know that Silk filament needs special consideration to print it " -"successfully? Higher temperature and lower speed are always recommended for " -"the best results." -msgstr "" -"Impression de filament Soie\n" -"Saviez-vous que le filament soie nécessite une attention particulière pour " -"une impression réussie ? Une température plus élevée et une vitesse plus " -"faible sont toujours recommandées pour obtenir les meilleurs résultats." +#~ msgid "" +#~ "Split to Objects/Parts\n" +#~ "Did you know that you can split a big object into small ones for easy " +#~ "colorizing or printing?" +#~ msgstr "" +#~ "Séparer en objets/parties\n" +#~ "Saviez-vous que vous pouvez séparer un gros objet en petits objets pour " +#~ "les colorier ou les imprimer facilement ?" -#: resources/data/hints.ini: [hint:Brim for better adhesion] -msgid "" -"Brim for better adhesion\n" -"Did you know that when printing models have a small contact interface with " -"the printing surface, it's recommended to use a brim?" -msgstr "" -"Bordure pour une meilleure adhésion\n" -"Saviez-vous que lorsque les modèles imprimés ont une faible interface de " -"contact avec la surface d'impression, il est recommandé d'utiliser une " -"bordure ?" +#~ msgid "" +#~ "Subtract a Part\n" +#~ "Did you know that you can subtract one mesh from another using the " +#~ "Negative part modifier? That way you can, for example, create easily " +#~ "resizable holes directly in Orca Slicer." +#~ msgstr "" +#~ "Soustraire une pièce\n" +#~ "Saviez-vous que vous pouviez soustraire un maillage d’un autre à l’aide " +#~ "du modificateur de partie négative ? De cette façon, vous pouvez, par " +#~ "exemple, créer des trous facilement redimensionnables directement dans " +#~ "Orca Slicer." -#: resources/data/hints.ini: [hint:Set parameters for multiple objects] -msgid "" -"Set parameters for multiple objects\n" -"Did you know that you can set slicing parameters for all selected objects at " -"one time?" -msgstr "" -"Définir les paramètres de plusieurs objets\n" -"Saviez-vous que vous pouvez définir des paramètres de découpe pour tous les " -"objets sélectionnés en une seule fois ?" +#~ msgid "" +#~ "STEP\n" +#~ "Did you know that you can improve your print quality by slicing a STEP " +#~ "file instead of an STL?\n" +#~ "Orca Slicer supports slicing STEP files, providing smoother results than " +#~ "a lower resolution STL. Give it a try!" +#~ msgstr "" +#~ "STEP\n" +#~ "Saviez-vous que vous pouvez améliorer votre qualité d'impression en " +#~ "découpant un fichier .step au lieu d'un .stl ?\n" +#~ "Orca Slicer prend en charge le découpage des fichiers .step, offrant des " +#~ "résultats plus fluides qu'un .stl de résolution inférieure. Essayez !" -#: resources/data/hints.ini: [hint:Stack objects] -msgid "" -"Stack objects\n" -"Did you know that you can stack objects as a whole one?" -msgstr "" -"Empiler des objets\n" -"Saviez-vous que vous pouvez empiler des objets pour n'en former qu'un?" +#~ msgid "" +#~ "Z seam location\n" +#~ "Did you know that you can customize the location of the Z seam, and even " +#~ "paint it on your print, to have it in a less visible location? This " +#~ "improves the overall look of your model. Check it out!" +#~ msgstr "" +#~ "Emplacement de la couture Z\n" +#~ "Saviez-vous que vous pouvez personnaliser l'emplacement de la couture Z, " +#~ "et même la peindre manuelle sur votre impression pour le placer dans un " +#~ "endroit moins visible ? Cela améliore l'aspect général de votre modèle. " +#~ "Jetez-y un coup d'œil !" -#: resources/data/hints.ini: [hint:Flush into support/objects/infill] -msgid "" -"Flush into support/objects/infill\n" -"Did you know that you can save the wasted filament by flushing them into " -"support/objects/infill during filament change?" -msgstr "" -"Purger dans les supports/les objets/le remplissage\n" -"Saviez-vous que vous pouvez réduire le filament gaspillé en le purgeant dans " -"les supports/les objets/le remplissage lors des changements de filament ?" +#~ msgid "" +#~ "Fine-tuning for flow rate\n" +#~ "Did you know that flow rate can be fine-tuned for even better-looking " +#~ "prints? Depending on the material, you can improve the overall finish of " +#~ "the printed model by doing some fine-tuning." +#~ msgstr "" +#~ "Réglage fin du débit\n" +#~ "Saviez-vous que le débit peut être réglé avec précision pour obtenir des " +#~ "impressions encore plus belles ? En fonction du matériau, vous pouvez " +#~ "améliorer la finition générale du modèle imprimé en procédant à un " +#~ "réglage fin." -#: resources/data/hints.ini: [hint:Improve strength] -msgid "" -"Improve strength\n" -"Did you know that you can use more wall loops and higher sparse infill " -"density to improve the strength of the model?" -msgstr "" -"Améliorer la solidité\n" -"Saviez-vous que vous pouvez définir un plus grand nombre de périmètre et une " -"densité de remplissage plus élevée pour améliorer la résistance du modèle ?" +#~ msgid "" +#~ "Split your prints into plates\n" +#~ "Did you know that you can split a model that has a lot of parts into " +#~ "individual plates ready to print? This will simplify the process of " +#~ "keeping track of all the parts." +#~ msgstr "" +#~ "Divisez vos impressions en plateaux\n" +#~ "Saviez-vous que vous pouvez diviser un modèle comportant de nombreuses " +#~ "pièces en plateaux individuels prêts à être imprimés ? Cela simplifie le " +#~ "processus de suivi de toutes les pièces." -#: resources/data/hints.ini: [hint:When need to print with the printer door -#: opened] -msgid "" -"When need to print with the printer door opened\n" -"Did you know that opening the printer door can reduce the probability of " -"extruder/hotend clogging when printing lower temperature filament with a " -"higher enclosure temperature. More info about this in the Wiki." -msgstr "" -"Quand il faut imprimer avec la porte de l’imprimante ouverte\n" -"Saviez-vous que l’ouverture de la porte de l’imprimante peut réduire la " -"probabilité de blocage de l’extrudeuse/du réchauffeur lors de l’impression " -"de filament à basse température avec une température de boîtier plus élevée. " -"Plus d’informations à ce sujet dans le Wiki." +#~ msgid "" +#~ "Speed up your print with Adaptive Layer Height\n" +#~ "Did you know that you can print a model even faster, by using the " +#~ "Adaptive Layer Height option? Check it out!" +#~ msgstr "" +#~ "Accélérez votre impression grâce à la Hauteur de Couche Adaptative\n" +#~ "Saviez-vous que vous pouvez imprimer un modèle encore plus rapidement en " +#~ "utilisant l'option Adaptive Layer Height ? Jetez-y un coup d'œil !" -#: resources/data/hints.ini: [hint:Avoid warping] -msgid "" -"Avoid warping\n" -"Did you know that when printing materials that are prone to warping such as " -"ABS, appropriately increasing the heatbed temperature can reduce the " -"probability of warping." -msgstr "" -"Éviter la déformation\n" -"Saviez-vous que lors de l’impression de matériaux susceptibles de se " -"déformer, tels que l’ABS, une augmentation appropriée de la température du " -"plateau chauffant peut réduire la probabilité de déformation." +#~ msgid "" +#~ "Support painting\n" +#~ "Did you know that you can paint the location of your supports? This " +#~ "feature makes it easy to place the support material only on the sections " +#~ "of the model that actually need it." +#~ msgstr "" +#~ "Peinture de support\n" +#~ "Saviez-vous que vous pouvez peindre l'emplacement de vos supports ? Cette " +#~ "caractéristique permet de placer facilement le matériau de support " +#~ "uniquement sur les sections du modèle qui en ont réellement besoin." -#~ msgid "Current association: " -#~ msgstr "Association actuelle : " +#~ msgid "" +#~ "Different types of supports\n" +#~ "Did you know that you can choose from multiple types of supports? Tree " +#~ "supports work great for organic models, while saving filament and " +#~ "improving print speed. Check them out!" +#~ msgstr "" +#~ "Différents types de supports\n" +#~ "Saviez-vous que vous pouvez choisir parmi plusieurs types de supports ? " +#~ "Les supports arborescents fonctionnent parfaitement pour les modèles " +#~ "organiques tout en économisant du filament et en améliorant la vitesse " +#~ "d'impression. Découvrez-les !" -#~ msgid "Associate prusaslicer://" -#~ msgstr "Associer prusaslicer://" +#~ msgid "" +#~ "Printing Silk Filament\n" +#~ "Did you know that Silk filament needs special consideration to print it " +#~ "successfully? Higher temperature and lower speed are always recommended " +#~ "for the best results." +#~ msgstr "" +#~ "Impression de filament Soie\n" +#~ "Saviez-vous que le filament soie nécessite une attention particulière " +#~ "pour une impression réussie ? Une température plus élevée et une vitesse " +#~ "plus faible sont toujours recommandées pour obtenir les meilleurs " +#~ "résultats." -#~ msgid "Not associated to any application" -#~ msgstr "N’est associé à aucune application" +#~ msgid "" +#~ "Brim for better adhesion\n" +#~ "Did you know that when printing models have a small contact interface " +#~ "with the printing surface, it's recommended to use a brim?" +#~ msgstr "" +#~ "Bordure pour une meilleure adhésion\n" +#~ "Saviez-vous que lorsque les modèles imprimés ont une faible interface de " +#~ "contact avec la surface d'impression, il est recommandé d'utiliser une " +#~ "bordure ?" #~ msgid "" -#~ "Associate OrcaSlicer with prusaslicer:// links so that Orca can open " -#~ "models from Printable.com" +#~ "Set parameters for multiple objects\n" +#~ "Did you know that you can set slicing parameters for all selected objects " +#~ "at one time?" #~ msgstr "" -#~ "Associer OrcaSlicer aux liens prusaslicer:// afin qu’Orca puisse ouvrir " -#~ "des modèles provenant de Printable.com" +#~ "Définir les paramètres de plusieurs objets\n" +#~ "Saviez-vous que vous pouvez définir des paramètres de découpe pour tous " +#~ "les objets sélectionnés en une seule fois ?" -#~ msgid "Associate bambustudio://" -#~ msgstr "Associer bambustudio://" +#~ msgid "" +#~ "Stack objects\n" +#~ "Did you know that you can stack objects as a whole one?" +#~ msgstr "" +#~ "Empiler des objets\n" +#~ "Saviez-vous que vous pouvez empiler des objets pour n'en former qu'un?" #~ msgid "" -#~ "Associate OrcaSlicer with bambustudio:// links so that Orca can open " -#~ "models from makerworld.com" +#~ "Flush into support/objects/infill\n" +#~ "Did you know that you can save the wasted filament by flushing them into " +#~ "support/objects/infill during filament change?" #~ msgstr "" -#~ "Associer OrcaSlicer aux liens bambustudio:// afin qu’Orca puisse ouvrir " -#~ "des modèles provenant de makerworld.com" +#~ "Purger dans les supports/les objets/le remplissage\n" +#~ "Saviez-vous que vous pouvez réduire le filament gaspillé en le purgeant " +#~ "dans les supports/les objets/le remplissage lors des changements de " +#~ "filament ?" -#~ msgid "Associate cura://" -#~ msgstr "Associer cura://" +#~ msgid "" +#~ "Improve strength\n" +#~ "Did you know that you can use more wall loops and higher sparse infill " +#~ "density to improve the strength of the model?" +#~ msgstr "" +#~ "Améliorer la solidité\n" +#~ "Saviez-vous que vous pouvez définir un plus grand nombre de périmètre et " +#~ "une densité de remplissage plus élevée pour améliorer la résistance du " +#~ "modèle ?" #~ msgid "" -#~ "Associate OrcaSlicer with cura:// links so that Orca can open models from " -#~ "thingiverse.com" +#~ "When need to print with the printer door opened\n" +#~ "Did you know that opening the printer door can reduce the probability of " +#~ "extruder/hotend clogging when printing lower temperature filament with a " +#~ "higher enclosure temperature. More info about this in the Wiki." #~ msgstr "" -#~ "Associer OrcaSlicer aux liens cura:// pour qu’Orca puisse ouvrir les " -#~ "modèles de thingiverse.com" +#~ "Quand il faut imprimer avec la porte de l’imprimante ouverte\n" +#~ "Saviez-vous que l’ouverture de la porte de l’imprimante peut réduire la " +#~ "probabilité de blocage de l’extrudeuse/du réchauffeur lors de " +#~ "l’impression de filament à basse température avec une température de " +#~ "boîtier plus élevée. Plus d’informations à ce sujet dans le Wiki." -#~ msgid "Internel error" -#~ msgstr "Erreur interne" +#~ msgid "" +#~ "Avoid warping\n" +#~ "Did you know that when printing materials that are prone to warping such " +#~ "as ABS, appropriately increasing the heatbed temperature can reduce the " +#~ "probability of warping." +#~ msgstr "" +#~ "Éviter la déformation\n" +#~ "Saviez-vous que lors de l’impression de matériaux susceptibles de se " +#~ "déformer, tels que l’ABS, une augmentation appropriée de la température " +#~ "du plateau chauffant peut réduire la probabilité de déformation." #~ msgid "" #~ "File size exceeds the 100MB upload limit. Please upload your file through " @@ -17823,8 +18102,8 @@ msgstr "" #~ "thickness (top+bottom solid layers)" #~ msgstr "" #~ "Ajoutez du remplissage solide à proximité des surfaces inclinées pour " -#~ "garantir l'épaisseur verticale de la coque (couches solides supérieure" -#~ "+inférieure)." +#~ "garantir l'épaisseur verticale de la coque (couches solides " +#~ "supérieure+inférieure)." #~ msgid "Further reduce solid infill on walls (beta)" #~ msgstr "Réduire davantage le remplissage solide des parois (expérimental)" diff --git a/localization/i18n/hu/OrcaSlicer_hu.po b/localization/i18n/hu/OrcaSlicer_hu.po index fd8ad4391f5..c6abe9ecb45 100644 --- a/localization/i18n/hu/OrcaSlicer_hu.po +++ b/localization/i18n/hu/OrcaSlicer_hu.po @@ -3,7 +3,7 @@ msgid "" msgstr "" "Project-Id-Version: Orca Slicer\n" "Report-Msgid-Bugs-To: \n" -"POT-Creation-Date: 2024-06-30 15:44+0200\n" +"POT-Creation-Date: 2024-08-03 18:54+0200\n" "Language: hu\n" "MIME-Version: 1.0\n" "Content-Type: text/plain; charset=UTF-8\n" @@ -71,9 +71,6 @@ msgstr "Okos kitöltési szög" msgid "On overhangs only" msgstr "Csak túlnyúlásokon" -msgid "Auto support threshold angle: " -msgstr "Automatikus támasz szögének határértéke: " - msgid "Circle" msgstr "Kör" @@ -93,6 +90,9 @@ msgstr "Csak a(z) „%1%“ által kijelölt felületeken történik festés" msgid "Highlight faces according to overhang angle." msgstr "Felületek kiemelése a túlnyúlási szögnek megfelelően." +msgid "Auto support threshold angle: " +msgstr "Automatikus támasz szögének határértéke: " + msgid "No auto support" msgstr "Nincs automatikus támasz" @@ -4082,15 +4082,6 @@ msgstr "Teljes idő" msgid "Total cost" msgstr "Total cost" -msgid "up to" -msgstr "legfeljebb" - -msgid "above" -msgstr "felett" - -msgid "from" -msgstr "ettől" - msgid "Color Scheme" msgstr "Színséma" @@ -4154,12 +4145,12 @@ msgstr "Filamentcserék száma" msgid "Cost" msgstr "Költség" -msgid "Color change" -msgstr "Színváltás" - msgid "Print" msgstr "Nyomtatás" +msgid "Color change" +msgstr "Színváltás" + msgid "Printer" msgstr "Nyomtató" @@ -6045,6 +6036,14 @@ msgstr "Több részből álló objektumot észleltünk" msgid "The file does not contain any geometry data." msgstr "A fájl nem tartalmaz geometriai adatokat." +msgid "" +"Your object appears to be too large. It will be scaled down to fit the heat " +"bed automatically." +msgstr "" + +msgid "Object too large" +msgstr "Az objektum túl nagy" + msgid "" "Your object appears to be too large, Do you want to scale it down to fit the " "heat bed automatically?" @@ -6052,9 +6051,6 @@ msgstr "" "Úgy tűnik, hogy az objektum túl nagy. Szeretnéd átméretezni, hogy " "illeszkedjen a nyomtatótér méretéhez?" -msgid "Object too large" -msgstr "Az objektum túl nagy" - msgid "Export STL file:" msgstr "STL fájl exportálása:" @@ -6422,9 +6418,6 @@ msgstr "Szeretnéd folytatni?" msgid "Language selection" msgstr "Nyelv kiválasztása" -msgid "Switching application language while some presets are modified." -msgstr "Alkalmazás nyelvének átváltása, miközben egyes beállítások módosultak." - msgid "Changing application language" msgstr "Alkalmazás nyelvének megváltoztatása" @@ -6612,6 +6605,12 @@ msgstr "" "With this option enabled, you can send a task to multiple devices at the " "same time and manage multiple devices." +msgid "Auto arrange plate after cloning" +msgstr "" + +msgid "Auto arrange plate after object cloning" +msgstr "" + msgid "Network" msgstr "" @@ -7606,12 +7605,21 @@ msgstr "Filament a támaszhoz" msgid "Tree supports" msgstr "" -msgid "Skirt" -msgstr "Szoknya" +msgid "Multimaterial" +msgstr "" msgid "Prime tower" msgstr "Törlő torony" +msgid "Filament for Features" +msgstr "" + +msgid "Ooze prevention" +msgstr "" + +msgid "Skirt" +msgstr "Szoknya" + msgid "Special mode" msgstr "Speciális mód" @@ -7665,6 +7673,9 @@ msgstr "" "Az ajánlott fúvóka hőmérséklet-tartomány ehhez a filamenthez. A 0 azt " "jelenti, hogy nincs beállítva" +msgid "Flow ratio and Pressure Advance" +msgstr "" + msgid "Print chamber temperature" msgstr "" @@ -7775,9 +7786,6 @@ msgstr "Filament kezdő G-kód" msgid "Filament end G-code" msgstr "Filament befejező G-kód" -msgid "Multimaterial" -msgstr "" - msgid "Wipe tower parameters" msgstr "Törlőtorony paraméterek" @@ -7868,12 +7876,30 @@ msgstr "Jerk limitek" msgid "Single extruder multimaterial setup" msgstr "" +msgid "Number of extruders of the printer." +msgstr "" + +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 "" + +msgid "Nozzle diameter" +msgstr "Fúvóka átmérője" + msgid "Wipe tower" msgstr "Törlőtorony" msgid "Single extruder multimaterial parameters" msgstr "Egyetlen extruder többanyagú paraméterei" +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 "" + msgid "Layer height limits" msgstr "Rétegmagasság limitek" @@ -8358,11 +8384,8 @@ msgstr "Objektumok listája" msgid "Import geometry data from STL/STEP/3MF/OBJ/AMF files" msgstr "Import geometry data from STL/STEP/3MF/OBJ/AMF files" -msgid "⌘+Shift+G" -msgstr "⌘+Shift+G" - -msgid "Ctrl+Shift+G" -msgstr "Ctrl+Shift+G" +msgid "Shift+G" +msgstr "" msgid "Paste from clipboard" msgstr "Beillesztés a vágólapról" @@ -8412,33 +8435,18 @@ msgstr "Shift+Tab" msgid "Collapse/Expand the sidebar" msgstr "Az oldalsáv összecsukása/kinyitása" -msgid "⌘+Any arrow" -msgstr "⌘+Bármilyen nyíl gomb" +msgid "Any arrow" +msgstr "" msgid "Movement in camera space" msgstr "Mozgás a kameratérben" -msgid "⌥+Left mouse button" -msgstr "⌥+Bal egérgomb" - msgid "Select a part" msgstr "Válassz egy tárgyat" -msgid "⌘+Left mouse button" -msgstr "⌘+Bal egérgomb" - msgid "Select multiple objects" msgstr "Több objektum kijelölése" -msgid "Ctrl+Any arrow" -msgstr "Ctrl+Bármelyik nyílgomb" - -msgid "Alt+Left mouse button" -msgstr "Alt+bal egérgomb" - -msgid "Ctrl+Left mouse button" -msgstr "Ctrl+Bal egérgomb" - msgid "Shift+Left mouse button" msgstr "Shift+Bal egérgomb" @@ -8541,24 +8549,12 @@ msgstr "Plater" msgid "Move: press to snap by 1mm" msgstr "Move: press to snap by 1mm" -msgid "⌘+Mouse wheel" -msgstr "⌘+Egérgörgő" - msgid "Support/Color Painting: adjust pen radius" msgstr "Támasz/Színfestés: toll méretének beállítása" -msgid "⌥+Mouse wheel" -msgstr "⌥+Egérgörgő" - msgid "Support/Color Painting: adjust section position" msgstr "Támasz/Színfestés: metszet pozíciójának beállítása" -msgid "Ctrl+Mouse wheel" -msgstr "Ctrl+Egérgörgő" - -msgid "Alt+Mouse wheel" -msgstr "Alt+Egérgörgő" - msgid "Gizmo" msgstr "Gizmo" @@ -8876,6 +8872,11 @@ msgstr "" msgid "No object can be printed. Maybe too small" msgstr "Objektum nem nyomtatható ki. Lehet, hogy túl kicsi." +msgid "" +"Your print is very close to the priming regions. Make sure there is no " +"collision." +msgstr "" + msgid "" "Failed to generate gcode for invalid custom G-code.\n" "\n" @@ -9121,11 +9122,10 @@ msgid "Variable layer height is not supported with Organic supports." msgstr "A változó rétegmagasság nem működik az organikus támaszokkal." msgid "" -"Different nozzle diameters and different filament diameters is not allowed " -"when prime tower is enabled." +"Different nozzle diameters and different filament diameters may not work " +"well when the prime tower is enabled. It's very experimental, so please " +"proceed with caution." msgstr "" -"Nem használhatsz különböző fúvókaátmérőt és filamentátmérőt, ha a " -"törlőtorony engedélyezve van." msgid "" "The Wipe Tower is currently only supported with the relative extruder " @@ -9135,9 +9135,9 @@ msgstr "" "(use_relative_e_distances=1)." msgid "" -"Ooze prevention is currently not supported with the prime tower enabled." +"Ooze prevention is only supported with the wipe tower when " +"'single_extruder_multi_material' is off." msgstr "" -"A szivárgás elleni védelem nem működik, ha a törlőtorony engedélyezve van." msgid "" "The prime tower is currently only supported for the Marlin, RepRap/Sprinter, " @@ -10389,6 +10389,86 @@ msgstr "" msgid "Pressure advance(Klipper) AKA Linear advance factor(Marlin)" msgstr "" +msgid "Enable adaptive pressure advance (beta)" +msgstr "" + +#, c-format, boost-format +msgid "" +"With increasing print speeds (and hence increasing volumetric flow through " +"the nozzle) and increasing accelerations, it has been observed that the " +"effective PA value typically decreases. This means that a single PA value is " +"not always 100% optimal for all features and a compromise value is usually " +"used that does not cause too much bulging on features with lower flow speed " +"and accelerations while also not causing gaps on faster features.\n" +"\n" +"This feature aims to address this limitation by modeling the response of " +"your printer's extrusion system depending on the volumetric flow speed and " +"acceleration it is printing at. Internally, it generates a fitted model that " +"can extrapolate the needed pressure advance for any given volumetric flow " +"speed and acceleration, which is then emmited to the printer depending on " +"the current print conditions.\n" +"\n" +"When enabled, the pressure advance value above is overriden. However, a " +"reasonable default value above is strongly recomended to act as a fallback " +"and for when tool changing.\n" +"\n" +msgstr "" + +msgid "Adaptive pressure advance measurements (beta)" +msgstr "" + +msgid "" +"Add sets of pressure advance (PA) values, the volumetric flow speeds and " +"accelerations they were measured at, separated by a comma. One set of values " +"per line. For example\n" +"0.04,3.96,3000\n" +"0.033,3.96,10000\n" +"0.029,7.91,3000\n" +"0.026,7.91,10000\n" +"\n" +"How to calibrate:\n" +"1. Run the pressure advance test for at least 3 speeds per acceleration " +"value. It is recommended that the test is run for at least the speed of the " +"external perimeters, the speed of the internal perimeters and the fastest " +"feature print speed in your profile (usually its the sparse or solid " +"infill). Then run them for the same speeds for the slowest and fastest print " +"accelerations,and no faster than the recommended maximum acceleration as " +"given by the klipper input shaper.\n" +"2. Take note of the optimal PA value for each volumetric flow speed and " +"acceleration. You can find the flow number by selecting flow from the color " +"scheme drop down and move the horizontal slider over the PA pattern lines. " +"The number should be visible at the bottom of the page. The ideal PA value " +"should be decreasing the higher the volumetric flow is. If it is not, " +"confirm that your extruder is functioning correctly.The slower and with less " +"acceleration you print, the larger the range of acceptable PA values. If no " +"difference is visible, use the PA value from the faster test.3. Enter the " +"triplets of PA values, Flow and Accelerations in the text box here and save " +"your filament profile\n" +"\n" +msgstr "" + +msgid "Enable adaptive pressure advance for overhangs (beta)" +msgstr "" + +msgid "" +"Enable adaptive PA for overhangs as well as when flow changes within the " +"same feature. This is an experimental option, as if the PA profile is not " +"set accurately, it will cause uniformity issues on the external surfaces " +"before and after overhangs.\n" +msgstr "" + +msgid "Pressure advance for bridges" +msgstr "" + +msgid "" +"Pressure advance value for bridges. Set to 0 to disable. \n" +"\n" +" A lower PA value when printing bridges helps reduce the appearance of " +"slight under extrusion immediately after bridges. This is caused by the " +"pressure drop in the nozzle when printing in the air and a lower PA helps " +"counteract this." +msgstr "" + msgid "" "Default line width if other line widths are set to 0. If expressed as a %, " "it will be computed over the nozzle diameter." @@ -10568,6 +10648,21 @@ msgstr "" "A filament hűtése úgy történik, hogy oda-vissza mozgatják a hűtőcsőben. Adja " "meg a kívánt lépések számát." +msgid "Stamping loading speed" +msgstr "" + +msgid "Speed used for stamping." +msgstr "" + +msgid "Stamping distance measured from the center of the cooling tube" +msgstr "" + +msgid "" +"If set to nonzero value, filament is moved toward the nozzle between the " +"individual cooling moves (\"stamping\"). This option configures how long " +"this movement should be before the filament is retracted again." +msgstr "" + msgid "Speed of the first cooling move" msgstr "Az első hűtési lépés sebessége" @@ -11303,10 +11398,12 @@ msgstr "" msgid "Interlocking depth of a segmented region" msgstr "Szegmentált régió összekapcsolódási mélysége" -msgid "Interlocking depth of a segmented region. Zero disables this feature." +msgid "" +"Interlocking depth of a segmented region. It will be ignored if " +"\"mmu_segmented_region_max_width\" is zero or if " +"\"mmu_segmented_region_interlocking_depth\"is bigger then " +"\"mmu_segmented_region_max_width\". Zero disables this feature." msgstr "" -"Szegmentált régió összekapcsolódási mélysége. A 0 érték letiltja ezt a " -"funkciót." msgid "Use beam interlocking" msgstr "" @@ -11663,9 +11760,6 @@ msgid "" "cooling is enabled." msgstr "" -msgid "Nozzle diameter" -msgstr "Fúvóka átmérője" - msgid "Diameter of nozzle" msgstr "Fúvóka átmérője" @@ -11765,6 +11859,11 @@ msgstr "" "komplex modelleknél, de egyúttal lassabbá teszi a szeletelést és a G-kód " "generálást" +msgid "" +"This option will drop the temperature of the inactive extruders to prevent " +"oozing." +msgstr "" + msgid "Filename format" msgstr "Fájlnév formátum" @@ -11809,6 +11908,9 @@ msgstr "" "más sebességet használ. A 100%%-os túlnyúlás esetén az áthidaláshoz " "beállított sebességet használja." +msgid "Filament to print walls" +msgstr "" + msgid "" "Line width of inner wall. If expressed as a %, it will be computed over the " "nozzle diameter." @@ -11842,12 +11944,21 @@ msgid "" "environment variables." msgstr "" +msgid "Printer type" +msgstr "" + +msgid "Type of the printer" +msgstr "" + msgid "Printer notes" msgstr "Printer notes" msgid "You can put your notes regarding the printer here." msgstr "You can put your notes regarding the printer here." +msgid "Printer variant" +msgstr "" + msgid "Raft contact Z distance" msgstr "Tutaj érintkezés Z távolság" @@ -12355,6 +12466,12 @@ msgstr "" "A küszöbérték alatti ritkás kitöltési terület belső szilárd kitöltéssel " "kerül leváltásra" +msgid "Solid infill" +msgstr "" + +msgid "Filament to print solid infill" +msgstr "" + msgid "" "Line width of internal solid infill. If expressed as a %, it will be " "computed over the nozzle diameter." @@ -12419,6 +12536,31 @@ msgstr "Hagyományos" msgid "Temperature variation" msgstr "Hőmérséklet változás" +#. TRN PrintSettings : "Ooze prevention" > "Temperature variation" +msgid "" +"Temperature difference to be applied when an extruder is not active. The " +"value is not used when 'idle_temperature' in filament settings is set to non " +"zero value." +msgstr "" + +msgid "Preheat time" +msgstr "" + +msgid "" +"To reduce the waiting time after tool change, Orca can preheat the next tool " +"while the current tool is still in use. This setting specifies the time in " +"seconds to preheat the next tool. Orca will insert a M104 command to preheat " +"the tool in advance." +msgstr "" + +msgid "Preheat steps" +msgstr "" + +msgid "" +"Insert multiple preheat commands(e.g. M104.1). Only useful for Prusa XL. For " +"other printers, please set it to 1." +msgstr "" + msgid "Start G-code" msgstr "Kezdő G-kód" @@ -13049,12 +13191,6 @@ msgid "" "Larger angle means wider base." msgstr "" -msgid "Wipe tower purge lines spacing" -msgstr "" - -msgid "Spacing of purge lines on the wipe tower." -msgstr "" - msgid "Maximum wipe tower print speed" msgstr "" @@ -13080,9 +13216,6 @@ msgid "" "regardless of this setting." msgstr "" -msgid "Wipe tower extruder" -msgstr "" - msgid "" "The extruder to use when printing perimeter of the wipe tower. Set to 0 to " "use the one that is available (non-soluble would be preferred)." @@ -13133,6 +13266,30 @@ msgstr "Maximális áthidalási távolság" msgid "Maximal distance between supports on sparse infill sections." msgstr "A támaszok közötti maximális távolság a ritkás kitöltésű részeken." +msgid "Wipe tower purge lines spacing" +msgstr "" + +msgid "Spacing of purge lines on the wipe tower." +msgstr "" + +msgid "Extra flow for purging" +msgstr "" + +msgid "" +"Extra flow used for the purging lines on the wipe tower. This makes the " +"purging lines thicker or narrower than they normally would be. The spacing " +"is adjusted automatically." +msgstr "" + +msgid "Idle temperature" +msgstr "" + +msgid "" +"Nozzle temperature when the tool is currently not used in multi-tool setups." +"This is only used when 'Ooze prevention' is active in Print Settings. Set to " +"0 to disable." +msgstr "" + msgid "X-Y hole compensation" msgstr "X-Y furatkompenzáció" @@ -13440,6 +13597,14 @@ msgstr "" msgid "Currently planned extra extruder priming after deretraction." msgstr "" +msgid "Absolute E position" +msgstr "" + +msgid "" +"Current position of the extruder axis. Only used with absolute extruder " +"addressing." +msgstr "" + msgid "Current extruder" msgstr "" @@ -13482,6 +13647,12 @@ msgstr "" msgid "Vector of bools stating whether a given extruder is used in the print." msgstr "" +msgid "Has single extruder MM priming" +msgstr "" + +msgid "Are the extra multi-material priming regions used in this print?" +msgstr "" + msgid "Volume per extruder" msgstr "" @@ -13626,6 +13797,14 @@ msgstr "" msgid "Name of the physical printer used for slicing." msgstr "" +msgid "Number of extruders" +msgstr "" + +msgid "" +"Total number of extruders, regardless of whether they are used in the " +"current print." +msgstr "" + msgid "Layer number" msgstr "" @@ -15939,6 +16118,73 @@ msgstr "" "Tudtad, hogy a vetemedésre hajlamos anyagok (például ABS) nyomtatásakor a " "tárgyasztal hőmérsékletének növelése csökkentheti a vetemedés valószínűségét?" +#~ msgid "up to" +#~ msgstr "legfeljebb" + +#~ msgid "above" +#~ msgstr "felett" + +#~ msgid "from" +#~ msgstr "ettől" + +#~ msgid "Switching application language while some presets are modified." +#~ msgstr "" +#~ "Alkalmazás nyelvének átváltása, miközben egyes beállítások módosultak." + +#~ msgid "⌘+Shift+G" +#~ msgstr "⌘+Shift+G" + +#~ msgid "Ctrl+Shift+G" +#~ msgstr "Ctrl+Shift+G" + +#~ msgid "⌘+Any arrow" +#~ msgstr "⌘+Bármilyen nyíl gomb" + +#~ msgid "⌥+Left mouse button" +#~ msgstr "⌥+Bal egérgomb" + +#~ msgid "⌘+Left mouse button" +#~ msgstr "⌘+Bal egérgomb" + +#~ msgid "Ctrl+Any arrow" +#~ msgstr "Ctrl+Bármelyik nyílgomb" + +#~ msgid "Alt+Left mouse button" +#~ msgstr "Alt+bal egérgomb" + +#~ msgid "Ctrl+Left mouse button" +#~ msgstr "Ctrl+Bal egérgomb" + +#~ msgid "⌘+Mouse wheel" +#~ msgstr "⌘+Egérgörgő" + +#~ msgid "⌥+Mouse wheel" +#~ msgstr "⌥+Egérgörgő" + +#~ msgid "Ctrl+Mouse wheel" +#~ msgstr "Ctrl+Egérgörgő" + +#~ msgid "Alt+Mouse wheel" +#~ msgstr "Alt+Egérgörgő" + +#~ msgid "" +#~ "Different nozzle diameters and different filament diameters is not " +#~ "allowed when prime tower is enabled." +#~ msgstr "" +#~ "Nem használhatsz különböző fúvókaátmérőt és filamentátmérőt, ha a " +#~ "törlőtorony engedélyezve van." + +#~ msgid "" +#~ "Ooze prevention is currently not supported with the prime tower enabled." +#~ msgstr "" +#~ "A szivárgás elleni védelem nem működik, ha a törlőtorony engedélyezve van." + +#~ msgid "" +#~ "Interlocking depth of a segmented region. Zero disables this feature." +#~ msgstr "" +#~ "Szegmentált régió összekapcsolódási mélysége. A 0 érték letiltja ezt a " +#~ "funkciót." + #~ msgid "Please input a valid value (K in 0~0.3)" #~ msgstr "Kérjük, adj meg egy érvényes értéket (K 0-0,3)" diff --git a/localization/i18n/it/OrcaSlicer_it.po b/localization/i18n/it/OrcaSlicer_it.po index 5fe72730298..ec66aa6dd46 100644 --- a/localization/i18n/it/OrcaSlicer_it.po +++ b/localization/i18n/it/OrcaSlicer_it.po @@ -3,7 +3,7 @@ msgid "" msgstr "" "Project-Id-Version: Orca Slicer\n" "Report-Msgid-Bugs-To: \n" -"POT-Creation-Date: 2024-06-30 15:44+0200\n" +"POT-Creation-Date: 2024-08-03 18:54+0200\n" "PO-Revision-Date: \n" "Last-Translator: \n" "Language-Team: \n" @@ -74,9 +74,6 @@ msgstr "Angolo riempimento intelligente" msgid "On overhangs only" msgstr "Solo sulle sporgenze" -msgid "Auto support threshold angle: " -msgstr "Angolo di soglia per supporto automatico: " - msgid "Circle" msgstr "Cerchio" @@ -96,6 +93,9 @@ msgstr "Consente di pitturare solo sulle sfaccettature selezionate da: \"%1%\"" msgid "Highlight faces according to overhang angle." msgstr "Evidenziare le facce in base all'angolo di sporgenza." +msgid "Auto support threshold angle: " +msgstr "Angolo di soglia per supporto automatico: " + msgid "No auto support" msgstr "Nessun supporto automatico" @@ -4181,15 +4181,6 @@ msgstr "Tempo totale" msgid "Total cost" msgstr "Costo totale" -msgid "up to" -msgstr "fino a" - -msgid "above" -msgstr "sopra" - -msgid "from" -msgstr "da" - msgid "Color Scheme" msgstr "Schema Colore" @@ -4253,12 +4244,12 @@ msgstr "Tempi cambio filamento" msgid "Cost" msgstr "Costo" -msgid "Color change" -msgstr "Cambio colore" - msgid "Print" msgstr "Stampa" +msgid "Color change" +msgstr "Cambio colore" + msgid "Printer" msgstr "Stampante" @@ -6174,6 +6165,14 @@ msgstr "È stato rilevato un oggetto con più parti" msgid "The file does not contain any geometry data." msgstr "Il file non contiene dati geometrici." +msgid "" +"Your object appears to be too large. It will be scaled down to fit the heat " +"bed automatically." +msgstr "" + +msgid "Object too large" +msgstr "Oggetto troppo grande" + msgid "" "Your object appears to be too large, Do you want to scale it down to fit the " "heat bed automatically?" @@ -6181,9 +6180,6 @@ msgstr "" "L'oggetto sembra troppo grande. Vuoi ridimensionarlo per adattarlo " "automaticamente al piatto di stampa?" -msgid "Object too large" -msgstr "Oggetto troppo grande" - msgid "Export STL file:" msgstr "Esporta file STL:" @@ -6562,9 +6558,6 @@ msgstr "Vuoi continuare?" msgid "Language selection" msgstr "Selezione lingua" -msgid "Switching application language while some presets are modified." -msgstr "Cambio lingua applicazione durante la modifica di alcuni preset." - msgid "Changing application language" msgstr "Modifica lingua applicazione" @@ -6749,6 +6742,12 @@ msgstr "" "With this option enabled, you can send a task to multiple devices at the " "same time and manage multiple devices." +msgid "Auto arrange plate after cloning" +msgstr "" + +msgid "Auto arrange plate after object cloning" +msgstr "" + msgid "Network" msgstr "Rete" @@ -7759,12 +7758,21 @@ msgstr "Filamento per supporti" msgid "Tree supports" msgstr "Supporti ad albero" -msgid "Skirt" -msgstr "Skirt" +msgid "Multimaterial" +msgstr "Multimateriale" msgid "Prime tower" msgstr "Prime tower" +msgid "Filament for Features" +msgstr "" + +msgid "Ooze prevention" +msgstr "" + +msgid "Skirt" +msgstr "Skirt" + msgid "Special mode" msgstr "Modalità speciale" @@ -7818,6 +7826,9 @@ msgstr "" "Intervallo di temperatura del nozzle consigliato per questo filamento. 0 " "significa non impostato" +msgid "Flow ratio and Pressure Advance" +msgstr "" + msgid "Print chamber temperature" msgstr "Temperatura della camera di stampa" @@ -7927,9 +7938,6 @@ msgstr "G-code Iniziale Filamento" msgid "Filament end G-code" msgstr "G-code Finale Filamento" -msgid "Multimaterial" -msgstr "Multimateriale" - msgid "Wipe tower parameters" msgstr "Parametri torre di pulitura" @@ -8019,12 +8027,30 @@ msgstr "Limitazione jerk" msgid "Single extruder multimaterial setup" msgstr "Configurazione multimateriale estrusore singolo" +msgid "Number of extruders of the printer." +msgstr "" + +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 "" + +msgid "Nozzle diameter" +msgstr "Diametro Nozzle" + msgid "Wipe tower" msgstr "Torre di pulitura" msgid "Single extruder multimaterial parameters" msgstr "Parametri estrusore singolo materiale multiplo" +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 "" + msgid "Layer height limits" msgstr "Limiti altezza layer" @@ -8529,11 +8555,8 @@ msgstr "Elenco oggetti" msgid "Import geometry data from STL/STEP/3MF/OBJ/AMF files" msgstr "Importa geometrie da file STL/STEP/3MF/OBJ/AMF." -msgid "⌘+Shift+G" -msgstr "⌘+Shift+G" - -msgid "Ctrl+Shift+G" -msgstr "Ctrl+Shift+G" +msgid "Shift+G" +msgstr "" msgid "Paste from clipboard" msgstr "Incolla dagli appunti" @@ -8585,33 +8608,18 @@ msgstr "Shift+Tab" msgid "Collapse/Expand the sidebar" msgstr "Riduci/Espandi barra laterale" -msgid "⌘+Any arrow" -msgstr "⌘+Freccia qualsiasi" +msgid "Any arrow" +msgstr "" msgid "Movement in camera space" msgstr "Movimento nello spazio della camera" -msgid "⌥+Left mouse button" -msgstr "⌥+Tasto sinistro mouse" - msgid "Select a part" msgstr "Seleziona parte" -msgid "⌘+Left mouse button" -msgstr "⌘+Tasto sinistro del mouse" - msgid "Select multiple objects" msgstr "Seleziona più oggetti" -msgid "Ctrl+Any arrow" -msgstr "Ctrl+qualsiasi freccia" - -msgid "Alt+Left mouse button" -msgstr "Alt+tasto sinistro del mouse" - -msgid "Ctrl+Left mouse button" -msgstr "Ctrl+Tasto sinistro del mouse" - msgid "Shift+Left mouse button" msgstr "Shift+tasto sinistro mouse" @@ -8714,24 +8722,12 @@ msgstr "Piano" msgid "Move: press to snap by 1mm" msgstr "Sposta: premi per muovere di 1 mm" -msgid "⌘+Mouse wheel" -msgstr "⌘+Rotella mouse" - msgid "Support/Color Painting: adjust pen radius" msgstr "Supporto/Pittura a colori: regolare il raggio della penna" -msgid "⌥+Mouse wheel" -msgstr "⌥+Rotella mouse" - msgid "Support/Color Painting: adjust section position" msgstr "Supporto/Pittura a colori: regolare la posizione della sezione" -msgid "Ctrl+Mouse wheel" -msgstr "Ctrl+Rotellina del mouse" - -msgid "Alt+Mouse wheel" -msgstr "Alt+Rotella del mouse" - msgid "Gizmo" msgstr "Gizmo" @@ -9049,6 +9045,11 @@ msgid "No object can be printed. Maybe too small" msgstr "" "Non è possibile stampare alcun oggetto. Potrebbe essere troppo piccolo." +msgid "" +"Your print is very close to the priming regions. Make sure there is no " +"collision." +msgstr "" + msgid "" "Failed to generate gcode for invalid custom G-code.\n" "\n" @@ -9298,11 +9299,10 @@ msgid "Variable layer height is not supported with Organic supports." msgstr "Layer ad altezza variabile non è compatibile con i Supporti Organici." msgid "" -"Different nozzle diameters and different filament diameters is not allowed " -"when prime tower is enabled." +"Different nozzle diameters and different filament diameters may not work " +"well when the prime tower is enabled. It's very experimental, so please " +"proceed with caution." msgstr "" -"Diametri degli ugelli diversi e diametri di filamento diversi non sono " -"consentiti quando la torre Prime è abilitata." msgid "" "The Wipe Tower is currently only supported with the relative extruder " @@ -9312,10 +9312,9 @@ msgstr "" "relativo dell'estrusore (use_relative_e_distances = 1)." msgid "" -"Ooze prevention is currently not supported with the prime tower enabled." +"Ooze prevention is only supported with the wipe tower when " +"'single_extruder_multi_material' is off." msgstr "" -"La prevenzione delle perdite (ooze prevention) attualmente non è supportata " -"quando è abilitata la torre di priming." msgid "" "The prime tower is currently only supported for the Marlin, RepRap/Sprinter, " @@ -10816,6 +10815,86 @@ msgid "Pressure advance(Klipper) AKA Linear advance factor(Marlin)" msgstr "" "Anticipo di pressione (Klipper) AKA Fattore di avanzamento lineare (Marlin)" +msgid "Enable adaptive pressure advance (beta)" +msgstr "" + +#, c-format, boost-format +msgid "" +"With increasing print speeds (and hence increasing volumetric flow through " +"the nozzle) and increasing accelerations, it has been observed that the " +"effective PA value typically decreases. This means that a single PA value is " +"not always 100% optimal for all features and a compromise value is usually " +"used that does not cause too much bulging on features with lower flow speed " +"and accelerations while also not causing gaps on faster features.\n" +"\n" +"This feature aims to address this limitation by modeling the response of " +"your printer's extrusion system depending on the volumetric flow speed and " +"acceleration it is printing at. Internally, it generates a fitted model that " +"can extrapolate the needed pressure advance for any given volumetric flow " +"speed and acceleration, which is then emmited to the printer depending on " +"the current print conditions.\n" +"\n" +"When enabled, the pressure advance value above is overriden. However, a " +"reasonable default value above is strongly recomended to act as a fallback " +"and for when tool changing.\n" +"\n" +msgstr "" + +msgid "Adaptive pressure advance measurements (beta)" +msgstr "" + +msgid "" +"Add sets of pressure advance (PA) values, the volumetric flow speeds and " +"accelerations they were measured at, separated by a comma. One set of values " +"per line. For example\n" +"0.04,3.96,3000\n" +"0.033,3.96,10000\n" +"0.029,7.91,3000\n" +"0.026,7.91,10000\n" +"\n" +"How to calibrate:\n" +"1. Run the pressure advance test for at least 3 speeds per acceleration " +"value. It is recommended that the test is run for at least the speed of the " +"external perimeters, the speed of the internal perimeters and the fastest " +"feature print speed in your profile (usually its the sparse or solid " +"infill). Then run them for the same speeds for the slowest and fastest print " +"accelerations,and no faster than the recommended maximum acceleration as " +"given by the klipper input shaper.\n" +"2. Take note of the optimal PA value for each volumetric flow speed and " +"acceleration. You can find the flow number by selecting flow from the color " +"scheme drop down and move the horizontal slider over the PA pattern lines. " +"The number should be visible at the bottom of the page. The ideal PA value " +"should be decreasing the higher the volumetric flow is. If it is not, " +"confirm that your extruder is functioning correctly.The slower and with less " +"acceleration you print, the larger the range of acceptable PA values. If no " +"difference is visible, use the PA value from the faster test.3. Enter the " +"triplets of PA values, Flow and Accelerations in the text box here and save " +"your filament profile\n" +"\n" +msgstr "" + +msgid "Enable adaptive pressure advance for overhangs (beta)" +msgstr "" + +msgid "" +"Enable adaptive PA for overhangs as well as when flow changes within the " +"same feature. This is an experimental option, as if the PA profile is not " +"set accurately, it will cause uniformity issues on the external surfaces " +"before and after overhangs.\n" +msgstr "" + +msgid "Pressure advance for bridges" +msgstr "" + +msgid "" +"Pressure advance value for bridges. Set to 0 to disable. \n" +"\n" +" A lower PA value when printing bridges helps reduce the appearance of " +"slight under extrusion immediately after bridges. This is caused by the " +"pressure drop in the nozzle when printing in the air and a lower PA helps " +"counteract this." +msgstr "" + msgid "" "Default line width if other line widths are set to 0. If expressed as a %, " "it will be computed over the nozzle diameter." @@ -11005,6 +11084,21 @@ msgstr "" "Il filamento è raffreddato venendo spostato avanti e indietro nei tubi di " "raffreddamento. Specificare il numero desiderato di questi movimenti." +msgid "Stamping loading speed" +msgstr "" + +msgid "Speed used for stamping." +msgstr "" + +msgid "Stamping distance measured from the center of the cooling tube" +msgstr "" + +msgid "" +"If set to nonzero value, filament is moved toward the nozzle between the " +"individual cooling moves (\"stamping\"). This option configures how long " +"this movement should be before the filament is retracted again." +msgstr "" + msgid "Speed of the first cooling move" msgstr "Velocità del primo movimento di raffreddamento" @@ -11835,10 +11929,12 @@ msgstr "" msgid "Interlocking depth of a segmented region" msgstr "Profondità di incastro di una regione segmentata" -msgid "Interlocking depth of a segmented region. Zero disables this feature." +msgid "" +"Interlocking depth of a segmented region. It will be ignored if " +"\"mmu_segmented_region_max_width\" is zero or if " +"\"mmu_segmented_region_interlocking_depth\"is bigger then " +"\"mmu_segmented_region_max_width\". Zero disables this feature." msgstr "" -"Profondità di incastro di una regione segmentata. Zero disabilita questa " -"funzione." msgid "Use beam interlocking" msgstr "" @@ -12253,9 +12349,6 @@ msgstr "" "mantenere il tempo minimo dello strato sopra, quando è abilitato il " "rallentamento per un migliore raffreddamento dello strato." -msgid "Nozzle diameter" -msgstr "Diametro Nozzle" - msgid "Diameter of nozzle" msgstr "Diametro del nozzle" @@ -12360,6 +12453,11 @@ msgstr "" "ridurre i tempi di ritrazione per i modelli complessi e far risparmiare " "tempo di stampa, ma rende lo slicing e la generazione del G-code più lento." +msgid "" +"This option will drop the temperature of the inactive extruders to prevent " +"oozing." +msgstr "" + msgid "Filename format" msgstr "Formato nome file" @@ -12412,6 +12510,9 @@ msgstr "" "utilizza velocità diverse per stampare. Per una sporgenza di 100%%, viene " "utilizzata la velocità del ponte." +msgid "Filament to print walls" +msgstr "" + msgid "" "Line width of inner wall. If expressed as a %, it will be computed over the " "nozzle diameter." @@ -12462,12 +12563,21 @@ msgstr "" "argomento, e potranno accedere alle impostazioni di configurazione di Orca " "Slicer leggendo le variabili di ambiente." +msgid "Printer type" +msgstr "" + +msgid "Type of the printer" +msgstr "" + msgid "Printer notes" msgstr "Note stampante" msgid "You can put your notes regarding the printer here." msgstr "È possibile inserire qui le note riguardanti la stampante." +msgid "Printer variant" +msgstr "" + msgid "Raft contact Z distance" msgstr "Distanza di contatto Z Raft" @@ -13030,6 +13140,12 @@ msgstr "" "L'area riempimento che è inferiore al valore di soglia viene sostituita da " "un riempimento solido interno." +msgid "Solid infill" +msgstr "" + +msgid "Filament to print solid infill" +msgstr "" + msgid "" "Line width of internal solid infill. If expressed as a %, it will be " "computed over the nozzle diameter." @@ -13096,6 +13212,31 @@ msgstr "Tradizionale" msgid "Temperature variation" msgstr "Variazione di temperatura" +#. TRN PrintSettings : "Ooze prevention" > "Temperature variation" +msgid "" +"Temperature difference to be applied when an extruder is not active. The " +"value is not used when 'idle_temperature' in filament settings is set to non " +"zero value." +msgstr "" + +msgid "Preheat time" +msgstr "" + +msgid "" +"To reduce the waiting time after tool change, Orca can preheat the next tool " +"while the current tool is still in use. This setting specifies the time in " +"seconds to preheat the next tool. Orca will insert a M104 command to preheat " +"the tool in advance." +msgstr "" + +msgid "Preheat steps" +msgstr "" + +msgid "" +"Insert multiple preheat commands(e.g. M104.1). Only useful for Prusa XL. For " +"other printers, please set it to 1." +msgstr "" + msgid "Start G-code" msgstr "G-code iniziale" @@ -13786,12 +13927,6 @@ msgstr "" "Angolo all'apice del cono utilizzato per stabilizzare la torre di pulitura. " "Un angolo maggiore significa una base più ampia." -msgid "Wipe tower purge lines spacing" -msgstr "Spaziatura delle linee di spurgo della torre di pulitura" - -msgid "Spacing of purge lines on the wipe tower." -msgstr "Spaziatura delle linee di spurgo sulla torre di pulitura." - msgid "Maximum wipe tower print speed" msgstr "" @@ -13817,9 +13952,6 @@ msgid "" "regardless of this setting." msgstr "" -msgid "Wipe tower extruder" -msgstr "Estrusore torre di pulitura" - msgid "" "The extruder to use when printing perimeter of the wipe tower. Set to 0 to " "use the one that is available (non-soluble would be preferred)." @@ -13878,6 +14010,30 @@ msgstr "Distanza massima bridging" msgid "Maximal distance between supports on sparse infill sections." msgstr "Distanza massima tra supporti in sezioni a riempimento sparso." +msgid "Wipe tower purge lines spacing" +msgstr "Spaziatura delle linee di spurgo della torre di pulitura" + +msgid "Spacing of purge lines on the wipe tower." +msgstr "Spaziatura delle linee di spurgo sulla torre di pulitura." + +msgid "Extra flow for purging" +msgstr "" + +msgid "" +"Extra flow used for the purging lines on the wipe tower. This makes the " +"purging lines thicker or narrower than they normally would be. The spacing " +"is adjusted automatically." +msgstr "" + +msgid "Idle temperature" +msgstr "" + +msgid "" +"Nozzle temperature when the tool is currently not used in multi-tool setups." +"This is only used when 'Ooze prevention' is active in Print Settings. Set to " +"0 to disable." +msgstr "" + msgid "X-Y hole compensation" msgstr "Compensazione foro X-Y" @@ -14237,6 +14393,14 @@ msgstr "" "Attualmente è previsto un priming aggiuntivo dell'estrusore dopo la " "deretrazione." +msgid "Absolute E position" +msgstr "" + +msgid "" +"Current position of the extruder axis. Only used with absolute extruder " +"addressing." +msgstr "" + msgid "Current extruder" msgstr "Estrusore attuale" @@ -14287,6 +14451,12 @@ msgstr "" "Vettore di booleani che indica se un determinato estrusore viene utilizzato " "nella stampa." +msgid "Has single extruder MM priming" +msgstr "" + +msgid "Are the extra multi-material priming regions used in this print?" +msgstr "" + msgid "Volume per extruder" msgstr "Volume per estrusore" @@ -14449,6 +14619,14 @@ msgstr "Nome della stampante fisica" msgid "Name of the physical printer used for slicing." msgstr "Nome della stampante fisica utilizzata per lo slicing." +msgid "Number of extruders" +msgstr "" + +msgid "" +"Total number of extruders, regardless of whether they are used in the " +"current print." +msgstr "" + msgid "Layer number" msgstr "Numero del layer" @@ -16883,6 +17061,76 @@ msgstr "" "aumentare in modo appropriato la temperatura del piano riscaldato può " "ridurre la probabilità di deformazione." +#~ msgid "up to" +#~ msgstr "fino a" + +#~ msgid "above" +#~ msgstr "sopra" + +#~ msgid "from" +#~ msgstr "da" + +#~ msgid "Switching application language while some presets are modified." +#~ msgstr "Cambio lingua applicazione durante la modifica di alcuni preset." + +#~ msgid "⌘+Shift+G" +#~ msgstr "⌘+Shift+G" + +#~ msgid "Ctrl+Shift+G" +#~ msgstr "Ctrl+Shift+G" + +#~ msgid "⌘+Any arrow" +#~ msgstr "⌘+Freccia qualsiasi" + +#~ msgid "⌥+Left mouse button" +#~ msgstr "⌥+Tasto sinistro mouse" + +#~ msgid "⌘+Left mouse button" +#~ msgstr "⌘+Tasto sinistro del mouse" + +#~ msgid "Ctrl+Any arrow" +#~ msgstr "Ctrl+qualsiasi freccia" + +#~ msgid "Alt+Left mouse button" +#~ msgstr "Alt+tasto sinistro del mouse" + +#~ msgid "Ctrl+Left mouse button" +#~ msgstr "Ctrl+Tasto sinistro del mouse" + +#~ msgid "⌘+Mouse wheel" +#~ msgstr "⌘+Rotella mouse" + +#~ msgid "⌥+Mouse wheel" +#~ msgstr "⌥+Rotella mouse" + +#~ msgid "Ctrl+Mouse wheel" +#~ msgstr "Ctrl+Rotellina del mouse" + +#~ msgid "Alt+Mouse wheel" +#~ msgstr "Alt+Rotella del mouse" + +#~ msgid "" +#~ "Different nozzle diameters and different filament diameters is not " +#~ "allowed when prime tower is enabled." +#~ msgstr "" +#~ "Diametri degli ugelli diversi e diametri di filamento diversi non sono " +#~ "consentiti quando la torre Prime è abilitata." + +#~ msgid "" +#~ "Ooze prevention is currently not supported with the prime tower enabled." +#~ msgstr "" +#~ "La prevenzione delle perdite (ooze prevention) attualmente non è " +#~ "supportata quando è abilitata la torre di priming." + +#~ msgid "" +#~ "Interlocking depth of a segmented region. Zero disables this feature." +#~ msgstr "" +#~ "Profondità di incastro di una regione segmentata. Zero disabilita questa " +#~ "funzione." + +#~ msgid "Wipe tower extruder" +#~ msgstr "Estrusore torre di pulitura" + #~ msgid "Please input a valid value (K in 0~0.3)" #~ msgstr "Immettere un valore valido (K in 0~0.3)" diff --git a/localization/i18n/ja/OrcaSlicer_ja.po b/localization/i18n/ja/OrcaSlicer_ja.po index 2ef56104487..16b11846d9f 100644 --- a/localization/i18n/ja/OrcaSlicer_ja.po +++ b/localization/i18n/ja/OrcaSlicer_ja.po @@ -3,7 +3,7 @@ msgid "" msgstr "" "Project-Id-Version: Orca Slicer\n" "Report-Msgid-Bugs-To: \n" -"POT-Creation-Date: 2024-06-30 15:44+0200\n" +"POT-Creation-Date: 2024-08-03 18:54+0200\n" "PO-Revision-Date: \n" "Last-Translator: \n" "Language-Team: \n" @@ -74,9 +74,6 @@ msgstr "自動充填角度" msgid "On overhangs only" msgstr "オーバーハングのみ" -msgid "Auto support threshold angle: " -msgstr "自動サポート角度閾値" - msgid "Circle" msgstr "円形" @@ -96,6 +93,9 @@ msgstr "%1%で選択した面だけをペイントする" msgid "Highlight faces according to overhang angle." msgstr "オーバーハングの角度によりハイライト" +msgid "Auto support threshold angle: " +msgstr "自動サポート角度閾値" + msgid "No auto support" msgstr "自動サポート無し" @@ -4023,15 +4023,6 @@ msgstr "総時間" msgid "Total cost" msgstr "Total cost" -msgid "up to" -msgstr "最大" - -msgid "above" -msgstr "以上" - -msgid "from" -msgstr "from" - msgid "Color Scheme" msgstr "配色スキーム" @@ -4095,12 +4086,12 @@ msgstr "フィラメント交換回数" msgid "Cost" msgstr "コスト" -msgid "Color change" -msgstr "色変更" - msgid "Print" msgstr "造形する" +msgid "Color change" +msgstr "色変更" + msgid "Printer" msgstr "プリンター" @@ -5961,13 +5952,18 @@ msgid "The file does not contain any geometry data." msgstr "このファイルにはジオメトリデータが含まれていません。" msgid "" -"Your object appears to be too large, Do you want to scale it down to fit the " -"heat bed automatically?" -msgstr "オブジェクトが大きすぎのようです、ベッドに合わせてスケールしますか?" +"Your object appears to be too large. It will be scaled down to fit the heat " +"bed automatically." +msgstr "" msgid "Object too large" msgstr "オブジェクトが大きすぎます" +msgid "" +"Your object appears to be too large, Do you want to scale it down to fit the " +"heat bed automatically?" +msgstr "オブジェクトが大きすぎのようです、ベッドに合わせてスケールしますか?" + msgid "Export STL file:" msgstr "STLファイルをエクスポート:" @@ -6337,9 +6333,6 @@ msgstr "続行しますか?" msgid "Language selection" msgstr "言語選択" -msgid "Switching application language while some presets are modified." -msgstr "アプリケーション言語を切り替える時に、プリセットの変更があります" - msgid "Changing application language" msgstr "言語を変更" @@ -6523,6 +6516,12 @@ msgstr "" "With this option enabled, you can send a task to multiple devices at the " "same time and manage multiple devices." +msgid "Auto arrange plate after cloning" +msgstr "" + +msgid "Auto arrange plate after object cloning" +msgstr "" + msgid "Network" msgstr "ネットワーク (&N)" @@ -7474,12 +7473,21 @@ msgstr "サポート用フィラメント" msgid "Tree supports" msgstr "" -msgid "Skirt" -msgstr "スカート" +msgid "Multimaterial" +msgstr "" msgid "Prime tower" msgstr "プライムタワー" +msgid "Filament for Features" +msgstr "" + +msgid "Ooze prevention" +msgstr "" + +msgid "Skirt" +msgstr "スカート" + msgid "Special mode" msgstr "特別モード" @@ -7526,6 +7534,9 @@ msgstr "推奨ノズル温度" msgid "Recommended nozzle temperature range of this filament. 0 means no set" msgstr "フィラメントの推奨ノズル温度、0は未設定との意味です" +msgid "Flow ratio and Pressure Advance" +msgstr "" + msgid "Print chamber temperature" msgstr "" @@ -7632,9 +7643,6 @@ msgstr "フィラメント開始G-code" msgid "Filament end G-code" msgstr "フィラメント終了G-code" -msgid "Multimaterial" -msgstr "" - msgid "Wipe tower parameters" msgstr "ワイプタワーのパラメータ" @@ -7724,12 +7732,30 @@ msgstr "振動特性" msgid "Single extruder multimaterial setup" msgstr "" +msgid "Number of extruders of the printer." +msgstr "" + +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 "" + +msgid "Nozzle diameter" +msgstr "ノズル直径" + msgid "Wipe tower" msgstr "ワイプタワー" msgid "Single extruder multimaterial parameters" msgstr "単一エクストルーダーのマルチマテリアルパラメーター" +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 "" + msgid "Layer height limits" msgstr "積層ピッチの制限" @@ -8204,11 +8230,8 @@ msgstr "オブジェクト一覧" msgid "Import geometry data from STL/STEP/3MF/OBJ/AMF files" msgstr "Import geometry data from STL/STEP/3MF/OBJ/AMF files" -msgid "⌘+Shift+G" -msgstr "⌘+Shift+G" - -msgid "Ctrl+Shift+G" -msgstr "Ctrl+Shift+G" +msgid "Shift+G" +msgstr "" msgid "Paste from clipboard" msgstr "貼り付け" @@ -8255,33 +8278,18 @@ msgstr "Shift+Tab" msgid "Collapse/Expand the sidebar" msgstr "サイドバーを展開/隠す" -msgid "⌘+Any arrow" -msgstr "⌘+↑↓←→" +msgid "Any arrow" +msgstr "" msgid "Movement in camera space" msgstr "オブジェクト移動" -msgid "⌥+Left mouse button" -msgstr "⌥+マウス左ボタン" - msgid "Select a part" msgstr "パーツを選択" -msgid "⌘+Left mouse button" -msgstr "⌘+マウス左ボタン" - msgid "Select multiple objects" msgstr "複数のオブジェクトを選択" -msgid "Ctrl+Any arrow" -msgstr "Ctrl+↑↓←→" - -msgid "Alt+Left mouse button" -msgstr "Alt+マウス左ボタン" - -msgid "Ctrl+Left mouse button" -msgstr "Ctrl+マウス左ボタン" - msgid "Shift+Left mouse button" msgstr "Shift + マウス左ボタン" @@ -8384,24 +8392,12 @@ msgstr "準備" msgid "Move: press to snap by 1mm" msgstr "1mm単位で移動" -msgid "⌘+Mouse wheel" -msgstr "⌘+マウスホイール" - msgid "Support/Color Painting: adjust pen radius" msgstr "サポート/色塗り: 半径のサイズ" -msgid "⌥+Mouse wheel" -msgstr "⌥+マウスホイール" - msgid "Support/Color Painting: adjust section position" msgstr "サポート/色塗り: 断面の位置" -msgid "Ctrl+Mouse wheel" -msgstr "Ctrl+マウスホイール" - -msgid "Alt+Mouse wheel" -msgstr "Alt+マウスホイール" - msgid "Gizmo" msgstr "Gizmo" @@ -8702,6 +8698,11 @@ msgstr "" msgid "No object can be printed. Maybe too small" msgstr "造形できるオブジェクトがありません。" +msgid "" +"Your print is very close to the priming regions. Make sure there is no " +"collision." +msgstr "" + msgid "" "Failed to generate gcode for invalid custom G-code.\n" "\n" @@ -8930,11 +8931,10 @@ msgid "Variable layer height is not supported with Organic supports." msgstr "Variable layer height is not supported with Organic supports." msgid "" -"Different nozzle diameters and different filament diameters is not allowed " -"when prime tower is enabled." +"Different nozzle diameters and different filament diameters may not work " +"well when the prime tower is enabled. It's very experimental, so please " +"proceed with caution." msgstr "" -"Different nozzle diameters and different filament diameters is not allowed " -"when prime tower is enabled." msgid "" "The Wipe Tower is currently only supported with the relative extruder " @@ -8944,9 +8944,9 @@ msgstr "" "addressing (use_relative_e_distances=1)." msgid "" -"Ooze prevention is currently not supported with the prime tower enabled." +"Ooze prevention is only supported with the wipe tower when " +"'single_extruder_multi_material' is off." msgstr "" -"Ooze prevention is currently not supported with the prime tower enabled." msgid "" "The prime tower is currently only supported for the Marlin, RepRap/Sprinter, " @@ -10164,6 +10164,86 @@ msgstr "" msgid "Pressure advance(Klipper) AKA Linear advance factor(Marlin)" msgstr "" +msgid "Enable adaptive pressure advance (beta)" +msgstr "" + +#, c-format, boost-format +msgid "" +"With increasing print speeds (and hence increasing volumetric flow through " +"the nozzle) and increasing accelerations, it has been observed that the " +"effective PA value typically decreases. This means that a single PA value is " +"not always 100% optimal for all features and a compromise value is usually " +"used that does not cause too much bulging on features with lower flow speed " +"and accelerations while also not causing gaps on faster features.\n" +"\n" +"This feature aims to address this limitation by modeling the response of " +"your printer's extrusion system depending on the volumetric flow speed and " +"acceleration it is printing at. Internally, it generates a fitted model that " +"can extrapolate the needed pressure advance for any given volumetric flow " +"speed and acceleration, which is then emmited to the printer depending on " +"the current print conditions.\n" +"\n" +"When enabled, the pressure advance value above is overriden. However, a " +"reasonable default value above is strongly recomended to act as a fallback " +"and for when tool changing.\n" +"\n" +msgstr "" + +msgid "Adaptive pressure advance measurements (beta)" +msgstr "" + +msgid "" +"Add sets of pressure advance (PA) values, the volumetric flow speeds and " +"accelerations they were measured at, separated by a comma. One set of values " +"per line. For example\n" +"0.04,3.96,3000\n" +"0.033,3.96,10000\n" +"0.029,7.91,3000\n" +"0.026,7.91,10000\n" +"\n" +"How to calibrate:\n" +"1. Run the pressure advance test for at least 3 speeds per acceleration " +"value. It is recommended that the test is run for at least the speed of the " +"external perimeters, the speed of the internal perimeters and the fastest " +"feature print speed in your profile (usually its the sparse or solid " +"infill). Then run them for the same speeds for the slowest and fastest print " +"accelerations,and no faster than the recommended maximum acceleration as " +"given by the klipper input shaper.\n" +"2. Take note of the optimal PA value for each volumetric flow speed and " +"acceleration. You can find the flow number by selecting flow from the color " +"scheme drop down and move the horizontal slider over the PA pattern lines. " +"The number should be visible at the bottom of the page. The ideal PA value " +"should be decreasing the higher the volumetric flow is. If it is not, " +"confirm that your extruder is functioning correctly.The slower and with less " +"acceleration you print, the larger the range of acceptable PA values. If no " +"difference is visible, use the PA value from the faster test.3. Enter the " +"triplets of PA values, Flow and Accelerations in the text box here and save " +"your filament profile\n" +"\n" +msgstr "" + +msgid "Enable adaptive pressure advance for overhangs (beta)" +msgstr "" + +msgid "" +"Enable adaptive PA for overhangs as well as when flow changes within the " +"same feature. This is an experimental option, as if the PA profile is not " +"set accurately, it will cause uniformity issues on the external surfaces " +"before and after overhangs.\n" +msgstr "" + +msgid "Pressure advance for bridges" +msgstr "" + +msgid "" +"Pressure advance value for bridges. Set to 0 to disable. \n" +"\n" +" A lower PA value when printing bridges helps reduce the appearance of " +"slight under extrusion immediately after bridges. This is caused by the " +"pressure drop in the nozzle when printing in the air and a lower PA helps " +"counteract this." +msgstr "" + msgid "" "Default line width if other line widths are set to 0. If expressed as a %, " "it will be computed over the nozzle diameter." @@ -10336,6 +10416,21 @@ msgstr "" "フィラメントは、冷却チューブ内で上下に移動することにより冷却されます。 これら" "の上下移動の必要な回数を指定します。" +msgid "Stamping loading speed" +msgstr "" + +msgid "Speed used for stamping." +msgstr "" + +msgid "Stamping distance measured from the center of the cooling tube" +msgstr "" + +msgid "" +"If set to nonzero value, filament is moved toward the nozzle between the " +"individual cooling moves (\"stamping\"). This option configures how long " +"this movement should be before the filament is retracted again." +msgstr "" + msgid "Speed of the first cooling move" msgstr "冷却移動の最初の速度" @@ -11050,8 +11145,12 @@ msgstr "" msgid "Interlocking depth of a segmented region" msgstr "Interlocking depth of a segmented region" -msgid "Interlocking depth of a segmented region. Zero disables this feature." -msgstr "Interlocking depth of a segmented region. Zero disables this feature." +msgid "" +"Interlocking depth of a segmented region. It will be ignored if " +"\"mmu_segmented_region_max_width\" is zero or if " +"\"mmu_segmented_region_interlocking_depth\"is bigger then " +"\"mmu_segmented_region_max_width\". Zero disables this feature." +msgstr "" msgid "Use beam interlocking" msgstr "" @@ -11398,9 +11497,6 @@ msgid "" "cooling is enabled." msgstr "" -msgid "Nozzle diameter" -msgstr "ノズル直径" - msgid "Diameter of nozzle" msgstr "ノズル直径" @@ -11493,6 +11589,11 @@ msgid "" msgstr "" "インフィル領域内の移動はリトラクションしません。造形時間を節約できます。" +msgid "" +"This option will drop the temperature of the inactive extruders to prevent " +"oozing." +msgstr "" + msgid "Filename format" msgstr "ファイル名形式" @@ -11536,6 +11637,9 @@ msgstr "" "この設定により、線幅に対するオーバーハングの割合を検出し、異なる速度で造形し" "ます。100%%のオーバーハングの場合、ブリッジの速度が使用されます。" +msgid "Filament to print walls" +msgstr "" + msgid "" "Line width of inner wall. If expressed as a %, it will be computed over the " "nozzle diameter." @@ -11569,12 +11673,21 @@ msgid "" "environment variables." msgstr "" +msgid "Printer type" +msgstr "" + +msgid "Type of the printer" +msgstr "" + msgid "Printer notes" msgstr "Printer notes" msgid "You can put your notes regarding the printer here." msgstr "You can put your notes regarding the printer here." +msgid "Printer variant" +msgstr "" + msgid "Raft contact Z distance" msgstr "ラフト接触面Z間隔" @@ -12070,6 +12183,12 @@ msgstr "" "スパース インフィルの面積がこの値以下の場合、ソリッド インフィルに変換されま" "す" +msgid "Solid infill" +msgstr "" + +msgid "Filament to print solid infill" +msgstr "" + msgid "" "Line width of internal solid infill. If expressed as a %, it will be " "computed over the nozzle diameter." @@ -12127,6 +12246,31 @@ msgstr "通常" msgid "Temperature variation" msgstr "軟化温度" +#. TRN PrintSettings : "Ooze prevention" > "Temperature variation" +msgid "" +"Temperature difference to be applied when an extruder is not active. The " +"value is not used when 'idle_temperature' in filament settings is set to non " +"zero value." +msgstr "" + +msgid "Preheat time" +msgstr "" + +msgid "" +"To reduce the waiting time after tool change, Orca can preheat the next tool " +"while the current tool is still in use. This setting specifies the time in " +"seconds to preheat the next tool. Orca will insert a M104 command to preheat " +"the tool in advance." +msgstr "" + +msgid "Preheat steps" +msgstr "" + +msgid "" +"Insert multiple preheat commands(e.g. M104.1). Only useful for Prusa XL. For " +"other printers, please set it to 1." +msgstr "" + msgid "Start G-code" msgstr "スタートG-code" @@ -12740,12 +12884,6 @@ msgstr "" "ワイプタワーを安定させるために使用される円錐の頂点の角度。角度が大きいと底面" "が広くなります。" -msgid "Wipe tower purge lines spacing" -msgstr "ワイプタワーのパージラインの間隔" - -msgid "Spacing of purge lines on the wipe tower." -msgstr "ワイプタワーのパージラインの間隔。" - msgid "Maximum wipe tower print speed" msgstr "" @@ -12771,9 +12909,6 @@ msgid "" "regardless of this setting." msgstr "" -msgid "Wipe tower extruder" -msgstr "ワイプタワーエクストルーダー" - msgid "" "The extruder to use when printing perimeter of the wipe tower. Set to 0 to " "use the one that is available (non-soluble would be preferred)." @@ -12826,6 +12961,30 @@ msgstr "ブリッジ最大距離" msgid "Maximal distance between supports on sparse infill sections." msgstr "中抜きインフィルレイヤーの間隔の最大値。" +msgid "Wipe tower purge lines spacing" +msgstr "ワイプタワーのパージラインの間隔" + +msgid "Spacing of purge lines on the wipe tower." +msgstr "ワイプタワーのパージラインの間隔。" + +msgid "Extra flow for purging" +msgstr "" + +msgid "" +"Extra flow used for the purging lines on the wipe tower. This makes the " +"purging lines thicker or narrower than they normally would be. The spacing " +"is adjusted automatically." +msgstr "" + +msgid "Idle temperature" +msgstr "" + +msgid "" +"Nozzle temperature when the tool is currently not used in multi-tool setups." +"This is only used when 'Ooze prevention' is active in Print Settings. Set to " +"0 to disable." +msgstr "" + msgid "X-Y hole compensation" msgstr "ホール補正 X-Y" @@ -13129,6 +13288,14 @@ msgstr "" "現在、リトラクションからの復帰時のエクストルーダーの追加プライミングが計画さ" "れています。" +msgid "Absolute E position" +msgstr "" + +msgid "" +"Current position of the extruder axis. Only used with absolute extruder " +"addressing." +msgstr "" + msgid "Current extruder" msgstr "現在のエクストルーダー" @@ -13177,6 +13344,12 @@ msgstr "エクストルーダーは使用されましたか?" msgid "Vector of bools stating whether a given extruder is used in the print." msgstr "" +msgid "Has single extruder MM priming" +msgstr "" + +msgid "Are the extra multi-material priming regions used in this print?" +msgstr "" + msgid "Volume per extruder" msgstr "エクストルーダーあたりの体積" @@ -13328,6 +13501,14 @@ msgstr "物理プリンター名" msgid "Name of the physical printer used for slicing." msgstr "スライスに使用される物理プリンターの名前。" +msgid "Number of extruders" +msgstr "" + +msgid "" +"Total number of extruders, regardless of whether they are used in the " +"current print." +msgstr "" + msgid "Layer number" msgstr "レイヤーナンバー" @@ -15613,6 +15794,74 @@ msgstr "" "ABS, appropriately increasing the heatbed temperature can reduce the " "probability of warping?" +#~ msgid "up to" +#~ msgstr "最大" + +#~ msgid "above" +#~ msgstr "以上" + +#~ msgid "from" +#~ msgstr "from" + +#~ msgid "Switching application language while some presets are modified." +#~ msgstr "アプリケーション言語を切り替える時に、プリセットの変更があります" + +#~ msgid "⌘+Shift+G" +#~ msgstr "⌘+Shift+G" + +#~ msgid "Ctrl+Shift+G" +#~ msgstr "Ctrl+Shift+G" + +#~ msgid "⌘+Any arrow" +#~ msgstr "⌘+↑↓←→" + +#~ msgid "⌥+Left mouse button" +#~ msgstr "⌥+マウス左ボタン" + +#~ msgid "⌘+Left mouse button" +#~ msgstr "⌘+マウス左ボタン" + +#~ msgid "Ctrl+Any arrow" +#~ msgstr "Ctrl+↑↓←→" + +#~ msgid "Alt+Left mouse button" +#~ msgstr "Alt+マウス左ボタン" + +#~ msgid "Ctrl+Left mouse button" +#~ msgstr "Ctrl+マウス左ボタン" + +#~ msgid "⌘+Mouse wheel" +#~ msgstr "⌘+マウスホイール" + +#~ msgid "⌥+Mouse wheel" +#~ msgstr "⌥+マウスホイール" + +#~ msgid "Ctrl+Mouse wheel" +#~ msgstr "Ctrl+マウスホイール" + +#~ msgid "Alt+Mouse wheel" +#~ msgstr "Alt+マウスホイール" + +#~ msgid "" +#~ "Different nozzle diameters and different filament diameters is not " +#~ "allowed when prime tower is enabled." +#~ msgstr "" +#~ "Different nozzle diameters and different filament diameters is not " +#~ "allowed when prime tower is enabled." + +#~ msgid "" +#~ "Ooze prevention is currently not supported with the prime tower enabled." +#~ msgstr "" +#~ "Ooze prevention is currently not supported with the prime tower enabled." + +#~ msgid "" +#~ "Interlocking depth of a segmented region. Zero disables this feature." +#~ msgstr "" +#~ "Interlocking depth of a segmented region. Zero disables this feature." + +#~ msgid "Wipe tower extruder" +#~ msgstr "ワイプタワーエクストルーダー" + #~ msgid "Please input a valid value (K in 0~0.3)" #~ msgstr "Please input a valid value (K in 0~0.3)" diff --git a/localization/i18n/ko/OrcaSlicer_ko.po b/localization/i18n/ko/OrcaSlicer_ko.po index 61fcb5eb5e6..d9d2118ec3b 100644 --- a/localization/i18n/ko/OrcaSlicer_ko.po +++ b/localization/i18n/ko/OrcaSlicer_ko.po @@ -7,7 +7,7 @@ msgid "" msgstr "" "Project-Id-Version: Orca Slicer\n" "Report-Msgid-Bugs-To: \n" -"POT-Creation-Date: 2024-07-30 10:20+0900\n" +"POT-Creation-Date: 2024-08-03 18:54+0200\n" "PO-Revision-Date: 2024-05-31 23:33+0900\n" "Last-Translator: ElectricalBoy <15651807+ElectricalBoy@users.noreply.github." "com>\n" @@ -7460,8 +7460,8 @@ msgstr "" msgid "" "When recording timelapse without toolhead, it is recommended to add a " "\"Timelapse Wipe Tower\" \n" -"by right-click the empty position of build plate and choose \"Add " -"Primitive\"->\"Timelapse Wipe Tower\"." +"by right-click the empty position of build plate and choose \"Add Primitive" +"\"->\"Timelapse Wipe Tower\"." msgstr "" "툴헤드 없이 시간 경과를 기록할 경우 \"타임랩스 닦기 타워\"를 추가하는 것이 좋" "습니다\n" @@ -11120,10 +11120,10 @@ msgstr "팬 최대 속도 레이어" msgid "" "Fan speed will be ramped up linearly from zero at layer " -"\"close_fan_the_first_x_layers\" to maximum at layer " -"\"full_fan_speed_layer\". \"full_fan_speed_layer\" will be ignored if lower " -"than \"close_fan_the_first_x_layers\", in which case the fan will be running " -"at maximum allowed speed at layer \"close_fan_the_first_x_layers\" + 1." +"\"close_fan_the_first_x_layers\" to maximum at layer \"full_fan_speed_layer" +"\". \"full_fan_speed_layer\" will be ignored if lower than " +"\"close_fan_the_first_x_layers\", in which case the fan will be running at " +"maximum allowed speed at layer \"close_fan_the_first_x_layers\" + 1." msgstr "" "팬 속도는 \"close_fan_the_first_x_layers\" 의 0에서 \"full_fan_speed_layer\" " "의 최고 속도까지 선형적으로 증가합니다. \"full_fan_speed_layer\"가 " @@ -12067,6 +12067,9 @@ msgstr "" "선 너비에 비례하여 돌출부 백분율을 감지하고 다른 속도를 사용하여 출력합니다. " "100%% 돌출부의 경우 브릿지 속도가 사용됩니다." +msgid "Filament to print walls" +msgstr "" + msgid "" "Line width of inner wall. If expressed as a %, it will be computed over the " "nozzle diameter." @@ -12111,12 +12114,21 @@ msgstr "" "대 경로를 첫 번째 값으로 전달하며 환경 변수를 읽어 Orca Slicer 구성 설정에 접" "근할 수 있습니다." +msgid "Printer type" +msgstr "" + +msgid "Type of the printer" +msgstr "" + msgid "Printer notes" msgstr "프린터 메모" msgid "You can put your notes regarding the printer here." msgstr "여기에 프린터에 관한 메모를 넣을 수 있습니다." +msgid "Printer variant" +msgstr "" + msgid "Raft contact Z distance" msgstr "라프트 접점 Z 거리" @@ -12663,6 +12675,12 @@ msgid "" "internal solid infill" msgstr "임계값보다 작은 드문 채우기 영역은 꽉찬 내부 채우기로 대체됩니다" +msgid "Solid infill" +msgstr "" + +msgid "Filament to print solid infill" +msgstr "" + msgid "" "Line width of internal solid infill. If expressed as a %, it will be " "computed over the nozzle diameter." @@ -15139,8 +15157,8 @@ msgstr "" "다시 작성하시겠습니까?" msgid "" -"We would rename the presets as \"Vendor Type Serial @printer you " -"selected\". \n" +"We would rename the presets as \"Vendor Type Serial @printer you selected" +"\". \n" "To add preset for more printers, Please go to printer selection" msgstr "" "사전 설정의 이름을 \"선택한 공급업체 유형 직렬 @프린터\"로 변경합니다.\n" @@ -16895,8 +16913,8 @@ msgstr "" #~ msgstr "드문 레이어 없음(실험적)" #~ msgid "" -#~ "We would rename the presets as \"Vendor Type Serial @printer you " -#~ "selected\". \n" +#~ "We would rename the presets as \"Vendor Type Serial @printer you selected" +#~ "\". \n" #~ "To add preset for more prinetrs, Please go to printer selection" #~ msgstr "" #~ "사전 설정의 이름을 \"선택한 공급업체 유형 직렬 @프린터\"로 변경합니다.\n" diff --git a/localization/i18n/nl/OrcaSlicer_nl.po b/localization/i18n/nl/OrcaSlicer_nl.po index 6831d65d501..a34760c9bc3 100644 --- a/localization/i18n/nl/OrcaSlicer_nl.po +++ b/localization/i18n/nl/OrcaSlicer_nl.po @@ -3,7 +3,7 @@ msgid "" msgstr "" "Project-Id-Version: Orca Slicer\n" "Report-Msgid-Bugs-To: \n" -"POT-Creation-Date: 2024-06-30 15:44+0200\n" +"POT-Creation-Date: 2024-08-03 18:54+0200\n" "Language: nl\n" "MIME-Version: 1.0\n" "Content-Type: text/plain; charset=UTF-8\n" @@ -71,9 +71,6 @@ msgstr "Slim vullen hoek" msgid "On overhangs only" msgstr "Alleen op overhangen" -msgid "Auto support threshold angle: " -msgstr "Maximale hoek automatische ondersteuning: " - msgid "Circle" msgstr "Cirkel" @@ -93,6 +90,9 @@ msgstr "Staat alleen schilderen toe op facetten geselecteerd met: \"%1%\"" msgid "Highlight faces according to overhang angle." msgstr "Gebieden markeren op basis van overhangende hoek." +msgid "Auto support threshold angle: " +msgstr "Maximale hoek automatische ondersteuning: " + msgid "No auto support" msgstr "Geen automatische ondersteuning" @@ -4112,15 +4112,6 @@ msgstr "Totale tijd" msgid "Total cost" msgstr "Total cost" -msgid "up to" -msgstr "tot" - -msgid "above" -msgstr "Boven" - -msgid "from" -msgstr "Van" - msgid "Color Scheme" msgstr "Kleurschema" @@ -4184,12 +4175,12 @@ msgstr "Filamentwisseltijden" msgid "Cost" msgstr "Kosten" -msgid "Color change" -msgstr "Kleur veranderen" - msgid "Print" msgstr "Print" +msgid "Color change" +msgstr "Kleur veranderen" + msgid "Printer" msgstr "Printer" @@ -6098,6 +6089,14 @@ msgstr "Er is een object met meerdere onderdelen gedetecteerd" msgid "The file does not contain any geometry data." msgstr "Het bestand bevat geen geometriegegevens." +msgid "" +"Your object appears to be too large. It will be scaled down to fit the heat " +"bed automatically." +msgstr "" + +msgid "Object too large" +msgstr "Object te groot" + msgid "" "Your object appears to be too large, Do you want to scale it down to fit the " "heat bed automatically?" @@ -6105,9 +6104,6 @@ msgstr "" "Uw object lijkt te groot. Wilt u het verkleinen zodat het automatisch op het " "printbed past?" -msgid "Object too large" -msgstr "Object te groot" - msgid "Export STL file:" msgstr "Exporteer STL bestand:" @@ -6478,11 +6474,6 @@ msgstr "Wilt u doorgaan?" msgid "Language selection" msgstr "Taal selectie" -msgid "Switching application language while some presets are modified." -msgstr "" -"De taal van de toepassing aanpaasen terwijl sommige voorinstellingen zijn " -"aangepast." - msgid "Changing application language" msgstr "Taal van de applicatie wijzigen" @@ -6671,6 +6662,12 @@ msgstr "" "With this option enabled, you can send a task to multiple devices at the " "same time and manage multiple devices." +msgid "Auto arrange plate after cloning" +msgstr "" + +msgid "Auto arrange plate after object cloning" +msgstr "" + msgid "Network" msgstr "Netwerk" @@ -7678,12 +7675,21 @@ msgstr "Support filament" msgid "Tree supports" msgstr "" -msgid "Skirt" -msgstr "Skirt" +msgid "Multimaterial" +msgstr "" msgid "Prime tower" msgstr "Prime toren" +msgid "Filament for Features" +msgstr "" + +msgid "Ooze prevention" +msgstr "" + +msgid "Skirt" +msgstr "Skirt" + msgid "Special mode" msgstr "Speciale modus" @@ -7737,6 +7743,9 @@ msgstr "" "De geadviseerde nozzle temperatuur voor dit filament. 0 betekend dat er geen " "voorgestelde waarde is " +msgid "Flow ratio and Pressure Advance" +msgstr "" + msgid "Print chamber temperature" msgstr "" @@ -7848,9 +7857,6 @@ msgstr "Filament start G-code" msgid "Filament end G-code" msgstr "Filament einde G-code" -msgid "Multimaterial" -msgstr "" - msgid "Wipe tower parameters" msgstr "Afveegblokparameters" @@ -7940,12 +7946,30 @@ msgstr "Jerk beperking" msgid "Single extruder multimaterial setup" msgstr "" +msgid "Number of extruders of the printer." +msgstr "" + +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 "" + +msgid "Nozzle diameter" +msgstr "Nozzle diameter" + msgid "Wipe tower" msgstr "Afveegblok" msgid "Single extruder multimaterial parameters" msgstr "Parameter voor multi-material met één extruder" +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 "" + msgid "Layer height limits" msgstr "Limieten voor laaghoogte" @@ -8438,11 +8462,8 @@ msgstr "Object lijst" msgid "Import geometry data from STL/STEP/3MF/OBJ/AMF files" msgstr "Import geometry data from STL/STEP/3MF/OBJ/AMF files" -msgid "⌘+Shift+G" -msgstr "⌘+Shift+G" - -msgid "Ctrl+Shift+G" -msgstr "Ctrl+Shift+G" +msgid "Shift+G" +msgstr "" msgid "Paste from clipboard" msgstr "Plakken vanuit klembord" @@ -8494,33 +8515,18 @@ msgstr "Shift+Tab" msgid "Collapse/Expand the sidebar" msgstr "De menubalk in-/uitschuiven" -msgid "⌘+Any arrow" -msgstr "⌘+willekeurige pijl" +msgid "Any arrow" +msgstr "" msgid "Movement in camera space" msgstr "Beweging in cameragebied" -msgid "⌥+Left mouse button" -msgstr "⌥+Linker muisknop" - msgid "Select a part" msgstr "Selecteer een onderdeel" -msgid "⌘+Left mouse button" -msgstr "⌘+Linker muisknop" - msgid "Select multiple objects" msgstr "Selecteer meerdere objecten" -msgid "Ctrl+Any arrow" -msgstr "CTRL+willekeurige pijl" - -msgid "Alt+Left mouse button" -msgstr "Alt+Linker muisknop" - -msgid "Ctrl+Left mouse button" -msgstr "Ctrl+Linker muisknop" - msgid "Shift+Left mouse button" msgstr "Shift+Linker muisknop" @@ -8623,24 +8629,12 @@ msgstr "Plaat" msgid "Move: press to snap by 1mm" msgstr "Verplaatsen: druk om 1 mm te verplaatsen" -msgid "⌘+Mouse wheel" -msgstr "⌘+muiswiel" - msgid "Support/Color Painting: adjust pen radius" msgstr "Support/kleur intekenen: pas de pen diameter aan" -msgid "⌥+Mouse wheel" -msgstr "⌥+Muiswiel" - msgid "Support/Color Painting: adjust section position" msgstr "Support/kleur intekenen: pas de sectie positie aan" -msgid "Ctrl+Mouse wheel" -msgstr "CTRL+muiswiel" - -msgid "Alt+Mouse wheel" -msgstr "Alt+muiswiel" - msgid "Gizmo" msgstr "Gizmo" @@ -8957,6 +8951,11 @@ msgid "No object can be printed. Maybe too small" msgstr "" "Er kunnen geen objecten geprint worden. Het kan zijn dat ze te klein zijn." +msgid "" +"Your print is very close to the priming regions. Make sure there is no " +"collision." +msgstr "" + msgid "" "Failed to generate gcode for invalid custom G-code.\n" "\n" @@ -9200,11 +9199,10 @@ msgid "Variable layer height is not supported with Organic supports." msgstr "Variabele laaghoogte wordt niet ondersteund met organische steunen." msgid "" -"Different nozzle diameters and different filament diameters is not allowed " -"when prime tower is enabled." +"Different nozzle diameters and different filament diameters may not work " +"well when the prime tower is enabled. It's very experimental, so please " +"proceed with caution." msgstr "" -"Verschillende mondstukdiameters en verschillende filamentdiameters zijn niet " -"toegestaan als de prime-toren is ingeschakeld." msgid "" "The Wipe Tower is currently only supported with the relative extruder " @@ -9214,10 +9212,9 @@ msgstr "" "extruderadressering (use_relative_e_distances=1)." msgid "" -"Ooze prevention is currently not supported with the prime tower enabled." +"Ooze prevention is only supported with the wipe tower when " +"'single_extruder_multi_material' is off." msgstr "" -"Ooze-preventie wordt momenteel niet ondersteund als de prime tower is " -"ingeschakeld." msgid "" "The prime tower is currently only supported for the Marlin, RepRap/Sprinter, " @@ -10489,6 +10486,86 @@ msgstr "" msgid "Pressure advance(Klipper) AKA Linear advance factor(Marlin)" msgstr "" +msgid "Enable adaptive pressure advance (beta)" +msgstr "" + +#, c-format, boost-format +msgid "" +"With increasing print speeds (and hence increasing volumetric flow through " +"the nozzle) and increasing accelerations, it has been observed that the " +"effective PA value typically decreases. This means that a single PA value is " +"not always 100% optimal for all features and a compromise value is usually " +"used that does not cause too much bulging on features with lower flow speed " +"and accelerations while also not causing gaps on faster features.\n" +"\n" +"This feature aims to address this limitation by modeling the response of " +"your printer's extrusion system depending on the volumetric flow speed and " +"acceleration it is printing at. Internally, it generates a fitted model that " +"can extrapolate the needed pressure advance for any given volumetric flow " +"speed and acceleration, which is then emmited to the printer depending on " +"the current print conditions.\n" +"\n" +"When enabled, the pressure advance value above is overriden. However, a " +"reasonable default value above is strongly recomended to act as a fallback " +"and for when tool changing.\n" +"\n" +msgstr "" + +msgid "Adaptive pressure advance measurements (beta)" +msgstr "" + +msgid "" +"Add sets of pressure advance (PA) values, the volumetric flow speeds and " +"accelerations they were measured at, separated by a comma. One set of values " +"per line. For example\n" +"0.04,3.96,3000\n" +"0.033,3.96,10000\n" +"0.029,7.91,3000\n" +"0.026,7.91,10000\n" +"\n" +"How to calibrate:\n" +"1. Run the pressure advance test for at least 3 speeds per acceleration " +"value. It is recommended that the test is run for at least the speed of the " +"external perimeters, the speed of the internal perimeters and the fastest " +"feature print speed in your profile (usually its the sparse or solid " +"infill). Then run them for the same speeds for the slowest and fastest print " +"accelerations,and no faster than the recommended maximum acceleration as " +"given by the klipper input shaper.\n" +"2. Take note of the optimal PA value for each volumetric flow speed and " +"acceleration. You can find the flow number by selecting flow from the color " +"scheme drop down and move the horizontal slider over the PA pattern lines. " +"The number should be visible at the bottom of the page. The ideal PA value " +"should be decreasing the higher the volumetric flow is. If it is not, " +"confirm that your extruder is functioning correctly.The slower and with less " +"acceleration you print, the larger the range of acceptable PA values. If no " +"difference is visible, use the PA value from the faster test.3. Enter the " +"triplets of PA values, Flow and Accelerations in the text box here and save " +"your filament profile\n" +"\n" +msgstr "" + +msgid "Enable adaptive pressure advance for overhangs (beta)" +msgstr "" + +msgid "" +"Enable adaptive PA for overhangs as well as when flow changes within the " +"same feature. This is an experimental option, as if the PA profile is not " +"set accurately, it will cause uniformity issues on the external surfaces " +"before and after overhangs.\n" +msgstr "" + +msgid "Pressure advance for bridges" +msgstr "" + +msgid "" +"Pressure advance value for bridges. Set to 0 to disable. \n" +"\n" +" A lower PA value when printing bridges helps reduce the appearance of " +"slight under extrusion immediately after bridges. This is caused by the " +"pressure drop in the nozzle when printing in the air and a lower PA helps " +"counteract this." +msgstr "" + msgid "" "Default line width if other line widths are set to 0. If expressed as a %, " "it will be computed over the nozzle diameter." @@ -10670,6 +10747,21 @@ msgstr "" "Het filament wordt gekoeld tijdens het terug en voorwaarts bewegen in de " "koelbuis. Specificeer het benodigd aantal bewegingen." +msgid "Stamping loading speed" +msgstr "" + +msgid "Speed used for stamping." +msgstr "" + +msgid "Stamping distance measured from the center of the cooling tube" +msgstr "" + +msgid "" +"If set to nonzero value, filament is moved toward the nozzle between the " +"individual cooling moves (\"stamping\"). This option configures how long " +"this movement should be before the filament is retracted again." +msgstr "" + msgid "Speed of the first cooling move" msgstr "Snelheid voor de eerste koelbeweging" @@ -11409,9 +11501,12 @@ msgstr "" msgid "Interlocking depth of a segmented region" msgstr "Insluitdiepte van een gesegmenteerde regio" -msgid "Interlocking depth of a segmented region. Zero disables this feature." +msgid "" +"Interlocking depth of a segmented region. It will be ignored if " +"\"mmu_segmented_region_max_width\" is zero or if " +"\"mmu_segmented_region_interlocking_depth\"is bigger then " +"\"mmu_segmented_region_max_width\". Zero disables this feature." msgstr "" -"Insluitdiepte van een gesegmenteerd gebied. Nul schakelt deze functie uit." msgid "Use beam interlocking" msgstr "" @@ -11769,9 +11864,6 @@ msgid "" "cooling is enabled." msgstr "" -msgid "Nozzle diameter" -msgstr "Nozzle diameter" - msgid "Diameter of nozzle" msgstr "Diameter van de nozzle" @@ -11874,6 +11966,11 @@ msgstr "" "voor complexe modellen verkorten en printtijd besparen, maar het segmenteren " "en het genereren van G-codes langzamer maken." +msgid "" +"This option will drop the temperature of the inactive extruders to prevent " +"oozing." +msgstr "" + msgid "Filename format" msgstr "Bestandsnaam formaat" @@ -11919,6 +12016,9 @@ msgstr "" "lijnbreedte te detecteren en gebruikt verschillende snelheden om af te " "drukken. Voor 100%% overhang wordt de brugsnelheid gebruikt." +msgid "Filament to print walls" +msgstr "" + msgid "" "Line width of inner wall. If expressed as a %, it will be computed over the " "nozzle diameter." @@ -11952,12 +12052,21 @@ msgid "" "environment variables." msgstr "" +msgid "Printer type" +msgstr "" + +msgid "Type of the printer" +msgstr "" + msgid "Printer notes" msgstr "Printer notes" msgid "You can put your notes regarding the printer here." msgstr "You can put your notes regarding the printer here." +msgid "Printer variant" +msgstr "" + msgid "Raft contact Z distance" msgstr "Vlot (raft) contact Z afstand:" @@ -12466,6 +12575,12 @@ msgstr "" "Dunne opvullingen (infill) die kleiner zijn dan deze drempelwaarde worden " "vervangen door solide interne vulling (infill)." +msgid "Solid infill" +msgstr "" + +msgid "Filament to print solid infill" +msgstr "" + msgid "" "Line width of internal solid infill. If expressed as a %, it will be " "computed over the nozzle diameter." @@ -12531,6 +12646,31 @@ msgstr "Traditioneel" msgid "Temperature variation" msgstr "Temperatuur variatie" +#. TRN PrintSettings : "Ooze prevention" > "Temperature variation" +msgid "" +"Temperature difference to be applied when an extruder is not active. The " +"value is not used when 'idle_temperature' in filament settings is set to non " +"zero value." +msgstr "" + +msgid "Preheat time" +msgstr "" + +msgid "" +"To reduce the waiting time after tool change, Orca can preheat the next tool " +"while the current tool is still in use. This setting specifies the time in " +"seconds to preheat the next tool. Orca will insert a M104 command to preheat " +"the tool in advance." +msgstr "" + +msgid "Preheat steps" +msgstr "" + +msgid "" +"Insert multiple preheat commands(e.g. M104.1). Only useful for Prusa XL. For " +"other printers, please set it to 1." +msgstr "" + msgid "Start G-code" msgstr "Start G-code" @@ -13166,12 +13306,6 @@ msgid "" "Larger angle means wider base." msgstr "" -msgid "Wipe tower purge lines spacing" -msgstr "" - -msgid "Spacing of purge lines on the wipe tower." -msgstr "" - msgid "Maximum wipe tower print speed" msgstr "" @@ -13197,9 +13331,6 @@ msgid "" "regardless of this setting." msgstr "" -msgid "Wipe tower extruder" -msgstr "" - msgid "" "The extruder to use when printing perimeter of the wipe tower. Set to 0 to " "use the one that is available (non-soluble would be preferred)." @@ -13252,6 +13383,30 @@ msgstr "Maximale brugafstand" msgid "Maximal distance between supports on sparse infill sections." msgstr "Maximale afstand tussen support op dunne vullingsdelen." +msgid "Wipe tower purge lines spacing" +msgstr "" + +msgid "Spacing of purge lines on the wipe tower." +msgstr "" + +msgid "Extra flow for purging" +msgstr "" + +msgid "" +"Extra flow used for the purging lines on the wipe tower. This makes the " +"purging lines thicker or narrower than they normally would be. The spacing " +"is adjusted automatically." +msgstr "" + +msgid "Idle temperature" +msgstr "" + +msgid "" +"Nozzle temperature when the tool is currently not used in multi-tool setups." +"This is only used when 'Ooze prevention' is active in Print Settings. Set to " +"0 to disable." +msgstr "" + msgid "X-Y hole compensation" msgstr "X-Y-gaten compensatie" @@ -13563,6 +13718,14 @@ msgstr "" msgid "Currently planned extra extruder priming after deretraction." msgstr "" +msgid "Absolute E position" +msgstr "" + +msgid "" +"Current position of the extruder axis. Only used with absolute extruder " +"addressing." +msgstr "" + msgid "Current extruder" msgstr "" @@ -13605,6 +13768,12 @@ msgstr "" msgid "Vector of bools stating whether a given extruder is used in the print." msgstr "" +msgid "Has single extruder MM priming" +msgstr "" + +msgid "Are the extra multi-material priming regions used in this print?" +msgstr "" + msgid "Volume per extruder" msgstr "" @@ -13749,6 +13918,14 @@ msgstr "" msgid "Name of the physical printer used for slicing." msgstr "" +msgid "Number of extruders" +msgstr "" + +msgid "" +"Total number of extruders, regardless of whether they are used in the " +"current print." +msgstr "" + msgid "Layer number" msgstr "" @@ -16074,6 +16251,74 @@ msgstr "" "kromtrekken, zoals ABS, een juiste verhoging van de temperatuur van het " "warmtebed de kans op kromtrekken kan verkleinen?" +#~ msgid "up to" +#~ msgstr "tot" + +#~ msgid "above" +#~ msgstr "Boven" + +#~ msgid "from" +#~ msgstr "Van" + +#~ msgid "Switching application language while some presets are modified." +#~ msgstr "" +#~ "De taal van de toepassing aanpaasen terwijl sommige voorinstellingen zijn " +#~ "aangepast." + +#~ msgid "⌘+Shift+G" +#~ msgstr "⌘+Shift+G" + +#~ msgid "Ctrl+Shift+G" +#~ msgstr "Ctrl+Shift+G" + +#~ msgid "⌘+Any arrow" +#~ msgstr "⌘+willekeurige pijl" + +#~ msgid "⌥+Left mouse button" +#~ msgstr "⌥+Linker muisknop" + +#~ msgid "⌘+Left mouse button" +#~ msgstr "⌘+Linker muisknop" + +#~ msgid "Ctrl+Any arrow" +#~ msgstr "CTRL+willekeurige pijl" + +#~ msgid "Alt+Left mouse button" +#~ msgstr "Alt+Linker muisknop" + +#~ msgid "Ctrl+Left mouse button" +#~ msgstr "Ctrl+Linker muisknop" + +#~ msgid "⌘+Mouse wheel" +#~ msgstr "⌘+muiswiel" + +#~ msgid "⌥+Mouse wheel" +#~ msgstr "⌥+Muiswiel" + +#~ msgid "Ctrl+Mouse wheel" +#~ msgstr "CTRL+muiswiel" + +#~ msgid "Alt+Mouse wheel" +#~ msgstr "Alt+muiswiel" + +#~ msgid "" +#~ "Different nozzle diameters and different filament diameters is not " +#~ "allowed when prime tower is enabled." +#~ msgstr "" +#~ "Verschillende mondstukdiameters en verschillende filamentdiameters zijn " +#~ "niet toegestaan als de prime-toren is ingeschakeld." + +#~ msgid "" +#~ "Ooze prevention is currently not supported with the prime tower enabled." +#~ msgstr "" +#~ "Ooze-preventie wordt momenteel niet ondersteund als de prime tower is " +#~ "ingeschakeld." + +#~ msgid "" +#~ "Interlocking depth of a segmented region. Zero disables this feature." +#~ msgstr "" +#~ "Insluitdiepte van een gesegmenteerd gebied. Nul schakelt deze functie uit." + #~ msgid "Please input a valid value (K in 0~0.3)" #~ msgstr "Voer een geldige waarde in (K in 0~0.3)" diff --git a/localization/i18n/pl/OrcaSlicer_pl.po b/localization/i18n/pl/OrcaSlicer_pl.po index 41b75b0150b..0c821ac0938 100644 --- a/localization/i18n/pl/OrcaSlicer_pl.po +++ b/localization/i18n/pl/OrcaSlicer_pl.po @@ -3,7 +3,7 @@ msgid "" msgstr "" "Project-Id-Version: OrcaSlicer 2.1\n" "Report-Msgid-Bugs-To: \n" -"POT-Creation-Date: 2024-06-30 15:44+0200\n" +"POT-Creation-Date: 2024-08-03 18:54+0200\n" "PO-Revision-Date: \n" "Last-Translator: Krzysztof Morga \n" "Language-Team: \n" @@ -75,9 +75,6 @@ msgstr "Kąt inteligentnego wypełniania" msgid "On overhangs only" msgstr "Tylko na nawisach" -msgid "Auto support threshold angle: " -msgstr "Automatyczny kąt progowy podpory: " - msgid "Circle" msgstr "Koło" @@ -97,6 +94,9 @@ msgstr "Pozwala malować tylko na wybranych powierzchniach za pomocą: \"%1%\"" msgid "Highlight faces according to overhang angle." msgstr "Podświetl ściany zgodnie z kątem nawisu." +msgid "Auto support threshold angle: " +msgstr "Automatyczny kąt progowy podpory: " + msgid "No auto support" msgstr "Brak automatycznej podpory" @@ -4163,15 +4163,6 @@ msgstr "Czas całkowity" msgid "Total cost" msgstr "Koszt całkowity" -msgid "up to" -msgstr "do" - -msgid "above" -msgstr "powyżej" - -msgid "from" -msgstr "od" - msgid "Color Scheme" msgstr "Schemat kolorów" @@ -4235,12 +4226,12 @@ msgstr "Liczba zmian filamentu" msgid "Cost" msgstr "Koszt" -msgid "Color change" -msgstr "Zmiana koloru" - msgid "Print" msgstr "Drukuj" +msgid "Color change" +msgstr "Zmiana koloru" + msgid "Printer" msgstr "Drukarka" @@ -5395,7 +5386,7 @@ msgid "Lamp" msgstr "LED" msgid "Aux" -msgstr "Aux" +msgstr "Pomocn." msgid "Cham" msgstr "Komora" @@ -6168,6 +6159,16 @@ msgstr "Wykryto obiekt składający się z wielu części" msgid "The file does not contain any geometry data." msgstr "Plik nie zawiera żadnych danych geometrycznych." +msgid "" +"Your object appears to be too large. It will be scaled down to fit the heat " +"bed automatically." +msgstr "" +"Twój obiekt wydaje się być zbyt duży. Zostanie on automatycznie zmniejszony, " +"aby pasował do powierzchni roboczej." + +msgid "Object too large" +msgstr "Obiekt jest zbyt duży" + msgid "" "Your object appears to be too large, Do you want to scale it down to fit the " "heat bed automatically?" @@ -6175,9 +6176,6 @@ msgstr "" "Importowany model przekracza wymiary przestrzeni roboczej. Czy chcesz go " "przeskalowanć do odpowiednich rozmiarów?" -msgid "Object too large" -msgstr "Obiekt jest zbyt duży" - msgid "Export STL file:" msgstr "Eksportuj plik STL:" @@ -6555,11 +6553,6 @@ msgstr "Czy chcesz kontynuować?" msgid "Language selection" msgstr "Wybór języka" -msgid "Switching application language while some presets are modified." -msgstr "" -"Zmiana języka aplikacji przy jednoczesnym istniejących zmodyfikowanych " -"ustawieniach." - msgid "Changing application language" msgstr "Zmiana języka aplikacji" @@ -6761,6 +6754,12 @@ msgstr "" "Dzięki tej opcji możesz wysyłać zadania do wielu urządzeń jednocześnie i " "zarządzać nimi." +msgid "Auto arrange plate after cloning" +msgstr "Automatyczne rozmieszczanie na platformie po sklonowaniu" + +msgid "Auto arrange plate after object cloning" +msgstr "Automatyczne rozmieszczenie obiektów na platformie po ich sklonowaniu" + msgid "Network" msgstr "Sieć" @@ -7737,7 +7736,7 @@ msgid "Bridge" msgstr "Mosty" msgid "Set speed for external and internal bridges" -msgstr "Ustaw szybkość dla zewnętrznych i wewnętrznych mostków" +msgstr "Ustaw szybkość dla zewnętrznych i wewnętrznych mostów" msgid "Travel speed" msgstr "Szybkość przemieszczania" @@ -7749,7 +7748,7 @@ msgid "Jerk(XY)" msgstr "Jerk (XY)" msgid "Raft" -msgstr "Raft" +msgstr "Tratwa (Raft)" msgid "Support filament" msgstr "Filament podpory" @@ -7757,12 +7756,21 @@ msgstr "Filament podpory" msgid "Tree supports" msgstr "Drzewo" -msgid "Skirt" -msgstr "Skirt" +msgid "Multimaterial" +msgstr "Multimateriał" msgid "Prime tower" msgstr "Wieża czyszcząca" +msgid "Filament for Features" +msgstr "Filament dla elementu druku" + +msgid "Ooze prevention" +msgstr "Zapobieganie wyciekom (Ooze)" + +msgid "Skirt" +msgstr "Skirt" + msgid "Special mode" msgstr "Tryby specjalne" @@ -7819,6 +7827,9 @@ msgid "Recommended nozzle temperature range of this filament. 0 means no set" msgstr "" "Zalecany zakres temperatury dyszy dla tego filamentu. 0 oznacza brak ustawień" +msgid "Flow ratio and Pressure Advance" +msgstr "Współczynnik przepływu i Wzrost ciśnienia (PA)" + msgid "Print chamber temperature" msgstr "Temperatura komory druku" @@ -7928,9 +7939,6 @@ msgstr "Początkowy G-code filamentu" msgid "Filament end G-code" msgstr "Końcowy G-code filamentu" -msgid "Multimaterial" -msgstr "Multimateriał" - msgid "Wipe tower parameters" msgstr "Parametry wieży czyszczącej" @@ -8020,12 +8028,36 @@ msgstr "Ograniczenie Jerk" msgid "Single extruder multimaterial setup" msgstr "Konfiguracja pojedynczego extrudera wielomateriałowego" +msgid "Number of extruders of the printer." +msgstr "Liczba ekstruderów drukarki." + +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 "" +"Wybrano tryb \"Pojedynczy ekstruder wielomateriałowy\". \n" +"Wszystkie ekstrudery muszą mieć tę samą średnicę dyszy. \n" +"Czy chcesz, aby średnica wszystkich dysz była taka sama jak średnica dyszy " +"pierwszego ekstrudera?" + +msgid "Nozzle diameter" +msgstr "Średnica dyszy" + msgid "Wipe tower" msgstr "Wieża czyszcząca" msgid "Single extruder multimaterial parameters" msgstr "Parametry pojedynczego extrudera wielomateriałowego" +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. Średnice wszystkich " +"ekstruderów zostaną ustawione na nową wartość. Czy chcesz kontynuować?" + msgid "Layer height limits" msgstr "Ograniczenia wysokości warstwy" @@ -8539,11 +8571,8 @@ msgstr "Lista obiektów" msgid "Import geometry data from STL/STEP/3MF/OBJ/AMF files" msgstr "Import danych geometrycznych z plików STL/STEP/3MF/OBJ/AMF" -msgid "⌘+Shift+G" -msgstr "⌘+Shift+G" - -msgid "Ctrl+Shift+G" -msgstr "Ctrl+Shift+G" +msgid "Shift+G" +msgstr "Shift+G" msgid "Paste from clipboard" msgstr "Wklej z schowka" @@ -8593,33 +8622,18 @@ msgstr "Shift+Tab" msgid "Collapse/Expand the sidebar" msgstr "Zwiń/Rozwiń pasek boczny" -msgid "⌘+Any arrow" -msgstr "⌘+Dowolna strzałka" +msgid "Any arrow" +msgstr "Dowolna strzałka" msgid "Movement in camera space" msgstr "Ruch w przestrzeni kamery" -msgid "⌥+Left mouse button" -msgstr "⌥+Lewy przycisk myszy" - msgid "Select a part" msgstr "Wybierz część" -msgid "⌘+Left mouse button" -msgstr "⌘+Lewy przycisk myszy" - msgid "Select multiple objects" msgstr "Wybierz wiele obiektów" -msgid "Ctrl+Any arrow" -msgstr "Ctrl+Dowolna strzałka" - -msgid "Alt+Left mouse button" -msgstr "Alt+Lewy przycisk myszy" - -msgid "Ctrl+Left mouse button" -msgstr "Ctrl+Lewy przycisk myszy" - msgid "Shift+Left mouse button" msgstr "Shift+Lewy przycisk myszy" @@ -8722,24 +8736,12 @@ msgstr "Płyta" msgid "Move: press to snap by 1mm" msgstr "Przesuń: naciśnij, aby przyciągnąć co 1 mm" -msgid "⌘+Mouse wheel" -msgstr "⌘+Kółko myszy" - msgid "Support/Color Painting: adjust pen radius" msgstr "Podpory/Kolorowanie: dostosuj promień pędzla" -msgid "⌥+Mouse wheel" -msgstr "⌥+Kółko myszy" - msgid "Support/Color Painting: adjust section position" msgstr "Podpory/Kolorowanie: dostosuj pozycję sekcji" -msgid "Ctrl+Mouse wheel" -msgstr "Ctrl+Kółko myszy" - -msgid "Alt+Mouse wheel" -msgstr "Alt+Kółko myszy" - msgid "Gizmo" msgstr "Uchwyt" @@ -9051,6 +9053,13 @@ msgstr "" msgid "No object can be printed. Maybe too small" msgstr "Żaden obiekt nie może być wydrukowany. Może jest za mały" +msgid "" +"Your print is very close to the priming regions. Make sure there is no " +"collision." +msgstr "" +"Twój wydruk znajduje się bardzo blisko obszaru czyszczenia dyszy. Upewnij " +"się, że nie dojdzie do kolizji." + msgid "" "Failed to generate gcode for invalid custom G-code.\n" "\n" @@ -9297,11 +9306,13 @@ msgstr "" "Zmienna wysokość warstwy nie jest dostępna w przypadku podpór organicznych." msgid "" -"Different nozzle diameters and different filament diameters is not allowed " -"when prime tower is enabled." +"Different nozzle diameters and different filament diameters may not work " +"well when the prime tower is enabled. It's very experimental, so please " +"proceed with caution." msgstr "" -"Różne średnice dysz i różne średnice filamentów nie są dozwolone, gdy " -"włączona jest wieża czyszcząca." +"Różne średnice dysz i filamentu mogą nie działać poprawnie, gdy włączona " +"jest wieża czyszcząca. Jest to mocno eksperymentalna funkcja, więc zaleca " +"się ostrożność." msgid "" "The Wipe Tower is currently only supported with the relative extruder " @@ -9311,10 +9322,11 @@ msgstr "" "extrudera (use_relative_e_distances=1)." msgid "" -"Ooze prevention is currently not supported with the prime tower enabled." +"Ooze prevention is only supported with the wipe tower when " +"'single_extruder_multi_material' is off." msgstr "" -"Zapobieganie wyciekom nie jest obecnie wspierane, gdy włączona jest wieża " -"czyszcząca." +"Zapobieganie wyciekom ( ooze ) nie jest obecnie wspierane, gdy włączona jest " +"wieża czyszcząca." msgid "" "The prime tower is currently only supported for the Marlin, RepRap/Sprinter, " @@ -9593,7 +9605,7 @@ msgstr "" "password@your-octopi-address/" msgid "Device UI" -msgstr "Interfejs użytkownika urządzenia" +msgstr "UI urządzenia" msgid "" "Specify the URL of your device user interface if it's not same as print_host" @@ -9602,7 +9614,7 @@ msgstr "" "jak print_host" msgid "API Key / Password" -msgstr "Klucz API / Hasło" +msgstr "Klucz API / hasło" msgid "" "Orca Slicer can upload G-code files to a printer host. This field should " @@ -9648,7 +9660,7 @@ msgid "Names of presets related to the physical printer" msgstr "Nazwy profili odnoszących się do drukarki fizycznej" msgid "Authorization Type" -msgstr "Typ autoryzacji" +msgstr "Rodzaj autoryzacji" msgid "API key" msgstr "Klucz API" @@ -10386,14 +10398,13 @@ msgstr "" "\n" "Włączenie tej opcji spowoduje drukowanie wewnętrznej warstwy mostka nad " "nieco niewspieraną wewnętrzną strukturą wypełnienia. Poniższe opcje " -"kontrolują stopień filtrowania, czyli ilość tworzonych wewnętrznych " -"mostków.\n" +"kontrolują stopień filtrowania, czyli ilość tworzonych wewnętrznych mostów.\n" "\n" "Wyłączone - Wyłącza tę opcję. Jest to zachowanie domyślne i działa dobrze w " "większości przypadków.\n" "\n" "Ograniczone filtrowanie - Tworzy wewnętrzne mosty na mocno pochylonych " -"powierzchniach, unikając tworzenia niepotrzebnych wewnętrznych mostków. To " +"powierzchniach, unikając tworzenia niepotrzebnych wewnętrznych mostów. To " "działa dobrze dla większości trudnych modeli.\n" "\n" "Brak filtrowania - Tworzy wewnętrzne mosty na każdym potencjalnym " @@ -10811,8 +10822,138 @@ msgstr "" msgid "Pressure advance(Klipper) AKA Linear advance factor(Marlin)" msgstr "" -"Pressure advance (Klipper), znane również jako współczynnik przyspieszenia " -"liniowego (Marlin)." +"Pressure advance (Klipper), znane również jako Linear advance (Marlin)." + +msgid "Enable adaptive pressure advance (beta)" +msgstr "Włącz adaptacyjny wzrost ciśnienia (beta)" + +#, c-format, boost-format +msgid "" +"With increasing print speeds (and hence increasing volumetric flow through " +"the nozzle) and increasing accelerations, it has been observed that the " +"effective PA value typically decreases. This means that a single PA value is " +"not always 100% optimal for all features and a compromise value is usually " +"used that does not cause too much bulging on features with lower flow speed " +"and accelerations while also not causing gaps on faster features.\n" +"\n" +"This feature aims to address this limitation by modeling the response of " +"your printer's extrusion system depending on the volumetric flow speed and " +"acceleration it is printing at. Internally, it generates a fitted model that " +"can extrapolate the needed pressure advance for any given volumetric flow " +"speed and acceleration, which is then emmited to the printer depending on " +"the current print conditions.\n" +"\n" +"When enabled, the pressure advance value above is overriden. However, a " +"reasonable default value above is strongly recomended to act as a fallback " +"and for when tool changing.\n" +"\n" +msgstr "" +"Wraz ze wzrostem prędkości druku zaobserwowano, że efektywna wartość PA " +"zazwyczaj maleje. Oznacza to, że pojedyncza wartość PA nie jest w " +"100% optymalna dla wszystkich elementów i zwykle stosowana jest wartość " +"kompromisowa, która nie powoduje zbyt dużego \"wypuklenia\" na elementach " +"drukowanych wolniej, a jednocześnie nie powoduje przerw na elementach " +"drukowanych szybciej.\n" +"\n" +"Ta funkcja ma na celu rozwiązanie tego ograniczenia poprzez modelowanie " +"reakcji ekstrudera w zależności od prędkości drukowania. Wewnętrznie " +"generuje dopasowany model, który może przewidzieć jakie będzie wymagane " +"ciśnienie dla dowolnej prędkości drukowania, który jest następnie " +"przekazywany do drukarki w zależności od bieżącej prędkości druku.\n" +"\n" +"Po włączeniu powyższa wartość PA jest nadpisywana. Zdecydowanie zaleca się " +"jednak przyjęcie rozsądnej wartości domyślnej, która będzie działać jako " +"rozwiązanie awaryjne w przypadku nieprawidłowych obliczeń dla modelu.\n" + +msgid "Adaptive pressure advance measurements (beta)" +msgstr "Adaptacyjny pomiar ciśnienia (beta)" + +msgid "" +"Add sets of pressure advance (PA) values, the volumetric flow speeds and " +"accelerations they were measured at, separated by a comma. One set of values " +"per line. For example\n" +"0.04,3.96,3000\n" +"0.033,3.96,10000\n" +"0.029,7.91,3000\n" +"0.026,7.91,10000\n" +"\n" +"How to calibrate:\n" +"1. Run the pressure advance test for at least 3 speeds per acceleration " +"value. It is recommended that the test is run for at least the speed of the " +"external perimeters, the speed of the internal perimeters and the fastest " +"feature print speed in your profile (usually its the sparse or solid " +"infill). Then run them for the same speeds for the slowest and fastest print " +"accelerations,and no faster than the recommended maximum acceleration as " +"given by the klipper input shaper.\n" +"2. Take note of the optimal PA value for each volumetric flow speed and " +"acceleration. You can find the flow number by selecting flow from the color " +"scheme drop down and move the horizontal slider over the PA pattern lines. " +"The number should be visible at the bottom of the page. The ideal PA value " +"should be decreasing the higher the volumetric flow is. If it is not, " +"confirm that your extruder is functioning correctly.The slower and with less " +"acceleration you print, the larger the range of acceptable PA values. If no " +"difference is visible, use the PA value from the faster test.3. Enter the " +"triplets of PA values, Flow and Accelerations in the text box here and save " +"your filament profile\n" +"\n" +msgstr "" +"0.033.96.1000\n" +"0.029.7.91.300\n" +"0.026.7.91.1000\n" +"\n" +"Jak kalibrować:\n" +"1. Przeprowadzić test wyprzedzenia ciśnienia dla co najmniej 3 prędkości na " +"wartość przyspieszenia. Zaleca się przeprowadzenie testu co najmniej dla " +"prędkości obwodów zewnętrznych, prędkości obwodów wewnętrznych i najszybszej " +"prędkości drukowania elementów w profilu (zwykle jest to rzadkie lub pełne " +"wypełnienie). Następnie uruchom je z tymi samymi prędkościami, aby uzyskać " +"najwolniejsze i najszybsze przyspieszenia druku i nie szybciej niż zalecane " +"maksymalne przyspieszenie określone przez moduł kształtujący wejściowy " +"klipper.\n" +"2. Zwróć uwagę na optymalną wartość PA dla każdej wolumetrycznej prędkości " +"przepływu i przyspieszenia. Możesz znaleźć numer przepływu, wybierając " +"przepływ z rozwijanego schematu kolorów i przesuwając poziomy suwak nad " +"liniami wzoru PA. Numer powinien być widoczny na dole strony. Idealna " +"wartość PA powinna maleć, im większy jest przepływ objętościowy. Jeśli tak " +"nie jest, potwierdź, że ekstruder działa poprawnie. Im wolniej i z mniejszym " +"przyspieszeniu drukujesz, tym jest większy zakres dopuszczalnych wartości " +"PA. Jeśli różnica nie jest widoczna, należy użyć wartości PA z szybszego " +"testu.\n" +"3. Wprowadź trójki wartości PA, przepływu i przyspieszenia w polu tekstowym " +"tutaj i zapisz swój profil filamentu.\n" +"\n" + +msgid "Enable adaptive pressure advance for overhangs (beta)" +msgstr "Włącz adaptacyjny wzrost ciśnienia dla nawisów (beta)" + +msgid "" +"Enable adaptive PA for overhangs as well as when flow changes within the " +"same feature. This is an experimental option, as if the PA profile is not " +"set accurately, it will cause uniformity issues on the external surfaces " +"before and after overhangs.\n" +msgstr "" +"Włącz adaptacyjne PA zarówno dla nawisów, jak i gdy zmienia się przepływ w " +"obrębie tego samego elementu. Jest to opcja eksperymentalna, ponieważ jeśli " +"profil PA nie jest ustawiony dokładnie, spowoduje to problemy z " +"jednorodnością na zewnętrznych powierzchniach przed i po nawisach.\n" + +msgid "Pressure advance for bridges" +msgstr "Wzrost ciśnienia (PA) dla mostów" + +msgid "" +"Pressure advance value for bridges. Set to 0 to disable. \n" +"\n" +" A lower PA value when printing bridges helps reduce the appearance of " +"slight under extrusion immediately after bridges. This is caused by the " +"pressure drop in the nozzle when printing in the air and a lower PA helps " +"counteract this." +msgstr "" +"Wartość wzrostu ciśnienia dla mostów. Ustaw na 0, aby wyłączyć. \n" +"\n" +"Niższa wartość PA podczas drukowania mostów pomaga zredukować widoczność " +"lekkiego niedoboru materiału, który może wystąpić bezpośrednio po ich " +"wydruku. Jest to spowodowane spadkiem ciśnienia w dyszy podczas drukowania w " +"powietrzu, a niższy PA pomaga temu przeciwdziałać." msgid "" "Default line width if other line widths are set to 0. If expressed as a %, " @@ -11019,6 +11160,25 @@ msgstr "" "Filament jest chłodzony poprzez poruszanie go tam i z powrotem w ruchach " "chłodzących. Określ pożądaną liczbę tych ruchów." +msgid "Stamping loading speed" +msgstr "Prędkość kształtowania podczas ładowania" + +msgid "Speed used for stamping." +msgstr "Prędkość używana do kształtowania." + +msgid "Stamping distance measured from the center of the cooling tube" +msgstr "Odległość kształtowania mierzona od środka rurki chłodzącej" + +msgid "" +"If set to nonzero value, filament is moved toward the nozzle between the " +"individual cooling moves (\"stamping\"). This option configures how long " +"this movement should be before the filament is retracted again." +msgstr "" +"Jeśli ustawisz wartość inną niż zero, filament jest przesuwany w kierunku " +"dyszy pomiędzy poszczególnymi ruchami chłodzenia (kształtowanie lub " +"stamping). Ta opcja konfiguruje czas trwania tego ruchu przed ponowną " +"retrakcją filamentu." + msgid "Speed of the first cooling move" msgstr "Prędkość pierwszego ruchu chłodzącego" @@ -11077,7 +11237,7 @@ msgstr "" "kodu T). Ten czas jest dodawany do szacowanego czasu druku." msgid "Enable ramming for multitool setups" -msgstr "Włącz wbijanie dla konfiguracji wielonarzędziowych" +msgstr "Włącz wyciskanie przy multi-tool" msgid "" "Perform ramming when using multitool printer (i.e. when the 'Single Extruder " @@ -11092,13 +11252,13 @@ msgstr "" "używana tylko wtedy, gdy wieża czyszcząca jest włączona." msgid "Multitool ramming volume" -msgstr "Objętość ramingu wieloinstrumentowego" +msgstr "Objętość wyciskania multi-tool" msgid "The volume to be rammed before the toolchange." msgstr "Objętość do wyciśnięcia przed zmianą narzędzia." msgid "Multitool ramming flow" -msgstr "Przepływ ramingu wieloinstrumentowego" +msgstr "Przepływ wyciskania multi-tool" msgid "Flow used for ramming the filament before the toolchange." msgstr "Przepływ używany do ramingu filamentu przed zmianą narzędzia." @@ -11195,8 +11355,9 @@ msgid "" "Density of internal sparse infill, 100% turns all sparse infill into solid " "infill and internal solid infill pattern will be used" msgstr "" -"Gęstość wewnętrznego wypełnienia, 100% przekształca całe rzadkie wypełnienie " -"w wypełnienie pełne, a użyty zostanie wzór wewnętrznego pełnego wypełnienia" +"Gęstość wewnętrznego rzadkiego wypełnienia, 100% przekształca całe rzadkie " +"wypełnienie w wypełnienie pełne, a użyty zostanie wzór wewnętrznego pełnego " +"wypełnienia" msgid "Sparse infill pattern" msgstr "Wzór wypełnienia" @@ -11760,8 +11921,8 @@ msgid "" msgstr "" "Włącz to, aby dodać komentarze do pliku G-Code, oznaczające ruchy druku, do " "jakiego obiektu należą. Jest to przydatne dla wtyczki Octoprint " -"CancelObject. Te ustawienia NIE są kompatybilne z konfiguracją Single " -"Extruder Multi Material i opcją Wipe into Object / Wipe into Infill." +"CancelObject. Te ustawienia NIE są kompatybilne z konfiguracją Pojedynczy " +"ekstruder Wielomateriałowy i opcją Wipe into Object / Wipe into Infill." msgid "Exclude objects" msgstr "Wyłącz obiekty" @@ -11793,7 +11954,8 @@ msgstr "" "warstwy." msgid "Filament to print internal sparse infill." -msgstr "Filament do druku wewnętrznego wypełnienia." +msgstr "" +"Ten filament będzie używany do druku rzadkiego wewnętrznego wypełnienia." msgid "" "Line width of internal sparse infill. If expressed as a %, it will be " @@ -11851,19 +12013,24 @@ msgstr "" "strukturze lub rozpuszczalnym materiale do drukowania podpór" msgid "Maximum width of a segmented region" -msgstr "Maksymalna szerokość segmentowanej strefy" +msgstr "Maksymalna szerokość segmentu" msgid "Maximum width of a segmented region. Zero disables this feature." -msgstr "" -"Maksymalna szerokość segmentowanej strefy. Wartość zero wyłącza tę funkcję." +msgstr "Maksymalna szerokość segmentu. Wartość zero wyłącza tę funkcję." msgid "Interlocking depth of a segmented region" msgstr "Głębokość zazębiania się podzielonego na segmenty obszaru" -msgid "Interlocking depth of a segmented region. Zero disables this feature." +msgid "" +"Interlocking depth of a segmented region. It will be ignored if " +"\"mmu_segmented_region_max_width\" is zero or if " +"\"mmu_segmented_region_interlocking_depth\"is bigger then " +"\"mmu_segmented_region_max_width\". Zero disables this feature." msgstr "" -"Głębokość zazębiania się podzielonego na segmenty regionu. Wartość zero " -"wyłącza tę funkcję." +"Głębokość zazębiania się podzielonego na segmenty obszaru. Zostanie ona " +"zignorowana, jeśli \"mmu_segmented_region_max_width\" wynosi zero lub jeśli " +"\"mmu_segmented_region_interlocking_depth\" jest większa niż " +"\"mmu_segmented_region_max_width\". Wartość zero wyłącza tę funkcję." msgid "Use beam interlocking" msgstr "Użyj struktury zazębiającej" @@ -12291,9 +12458,6 @@ msgstr "" "czas warstwy powyżej, gdy włączona jest opcja zwalniania dla lepszego " "schładzania warstwy." -msgid "Nozzle diameter" -msgstr "Średnica dyszy" - msgid "Diameter of nozzle" msgstr "Średnica dyszy" @@ -12307,7 +12471,7 @@ msgstr "" "Tutaj możesz umieścić notatki, które zostaną dodane do nagłówka pliku G-code." msgid "Host Type" -msgstr "Typ hosta" +msgstr "Rodzaj serwera" msgid "" "Orca Slicer can upload G-code files to a printer host. This field must " @@ -12337,7 +12501,7 @@ msgstr "" "wewnątrz." msgid "High extruder current on filament swap" -msgstr "Wysoki prąd extrudera przy wymianie filamentu" +msgstr "Wyższy prąd extrudera przy zmianie filamentu" msgid "" "It may be beneficial to increase the extruder motor current during the " @@ -12391,6 +12555,13 @@ msgstr "" "liczbę retrakcji dla skomplikowanego modelu i zaoszczędzić czas druku, ale " "spowolnić krojenie i generowanie G-code" +msgid "" +"This option will drop the temperature of the inactive extruders to prevent " +"oozing." +msgstr "" +"Opcja ta obniży temperaturę nieaktywnych ekstruderów, aby zapobiec " +"wyciekaniu filamentu." + msgid "Filename format" msgstr "Format nazwy pliku" @@ -12444,6 +12615,9 @@ msgstr "" "Określ procentowy udział nawisów w stosunku do szerokości ekstruzji i użyj " "różnych prędkości do druku. Dla 100%% nawisów, zostanie użyta prędkość mostu." +msgid "Filament to print walls" +msgstr "Ten filament będzie używany do drukowania ścian" + msgid "" "Line width of inner wall. If expressed as a %, it will be computed over the " "nozzle diameter." @@ -12494,12 +12668,21 @@ msgstr "" "code jako pierwszy argument, a także będą mogły uzyskać dostęp do ustawień " "konfiguracyjnych Orca Slicer, zytając zmienne środowiskowe." +msgid "Printer type" +msgstr "Typ drukarki" + +msgid "Type of the printer" +msgstr "Rodzaj drukarki" + msgid "Printer notes" msgstr "Notatki o drukarce" msgid "You can put your notes regarding the printer here." msgstr "Tutaj możesz umieścić notatki dotyczące drukarki." +msgid "Printer variant" +msgstr "Wariant drukarki" + msgid "Raft contact Z distance" msgstr "Odległość Z kontaktu z tratwą" @@ -12703,7 +12886,7 @@ msgid "Top and Bottom" msgstr "Na górnych i dolnych" msgid "Extra length on restart" -msgstr "Dodatkowa długość przed wznowieniem" +msgstr "Dodatkowa ilość dla powrotu" msgid "" "When the retraction is compensated after the travel move, the extruder will " @@ -13081,6 +13264,12 @@ msgstr "" "Obszar wypełnienia, który jest mniejszy od wartości progowej zostaje " "zastąpiony wewnętrznym, pełnym wypełnieniem" +msgid "Solid infill" +msgstr "Pełne wypełnienie" + +msgid "Filament to print solid infill" +msgstr "Ten filament będzie używany do drukowania pełnego wypełnienia" + msgid "" "Line width of internal solid infill. If expressed as a %, it will be " "computed over the nozzle diameter." @@ -13147,7 +13336,43 @@ msgid "Traditional" msgstr "Tradycyjny" msgid "Temperature variation" -msgstr "Wariacje temperatury" +msgstr "Zmiana temperatury" + +#. TRN PrintSettings : "Ooze prevention" > "Temperature variation" +msgid "" +"Temperature difference to be applied when an extruder is not active. The " +"value is not used when 'idle_temperature' in filament settings is set to non " +"zero value." +msgstr "" +"Różnica temperatur, która ma być zastosowana, gdy ekstruder nie jest " +"aktywny. Wartość nie będzie użyta, gdy \"temperatura w bezczynności\" w " +"ustawieniach filamentu jest wartość inną niż zero." + +msgid "Preheat time" +msgstr "Czas wstępnego podgrzewania" + +msgid "" +"To reduce the waiting time after tool change, Orca can preheat the next tool " +"while the current tool is still in use. This setting specifies the time in " +"seconds to preheat the next tool. Orca will insert a M104 command to preheat " +"the tool in advance." +msgstr "" +"Aby skrócić czas oczekiwania po zmianie narzędzia, Orca może wstępnie " +"podgrzać następne narzędzie, gdy bieżące narzędzie jest nadal używane. To " +"ustawienie określa czas w sekundach do wstępnego podgrzania następnego " +"narzędzia. Orca wstawi polecenie M104, aby podgrzać narzędzie z " +"wyprzedzeniem." + +msgid "Preheat steps" +msgstr "Kroki wstępnego podgrzewania" + +msgid "" +"Insert multiple preheat commands(e.g. M104.1). Only useful for Prusa XL. For " +"other printers, please set it to 1." +msgstr "" +"Wprowadź wiele poleceń dotyczących podgrzewania (np. M104.1). Funkcja ta " +"działa tylko w drukarce Prusa XL. Dla pozostałych drukarek ustaw wartość na " +"1." msgid "Start G-code" msgstr "Początkowy G-code" @@ -13190,7 +13415,7 @@ msgid "Enable filament ramming" msgstr "Włącz szybką ekstruzję filamentu" msgid "No sparse layers (beta)" -msgstr "Brak warstw bez czyszczenia (beta)" +msgstr "Warstwy bez czyszczenia (beta)" msgid "" "If enabled, the wipe tower will not be printed on layers with no " @@ -13205,7 +13430,7 @@ msgstr "" "wydrukiem." msgid "Prime all printing extruders" -msgstr "Przygotuj wszystkie extrudery do drukowania" +msgstr "Wyczyść wszystkie używane ekstrudery" msgid "" "If enabled, all printing extruders will be primed at the front edge of the " @@ -13824,12 +14049,6 @@ msgstr "" "Kąt w wierzchołku stożka, który jest używany do stabilizacji wieży " "czyszczącej. Większy kąt oznacza szerszą podstawę." -msgid "Wipe tower purge lines spacing" -msgstr "Odległość między liniami na wieży oczyszczającej" - -msgid "Spacing of purge lines on the wipe tower." -msgstr "Rozmieszczenie linii czyszczenia na wieży czyszczącej." - msgid "Maximum wipe tower print speed" msgstr "Maksymalna prędkość drukowania wieży czyszczącej" @@ -13872,16 +14091,13 @@ msgstr "" "W przypadku zewnętrznych obwodów wieży czyszczącej prędkość jej obwodu " "wewnętrznego jest niezależna od tego ustawienia." -msgid "Wipe tower extruder" -msgstr "Ekstruder dla wieży czyszczącej" - msgid "" "The extruder to use when printing perimeter of the wipe tower. Set to 0 to " "use the one that is available (non-soluble would be preferred)." msgstr "" -"Extruder używany do drukowania obrysów wieży czyszczącej. Ustaw na 0, aby " -"użyć tego, który jest dostępny (preferowany jest ten, w którym załadowany " -"jest filament nierozpuszczalny)." +"Extruder używany do drukowania obrysów wieży czyszczącej. Ustaw na " +"\"Domyślny\", aby użyć tego, który jest dostępny (preferowany jest ten, w " +"którym załadowany jest filament nierozpuszczalny)." msgid "Purging volumes - load/unload volumes" msgstr "Objętości czyszczenia - objętości ładowania/rozładowania" @@ -13926,12 +14142,43 @@ msgstr "" "kolory filamentów mogą się wymieszać." msgid "Maximal bridging distance" -msgstr "Maksymalna odległość mostkowania" +msgstr "Maksymalna odległość mostów" msgid "Maximal distance between supports on sparse infill sections." msgstr "" "Maksymalna odległość między podporami na rzadkich sekcjach wypełnienia." +msgid "Wipe tower purge lines spacing" +msgstr "Odległość między liniami na wieży oczyszczającej" + +msgid "Spacing of purge lines on the wipe tower." +msgstr "Rozmieszczenie linii czyszczenia na wieży czyszczącej." + +msgid "Extra flow for purging" +msgstr "Dodatkowy przepływ podczas czyszczenia" + +msgid "" +"Extra flow used for the purging lines on the wipe tower. This makes the " +"purging lines thicker or narrower than they normally would be. The spacing " +"is adjusted automatically." +msgstr "" +"Dodatkowy przepływ stosowany w ekstruzjach na wieży czyszczącej. Powoduje " +"to, że linie czyszczące są grubsze lub cieńsze niż standardowo. Odstępy " +"regulowane są automatycznie." + +msgid "Idle temperature" +msgstr "Temperatura w bezczynności" + +msgid "" +"Nozzle temperature when the tool is currently not used in multi-tool setups." +"This is only used when 'Ooze prevention' is active in Print Settings. Set to " +"0 to disable." +msgstr "" +"Temperatura dyszy, gdy narzędzie nie jest aktualnie używane w konfiguracjach " +"wielonarzędziowych. Jest to używane tylko wtedy, gdy \"Zapobieganie " +"wyciekaniu\" jest aktywne w ustawieniach druku. Wartość zero wyłącza tę " +"funkcję." + msgid "X-Y hole compensation" msgstr "Kompensacja otworów X-Y" @@ -14282,6 +14529,16 @@ msgid "Currently planned extra extruder priming after deretraction." msgstr "" "Obecnie planowane dodatkowe czyszczenie ekstrudera po powrocie z retrakcji." +msgid "Absolute E position" +msgstr "Pozycja bezwzględna E" + +msgid "" +"Current position of the extruder axis. Only used with absolute extruder " +"addressing." +msgstr "" +"Bieżąca pozycja osi ekstrudera. Używany tylko z bezwzględnym adresowaniem " +"ekstrudera." + msgid "Current extruder" msgstr "Aktualny extruder" @@ -14331,6 +14588,14 @@ msgid "Vector of bools stating whether a given extruder is used in the print." msgstr "" "Wektory logiczne określające, czy dany ekstruder jest używany w wydruku" +msgid "Has single extruder MM priming" +msgstr "Umożliwia drukowanie MM z jednym ekstruderem" + +msgid "Are the extra multi-material priming regions used in this print?" +msgstr "" +"Czy w tym wydruku używane są dodatkowe obszary czyszczenia " +"wielomateriałowego?" + msgid "Volume per extruder" msgstr "Objętość na extruder" @@ -14493,6 +14758,16 @@ msgstr "Fizyczna nazwa drukarki" msgid "Name of the physical printer used for slicing." msgstr "Nazwa fizycznej drukarki używanej do przygotowywania pliku do druku." +msgid "Number of extruders" +msgstr "Liczba ekstruderów" + +msgid "" +"Total number of extruders, regardless of whether they are used in the " +"current print." +msgstr "" +"Całkowita liczba ekstruderów, niezależnie od tego, czy są one używane w " +"bieżącym wydruku." + msgid "Layer number" msgstr "Numer warstwy" @@ -16941,6 +17216,62 @@ msgstr "" "takimi jak ABS, odpowiednie zwiększenie temperatury podgrzewanej płyty może " "zmniejszyć prawdopodobieństwo odkształceń." +#~ msgid "up to" +#~ msgstr "do" + +#~ msgid "above" +#~ msgstr "powyżej" + +#~ msgid "from" +#~ msgstr "od" + +#~ msgid "Switching application language while some presets are modified." +#~ msgstr "" +#~ "Zmiana języka aplikacji przy jednoczesnym istniejących zmodyfikowanych " +#~ "ustawieniach." + +#~ msgid "⌘+Shift+G" +#~ msgstr "⌘+Shift+G" + +#~ msgid "Ctrl+Shift+G" +#~ msgstr "Ctrl+Shift+G" + +#~ msgid "⌥+Left mouse button" +#~ msgstr "⌥+Lewy przycisk myszy" + +#~ msgid "⌘+Left mouse button" +#~ msgstr "⌘+Lewy przycisk myszy" + +#~ msgid "Ctrl+Any arrow" +#~ msgstr "Ctrl+Dowolna strzałka" + +#~ msgid "Alt+Left mouse button" +#~ msgstr "Alt+Lewy przycisk myszy" + +#~ msgid "Ctrl+Left mouse button" +#~ msgstr "Ctrl+Lewy przycisk myszy" + +#~ msgid "⌘+Mouse wheel" +#~ msgstr "⌘+Kółko myszy" + +#~ msgid "⌥+Mouse wheel" +#~ msgstr "⌥+Kółko myszy" + +#~ msgid "Ctrl+Mouse wheel" +#~ msgstr "Ctrl+Kółko myszy" + +#~ msgid "Alt+Mouse wheel" +#~ msgstr "Alt+Kółko myszy" + +#~ msgid "" +#~ "Interlocking depth of a segmented region. Zero disables this feature." +#~ msgstr "" +#~ "Głębokość zazębiania się podzielonego na segmenty regionu. Wartość zero " +#~ "wyłącza tę funkcję." + +#~ msgid "Wipe tower extruder" +#~ msgstr "Ekstruder dla wieży czyszczącej" + #~ msgid "Current association: " #~ msgstr "Aktualnie powiązano: " @@ -16984,83 +17315,6 @@ msgstr "" #~ "Rozmiar pliku przekracza limit przesyłania 100 MB. Proszę przesłać plik " #~ "za pomocą panelu." -#~ msgid "Enable adaptive pressure advance (beta)" -#~ msgstr "Włącz adaptacyjny wzrost ciśnienia (beta)" - -#~ msgid "" -#~ "With increasing print speeds, it has been observed that the effective PA " -#~ "value typically decreases. This means that a single PA value is not 100% " -#~ "optimal for all features and a compromise value is usually used, that " -#~ "does not cause too much bulging on slower features while also not causing " -#~ "gaps on faster features.\n" -#~ "\n" -#~ "This feature aims to address this limitation by modeling the response of " -#~ "your printer's extrusion system depending on the speed it is printing at. " -#~ "Internally it generates a fitted model that can extrapolate the needed " -#~ "pressure advance for any given print speed, which is then emmited to the " -#~ "printer depending on the current print speed.\n" -#~ "\n" -#~ "When enabled the pressure advance value above is overriden. However, a " -#~ "reasonable default value above isstrongly recomended to act as a fallback " -#~ "in case the model calculations fail." -#~ msgstr "" -#~ "Wraz ze wzrostem prędkości druku zaobserwowano, że efektywna wartość PA " -#~ "zazwyczaj maleje. Oznacza to, że pojedyncza wartość PA nie jest w 100% " -#~ "optymalna dla wszystkich elementów i zwykle stosowana jest wartość " -#~ "kompromisowa, która nie powoduje zbyt dużego \"wypuklenia\" na elementach " -#~ "drukowanych wolniej, a jednocześnie nie powoduje przerw na elementach " -#~ "drukowanych szybciej.\n" -#~ "\n" -#~ "Ta funkcja ma na celu rozwiązanie tego ograniczenia poprzez modelowanie " -#~ "reakcji ekstrudera w zależności od prędkości drukowania. Wewnętrznie " -#~ "generuje dopasowany model, który może przewidzieć jakie będzie wymagane " -#~ "ciśnienie dla dowolnej prędkości drukowania, który jest następnie " -#~ "przekazywany do drukarki w zależności od bieżącej prędkości druku.\n" -#~ "\n" -#~ "Po włączeniu powyższa wartość PA jest nadpisywana. Zdecydowanie zaleca " -#~ "się jednak przyjęcie rozsądnej wartości domyślnej, która będzie działać " -#~ "jako rozwiązanie awaryjne w przypadku nieprawidłowych obliczeń dla modelu." - -#~ msgid "Adaptive pressure advance measurements (beta)" -#~ msgstr "Adaptacyjny pomiar ciśnienia (beta)" - -#~ msgid "" -#~ "Add pairs of pressure advance values and the speed they were measured at, " -#~ "separated by a coma. One set of values per line. For example\n" -#~ "0.03,100\n" -#~ "0.027,150 etc.\n" -#~ "\n" -#~ "How to calibrate:\n" -#~ "1. Run the pressure advance test for at least 3 speeds per filament. It " -#~ "is recommended that the test is runfor at least the speed of the external " -#~ "perimeters, the speed of the internal perimeters and the fastest feature " -#~ "print speed in your profile (usually its the sparse or solid infill\n" -#~ "2. Take note of the optimal Pressure advance value for each speed. The PA " -#~ "ideal PA value should be decreasing the faster the speed is. If it is " -#~ "not, confirm that your extruder is functioning correctly3. Enter the " -#~ "pairs of PA values and Speeds in the text box here and save your filament " -#~ "profile" -#~ msgstr "" -#~ "Dodaj pary wartości przyspieszenia ciśnienia i prędkości, przy których " -#~ "zostały zmierzone, oddzielone przecinkiem. Jeden zestaw wartości na " -#~ "wiersz. Na przykład\n" -#~ "0.03,100\n" -#~ "0.027,150 itd.\n" -#~ "\n" -#~ "Jak skalibrować:\n" -#~ "1. Przeprowadź test PA dla co najmniej 3 prędkości na filament. Zaleca " -#~ "się przeprowadzenie testu PA co najmniej dla zewnętrznych obwodów, " -#~ "wewnętrznych obwodów i najszybszej prędkości drukowania cechy w profilu " -#~ "(zwykle jest to rzadkie lub pełne wypełnienie).\n" -#~ "2. Zanotuj optymalną wartość PA dla każdej prędkości. Idealna wartość PA " -#~ "powinna maleć wraz ze wzrostem prędkości. Jeśli tak nie jest, sprawdź, " -#~ "czy ekstruder działa prawidłowo. \n" -#~ "3.Wprowadź pary wartości PA i prędkości w polu tekstowym i zapisz profil " -#~ "filamentu." - -#~ msgid "Flow ratio and Pressure Advance" -#~ msgstr "Współczynnik przepływu i Wzrost ciśnienia (PA)" - #~ msgid "param_information" #~ msgstr "param_information" diff --git a/localization/i18n/pt_BR/OrcaSlicer_pt_BR.po b/localization/i18n/pt_BR/OrcaSlicer_pt_BR.po index b8882427857..42ecd5c7802 100644 --- a/localization/i18n/pt_BR/OrcaSlicer_pt_BR.po +++ b/localization/i18n/pt_BR/OrcaSlicer_pt_BR.po @@ -2,7 +2,7 @@ msgid "" msgstr "" "Report-Msgid-Bugs-To: \n" -"POT-Creation-Date: 2024-06-30 15:44+0200\n" +"POT-Creation-Date: 2024-08-03 18:54+0200\n" "PO-Revision-Date: 2024-06-01 21:51-0300\n" "Last-Translator: \n" "Language-Team: Portuguese, Brazilian\n" @@ -80,9 +80,6 @@ msgstr "" msgid "On overhangs only" msgstr "Apenas em 'overhangs'" -msgid "Auto support threshold angle: " -msgstr "Ângulo max. do suporte automático: " - msgid "Circle" msgstr "Círculo" @@ -102,6 +99,9 @@ msgstr "Permite pintura apenas em facetas selecionadas por: \"%1%\"" msgid "Highlight faces according to overhang angle." msgstr "Realçar faces conforme a inclinação." +msgid "Auto support threshold angle: " +msgstr "Ângulo max. do suporte automático: " + msgid "No auto support" msgstr "Sem suporte automático" @@ -4163,15 +4163,6 @@ msgstr "Tempo total" msgid "Total cost" msgstr "Custo total" -msgid "up to" -msgstr "até" - -msgid "above" -msgstr "acima" - -msgid "from" -msgstr "de" - msgid "Color Scheme" msgstr "Esquema de Cores" @@ -4235,12 +4226,12 @@ msgstr "Quantidade de trocas de filamento" msgid "Cost" msgstr "Custo" -msgid "Color change" -msgstr "Mudança de Cor" - msgid "Print" msgstr "Imprimir" +msgid "Color change" +msgstr "Mudança de Cor" + msgid "Printer" msgstr "Impressora" @@ -6166,6 +6157,14 @@ msgstr "Objeto com múltiplas peças foi detectado" msgid "The file does not contain any geometry data." msgstr "O arquivo não contém dados de geometria." +msgid "" +"Your object appears to be too large. It will be scaled down to fit the heat " +"bed automatically." +msgstr "" + +msgid "Object too large" +msgstr "Objeto muito grande" + msgid "" "Your object appears to be too large, Do you want to scale it down to fit the " "heat bed automatically?" @@ -6173,9 +6172,6 @@ msgstr "" "Seu objeto parece ser muito grande. Deseja dimensioná-lo para caber na mesa " "de aquecimento automaticamente?" -msgid "Object too large" -msgstr "Objeto muito grande" - msgid "Export STL file:" msgstr "Exportar arquivo STL:" @@ -6554,10 +6550,6 @@ msgstr "Você deseja continuar?" msgid "Language selection" msgstr "Seleção de Idioma" -msgid "Switching application language while some presets are modified." -msgstr "" -"A mudança do idioma do aplicativo enquanto alguns presets estão modificados." - msgid "Changing application language" msgstr "Alterando o idioma do aplicativo" @@ -6751,6 +6743,12 @@ msgstr "" "Com esta opção habilitada, você pode enviar uma tarefa para vários " "dispositivos ao mesmo tempo e gerenciar vários dispositivos." +msgid "Auto arrange plate after cloning" +msgstr "" + +msgid "Auto arrange plate after object cloning" +msgstr "" + msgid "Network" msgstr "Rede" @@ -7760,12 +7758,21 @@ msgstr "Filamento de suporte" msgid "Tree supports" msgstr "Suportes de árvore" -msgid "Skirt" -msgstr "Saia" +msgid "Multimaterial" +msgstr "Multimaterial" msgid "Prime tower" msgstr "Torre Prime" +msgid "Filament for Features" +msgstr "" + +msgid "Ooze prevention" +msgstr "" + +msgid "Skirt" +msgstr "Saia" + msgid "Special mode" msgstr "Modo especial" @@ -7818,6 +7825,9 @@ msgid "Recommended nozzle temperature range of this filament. 0 means no set" msgstr "" "Faixa de temperatura recomendada para esta boquilha. 0 significa não definido" +msgid "Flow ratio and Pressure Advance" +msgstr "" + msgid "Print chamber temperature" msgstr "Temperatura da câmara de impressão" @@ -7927,9 +7937,6 @@ msgstr "G-code de início do filamento" msgid "Filament end G-code" msgstr "G-code final do filamento" -msgid "Multimaterial" -msgstr "Multimaterial" - msgid "Wipe tower parameters" msgstr "Parâmetros da Torre Prime" @@ -8021,12 +8028,30 @@ msgstr "Limitação de Jerk" msgid "Single extruder multimaterial setup" msgstr "Configuração de múltiplos materiais com um único extrusor" +msgid "Number of extruders of the printer." +msgstr "" + +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 "" + +msgid "Nozzle diameter" +msgstr "Diâmetro do bico" + msgid "Wipe tower" msgstr "Torre Prime" msgid "Single extruder multimaterial parameters" msgstr "Parâmetros de múltiplos materiais com um único extrusor" +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 "" + msgid "Layer height limits" msgstr "Limites de altura da camada" @@ -8521,11 +8546,8 @@ msgstr "Lista de objetos" msgid "Import geometry data from STL/STEP/3MF/OBJ/AMF files" msgstr "Importar dados de geometria de arquivos STL/STEP/3MF/OBJ/AMF" -msgid "⌘+Shift+G" -msgstr "⌘+Shift+G" - -msgid "Ctrl+Shift+G" -msgstr "Ctrl+Shift+G" +msgid "Shift+G" +msgstr "" msgid "Paste from clipboard" msgstr "Colar da área de transferência" @@ -8575,33 +8597,18 @@ msgstr "Shift+Tab" msgid "Collapse/Expand the sidebar" msgstr "Recolher/Expandir a barra lateral" -msgid "⌘+Any arrow" -msgstr "⌘+Qualquer seta" +msgid "Any arrow" +msgstr "" msgid "Movement in camera space" msgstr "Movimento no espaço da câmera" -msgid "⌥+Left mouse button" -msgstr "Botão esquerdo do mouse ⌥+" - msgid "Select a part" msgstr "Selecionar uma peça" -msgid "⌘+Left mouse button" -msgstr "Botão esquerdo do mouse ⌘+" - msgid "Select multiple objects" msgstr "Selecionar vários objetos" -msgid "Ctrl+Any arrow" -msgstr "Ctrl+Qualquer seta" - -msgid "Alt+Left mouse button" -msgstr "Botão esquerdo do mouse Alt+" - -msgid "Ctrl+Left mouse button" -msgstr "Botão esquerdo do mouse Ctrl+" - msgid "Shift+Left mouse button" msgstr "Botão esquerdo do mouse Shift+" @@ -8704,24 +8711,12 @@ msgstr "Mesa" msgid "Move: press to snap by 1mm" msgstr "Mover: pressione para ajustar em 1mm" -msgid "⌘+Mouse wheel" -msgstr "⌘+Roda do mouse" - msgid "Support/Color Painting: adjust pen radius" msgstr "Suporte/Pintura em cores: ajustar o raio da caneta" -msgid "⌥+Mouse wheel" -msgstr "⌥+Roda do mouse" - msgid "Support/Color Painting: adjust section position" msgstr "Suporte/Pintura em cores: ajustar a posição da seção" -msgid "Ctrl+Mouse wheel" -msgstr "Ctrl+Roda do mouse" - -msgid "Alt+Mouse wheel" -msgstr "Alt+Roda do mouse" - msgid "Gizmo" msgstr "Gizmo" @@ -9033,6 +9028,11 @@ msgstr "" msgid "No object can be printed. Maybe too small" msgstr "Nenhum objeto pode ser impresso. Talvez seja muito pequeno" +msgid "" +"Your print is very close to the priming regions. Make sure there is no " +"collision." +msgstr "" + msgid "" "Failed to generate gcode for invalid custom G-code.\n" "\n" @@ -9277,11 +9277,10 @@ msgid "Variable layer height is not supported with Organic supports." msgstr "A altura de camada variável não é suportada com suportes orgânicos." msgid "" -"Different nozzle diameters and different filament diameters is not allowed " -"when prime tower is enabled." +"Different nozzle diameters and different filament diameters may not work " +"well when the prime tower is enabled. It's very experimental, so please " +"proceed with caution." msgstr "" -"Diâmetros de bico diferentes e diâmetros de filamento diferentes não são " -"permitidos quando a Torre Prime está ativa." msgid "" "The Wipe Tower is currently only supported with the relative extruder " @@ -9291,9 +9290,9 @@ msgstr "" "extrusora (use_relative_e_distances=1)." msgid "" -"Ooze prevention is currently not supported with the prime tower enabled." +"Ooze prevention is only supported with the wipe tower when " +"'single_extruder_multi_material' is off." msgstr "" -"A prevenção de vazamento atualmente não é suportada com a Torre Prime ativa." msgid "" "The prime tower is currently only supported for the Marlin, RepRap/Sprinter, " @@ -10779,6 +10778,86 @@ msgid "Pressure advance(Klipper) AKA Linear advance factor(Marlin)" msgstr "" "Pressure advance(Klipper) também conhecido como Linear advance factor(Marlin)" +msgid "Enable adaptive pressure advance (beta)" +msgstr "" + +#, c-format, boost-format +msgid "" +"With increasing print speeds (and hence increasing volumetric flow through " +"the nozzle) and increasing accelerations, it has been observed that the " +"effective PA value typically decreases. This means that a single PA value is " +"not always 100% optimal for all features and a compromise value is usually " +"used that does not cause too much bulging on features with lower flow speed " +"and accelerations while also not causing gaps on faster features.\n" +"\n" +"This feature aims to address this limitation by modeling the response of " +"your printer's extrusion system depending on the volumetric flow speed and " +"acceleration it is printing at. Internally, it generates a fitted model that " +"can extrapolate the needed pressure advance for any given volumetric flow " +"speed and acceleration, which is then emmited to the printer depending on " +"the current print conditions.\n" +"\n" +"When enabled, the pressure advance value above is overriden. However, a " +"reasonable default value above is strongly recomended to act as a fallback " +"and for when tool changing.\n" +"\n" +msgstr "" + +msgid "Adaptive pressure advance measurements (beta)" +msgstr "" + +msgid "" +"Add sets of pressure advance (PA) values, the volumetric flow speeds and " +"accelerations they were measured at, separated by a comma. One set of values " +"per line. For example\n" +"0.04,3.96,3000\n" +"0.033,3.96,10000\n" +"0.029,7.91,3000\n" +"0.026,7.91,10000\n" +"\n" +"How to calibrate:\n" +"1. Run the pressure advance test for at least 3 speeds per acceleration " +"value. It is recommended that the test is run for at least the speed of the " +"external perimeters, the speed of the internal perimeters and the fastest " +"feature print speed in your profile (usually its the sparse or solid " +"infill). Then run them for the same speeds for the slowest and fastest print " +"accelerations,and no faster than the recommended maximum acceleration as " +"given by the klipper input shaper.\n" +"2. Take note of the optimal PA value for each volumetric flow speed and " +"acceleration. You can find the flow number by selecting flow from the color " +"scheme drop down and move the horizontal slider over the PA pattern lines. " +"The number should be visible at the bottom of the page. The ideal PA value " +"should be decreasing the higher the volumetric flow is. If it is not, " +"confirm that your extruder is functioning correctly.The slower and with less " +"acceleration you print, the larger the range of acceptable PA values. If no " +"difference is visible, use the PA value from the faster test.3. Enter the " +"triplets of PA values, Flow and Accelerations in the text box here and save " +"your filament profile\n" +"\n" +msgstr "" + +msgid "Enable adaptive pressure advance for overhangs (beta)" +msgstr "" + +msgid "" +"Enable adaptive PA for overhangs as well as when flow changes within the " +"same feature. This is an experimental option, as if the PA profile is not " +"set accurately, it will cause uniformity issues on the external surfaces " +"before and after overhangs.\n" +msgstr "" + +msgid "Pressure advance for bridges" +msgstr "" + +msgid "" +"Pressure advance value for bridges. Set to 0 to disable. \n" +"\n" +" A lower PA value when printing bridges helps reduce the appearance of " +"slight under extrusion immediately after bridges. This is caused by the " +"pressure drop in the nozzle when printing in the air and a lower PA helps " +"counteract this." +msgstr "" + msgid "" "Default line width if other line widths are set to 0. If expressed as a %, " "it will be computed over the nozzle diameter." @@ -10968,6 +11047,21 @@ msgstr "" "O filamento é resfriado movendo-se para frente e para trás nos tubos de " "resfriamento. Especifique o número desejado desses movimentos." +msgid "Stamping loading speed" +msgstr "" + +msgid "Speed used for stamping." +msgstr "" + +msgid "Stamping distance measured from the center of the cooling tube" +msgstr "" + +msgid "" +"If set to nonzero value, filament is moved toward the nozzle between the " +"individual cooling moves (\"stamping\"). This option configures how long " +"this movement should be before the filament is retracted again." +msgstr "" + msgid "Speed of the first cooling move" msgstr "Velocidade do primeiro movimento de resfriamento" @@ -11819,10 +11913,12 @@ msgstr "" msgid "Interlocking depth of a segmented region" msgstr "Profundidade de entrelaçamento de uma região segmentada" -msgid "Interlocking depth of a segmented region. Zero disables this feature." +msgid "" +"Interlocking depth of a segmented region. It will be ignored if " +"\"mmu_segmented_region_max_width\" is zero or if " +"\"mmu_segmented_region_interlocking_depth\"is bigger then " +"\"mmu_segmented_region_max_width\". Zero disables this feature." msgstr "" -"Profundidade de entrelaçamento de uma região segmentada. Zero desativa essa " -"funcionalidade." msgid "Use beam interlocking" msgstr "" @@ -12234,9 +12330,6 @@ msgstr "" "velocidade para tentar manter o tempo mínimo de camada acima, quando a " "desaceleração para um melhor resfriamento da camada estiver habilitada." -msgid "Nozzle diameter" -msgstr "Diâmetro do bico" - msgid "Diameter of nozzle" msgstr "Diâmetro do bico" @@ -12339,6 +12432,11 @@ msgstr "" "número de retratações para modelos complexos e economizar tempo de " "impressão, mas torna a geração de fatiamento e G-code mais lenta" +msgid "" +"This option will drop the temperature of the inactive extruders to prevent " +"oozing." +msgstr "" + msgid "Filename format" msgstr "Formato do nome do arquivo" @@ -12388,6 +12486,9 @@ msgstr "" "e usa uma velocidade diferente de impressão. Para overhangs 100%%, a " "velocidade de ponte é usada." +msgid "Filament to print walls" +msgstr "" + msgid "" "Line width of inner wall. If expressed as a %, it will be computed over the " "nozzle diameter." @@ -12437,12 +12538,21 @@ msgstr "" "o arquivo G-code como primeiro argumento, e eles podem acessar as " "configurações do Orca Slicer lendo variáveis de ambiente." +msgid "Printer type" +msgstr "" + +msgid "Type of the printer" +msgstr "" + msgid "Printer notes" msgstr "Notas da impressora" msgid "You can put your notes regarding the printer here." msgstr "Você pode inserir suas observações sobre a impressora aqui." +msgid "Printer variant" +msgstr "" + msgid "Raft contact Z distance" msgstr "Distância (Z) de contato da Jangada" @@ -13013,6 +13123,12 @@ msgstr "" "A área de preenchimento não sólido que é menor que o valor de limiar é " "substituída por preenchimento sólido interno" +msgid "Solid infill" +msgstr "" + +msgid "Filament to print solid infill" +msgstr "" + msgid "" "Line width of internal solid infill. If expressed as a %, it will be " "computed over the nozzle diameter." @@ -13079,6 +13195,31 @@ msgstr "Tradicional" msgid "Temperature variation" msgstr "Variação de temperatura" +#. TRN PrintSettings : "Ooze prevention" > "Temperature variation" +msgid "" +"Temperature difference to be applied when an extruder is not active. The " +"value is not used when 'idle_temperature' in filament settings is set to non " +"zero value." +msgstr "" + +msgid "Preheat time" +msgstr "" + +msgid "" +"To reduce the waiting time after tool change, Orca can preheat the next tool " +"while the current tool is still in use. This setting specifies the time in " +"seconds to preheat the next tool. Orca will insert a M104 command to preheat " +"the tool in advance." +msgstr "" + +msgid "Preheat steps" +msgstr "" + +msgid "" +"Insert multiple preheat commands(e.g. M104.1). Only useful for Prusa XL. For " +"other printers, please set it to 1." +msgstr "" + msgid "Start G-code" msgstr "Código de Início" @@ -13757,12 +13898,6 @@ msgstr "" "Ângulo no ápice do cone usado para estabilizar a Torre Prime. Um ângulo " "maior significa uma base mais larga." -msgid "Wipe tower purge lines spacing" -msgstr "Espaçamento das linhas de purga da Torre Prime" - -msgid "Spacing of purge lines on the wipe tower." -msgstr "Espaçamento das linhas de purga na Torre Prime." - msgid "Maximum wipe tower print speed" msgstr "Velocidade máxima de impressão da Torre Prime" @@ -13807,9 +13942,6 @@ msgstr "" "Para os perímetros externos da Torre Prime, a velocidade do perímetro " "interno é utilizada independentemente dessa configuração." -msgid "Wipe tower extruder" -msgstr "Extrusora da Torre Prime" - msgid "" "The extruder to use when printing perimeter of the wipe tower. Set to 0 to " "use the one that is available (non-soluble would be preferred)." @@ -13866,6 +13998,30 @@ msgstr "Distância máxima de ponte" msgid "Maximal distance between supports on sparse infill sections." msgstr "Distância máxima entre suportes em seções de preenchimento não sólido." +msgid "Wipe tower purge lines spacing" +msgstr "Espaçamento das linhas de purga da Torre Prime" + +msgid "Spacing of purge lines on the wipe tower." +msgstr "Espaçamento das linhas de purga na Torre Prime." + +msgid "Extra flow for purging" +msgstr "" + +msgid "" +"Extra flow used for the purging lines on the wipe tower. This makes the " +"purging lines thicker or narrower than they normally would be. The spacing " +"is adjusted automatically." +msgstr "" + +msgid "Idle temperature" +msgstr "" + +msgid "" +"Nozzle temperature when the tool is currently not used in multi-tool setups." +"This is only used when 'Ooze prevention' is active in Print Settings. Set to " +"0 to disable." +msgstr "" + msgid "X-Y hole compensation" msgstr "Compensação XY de furos" @@ -14215,6 +14371,14 @@ msgstr "Desretração extra" msgid "Currently planned extra extruder priming after deretraction." msgstr "Priming de extrusora extra planejado atualmente após a desretração." +msgid "Absolute E position" +msgstr "" + +msgid "" +"Current position of the extruder axis. Only used with absolute extruder " +"addressing." +msgstr "" + msgid "Current extruder" msgstr "Extrusora atual" @@ -14264,6 +14428,12 @@ msgid "Vector of bools stating whether a given extruder is used in the print." msgstr "" "Vetor de booleanos indicando se uma dada extrusora é utilizada na impressão." +msgid "Has single extruder MM priming" +msgstr "" + +msgid "Are the extra multi-material priming regions used in this print?" +msgstr "" + msgid "Volume per extruder" msgstr "Volume por extrusora" @@ -14426,6 +14596,14 @@ msgstr "Nome da impressora física" msgid "Name of the physical printer used for slicing." msgstr "Nome da impressora física utilizada para fatiar." +msgid "Number of extruders" +msgstr "" + +msgid "" +"Total number of extruders, regardless of whether they are used in the " +"current print." +msgstr "" + msgid "Layer number" msgstr "Número da camada" @@ -16851,6 +17029,78 @@ msgstr "" "aumentar adequadamente a temperatura da mesa aquecida pode reduzir a " "probabilidade de empenamento?" +#~ msgid "up to" +#~ msgstr "até" + +#~ msgid "above" +#~ msgstr "acima" + +#~ msgid "from" +#~ msgstr "de" + +#~ msgid "Switching application language while some presets are modified." +#~ msgstr "" +#~ "A mudança do idioma do aplicativo enquanto alguns presets estão " +#~ "modificados." + +#~ msgid "⌘+Shift+G" +#~ msgstr "⌘+Shift+G" + +#~ msgid "Ctrl+Shift+G" +#~ msgstr "Ctrl+Shift+G" + +#~ msgid "⌘+Any arrow" +#~ msgstr "⌘+Qualquer seta" + +#~ msgid "⌥+Left mouse button" +#~ msgstr "Botão esquerdo do mouse ⌥+" + +#~ msgid "⌘+Left mouse button" +#~ msgstr "Botão esquerdo do mouse ⌘+" + +#~ msgid "Ctrl+Any arrow" +#~ msgstr "Ctrl+Qualquer seta" + +#~ msgid "Alt+Left mouse button" +#~ msgstr "Botão esquerdo do mouse Alt+" + +#~ msgid "Ctrl+Left mouse button" +#~ msgstr "Botão esquerdo do mouse Ctrl+" + +#~ msgid "⌘+Mouse wheel" +#~ msgstr "⌘+Roda do mouse" + +#~ msgid "⌥+Mouse wheel" +#~ msgstr "⌥+Roda do mouse" + +#~ msgid "Ctrl+Mouse wheel" +#~ msgstr "Ctrl+Roda do mouse" + +#~ msgid "Alt+Mouse wheel" +#~ msgstr "Alt+Roda do mouse" + +#~ msgid "" +#~ "Different nozzle diameters and different filament diameters is not " +#~ "allowed when prime tower is enabled." +#~ msgstr "" +#~ "Diâmetros de bico diferentes e diâmetros de filamento diferentes não são " +#~ "permitidos quando a Torre Prime está ativa." + +#~ msgid "" +#~ "Ooze prevention is currently not supported with the prime tower enabled." +#~ msgstr "" +#~ "A prevenção de vazamento atualmente não é suportada com a Torre Prime " +#~ "ativa." + +#~ msgid "" +#~ "Interlocking depth of a segmented region. Zero disables this feature." +#~ msgstr "" +#~ "Profundidade de entrelaçamento de uma região segmentada. Zero desativa " +#~ "essa funcionalidade." + +#~ msgid "Wipe tower extruder" +#~ msgstr "Extrusora da Torre Prime" + #~ msgid "Current association: " #~ msgstr "Associação atual: " diff --git a/localization/i18n/ru/OrcaSlicer_ru.po b/localization/i18n/ru/OrcaSlicer_ru.po index 2b50d3d9b1b..04def26dcda 100644 --- a/localization/i18n/ru/OrcaSlicer_ru.po +++ b/localization/i18n/ru/OrcaSlicer_ru.po @@ -7,7 +7,7 @@ msgid "" msgstr "" "Project-Id-Version: OrcaSlicer V2.0.0 Official Release\n" "Report-Msgid-Bugs-To: \n" -"POT-Creation-Date: 2024-06-30 15:44+0200\n" +"POT-Creation-Date: 2024-08-03 18:54+0200\n" "PO-Revision-Date: 2024-06-19 16:50+0700\n" "Last-Translator: \n" "Language-Team: andylg@yandex.ru\n" @@ -79,9 +79,6 @@ msgstr "Угол для умной заливки" msgid "On overhangs only" msgstr "Только на свесах" -msgid "Auto support threshold angle: " -msgstr "Пороговый угол автоподдержки: " - msgid "Circle" msgstr "Окружность" @@ -101,6 +98,9 @@ msgstr "Позволяет рисовать на выбранных гранях msgid "Highlight faces according to overhang angle." msgstr "Выделение граней по углу свеса." +msgid "Auto support threshold angle: " +msgstr "Пороговый угол автоподдержки: " + msgid "No auto support" msgstr "Откл. автоподдержку" @@ -4193,15 +4193,6 @@ msgstr "Общее время печати" msgid "Total cost" msgstr "Общая стоимость" -msgid "up to" -msgstr "до" - -msgid "above" -msgstr "после" - -msgid "from" -msgstr "с" - msgid "Color Scheme" msgstr "Цветовая схема" @@ -4265,12 +4256,12 @@ msgstr "Время смены прутка" msgid "Cost" msgstr "Стоимость" -msgid "Color change" -msgstr "Смена цвета" - msgid "Print" msgstr "Печать" +msgid "Color change" +msgstr "Смена цвета" + msgid "Printer" msgstr "Профиль принтера" @@ -6206,6 +6197,14 @@ msgstr "Обнаружена модель, состоящая из нескол msgid "The file does not contain any geometry data." msgstr "Файл не содержит никаких геометрических данных." +msgid "" +"Your object appears to be too large. It will be scaled down to fit the heat " +"bed automatically." +msgstr "" + +msgid "Object too large" +msgstr "Модель слишком большая" + msgid "" "Your object appears to be too large, Do you want to scale it down to fit the " "heat bed automatically?" @@ -6214,9 +6213,6 @@ msgstr "" "Хотите автоматически уменьшить её масштаб, \n" "чтобы она уместилась на столе?" -msgid "Object too large" -msgstr "Модель слишком большая" - msgid "Export STL file:" msgstr "Экспорт в STL файл:" @@ -6590,9 +6586,6 @@ msgstr "Хотите продолжить?" msgid "Language selection" msgstr "Выбор языка" -msgid "Switching application language while some presets are modified." -msgstr "Смена языка приложения при изменении некоторых профилей." - msgid "Changing application language" msgstr "Изменение языка приложения" @@ -6803,6 +6796,12 @@ msgstr "" "Если включено, вы сможете управлять несколькими устройствами и отправлять " "задания на печать на несколько устройств одновременно." +msgid "Auto arrange plate after cloning" +msgstr "" + +msgid "Auto arrange plate after object cloning" +msgstr "" + msgid "Network" msgstr "Сеть" @@ -7819,12 +7818,21 @@ msgstr "Пруток для поддержки" msgid "Tree supports" msgstr "Древовидная поддержка" -msgid "Skirt" -msgstr "Юбка" +msgid "Multimaterial" +msgstr "Экструдер ММ" msgid "Prime tower" msgstr "Черновая башня" +msgid "Filament for Features" +msgstr "" + +msgid "Ooze prevention" +msgstr "" + +msgid "Skirt" +msgstr "Юбка" + msgid "Special mode" msgstr "Специальные режимы" @@ -7882,6 +7890,9 @@ msgstr "" "Рекомендуемый диапазон температуры сопла для данной пластиковой нити. 0 " "значит не задано." +msgid "Flow ratio and Pressure Advance" +msgstr "" + msgid "Print chamber temperature" msgstr "Температура в камере" @@ -7993,9 +8004,6 @@ msgstr "Стартовый G-код прутка" msgid "Filament end G-code" msgstr "Завершающий G-код прутка" -msgid "Multimaterial" -msgstr "Экструдер ММ" - msgid "Wipe tower parameters" msgstr "Параметры черновой башни" @@ -8087,12 +8095,30 @@ msgstr "Ограничение рывка" msgid "Single extruder multimaterial setup" msgstr "Мультиматериальный одиночный экструдер" +msgid "Number of extruders of the printer." +msgstr "" + +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 "" + +msgid "Nozzle diameter" +msgstr "Диаметр сопла" + msgid "Wipe tower" msgstr "Черновая башня" msgid "Single extruder multimaterial parameters" msgstr "Параметры мультиматериального одиночного экструдера" +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 "" + msgid "Layer height limits" msgstr "Ограничение высоты слоя" @@ -8617,11 +8643,8 @@ msgstr "Список моделей" msgid "Import geometry data from STL/STEP/3MF/OBJ/AMF files" msgstr "Импорт геометрических данных из STL/STEP/3MF/OBJ/AMF файлов" -msgid "⌘+Shift+G" -msgstr "⌘+Shift+G" - -msgid "Ctrl+Shift+G" -msgstr "Ctrl+Shift+G" +msgid "Shift+G" +msgstr "" msgid "Paste from clipboard" msgstr "Вставить из буфера обмена" @@ -8671,33 +8694,18 @@ msgstr "Shift+Tab" msgid "Collapse/Expand the sidebar" msgstr "Свернуть/Развернуть боковую панель" -msgid "⌘+Any arrow" -msgstr "⌘ + Любая стрелка" +msgid "Any arrow" +msgstr "" msgid "Movement in camera space" msgstr "Перемещение выбранного по отношению к камере" -msgid "⌥+Left mouse button" -msgstr "⌥ + Левая кнопка мыши" - msgid "Select a part" msgstr "Выбор части модели" -msgid "⌘+Left mouse button" -msgstr "⌘ + Левая кнопка мыши" - msgid "Select multiple objects" msgstr "Выбор нескольких моделей" -msgid "Ctrl+Any arrow" -msgstr "Ctrl + Любая стрелка" - -msgid "Alt+Left mouse button" -msgstr "Alt + Левая кнопка мыши" - -msgid "Ctrl+Left mouse button" -msgstr "Ctrl + Левая кнопка мыши" - msgid "Shift+Left mouse button" msgstr "Shift + Левая кнопка мыши" @@ -8800,24 +8808,12 @@ msgstr "Печатная пластина" msgid "Move: press to snap by 1mm" msgstr "Перемещение: Фиксация перемещения на 1 мм" -msgid "⌘+Mouse wheel" -msgstr "⌘ + Колесо мыши" - msgid "Support/Color Painting: adjust pen radius" msgstr "Рисование поддержки/Шва/Покраски: регулировка радиуса кисти" -msgid "⌥+Mouse wheel" -msgstr "⌥ + Колесо мыши" - msgid "Support/Color Painting: adjust section position" msgstr "Рисование поддержки/Шва/Покраски: регулировка положения сечения" -msgid "Ctrl+Mouse wheel" -msgstr "Ctrl + Колесо мыши" - -msgid "Alt+Mouse wheel" -msgstr "Alt + Колесо мыши" - msgid "Gizmo" msgstr "Гизмо" @@ -9130,6 +9126,11 @@ msgstr "" msgid "No object can be printed. Maybe too small" msgstr "Печать моделей невозможна. Возможно, они слишком маленькие." +msgid "" +"Your print is very close to the priming regions. Make sure there is no " +"collision." +msgstr "" + msgid "" "Failed to generate gcode for invalid custom G-code.\n" "\n" @@ -9383,11 +9384,10 @@ msgstr "" "Функция переменной высоты слоя не совместима органическими поддержками." msgid "" -"Different nozzle diameters and different filament diameters is not allowed " -"when prime tower is enabled." +"Different nozzle diameters and different filament diameters may not work " +"well when the prime tower is enabled. It's very experimental, so please " +"proceed with caution." msgstr "" -"При включении черновой башни не допускается использования разных диаметров " -"сопел и разных диаметров пластиковой нити." msgid "" "The Wipe Tower is currently only supported with the relative extruder " @@ -9397,10 +9397,9 @@ msgstr "" "относительная адресация экструдера (use_relative_e_distances=1)." msgid "" -"Ooze prevention is currently not supported with the prime tower enabled." +"Ooze prevention is only supported with the wipe tower when " +"'single_extruder_multi_material' is off." msgstr "" -"Предотвращение течи материала с помощью черновой башни в настоящее время не " -"поддерживается." msgid "" "The prime tower is currently only supported for the Marlin, RepRap/Sprinter, " @@ -10892,6 +10891,86 @@ msgstr "" "Pressure advance (Прогнозирование давления) в прошивки Klipper, это одно и " "тоже что Linear advance в прошивке Marlin." +msgid "Enable adaptive pressure advance (beta)" +msgstr "" + +#, c-format, boost-format +msgid "" +"With increasing print speeds (and hence increasing volumetric flow through " +"the nozzle) and increasing accelerations, it has been observed that the " +"effective PA value typically decreases. This means that a single PA value is " +"not always 100% optimal for all features and a compromise value is usually " +"used that does not cause too much bulging on features with lower flow speed " +"and accelerations while also not causing gaps on faster features.\n" +"\n" +"This feature aims to address this limitation by modeling the response of " +"your printer's extrusion system depending on the volumetric flow speed and " +"acceleration it is printing at. Internally, it generates a fitted model that " +"can extrapolate the needed pressure advance for any given volumetric flow " +"speed and acceleration, which is then emmited to the printer depending on " +"the current print conditions.\n" +"\n" +"When enabled, the pressure advance value above is overriden. However, a " +"reasonable default value above is strongly recomended to act as a fallback " +"and for when tool changing.\n" +"\n" +msgstr "" + +msgid "Adaptive pressure advance measurements (beta)" +msgstr "" + +msgid "" +"Add sets of pressure advance (PA) values, the volumetric flow speeds and " +"accelerations they were measured at, separated by a comma. One set of values " +"per line. For example\n" +"0.04,3.96,3000\n" +"0.033,3.96,10000\n" +"0.029,7.91,3000\n" +"0.026,7.91,10000\n" +"\n" +"How to calibrate:\n" +"1. Run the pressure advance test for at least 3 speeds per acceleration " +"value. It is recommended that the test is run for at least the speed of the " +"external perimeters, the speed of the internal perimeters and the fastest " +"feature print speed in your profile (usually its the sparse or solid " +"infill). Then run them for the same speeds for the slowest and fastest print " +"accelerations,and no faster than the recommended maximum acceleration as " +"given by the klipper input shaper.\n" +"2. Take note of the optimal PA value for each volumetric flow speed and " +"acceleration. You can find the flow number by selecting flow from the color " +"scheme drop down and move the horizontal slider over the PA pattern lines. " +"The number should be visible at the bottom of the page. The ideal PA value " +"should be decreasing the higher the volumetric flow is. If it is not, " +"confirm that your extruder is functioning correctly.The slower and with less " +"acceleration you print, the larger the range of acceptable PA values. If no " +"difference is visible, use the PA value from the faster test.3. Enter the " +"triplets of PA values, Flow and Accelerations in the text box here and save " +"your filament profile\n" +"\n" +msgstr "" + +msgid "Enable adaptive pressure advance for overhangs (beta)" +msgstr "" + +msgid "" +"Enable adaptive PA for overhangs as well as when flow changes within the " +"same feature. This is an experimental option, as if the PA profile is not " +"set accurately, it will cause uniformity issues on the external surfaces " +"before and after overhangs.\n" +msgstr "" + +msgid "Pressure advance for bridges" +msgstr "" + +msgid "" +"Pressure advance value for bridges. Set to 0 to disable. \n" +"\n" +" A lower PA value when printing bridges helps reduce the appearance of " +"slight under extrusion immediately after bridges. This is caused by the " +"pressure drop in the nozzle when printing in the air and a lower PA helps " +"counteract this." +msgstr "" + msgid "" "Default line width if other line widths are set to 0. If expressed as a %, " "it will be computed over the nozzle diameter." @@ -11089,6 +11168,21 @@ msgstr "" "Пруток охлаждается в охлаждающих трубках путём перемещения назад и вперёд. " "Укажите желаемое количество таких движений." +msgid "Stamping loading speed" +msgstr "" + +msgid "Speed used for stamping." +msgstr "" + +msgid "Stamping distance measured from the center of the cooling tube" +msgstr "" + +msgid "" +"If set to nonzero value, filament is moved toward the nozzle between the " +"individual cooling moves (\"stamping\"). This option configures how long " +"this movement should be before the filament is retracted again." +msgstr "" + msgid "Speed of the first cooling move" msgstr "Скорость первого охлаждающего движения" @@ -11939,10 +12033,12 @@ msgstr "" msgid "Interlocking depth of a segmented region" msgstr "Глубина взаимосвязи сегментированной области" -msgid "Interlocking depth of a segmented region. Zero disables this feature." +msgid "" +"Interlocking depth of a segmented region. It will be ignored if " +"\"mmu_segmented_region_max_width\" is zero or if " +"\"mmu_segmented_region_interlocking_depth\"is bigger then " +"\"mmu_segmented_region_max_width\". Zero disables this feature." msgstr "" -"Глубина взаимосвязи сегментированной области. Установите 0 для отключения " -"этой функции." msgid "Use beam interlocking" msgstr "" @@ -12355,9 +12451,6 @@ msgstr "" "сохранить минимальное время слоя, указанное выше, если включена опция " "«Замедлять печать для лучшего охлаждения слоёв»." -msgid "Nozzle diameter" -msgstr "Диаметр сопла" - msgid "Diameter of nozzle" msgstr "Диаметр сопла" @@ -12457,6 +12550,11 @@ msgstr "" "Это поможет снизить количество откатов при печати сложной модели и " "сэкономить время печати, но увеличит время нарезки и генерации G-кода." +msgid "" +"This option will drop the temperature of the inactive extruders to prevent " +"oozing." +msgstr "" + msgid "Filename format" msgstr "Формат имени файла" @@ -12506,6 +12604,9 @@ msgstr "" "Определяет процент нависания относительно ширины линии и использует разную " "скорость печати. Для 100%%-го свеса используется скорость печати мостов." +msgid "Filament to print walls" +msgstr "" + msgid "" "Line width of inner wall. If expressed as a %, it will be computed over the " "nozzle diameter." @@ -12556,12 +12657,21 @@ msgstr "" "качестве первого аргумента, и они смогут получить доступ к настройкам " "конфигурации Orca Slicer, читая переменные окружения." +msgid "Printer type" +msgstr "" + +msgid "Type of the printer" +msgstr "" + msgid "Printer notes" msgstr "Примечания к принтеру" msgid "You can put your notes regarding the printer here." msgstr "Здесь вы можете написать свои замечания о текущем принтере." +msgid "Printer variant" +msgstr "" + msgid "Raft contact Z distance" msgstr "Расстояние от подложки до модели по вертикали" @@ -13137,6 +13247,12 @@ msgstr "" "Область с разреженным заполнением, размер которого меньше этого порогового " "значения, заменяется сплошным заполнением." +msgid "Solid infill" +msgstr "" + +msgid "Filament to print solid infill" +msgstr "" + msgid "" "Line width of internal solid infill. If expressed as a %, it will be " "computed over the nozzle diameter." @@ -13204,6 +13320,31 @@ msgstr "Обычный" msgid "Temperature variation" msgstr "Колебания температуры" +#. TRN PrintSettings : "Ooze prevention" > "Temperature variation" +msgid "" +"Temperature difference to be applied when an extruder is not active. The " +"value is not used when 'idle_temperature' in filament settings is set to non " +"zero value." +msgstr "" + +msgid "Preheat time" +msgstr "" + +msgid "" +"To reduce the waiting time after tool change, Orca can preheat the next tool " +"while the current tool is still in use. This setting specifies the time in " +"seconds to preheat the next tool. Orca will insert a M104 command to preheat " +"the tool in advance." +msgstr "" + +msgid "Preheat steps" +msgstr "" + +msgid "" +"Insert multiple preheat commands(e.g. M104.1). Only useful for Prusa XL. For " +"other printers, please set it to 1." +msgstr "" + msgid "Start G-code" msgstr "Стартовый G-код" @@ -13908,12 +14049,6 @@ msgstr "" "предотвращения опрокидывания черновой башни. Больший угол означает более " "широкое основание конуса." -msgid "Wipe tower purge lines spacing" -msgstr "Расстояние между линиями очистки черновой башни" - -msgid "Spacing of purge lines on the wipe tower." -msgstr "Расстояние между линиями очистки на черновой башне." - msgid "Maximum wipe tower print speed" msgstr "Максимальная скорость печати черновой башни" @@ -13950,9 +14085,6 @@ msgstr "" "скоростях и что образование соплей при смене инструмента хорошо " "контролируется." -msgid "Wipe tower extruder" -msgstr "Экструдер черновой башни" - msgid "" "The extruder to use when printing perimeter of the wipe tower. Set to 0 to " "use the one that is available (non-soluble would be preferred)." @@ -14007,6 +14139,30 @@ msgid "Maximal distance between supports on sparse infill sections." msgstr "" "Максимальное расстояние между опорами на разряженных участках заполнения." +msgid "Wipe tower purge lines spacing" +msgstr "Расстояние между линиями очистки черновой башни" + +msgid "Spacing of purge lines on the wipe tower." +msgstr "Расстояние между линиями очистки на черновой башне." + +msgid "Extra flow for purging" +msgstr "" + +msgid "" +"Extra flow used for the purging lines on the wipe tower. This makes the " +"purging lines thicker or narrower than they normally would be. The spacing " +"is adjusted automatically." +msgstr "" + +msgid "Idle temperature" +msgstr "" + +msgid "" +"Nozzle temperature when the tool is currently not used in multi-tool setups." +"This is only used when 'Ooze prevention' is active in Print Settings. Set to " +"0 to disable." +msgstr "" + msgid "X-Y hole compensation" msgstr "Коррекция размеров отверстий по XY" @@ -14367,6 +14523,14 @@ msgstr "Доп. выдавливание" msgid "Currently planned extra extruder priming after deretraction." msgstr "Запланированная дополнительная предзарядка экструдера после подачи." +msgid "Absolute E position" +msgstr "" + +msgid "" +"Current position of the extruder axis. Only used with absolute extruder " +"addressing." +msgstr "" + msgid "Current extruder" msgstr "Текущий экструдер" @@ -14417,6 +14581,12 @@ msgstr "" "Вектор логических значений, указывающий, используется ли данный экструдер в " "печати." +msgid "Has single extruder MM priming" +msgstr "" + +msgid "Are the extra multi-material priming regions used in this print?" +msgstr "" + msgid "Volume per extruder" msgstr "Объём для каждого экструдера" @@ -14580,6 +14750,14 @@ msgstr "Имя физического принтера" msgid "Name of the physical printer used for slicing." msgstr "Имя физического принтера, используемого для нарезки." +msgid "Number of extruders" +msgstr "" + +msgid "" +"Total number of extruders, regardless of whether they are used in the " +"current print." +msgstr "" + msgid "Layer number" msgstr "Номер слоя" @@ -17020,6 +17198,76 @@ msgstr "" "ABS, повышение температуры подогреваемого стола может снизить эту " "вероятность?" +#~ msgid "up to" +#~ msgstr "до" + +#~ msgid "above" +#~ msgstr "после" + +#~ msgid "from" +#~ msgstr "с" + +#~ msgid "Switching application language while some presets are modified." +#~ msgstr "Смена языка приложения при изменении некоторых профилей." + +#~ msgid "⌘+Shift+G" +#~ msgstr "⌘+Shift+G" + +#~ msgid "Ctrl+Shift+G" +#~ msgstr "Ctrl+Shift+G" + +#~ msgid "⌘+Any arrow" +#~ msgstr "⌘ + Любая стрелка" + +#~ msgid "⌥+Left mouse button" +#~ msgstr "⌥ + Левая кнопка мыши" + +#~ msgid "⌘+Left mouse button" +#~ msgstr "⌘ + Левая кнопка мыши" + +#~ msgid "Ctrl+Any arrow" +#~ msgstr "Ctrl + Любая стрелка" + +#~ msgid "Alt+Left mouse button" +#~ msgstr "Alt + Левая кнопка мыши" + +#~ msgid "Ctrl+Left mouse button" +#~ msgstr "Ctrl + Левая кнопка мыши" + +#~ msgid "⌘+Mouse wheel" +#~ msgstr "⌘ + Колесо мыши" + +#~ msgid "⌥+Mouse wheel" +#~ msgstr "⌥ + Колесо мыши" + +#~ msgid "Ctrl+Mouse wheel" +#~ msgstr "Ctrl + Колесо мыши" + +#~ msgid "Alt+Mouse wheel" +#~ msgstr "Alt + Колесо мыши" + +#~ msgid "" +#~ "Different nozzle diameters and different filament diameters is not " +#~ "allowed when prime tower is enabled." +#~ msgstr "" +#~ "При включении черновой башни не допускается использования разных " +#~ "диаметров сопел и разных диаметров пластиковой нити." + +#~ msgid "" +#~ "Ooze prevention is currently not supported with the prime tower enabled." +#~ msgstr "" +#~ "Предотвращение течи материала с помощью черновой башни в настоящее время " +#~ "не поддерживается." + +#~ msgid "" +#~ "Interlocking depth of a segmented region. Zero disables this feature." +#~ msgstr "" +#~ "Глубина взаимосвязи сегментированной области. Установите 0 для отключения " +#~ "этой функции." + +#~ msgid "Wipe tower extruder" +#~ msgstr "Экструдер черновой башни" + #~ msgid "Associate prusaslicer://" #~ msgstr "Ассоциация c prusaslicer://" diff --git a/localization/i18n/sv/OrcaSlicer_sv.po b/localization/i18n/sv/OrcaSlicer_sv.po index 77b55c88794..ee52d153f3d 100644 --- a/localization/i18n/sv/OrcaSlicer_sv.po +++ b/localization/i18n/sv/OrcaSlicer_sv.po @@ -3,7 +3,7 @@ msgid "" msgstr "" "Project-Id-Version: Orca Slicer\n" "Report-Msgid-Bugs-To: \n" -"POT-Creation-Date: 2024-06-30 15:44+0200\n" +"POT-Creation-Date: 2024-08-03 18:54+0200\n" "Language: sv\n" "MIME-Version: 1.0\n" "Content-Type: text/plain; charset=UTF-8\n" @@ -71,9 +71,6 @@ msgstr "Smart fyllningsvinkel" msgid "On overhangs only" msgstr "Endast på överhäng" -msgid "Auto support threshold angle: " -msgstr "Automatisk support tröskelsvinkel: " - msgid "Circle" msgstr "Cirkel" @@ -93,6 +90,9 @@ msgstr "Tillåter målning endast på fasetter som valts av: ”%1%”" msgid "Highlight faces according to overhang angle." msgstr "Markera ytor enligt överhängs vinkeln." +msgid "Auto support threshold angle: " +msgstr "Automatisk support tröskelsvinkel: " + msgid "No auto support" msgstr "Ingen auto support" @@ -4053,15 +4053,6 @@ msgstr "Total tid" msgid "Total cost" msgstr "Total cost" -msgid "up to" -msgstr "upp till" - -msgid "above" -msgstr "över" - -msgid "from" -msgstr "från" - msgid "Color Scheme" msgstr "Färgschema" @@ -4125,12 +4116,12 @@ msgstr "Filament bytes tider" msgid "Cost" msgstr "Kostnad" -msgid "Color change" -msgstr "Färg byte" - msgid "Print" msgstr "Skriv ut" +msgid "Color change" +msgstr "Färg byte" + msgid "Printer" msgstr "Skrivare" @@ -6011,6 +6002,14 @@ msgstr "Ett objekt med multipla delar har upptäckts" msgid "The file does not contain any geometry data." msgstr "Filen innehåller ingen geometrisk data." +msgid "" +"Your object appears to be too large. It will be scaled down to fit the heat " +"bed automatically." +msgstr "" + +msgid "Object too large" +msgstr "Objektet är för stort" + msgid "" "Your object appears to be too large, Do you want to scale it down to fit the " "heat bed automatically?" @@ -6018,9 +6017,6 @@ msgstr "" "Objektet verkar vara för stort, vill du skala ner det så att det passar " "byggplattan automatiskt?" -msgid "Object too large" -msgstr "Objektet är för stort" - msgid "Export STL file:" msgstr "Exportera STL-fil:" @@ -6385,9 +6381,6 @@ msgstr "Fortsätta?" msgid "Language selection" msgstr "Språkval" -msgid "Switching application language while some presets are modified." -msgstr "Byter språk medans inställningarna ändras." - msgid "Changing application language" msgstr "Byter språk" @@ -6569,6 +6562,12 @@ msgstr "" "With this option enabled, you can send a task to multiple devices at the " "same time and manage multiple devices." +msgid "Auto arrange plate after cloning" +msgstr "" + +msgid "Auto arrange plate after object cloning" +msgstr "" + msgid "Network" msgstr "" @@ -7557,12 +7556,21 @@ msgstr "Support filament" msgid "Tree supports" msgstr "" -msgid "Skirt" +msgid "Multimaterial" msgstr "" msgid "Prime tower" msgstr "Prime torn" +msgid "Filament for Features" +msgstr "" + +msgid "Ooze prevention" +msgstr "" + +msgid "Skirt" +msgstr "" + msgid "Special mode" msgstr "Special läge" @@ -7616,6 +7624,9 @@ msgstr "" "Rekommenderat nozzel temperaturs område för detta filament. 0 betyder inte " "fastställt" +msgid "Flow ratio and Pressure Advance" +msgstr "" + msgid "Print chamber temperature" msgstr "" @@ -7724,9 +7735,6 @@ msgstr "Filament start G-kod" msgid "Filament end G-code" msgstr "Filament stop G-kod" -msgid "Multimaterial" -msgstr "" - msgid "Wipe tower parameters" msgstr "" @@ -7816,12 +7824,30 @@ msgstr "Jerk begränsning" msgid "Single extruder multimaterial setup" msgstr "" +msgid "Number of extruders of the printer." +msgstr "" + +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 "" + +msgid "Nozzle diameter" +msgstr "Nozzel diameter" + msgid "Wipe tower" msgstr "" msgid "Single extruder multimaterial parameters" msgstr "" +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 "" + msgid "Layer height limits" msgstr "Lagerhöjds begränsning" @@ -8300,11 +8326,8 @@ msgstr "Objektlista" msgid "Import geometry data from STL/STEP/3MF/OBJ/AMF files" msgstr "Importera geometri data från STL/STEP/3MF/OBJ/AMF filer" -msgid "⌘+Shift+G" -msgstr "⌘+Shift+G" - -msgid "Ctrl+Shift+G" -msgstr "Ctrl+Skift+G" +msgid "Shift+G" +msgstr "" msgid "Paste from clipboard" msgstr "Klistra in ifrån urklipp" @@ -8353,33 +8376,18 @@ msgstr "Shift+Tab" msgid "Collapse/Expand the sidebar" msgstr "Dölj/Visa meny" -msgid "⌘+Any arrow" -msgstr "⌘+Valfri pil" +msgid "Any arrow" +msgstr "" msgid "Movement in camera space" msgstr "Rörelse i kamera område" -msgid "⌥+Left mouse button" -msgstr "⌥+Vänster musknapp" - msgid "Select a part" msgstr "Välj del" -msgid "⌘+Left mouse button" -msgstr "⌘+Vänster musknapp" - msgid "Select multiple objects" msgstr "Välj flera objekt" -msgid "Ctrl+Any arrow" -msgstr "Ctrl+Valfri pil" - -msgid "Alt+Left mouse button" -msgstr "Alt+Vänster musknapp" - -msgid "Ctrl+Left mouse button" -msgstr "Ctrl+vänster musknapp" - msgid "Shift+Left mouse button" msgstr "Shift+Vänster musknapp" @@ -8482,24 +8490,12 @@ msgstr "Plätering/Förgyllning" msgid "Move: press to snap by 1mm" msgstr "Flytta: tryck för att låsa med 1mm" -msgid "⌘+Mouse wheel" -msgstr "⌘+Mushjul" - msgid "Support/Color Painting: adjust pen radius" msgstr "Support/Färgläggning: justera penn radie" -msgid "⌥+Mouse wheel" -msgstr "⌥+Mushjul" - msgid "Support/Color Painting: adjust section position" msgstr "Support/Färgläggning:justera sektions positionen" -msgid "Ctrl+Mouse wheel" -msgstr "Ctrl+mushjul" - -msgid "Alt+Mouse wheel" -msgstr "Alt+Mushjul" - msgid "Gizmo" msgstr "Gizmo" @@ -8805,6 +8801,11 @@ msgstr "" msgid "No object can be printed. Maybe too small" msgstr "Inget objekt kan skrivas ut. Det kan vara för litet" +msgid "" +"Your print is very close to the priming regions. Make sure there is no " +"collision." +msgstr "" + msgid "" "Failed to generate gcode for invalid custom G-code.\n" "\n" @@ -9038,11 +9039,10 @@ msgid "Variable layer height is not supported with Organic supports." msgstr "Variabel lagerhöjd stöds inte med organiska support." msgid "" -"Different nozzle diameters and different filament diameters is not allowed " -"when prime tower is enabled." +"Different nozzle diameters and different filament diameters may not work " +"well when the prime tower is enabled. It's very experimental, so please " +"proceed with caution." msgstr "" -"Olika nozzel diametrar och olika filament diametrar är inte tillåtna när " -"prime tower är aktiverat." msgid "" "The Wipe Tower is currently only supported with the relative extruder " @@ -9052,9 +9052,9 @@ msgstr "" "(use_relative_e_distances=1)." msgid "" -"Ooze prevention is currently not supported with the prime tower enabled." +"Ooze prevention is only supported with the wipe tower when " +"'single_extruder_multi_material' is off." msgstr "" -"Förebyggande av läckage stöds för närvarande inte med prime tower aktiverat." msgid "" "The prime tower is currently only supported for the Marlin, RepRap/Sprinter, " @@ -10290,6 +10290,86 @@ msgstr "" msgid "Pressure advance(Klipper) AKA Linear advance factor(Marlin)" msgstr "" +msgid "Enable adaptive pressure advance (beta)" +msgstr "" + +#, c-format, boost-format +msgid "" +"With increasing print speeds (and hence increasing volumetric flow through " +"the nozzle) and increasing accelerations, it has been observed that the " +"effective PA value typically decreases. This means that a single PA value is " +"not always 100% optimal for all features and a compromise value is usually " +"used that does not cause too much bulging on features with lower flow speed " +"and accelerations while also not causing gaps on faster features.\n" +"\n" +"This feature aims to address this limitation by modeling the response of " +"your printer's extrusion system depending on the volumetric flow speed and " +"acceleration it is printing at. Internally, it generates a fitted model that " +"can extrapolate the needed pressure advance for any given volumetric flow " +"speed and acceleration, which is then emmited to the printer depending on " +"the current print conditions.\n" +"\n" +"When enabled, the pressure advance value above is overriden. However, a " +"reasonable default value above is strongly recomended to act as a fallback " +"and for when tool changing.\n" +"\n" +msgstr "" + +msgid "Adaptive pressure advance measurements (beta)" +msgstr "" + +msgid "" +"Add sets of pressure advance (PA) values, the volumetric flow speeds and " +"accelerations they were measured at, separated by a comma. One set of values " +"per line. For example\n" +"0.04,3.96,3000\n" +"0.033,3.96,10000\n" +"0.029,7.91,3000\n" +"0.026,7.91,10000\n" +"\n" +"How to calibrate:\n" +"1. Run the pressure advance test for at least 3 speeds per acceleration " +"value. It is recommended that the test is run for at least the speed of the " +"external perimeters, the speed of the internal perimeters and the fastest " +"feature print speed in your profile (usually its the sparse or solid " +"infill). Then run them for the same speeds for the slowest and fastest print " +"accelerations,and no faster than the recommended maximum acceleration as " +"given by the klipper input shaper.\n" +"2. Take note of the optimal PA value for each volumetric flow speed and " +"acceleration. You can find the flow number by selecting flow from the color " +"scheme drop down and move the horizontal slider over the PA pattern lines. " +"The number should be visible at the bottom of the page. The ideal PA value " +"should be decreasing the higher the volumetric flow is. If it is not, " +"confirm that your extruder is functioning correctly.The slower and with less " +"acceleration you print, the larger the range of acceptable PA values. If no " +"difference is visible, use the PA value from the faster test.3. Enter the " +"triplets of PA values, Flow and Accelerations in the text box here and save " +"your filament profile\n" +"\n" +msgstr "" + +msgid "Enable adaptive pressure advance for overhangs (beta)" +msgstr "" + +msgid "" +"Enable adaptive PA for overhangs as well as when flow changes within the " +"same feature. This is an experimental option, as if the PA profile is not " +"set accurately, it will cause uniformity issues on the external surfaces " +"before and after overhangs.\n" +msgstr "" + +msgid "Pressure advance for bridges" +msgstr "" + +msgid "" +"Pressure advance value for bridges. Set to 0 to disable. \n" +"\n" +" A lower PA value when printing bridges helps reduce the appearance of " +"slight under extrusion immediately after bridges. This is caused by the " +"pressure drop in the nozzle when printing in the air and a lower PA helps " +"counteract this." +msgstr "" + msgid "" "Default line width if other line widths are set to 0. If expressed as a %, " "it will be computed over the nozzle diameter." @@ -10459,6 +10539,21 @@ msgid "" "Specify desired number of these moves." msgstr "" +msgid "Stamping loading speed" +msgstr "" + +msgid "Speed used for stamping." +msgstr "" + +msgid "Stamping distance measured from the center of the cooling tube" +msgstr "" + +msgid "" +"If set to nonzero value, filament is moved toward the nozzle between the " +"individual cooling moves (\"stamping\"). This option configures how long " +"this movement should be before the filament is retracted again." +msgstr "" + msgid "Speed of the first cooling move" msgstr "" @@ -11180,10 +11275,12 @@ msgstr "" msgid "Interlocking depth of a segmented region" msgstr "Sammanhängande djup i en segmenterad region" -msgid "Interlocking depth of a segmented region. Zero disables this feature." +msgid "" +"Interlocking depth of a segmented region. It will be ignored if " +"\"mmu_segmented_region_max_width\" is zero or if " +"\"mmu_segmented_region_interlocking_depth\"is bigger then " +"\"mmu_segmented_region_max_width\". Zero disables this feature." msgstr "" -"Sammankopplingsdjup för en segmenterad region. Noll inaktiverar denna " -"funktion." msgid "Use beam interlocking" msgstr "" @@ -11538,9 +11635,6 @@ msgid "" "cooling is enabled." msgstr "" -msgid "Nozzle diameter" -msgstr "Nozzel diameter" - msgid "Diameter of nozzle" msgstr "Diametern på nozzeln" @@ -11626,6 +11720,11 @@ msgstr "" "indragning för komplexa modeller och spara utskriftstid, men gör beredning " "och generering av G-kod långsammare." +msgid "" +"This option will drop the temperature of the inactive extruders to prevent " +"oozing." +msgstr "" + msgid "Filename format" msgstr "Filnamns format" @@ -11670,6 +11769,9 @@ msgstr "" "hastigheter för att skriva ut. Vid 100%% överhäng, bridge/brygg hastighet " "användas." +msgid "Filament to print walls" +msgstr "" + msgid "" "Line width of inner wall. If expressed as a %, it will be computed over the " "nozzle diameter." @@ -11703,12 +11805,21 @@ msgid "" "environment variables." msgstr "" +msgid "Printer type" +msgstr "" + +msgid "Type of the printer" +msgstr "" + msgid "Printer notes" msgstr "Printer notes" msgid "You can put your notes regarding the printer here." msgstr "You can put your notes regarding the printer here." +msgid "Printer variant" +msgstr "" + msgid "Raft contact Z distance" msgstr "Raft kontakt Z avstånd" @@ -12206,6 +12317,12 @@ msgstr "" "Sparsam ifyllnads ytor som är mindre än detta gränsvärde ersätts med inre " "solid ifyllnad" +msgid "Solid infill" +msgstr "" + +msgid "Filament to print solid infill" +msgstr "" + msgid "" "Line width of internal solid infill. If expressed as a %, it will be " "computed over the nozzle diameter." @@ -12268,6 +12385,31 @@ msgstr "Traditionell" msgid "Temperature variation" msgstr "Temperatur variation" +#. TRN PrintSettings : "Ooze prevention" > "Temperature variation" +msgid "" +"Temperature difference to be applied when an extruder is not active. The " +"value is not used when 'idle_temperature' in filament settings is set to non " +"zero value." +msgstr "" + +msgid "Preheat time" +msgstr "" + +msgid "" +"To reduce the waiting time after tool change, Orca can preheat the next tool " +"while the current tool is still in use. This setting specifies the time in " +"seconds to preheat the next tool. Orca will insert a M104 command to preheat " +"the tool in advance." +msgstr "" + +msgid "Preheat steps" +msgstr "" + +msgid "" +"Insert multiple preheat commands(e.g. M104.1). Only useful for Prusa XL. For " +"other printers, please set it to 1." +msgstr "" + msgid "Start G-code" msgstr "Starta G-kod" @@ -12880,12 +13022,6 @@ msgid "" "Larger angle means wider base." msgstr "" -msgid "Wipe tower purge lines spacing" -msgstr "" - -msgid "Spacing of purge lines on the wipe tower." -msgstr "" - msgid "Maximum wipe tower print speed" msgstr "" @@ -12911,9 +13047,6 @@ msgid "" "regardless of this setting." msgstr "" -msgid "Wipe tower extruder" -msgstr "" - msgid "" "The extruder to use when printing perimeter of the wipe tower. Set to 0 to " "use the one that is available (non-soluble would be preferred)." @@ -12964,6 +13097,30 @@ msgstr "" msgid "Maximal distance between supports on sparse infill sections." msgstr "" +msgid "Wipe tower purge lines spacing" +msgstr "" + +msgid "Spacing of purge lines on the wipe tower." +msgstr "" + +msgid "Extra flow for purging" +msgstr "" + +msgid "" +"Extra flow used for the purging lines on the wipe tower. This makes the " +"purging lines thicker or narrower than they normally would be. The spacing " +"is adjusted automatically." +msgstr "" + +msgid "Idle temperature" +msgstr "" + +msgid "" +"Nozzle temperature when the tool is currently not used in multi-tool setups." +"This is only used when 'Ooze prevention' is active in Print Settings. Set to " +"0 to disable." +msgstr "" + msgid "X-Y hole compensation" msgstr "X-Y håls kompensation" @@ -13270,6 +13427,14 @@ msgstr "" msgid "Currently planned extra extruder priming after deretraction." msgstr "" +msgid "Absolute E position" +msgstr "" + +msgid "" +"Current position of the extruder axis. Only used with absolute extruder " +"addressing." +msgstr "" + msgid "Current extruder" msgstr "" @@ -13312,6 +13477,12 @@ msgstr "" msgid "Vector of bools stating whether a given extruder is used in the print." msgstr "" +msgid "Has single extruder MM priming" +msgstr "" + +msgid "Are the extra multi-material priming regions used in this print?" +msgstr "" + msgid "Volume per extruder" msgstr "" @@ -13456,6 +13627,14 @@ msgstr "" msgid "Name of the physical printer used for slicing." msgstr "" +msgid "Number of extruders" +msgstr "" + +msgid "" +"Total number of extruders, regardless of whether they are used in the " +"current print." +msgstr "" + msgid "Layer number" msgstr "" @@ -15772,6 +15951,73 @@ msgstr "" "ABS, kan en lämplig ökning av värmebäddens temperatur minska sannolikheten " "för vridning." +#~ msgid "up to" +#~ msgstr "upp till" + +#~ msgid "above" +#~ msgstr "över" + +#~ msgid "from" +#~ msgstr "från" + +#~ msgid "Switching application language while some presets are modified." +#~ msgstr "Byter språk medans inställningarna ändras." + +#~ msgid "⌘+Shift+G" +#~ msgstr "⌘+Shift+G" + +#~ msgid "Ctrl+Shift+G" +#~ msgstr "Ctrl+Skift+G" + +#~ msgid "⌘+Any arrow" +#~ msgstr "⌘+Valfri pil" + +#~ msgid "⌥+Left mouse button" +#~ msgstr "⌥+Vänster musknapp" + +#~ msgid "⌘+Left mouse button" +#~ msgstr "⌘+Vänster musknapp" + +#~ msgid "Ctrl+Any arrow" +#~ msgstr "Ctrl+Valfri pil" + +#~ msgid "Alt+Left mouse button" +#~ msgstr "Alt+Vänster musknapp" + +#~ msgid "Ctrl+Left mouse button" +#~ msgstr "Ctrl+vänster musknapp" + +#~ msgid "⌘+Mouse wheel" +#~ msgstr "⌘+Mushjul" + +#~ msgid "⌥+Mouse wheel" +#~ msgstr "⌥+Mushjul" + +#~ msgid "Ctrl+Mouse wheel" +#~ msgstr "Ctrl+mushjul" + +#~ msgid "Alt+Mouse wheel" +#~ msgstr "Alt+Mushjul" + +#~ msgid "" +#~ "Different nozzle diameters and different filament diameters is not " +#~ "allowed when prime tower is enabled." +#~ msgstr "" +#~ "Olika nozzel diametrar och olika filament diametrar är inte tillåtna när " +#~ "prime tower är aktiverat." + +#~ msgid "" +#~ "Ooze prevention is currently not supported with the prime tower enabled." +#~ msgstr "" +#~ "Förebyggande av läckage stöds för närvarande inte med prime tower " +#~ "aktiverat." + +#~ msgid "" +#~ "Interlocking depth of a segmented region. Zero disables this feature." +#~ msgstr "" +#~ "Sammankopplingsdjup för en segmenterad region. Noll inaktiverar denna " +#~ "funktion." + #~ msgid "Please input a valid value (K in 0~0.3)" #~ msgstr "Ange ett giltigt värde (K i 0~0.3)" diff --git a/localization/i18n/tr/OrcaSlicer_tr.po b/localization/i18n/tr/OrcaSlicer_tr.po index 18109721529..37922c257d0 100644 --- a/localization/i18n/tr/OrcaSlicer_tr.po +++ b/localization/i18n/tr/OrcaSlicer_tr.po @@ -3,8 +3,8 @@ msgid "" msgstr "" "Project-Id-Version: Orca Slicer\n" "Report-Msgid-Bugs-To: \n" -"POT-Creation-Date: 2024-06-30 15:44+0200\n" -"PO-Revision-Date: 2024-07-11 00:22+0300\n" +"POT-Creation-Date: 2024-08-03 18:54+0200\n" +"PO-Revision-Date: 2024-08-04 11:24+0300\n" "Last-Translator: Olcay ÖREN\n" "Language-Team: \n" "Language: tr\n" @@ -74,9 +74,6 @@ msgstr "Akıllı doldurma açısı" msgid "On overhangs only" msgstr "Yalnızca çıkıntılarda" -msgid "Auto support threshold angle: " -msgstr "Otomatik destek eşik açısı: " - msgid "Circle" msgstr "Daire" @@ -97,6 +94,9 @@ msgstr "" msgid "Highlight faces according to overhang angle." msgstr "Yüzleri çıkıntı açısına göre vurgulayın." +msgid "Auto support threshold angle: " +msgstr "Otomatik destek eşik açısı: " + msgid "No auto support" msgstr "Otomatik destek yok" @@ -4109,15 +4109,6 @@ msgstr "Toplam süre" msgid "Total cost" msgstr "Toplam tutar" -msgid "up to" -msgstr "kadar" - -msgid "above" -msgstr "üstünde" - -msgid "from" -msgstr "itibaren" - msgid "Color Scheme" msgstr "Renk Şeması" @@ -4181,12 +4172,12 @@ msgstr "Filament değişim süreleri" msgid "Cost" msgstr "Maliyet" -msgid "Color change" -msgstr "Renk değişimi" - msgid "Print" msgstr "Yazdır" +msgid "Color change" +msgstr "Renk değişimi" + msgid "Printer" msgstr "Yazıcı" @@ -6098,15 +6089,22 @@ msgid "The file does not contain any geometry data." msgstr "Dosya herhangi bir geometri verisi içermiyor." msgid "" -"Your object appears to be too large, Do you want to scale it down to fit the " -"heat bed automatically?" +"Your object appears to be too large. It will be scaled down to fit the heat " +"bed automatically." msgstr "" -"Nesneniz çok büyük görünüyor. Isı yatağına sığacak şekilde otomatik olarak " -"küçültmek istiyor musunuz?" +"Nesneniz çok büyük görünüyor. Plakaya otomatik olarak uyacak şekilde " +"küçültülecektir." msgid "Object too large" msgstr "Nesne çok büyük" +msgid "" +"Your object appears to be too large, Do you want to scale it down to fit the " +"heat bed automatically?" +msgstr "" +"Nesneniz çok büyük görünüyor. Plakaya sığacak şekilde otomatik olarak " +"küçültmek istiyor musunuz?" + msgid "Export STL file:" msgstr "STL dosyasını dışa aktar:" @@ -6481,9 +6479,6 @@ msgstr "Devam etmek istiyor musun?" msgid "Language selection" msgstr "Dil seçimi" -msgid "Switching application language while some presets are modified." -msgstr "Bazı ön ayarlar değiştirilirken uygulama dilinin değiştirilmesi." - msgid "Changing application language" msgstr "Dil değiştiriliyor" @@ -6680,6 +6675,12 @@ msgstr "" "Bu seçenek etkinleştirildiğinde, aynı anda birden fazla cihaza bir görev " "gönderebilir ve birden fazla cihazı yönetebilirsiniz." +msgid "Auto arrange plate after cloning" +msgstr "Klonlamadan sonra plakayı otomatik düzenle" + +msgid "Auto arrange plate after object cloning" +msgstr "Nesne klonlamadan sonra plakayı otomatik düzenleme" + msgid "Network" msgstr "Ağ" @@ -7671,12 +7672,21 @@ msgstr "Destek Filamenti" msgid "Tree supports" msgstr "Ağaç destekler" -msgid "Skirt" -msgstr "Etek" +msgid "Multimaterial" +msgstr "Çoklu Malzeme" msgid "Prime tower" msgstr "Prime Kulesi" +msgid "Filament for Features" +msgstr "Özellikler İçin Filament" + +msgid "Ooze prevention" +msgstr "Sızıntı önleme" + +msgid "Skirt" +msgstr "Etek" + msgid "Special mode" msgstr "Özel Mod" @@ -7729,6 +7739,9 @@ msgid "Recommended nozzle temperature range of this filament. 0 means no set" msgstr "" "Bu filamentin önerilen Nozul sıcaklığı aralığı. 0 ayar yok anlamına gelir" +msgid "Flow ratio and Pressure Advance" +msgstr "Akış Oranı Ve Basınç İlerlemesi" + msgid "Print chamber temperature" msgstr "Baskı Odası Sıcaklığı" @@ -7820,7 +7833,7 @@ msgstr "" "maksimum olacaktır" msgid "Auxiliary part cooling fan" -msgstr "Yardımcı parça soğutma fanı" +msgstr "Yardımcı Parça Soğutma Fanı" msgid "Exhaust fan" msgstr "Egzos Fanı" @@ -7837,9 +7850,6 @@ msgstr "Filament Başlangıç G Kodu" msgid "Filament end G-code" msgstr "Filament Bitiş G Kodu" -msgid "Multimaterial" -msgstr "Çoklu Malzeme" - msgid "Wipe tower parameters" msgstr "Silme Kulesi Parametreleri" @@ -7929,12 +7939,36 @@ msgstr "Sarsıntı Sınırlaması" msgid "Single extruder multimaterial setup" msgstr "Tek Ekstruder Çoklu Malzeme Kurulumu" +msgid "Number of extruders of the printer." +msgstr "Yazıcının ekstruder sayısı." + +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 "" +"Tek Ekstruder Çoklu Malzeme seçilir, \n" +"ve tüm ekstrüderlerin aynı çapa sahip olması gerekir.\n" +"Tüm ekstruderlerin çapını ilk ekstruder bozul çapı değerine değiştirmek ister " +"misiniz?" + +msgid "Nozzle diameter" +msgstr "Nozul çapı" + msgid "Wipe tower" msgstr "Silme Kulesi" msgid "Single extruder multimaterial parameters" msgstr "Tek Ekstruder Çoklu Malzeme Parametreleri" +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 "" +"Bu tek ekstruderli çok malzemeli bir yazıcıdır, tüm ekstruderlerin çapları " +"yeni değere ayarlanacaktır. Devam etmek istiyor musunuz?" + msgid "Layer height limits" msgstr "Katman Yüksekliği Sınırları" @@ -8441,11 +8475,8 @@ msgstr "Nesne listesi" msgid "Import geometry data from STL/STEP/3MF/OBJ/AMF files" msgstr "STL/STEP/3MF/OBJ/AMF dosyalarından geometri verilerini içe aktarın" -msgid "⌘+Shift+G" -msgstr "⌘+Shift+G" - -msgid "Ctrl+Shift+G" -msgstr "Ctrl+Shift+G" +msgid "Shift+G" +msgstr "Shift+G" msgid "Paste from clipboard" msgstr "Panodan yapıştır" @@ -8495,33 +8526,18 @@ msgstr "Shift+Tab" msgid "Collapse/Expand the sidebar" msgstr "Kenar çubuğunu daralt/genişlet" -msgid "⌘+Any arrow" -msgstr "⌘+Herhangi bir ok" +msgid "Any arrow" +msgstr "Herhangi bir ok" msgid "Movement in camera space" msgstr "Kamera alanında hareket" -msgid "⌥+Left mouse button" -msgstr "⌥+Sol fare düğmesi" - msgid "Select a part" msgstr "Parça seçin" -msgid "⌘+Left mouse button" -msgstr "⌘+Sol fare düğmesi" - msgid "Select multiple objects" msgstr "Birden fazla nesne seç" -msgid "Ctrl+Any arrow" -msgstr "Ctrl+Herhangi bir yön tuşu" - -msgid "Alt+Left mouse button" -msgstr "Alt+Sol fare düğmesi" - -msgid "Ctrl+Left mouse button" -msgstr "Ctrl+Sol fare düğmesi" - msgid "Shift+Left mouse button" msgstr "Shift+Sol fare düğmesi" @@ -8624,24 +8640,12 @@ msgstr "Plakacı" msgid "Move: press to snap by 1mm" msgstr "Hareket Ettir: 1 mm kadar yaslamak için basın" -msgid "⌘+Mouse wheel" -msgstr "⌘+Fare tekerleği" - msgid "Support/Color Painting: adjust pen radius" msgstr "Destek/Renkli Boyama: kalem yarıçapını ayarlayın" -msgid "⌥+Mouse wheel" -msgstr "⌥+Fare tekerleği" - msgid "Support/Color Painting: adjust section position" msgstr "Destek/Renkli Boyama: bölüm konumunu ayarlayın" -msgid "Ctrl+Mouse wheel" -msgstr "Ctrl+Fare tekerleği" - -msgid "Alt+Mouse wheel" -msgstr "Alt+Fare tekerleği" - msgid "Gizmo" msgstr "Gizmo" @@ -8951,6 +8955,12 @@ msgstr "" msgid "No object can be printed. Maybe too small" msgstr "Hiçbir nesne yazdırılamaz. Belki çok küçük" +msgid "" +"Your print is very close to the priming regions. Make sure there is no " +"collision." +msgstr "" +"Baskınız hazırlama bölgelerine çok yakın. Çarpışma olmadığından emin olun." + msgid "" "Failed to generate gcode for invalid custom G-code.\n" "\n" @@ -9192,11 +9202,13 @@ msgid "Variable layer height is not supported with Organic supports." msgstr "Değişken katman yüksekliği Organik desteklerle desteklenmez." msgid "" -"Different nozzle diameters and different filament diameters is not allowed " -"when prime tower is enabled." +"Different nozzle diameters and different filament diameters may not work well " +"when the prime tower is enabled. It's very experimental, so please proceed " +"with caution." msgstr "" -"Ana kule etkinleştirildiğinde farklı nozul çaplarına ve farklı filament " -"çaplarına izin verilmez." +"Farklı püskürtme ucu çapları ve farklı filaman çapları, ana kule " +"etkinleştirildiğinde iyi çalışmayabilir. Oldukça deneysel olduğundan lütfen " +"dikkatli ilerleyin." msgid "" "The Wipe Tower is currently only supported with the relative extruder " @@ -9205,8 +9217,12 @@ msgstr "" "Temizleme Kulesi şu anda yalnızca ilgili ekstruder adreslemesiyle " "desteklenmektedir (use_relative_e_distances=1)." -msgid "Ooze prevention is currently not supported with the prime tower enabled." -msgstr "Sızıntı önleme şu anda ana kule etkinken desteklenmemektedir." +msgid "" +"Ooze prevention is only supported with the wipe tower when " +"'single_extruder_multi_material' is off." +msgstr "" +"Sızıntı önleme yalnızca ‘tek ekstruder çoklu malzeme’ kapalıyken silme " +"kulesiyle desteklenir." msgid "" "The prime tower is currently only supported for the Marlin, RepRap/Sprinter, " @@ -10652,6 +10668,139 @@ msgstr "" msgid "Pressure advance(Klipper) AKA Linear advance factor(Marlin)" msgstr "Basınç avansı (Klipper) Doğrusal ilerleme faktörü (Marlin)" +msgid "Enable adaptive pressure advance (beta)" +msgstr "Uyarlanabilir basınç ilerlemesini etkinleştir (beta)" + +msgid "" +"With increasing print speeds (and hence increasing volumetric flow through " +"the nozzle) and increasing accelerations, it has been observed that the " +"effective PA value typically decreases. This means that a single PA value is " +"not always 100% optimal for all features and a compromise value is usually " +"used that does not cause too much bulging on features with lower flow speed " +"and accelerations while also not causing gaps on faster features.\n" +"\n" +"This feature aims to address this limitation by modeling the response of your " +"printer's extrusion system depending on the volumetric flow speed and " +"acceleration it is printing at. Internally, it generates a fitted model that " +"can extrapolate the needed pressure advance for any given volumetric flow " +"speed and acceleration, which is then emmited to the printer depending on the " +"current print conditions.\n" +"\n" +"When enabled, the pressure advance value above is overriden. However, a " +"reasonable default value above is strongly recomended to act as a fallback " +"and for when tool changing.\n" +"\n" +msgstr "" +"Baskı hızlarının artmasıyla (ve dolayısıyla püskürtme ucunda hacimsel akışın " +"artmasıyla) ve hızlanmaların artmasıyla, etkin basınç değerinin tipik olarak " +"azaldığı gözlemlenmiştir. Bu, tek bir basınç değerinin tüm özellikler için " +"her zaman %100 optimal olmadığı ve genellikle daha düşük akış hızına ve " +"ivmeye sahip özelliklerde çok fazla çıkıntıya neden olmayan ve aynı zamanda " +"daha hızlı özelliklerde boşluklara neden olmayan bir uzlaşma değerinin " +"kullanıldığı anlamına gelir.\n" +"\n" +"Bu özellik, yazıcınızın ekstrüzyon sisteminin tepkisini hacimsel akış hızına " +"ve baskı yaptığı ivmeye bağlı olarak modelleyerek bu sınırlamayı gidermeyi " +"amaçlamaktadır. Dahili olarak, herhangi bir hacimsel akış hızı ve ivme için " +"gerekli basınç ilerlemesini tahmin edebilen uygun bir model oluşturur ve bu " +"daha sonra mevcut yazdırma koşullarına bağlı olarak yazıcıya gönderilir.\n" +"\n" +"Etkinleştirildiğinde yukarıdaki basınç ilerleme değeri geçersiz kılınır. " +"Bununla birlikte, yukarıdaki makul bir varsayılan değerin, bir geri dönüş " +"olarak ve takım değişimi sırasında kullanılması önemle tavsiye edilir.\n" + +msgid "Adaptive pressure advance measurements (beta)" +msgstr "Uyarlanabilir basınç ilerleme ölçümleri (beta)" + +msgid "" +"Add sets of pressure advance (PA) values, the volumetric flow speeds and " +"accelerations they were measured at, separated by a comma. One set of values " +"per line. For example\n" +"0.04,3.96,3000\n" +"0.033,3.96,10000\n" +"0.029,7.91,3000\n" +"0.026,7.91,10000\n" +"\n" +"How to calibrate:\n" +"1. Run the pressure advance test for at least 3 speeds per acceleration " +"value. It is recommended that the test is run for at least the speed of the " +"external perimeters, the speed of the internal perimeters and the fastest " +"feature print speed in your profile (usually its the sparse or solid infill). " +"Then run them for the same speeds for the slowest and fastest print " +"accelerations,and no faster than the recommended maximum acceleration as " +"given by the klipper input shaper.\n" +"2. Take note of the optimal PA value for each volumetric flow speed and " +"acceleration. You can find the flow number by selecting flow from the color " +"scheme drop down and move the horizontal slider over the PA pattern lines. " +"The number should be visible at the bottom of the page. The ideal PA value " +"should be decreasing the higher the volumetric flow is. If it is not, confirm " +"that your extruder is functioning correctly.The slower and with less " +"acceleration you print, the larger the range of acceptable PA values. If no " +"difference is visible, use the PA value from the faster test.3. Enter the " +"triplets of PA values, Flow and Accelerations in the text box here and save " +"your filament profile\n" +"\n" +msgstr "" +"Basınç ilerlemesi (basınç) değerlerinin setlerini, hacimsel akış hızlarını ve " +"ölçüldükleri ivmeleri virgülle ayırarak ekleyin. Satır başına bir değer " +"kümesi. Örneğin\n" +"0.04,3.96,3000\n" +"0,033,3,96,10000\n" +"0.029,7.91,3000\n" +"0.026,7.91,10000\n" +"\n" +"Nasıl kalibre edilir:\n" +"1. Hızlanma değeri başına en az 3 hız için basınç ilerleme testini " +"çalıştırın. Testin en azından dış çevrelerin hızı, iç çevrelerin hızı ve " +"profilinizdeki en hızlı özellik yazdırma hızı (genellikle seyrek veya katı " +"dolgudur) için çalıştırılması önerilir. Daha sonra bunları, en yavaş ve en " +"hızlı yazdırma hızlanmaları için aynı hızlarda çalıştırın ve klipper giriş " +"şekillendirici tarafından verilen önerilen maksimum hızlanmadan daha hızlı " +"değil.\n" +"2. Her hacimsel akış hızı ve ivme için en uygun PA değerini not edin. Renk " +"şeması açılır menüsünden akışı seçerek ve yatay kaydırıcıyı PA desen " +"çizgileri üzerinde hareket ettirerek akış numarasını bulabilirsiniz. Numara " +"sayfanın altında görünmelidir. İdeal PA değeri hacimsel akış ne kadar yüksek " +"olursa o kadar azalmalıdır. Değilse, ekstruderinizin doğru şekilde " +"çalıştığını doğrulayın. Ne kadar yavaş ve daha az ivmeyle yazdırırsanız, " +"kabul edilebilir PA değerleri aralığı o kadar geniş olur. Hiçbir fark " +"görünmüyorsa, daha hızlı olan testteki PA değerini kullanın.3. Buradaki metin " +"kutusuna PA değerleri, Akış ve Hızlanma üçlüsünü girin ve filament " +"profilinizi kaydedin\n" + +msgid "Enable adaptive pressure advance for overhangs (beta)" +msgstr "Çıkıntılar için uyarlanabilir basınç ilerlemesini etkinleştirin (beta)" + +msgid "" +"Enable adaptive PA for overhangs as well as when flow changes within the same " +"feature. This is an experimental option, as if the PA profile is not set " +"accurately, it will cause uniformity issues on the external surfaces before " +"and after overhangs.\n" +msgstr "" +"Aynı özellik içinde akış değiştiğinde ve çıkıntılar için uyarlanabilir PA’yı " +"etkinleştirin. Bu deneysel bir seçenektir, sanki basınç profili doğru " +"ayarlanmazsa, çıkma öncesi ve sonrası dış yüzeylerde yeknesaklık sorunlarına " +"neden olacaktır.\n" + +msgid "Pressure advance for bridges" +msgstr "Köprüler için basınç ilerlemesi" + +msgid "" +"Pressure advance value for bridges. Set to 0 to disable. \n" +"\n" +" A lower PA value when printing bridges helps reduce the appearance of slight " +"under extrusion immediately after bridges. This is caused by the pressure " +"drop in the nozzle when printing in the air and a lower PA helps counteract " +"this." +msgstr "" +"Köprüler için basınç ilerleme değeri. Devre dışı bırakmak için 0’a " +"ayarlayın. \n" +"\n" +" Köprüleri yazdırırken daha düşük bir basınç değeri, köprülerden hemen sonra " +"hafif ekstrüzyon görünümünün azaltılmasına yardımcı olur. Bunun nedeni, " +"havada yazdırma sırasında nozuldaki basınç düşüşüdür ve daha düşük bir " +"basınç, bunu önlemeye yardımcı olur." + msgid "" "Default line width if other line widths are set to 0. If expressed as a %, it " "will be computed over the nozzle diameter." @@ -10854,6 +11003,25 @@ msgstr "" "Filament, soğutma tüpleri içinde ileri geri hareket ettirilerek soğutulur. Bu " "sayısını belirtin." +msgid "Stamping loading speed" +msgstr "Damgalama yükleme hızı" + +msgid "Speed used for stamping." +msgstr "Damgalama için kullanılan hız." + +msgid "Stamping distance measured from the center of the cooling tube" +msgstr "Soğutma tüpünün merkezinden ölçülen damgalama mesafesi" + +msgid "" +"If set to nonzero value, filament is moved toward the nozzle between the " +"individual cooling moves (\"stamping\"). This option configures how long this " +"movement should be before the filament is retracted again." +msgstr "" +"Sıfırdan farklı bir değere ayarlanırsa filaman bireysel soğutma hareketleri " +"arasında (“damgalama”) nüzule doğru hareket ettirilir. Bu seçenek, filamanın " +"tekrar geri çekilmesinden önce bu hareketin ne kadar sürmesi gerektiğini " +"yapılandırır." + msgid "Speed of the first cooling move" msgstr "İlk soğutma hareketi hızı" @@ -11223,7 +11391,7 @@ msgstr "Başlangıç katman yüksekliği" msgid "" "Height of initial layer. Making initial layer height to be thick slightly can " -"improve build plate adhension" +"improve build plate adhesion" msgstr "" "İlk katmanın yüksekliği. İlk katman yüksekliğini biraz kalın yapmak, baskı " "plakasının yapışmasını iyileştirebilir" @@ -11674,10 +11842,16 @@ msgstr "" msgid "Interlocking depth of a segmented region" msgstr "Bölümlere ayrılmış bir bölgenin birbirine kenetlenen derinliği" -msgid "Interlocking depth of a segmented region. Zero disables this feature." +msgid "" +"Interlocking depth of a segmented region. It will be ignored if " +"\"mmu_segmented_region_max_width\" is zero or if " +"\"mmu_segmented_region_interlocking_depth\"is bigger then " +"\"mmu_segmented_region_max_width\". Zero disables this feature." msgstr "" -"Bölümlere ayrılmış bir bölgenin birbirine kenetlenen derinliği. 0 bu özelliği " -"devre dışı bırakır." +"Bölümlere ayrılmış bir bölgenin birbirine kenetlenen derinliği. " +"“mmu_segmented_region_max_width” sıfırsa veya " +"“mmu_segmented_region_interlocking_length”, “mmu_segmented_region_max_width” " +"değerinden büyükse göz ardı edilecektir. Sıfır bu özelliği devre dışı bırakır." msgid "Use beam interlocking" msgstr "Işın kilitlemeyi kullanın" @@ -12093,9 +12267,6 @@ msgstr "" "minimum katman süresini korumaya çalışmak için yazıcının yavaşlayacağı " "minimum yazdırma hızı." -msgid "Nozzle diameter" -msgstr "Nozul çapı" - msgid "Diameter of nozzle" msgstr "Nozul çapı" @@ -12194,6 +12365,13 @@ msgstr "" "azaltabilir ve yazdırma süresinden tasarruf sağlayabilir, ancak dilimlemeyi " "ve G kodu oluşturmayı yavaşlatır" +msgid "" +"This option will drop the temperature of the inactive extruders to prevent " +"oozing." +msgstr "" +"Bu seçenek sızıntıyı önlemek için aktif olmayan ekstrüderlerin sıcaklığını " +"düşürecektir." + msgid "Filename format" msgstr "Dosya adı formatı" @@ -12244,6 +12422,9 @@ msgstr "" "Çizgi genişliğine göre çıkıntı yüzdesini tespit edin ve yazdırmak için farklı " "hızlar kullanın. %%100 çıkıntı için köprü hızı kullanılır." +msgid "Filament to print walls" +msgstr "Duvarları yazdırmak için filament" + msgid "" "Line width of inner wall. If expressed as a %, it will be computed over the " "nozzle diameter." @@ -12291,12 +12472,21 @@ msgstr "" "Betiklere ilk argüman olarak G-code dosyasının mutlak yolu aktarılır ve ortam " "değişkenlerini okuyarak Orca Slicer yapılandırma ayarlarına erişebilirler." +msgid "Printer type" +msgstr "Yazıcı türü" + +msgid "Type of the printer" +msgstr "Yazıcı türü" + msgid "Printer notes" msgstr "Yazıcı notları" msgid "You can put your notes regarding the printer here." msgstr "Yazıcı ile ilgili notlarınızı buraya yazabilirsiniz." +msgid "Printer variant" +msgstr "Yazıcı çeşidi" + msgid "Raft contact Z distance" msgstr "Raft kontak Z mesafesi" @@ -12442,12 +12632,14 @@ msgid "Spiral" msgstr "Spiral" msgid "Traveling angle" -msgstr "" +msgstr "Seyahat açısı" msgid "" "Traveling angle for Slope and Spiral Z hop type. Setting it to 90° results in " "Normal Lift" msgstr "" +"Eğim ve Spiral Z atlama tipi için ilerleme açısı. 90°’ye ayarlamak normal " +"kaldırmayla sonuçlanır" msgid "Only lift Z above" msgstr "Z'yi sadece şu değerin üstündeki durumlarda kaldır" @@ -12864,6 +13056,12 @@ msgstr "" "Eşik değerinden küçük olan seyrek dolgu alanı, yerini iç katı dolguya " "bırakmıştır" +msgid "Solid infill" +msgstr "Katı dolgu" + +msgid "Filament to print solid infill" +msgstr "Katı dolguyu yazdırmak için filament" + msgid "" "Line width of internal solid infill. If expressed as a %, it will be computed " "over the nozzle diameter." @@ -12927,6 +13125,40 @@ msgstr "Geleneksel" msgid "Temperature variation" msgstr "Sıcaklık değişimi" +#. TRN PrintSettings : "Ooze prevention" > "Temperature variation" +msgid "" +"Temperature difference to be applied when an extruder is not active. The " +"value is not used when 'idle_temperature' in filament settings is set to non " +"zero value." +msgstr "" +"Ekstruder aktif olmadığında uygulanacak sıcaklık farkı. Filament ayarlarında " +"‘rölanti sıcaklığı’ sıfır olmayan bir değere ayarlandığında bu değer " +"kullanılmaz." + +msgid "Preheat time" +msgstr "Ön ısıtma süresi" + +msgid "" +"To reduce the waiting time after tool change, Orca can preheat the next tool " +"while the current tool is still in use. This setting specifies the time in " +"seconds to preheat the next tool. Orca will insert a M104 command to preheat " +"the tool in advance." +msgstr "" +"Takım değişiminden sonra bekleme süresini azaltmak için Orca, mevcut takım " +"hala kullanımdayken bir sonraki takıma ön ısıtma yapabilir. Bu ayar, bir " +"sonraki takımın ön ısıtılması için gereken süreyi saniye cinsinden belirtir. " +"Orca, aleti önceden ısıtmak için bir M104 komutu ekleyecektir." + +msgid "Preheat steps" +msgstr "Ön ısıtma adımları" + +msgid "" +"Insert multiple preheat commands(e.g. M104.1). Only useful for Prusa XL. For " +"other printers, please set it to 1." +msgstr "" +"Birden fazla ön ısıtma komutu ekleyin (örn. M104.1). Yalnızca Prusa XL için " +"kullanışlıdır. Diğer yazıcılar için lütfen 1’e ayarlayın." + msgid "Start G-code" msgstr "Başlangıç G Kodu" @@ -13590,12 +13822,6 @@ msgstr "" "Silme kulesini stabilize etmek için kullanılan koninin tepe noktasındaki açı. " "Daha büyük açı daha geniş taban anlamına gelir." -msgid "Wipe tower purge lines spacing" -msgstr "Silme kulesi temizleme hatları aralığı" - -msgid "Spacing of purge lines on the wipe tower." -msgstr "Silme kulesindeki boşaltma hatlarının aralığı." - msgid "Maximum wipe tower print speed" msgstr "Maksimum silme kulesi yazdırma hızı" @@ -13640,9 +13866,6 @@ msgstr "" "Silme kulesi dış çevreleri için bu ayardan bağımsız olarak iç çevre hızı " "kullanılır." -msgid "Wipe tower extruder" -msgstr "Silme kulesi ekstruderi" - msgid "" "The extruder to use when printing perimeter of the wipe tower. Set to 0 to " "use the one that is available (non-soluble would be preferred)." @@ -13702,6 +13925,36 @@ msgstr "" "olarak nesnelerin renkleri karıştırılacaktır. Prime tower etkinleştirilmediği " "sürece etkili olmayacaktır." +msgid "Wipe tower purge lines spacing" +msgstr "Silme kulesi temizleme hatları aralığı" + +msgid "Spacing of purge lines on the wipe tower." +msgstr "Silme kulesindeki boşaltma hatlarının aralığı." + +msgid "Extra flow for purging" +msgstr "Temizleme için ekstra akış" + +msgid "" +"Extra flow used for the purging lines on the wipe tower. This makes the " +"purging lines thicker or narrower than they normally would be. The spacing is " +"adjusted automatically." +msgstr "" +"Silme kulesindeki temizleme hatları için ekstra akış kullanılır. Bu, " +"temizleme hatlarının normalde olduğundan daha kalın veya daha dar olmasına " +"neden olur. Aralık otomatik olarak ayarlanır." + +msgid "Idle temperature" +msgstr "Boşta sıcaklık" + +msgid "" +"Nozzle temperature when the tool is currently not used in multi-tool setups." +"This is only used when 'Ooze prevention' is active in Print Settings. Set to " +"0 to disable." +msgstr "" +"Alet şu anda çoklu alet kurulumlarında kullanılmadığında püskürtme ucu " +"sıcaklığı. Bu yalnızca Yazdırma Ayarlarında ‘Sızıntı önleme’ etkin olduğunda " +"kullanılır. Devre dışı bırakmak için 0’a ayarlayın." + msgid "X-Y hole compensation" msgstr "X-Y delik dengeleme" @@ -14048,6 +14301,16 @@ msgid "Currently planned extra extruder priming after deretraction." msgstr "" "Şu anda, geri çekilmeden sonra ekstra ekstruder hazırlaması planlanıyor." +msgid "Absolute E position" +msgstr "Mutlak E konumu" + +msgid "" +"Current position of the extruder axis. Only used with absolute extruder " +"addressing." +msgstr "" +"Ekstruder ekseninin mevcut konumu. Yalnızca mutlak ekstruder adreslemeyle " +"kullanılır." + msgid "Current extruder" msgstr "Mevcut ekstruder" @@ -14097,6 +14360,12 @@ msgstr "" "Belirli bir ekstruderin baskıda kullanılıp kullanılmadığını belirten bool " "vektörü." +msgid "Has single extruder MM priming" +msgstr "Tek ekstruder MM astarına sahiptir" + +msgid "Are the extra multi-material priming regions used in this print?" +msgstr "Bu baskıda ekstra çok malzemeli astarlama bölgeleri kullanılıyor mu?" + msgid "Volume per extruder" msgstr "Ekstruder başına hacim" @@ -14261,6 +14530,16 @@ msgstr "Fiziksel yazıcı adı" msgid "Name of the physical printer used for slicing." msgstr "Dilimleme için kullanılan fiziksel yazıcının adı." +msgid "Number of extruders" +msgstr "Ekstruder sayısı" + +msgid "" +"Total number of extruders, regardless of whether they are used in the current " +"print." +msgstr "" +"Geçerli baskıda kullanılıp kullanılmadığına bakılmaksızın ekstrüderlerin " +"toplam sayısı." + msgid "Layer number" msgstr "Katman numarası" @@ -16681,6 +16960,80 @@ msgstr "" "sıcaklığının uygun şekilde arttırılmasının bükülme olasılığını " "azaltabileceğini biliyor muydunuz?" +#~ msgid "up to" +#~ msgstr "kadar" + +#~ msgid "above" +#~ msgstr "üstünde" + +#~ msgid "from" +#~ msgstr "itibaren" + +#~ msgid "Switching application language while some presets are modified." +#~ msgstr "Bazı ön ayarlar değiştirilirken uygulama dilinin değiştirilmesi." + +#~ msgid "⌘+Shift+G" +#~ msgstr "⌘+Shift+G" + +#~ msgid "Ctrl+Shift+G" +#~ msgstr "Ctrl+Shift+G" + +#~ msgid "⌘+Any arrow" +#~ msgstr "⌘+Herhangi bir ok" + +#~ msgid "⌥+Left mouse button" +#~ msgstr "⌥+Sol fare düğmesi" + +#~ msgid "⌘+Left mouse button" +#~ msgstr "⌘+Sol fare düğmesi" + +#~ msgid "Ctrl+Any arrow" +#~ msgstr "Ctrl+Herhangi bir yön tuşu" + +#~ msgid "Alt+Left mouse button" +#~ msgstr "Alt+Sol fare düğmesi" + +#~ msgid "Ctrl+Left mouse button" +#~ msgstr "Ctrl+Sol fare düğmesi" + +#~ msgid "⌘+Mouse wheel" +#~ msgstr "⌘+Fare tekerleği" + +#~ msgid "⌥+Mouse wheel" +#~ msgstr "⌥+Fare tekerleği" + +#~ msgid "Ctrl+Mouse wheel" +#~ msgstr "Ctrl+Fare tekerleği" + +#~ msgid "Alt+Mouse wheel" +#~ msgstr "Alt+Fare tekerleği" + +#~ msgid "" +#~ "Different nozzle diameters and different filament diameters is not allowed " +#~ "when prime tower is enabled." +#~ msgstr "" +#~ "Ana kule etkinleştirildiğinde farklı nozul çaplarına ve farklı filament " +#~ "çaplarına izin verilmez." + +#~ msgid "" +#~ "Ooze prevention is currently not supported with the prime tower enabled." +#~ msgstr "Sızıntı önleme şu anda ana kule etkinken desteklenmemektedir." + +#~ msgid "" +#~ "Height of initial layer. Making initial layer height to be thick slightly " +#~ "can improve build plate adhension" +#~ msgstr "" +#~ "İlk katmanın yüksekliği. İlk katman yüksekliğini biraz kalın yapmak, baskı " +#~ "plakasının yapışmasını iyileştirebilir" + +#~ msgid "Interlocking depth of a segmented region. Zero disables this feature." +#~ msgstr "" +#~ "Bölümlere ayrılmış bir bölgenin birbirine kenetlenen derinliği. 0 bu " +#~ "özelliği devre dışı bırakır." + +#~ msgid "Wipe tower extruder" +#~ msgstr "Silme kulesi ekstruderi" + #~ msgid "Current association: " #~ msgstr "Mevcut dernek:" diff --git a/localization/i18n/uk/OrcaSlicer_uk.po b/localization/i18n/uk/OrcaSlicer_uk.po index 6d2ef2fed39..1c0db334412 100644 --- a/localization/i18n/uk/OrcaSlicer_uk.po +++ b/localization/i18n/uk/OrcaSlicer_uk.po @@ -8,7 +8,7 @@ msgid "" msgstr "" "Project-Id-Version: \n" "Report-Msgid-Bugs-To: \n" -"POT-Creation-Date: 2024-06-30 15:44+0200\n" +"POT-Creation-Date: 2024-08-03 18:54+0200\n" "PO-Revision-Date: 2024-06-30 23:05+0300\n" "Last-Translator: \n" "Language-Team: \n" @@ -80,9 +80,6 @@ msgstr "Розумний кут заповнення" msgid "On overhangs only" msgstr "Лише на звисах" -msgid "Auto support threshold angle: " -msgstr "Пороговий кут автоматичної підтримки: " - msgid "Circle" msgstr "Коло" @@ -102,6 +99,9 @@ msgstr "Малювання лише на вибраних гранях: \"%1%\"" msgid "Highlight faces according to overhang angle." msgstr "Виділити межі з відповідним кутом виступу." +msgid "Auto support threshold angle: " +msgstr "Пороговий кут автоматичної підтримки: " + msgid "No auto support" msgstr "Немає автоматичної підтримки" @@ -4151,15 +4151,6 @@ msgstr "Загальний час" msgid "Total cost" msgstr "Загальна вартість" -msgid "up to" -msgstr "аж до" - -msgid "above" -msgstr "вище" - -msgid "from" -msgstr "від" - msgid "Color Scheme" msgstr "Колірна схема" @@ -4223,12 +4214,12 @@ msgstr "Час зміни філаменту" msgid "Cost" msgstr "Витрата" -msgid "Color change" -msgstr "Зміна кольору" - msgid "Print" msgstr "Друк" +msgid "Color change" +msgstr "Зміна кольору" + msgid "Printer" msgstr "Принтер" @@ -6160,6 +6151,14 @@ msgstr "Виявлено об'єкт, що складається з кільк msgid "The file does not contain any geometry data." msgstr "Файл не містить геометричних даних." +msgid "" +"Your object appears to be too large. It will be scaled down to fit the heat " +"bed automatically." +msgstr "" + +msgid "Object too large" +msgstr "Об'єкт занадто великий" + msgid "" "Your object appears to be too large, Do you want to scale it down to fit the " "heat bed automatically?" @@ -6168,9 +6167,6 @@ msgstr "" "відповідав розміру?\n" "підігрів столу автоматично?" -msgid "Object too large" -msgstr "Об'єкт занадто великий" - msgid "Export STL file:" msgstr "Експорт файлу STL:" @@ -6547,9 +6543,6 @@ msgstr "Ви хочете продовжувати?" msgid "Language selection" msgstr "Вибір мови" -msgid "Switching application language while some presets are modified." -msgstr "Переключення мови програми при зміні деяких пресетів." - msgid "Changing application language" msgstr "Зміна мови програми" @@ -6751,6 +6744,12 @@ msgstr "" "З цією опцією ввімкненою, ви можете відправляти завдання на кілька пристроїв " "одночасно та керувати декількома пристроями." +msgid "Auto arrange plate after cloning" +msgstr "" + +msgid "Auto arrange plate after object cloning" +msgstr "" + msgid "Network" msgstr "Мережа" @@ -7747,12 +7746,21 @@ msgstr "Філамент підтримки" msgid "Tree supports" msgstr "Органічні підтримки" -msgid "Skirt" -msgstr "Плінтус" +msgid "Multimaterial" +msgstr "Мультиматеріал" msgid "Prime tower" msgstr "Вежа Очищення" +msgid "Filament for Features" +msgstr "" + +msgid "Ooze prevention" +msgstr "" + +msgid "Skirt" +msgstr "Плінтус" + msgid "Special mode" msgstr "Спеціальний режим" @@ -7807,6 +7815,9 @@ msgstr "" "Рекомендований діапазон температур сопла для цього філаменту. 0 означає " "відсутність установки" +msgid "Flow ratio and Pressure Advance" +msgstr "" + msgid "Print chamber temperature" msgstr "Температура в камері друку" @@ -7917,9 +7928,6 @@ msgstr "G-код початку філаменту" msgid "Filament end G-code" msgstr "G-код кінця філаменту" -msgid "Multimaterial" -msgstr "Мультиматеріал" - msgid "Wipe tower parameters" msgstr "Параметри вежі витирання" @@ -8009,12 +8017,30 @@ msgstr "Обмеження ривка" msgid "Single extruder multimaterial setup" msgstr "Установка для роботи з декількома матеріалами на одному екструдері" +msgid "Number of extruders of the printer." +msgstr "" + +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 "" + +msgid "Nozzle diameter" +msgstr "Діаметр сопла" + msgid "Wipe tower" msgstr "Вежа витирання" msgid "Single extruder multimaterial parameters" msgstr "Параметри екструдеру в багато-екструдерному принтері" +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 "" + msgid "Layer height limits" msgstr "Обмеження висоти шару" @@ -8528,11 +8554,8 @@ msgstr "Список об'єктів" msgid "Import geometry data from STL/STEP/3MF/OBJ/AMF files" msgstr "Імпорт геометричних даних із файлів STL/STEP/3MF/OBJ/AMF" -msgid "⌘+Shift+G" -msgstr "⌘+Shift+G" - -msgid "Ctrl+Shift+G" -msgstr "Ctrl+Shift+G" +msgid "Shift+G" +msgstr "" msgid "Paste from clipboard" msgstr "Вставити з буфера обміну" @@ -8582,33 +8605,18 @@ msgstr "Shift+Tab" msgid "Collapse/Expand the sidebar" msgstr "Згорнути/розгорнути бічну панель" -msgid "⌘+Any arrow" -msgstr "⌘+будь-яка стрілка" +msgid "Any arrow" +msgstr "" msgid "Movement in camera space" msgstr "Рух у просторі камери" -msgid "⌥+Left mouse button" -msgstr "⌥+Ліва кнопка миші" - msgid "Select a part" msgstr "Виберіть частину" -msgid "⌘+Left mouse button" -msgstr "⌘+Ліва кнопка миші" - msgid "Select multiple objects" msgstr "Вибрати кілька об'єктів" -msgid "Ctrl+Any arrow" -msgstr "Ctrl+будь-яка стрілка" - -msgid "Alt+Left mouse button" -msgstr "Alt+Ліва кнопка миші" - -msgid "Ctrl+Left mouse button" -msgstr "Ctrl+Ліва кнопка миші" - msgid "Shift+Left mouse button" msgstr "Shift+Ліва кнопка миші" @@ -8711,24 +8719,12 @@ msgstr "Тарілка" msgid "Move: press to snap by 1mm" msgstr "Переміщення: натисніть для переміщення на 1 мм" -msgid "⌘+Mouse wheel" -msgstr "⌘+Колесо миші" - msgid "Support/Color Painting: adjust pen radius" msgstr "Підтримка/Колірне малювання: регулювання радіуса пера" -msgid "⌥+Mouse wheel" -msgstr "⌥+Колесо миші" - msgid "Support/Color Painting: adjust section position" msgstr "Підтримка/кольорове фарбування: регулювання положення секцій" -msgid "Ctrl+Mouse wheel" -msgstr "Ctrl+Колесо миші" - -msgid "Alt+Mouse wheel" -msgstr "Alt+колесо миші" - msgid "Gizmo" msgstr "Gizmo" @@ -9038,6 +9034,11 @@ msgstr "" msgid "No object can be printed. Maybe too small" msgstr "Жодний об'єкт не може бути надрукований. Можливо, занадто маленький" +msgid "" +"Your print is very close to the priming regions. Make sure there is no " +"collision." +msgstr "" + msgid "" "Failed to generate gcode for invalid custom G-code.\n" "\n" @@ -9283,11 +9284,10 @@ msgid "Variable layer height is not supported with Organic supports." msgstr "Змінна висота шару не підтримується з органічними підтримками." msgid "" -"Different nozzle diameters and different filament diameters is not allowed " -"when prime tower is enabled." +"Different nozzle diameters and different filament diameters may not work " +"well when the prime tower is enabled. It's very experimental, so please " +"proceed with caution." msgstr "" -"Використання різних діаметрів насадок та різних діаметрів філаментів не " -"допускається, коли увімкнено вежу підготовки." msgid "" "The Wipe Tower is currently only supported with the relative extruder " @@ -9297,10 +9297,9 @@ msgstr "" "адресації екструдера (use_relative_e_distances=1)." msgid "" -"Ooze prevention is currently not supported with the prime tower enabled." +"Ooze prevention is only supported with the wipe tower when " +"'single_extruder_multi_material' is off." msgstr "" -"Запобігання витіканню з увімкненою вежею підготовки в даний момент не " -"підтримується." msgid "" "The prime tower is currently only supported for the Marlin, RepRap/Sprinter, " @@ -10759,6 +10758,86 @@ msgid "Pressure advance(Klipper) AKA Linear advance factor(Marlin)" msgstr "" "Підвищення тиску (Klipper) AKA Коефіцієнт лінійного просування (Marlin)" +msgid "Enable adaptive pressure advance (beta)" +msgstr "" + +#, c-format, boost-format +msgid "" +"With increasing print speeds (and hence increasing volumetric flow through " +"the nozzle) and increasing accelerations, it has been observed that the " +"effective PA value typically decreases. This means that a single PA value is " +"not always 100% optimal for all features and a compromise value is usually " +"used that does not cause too much bulging on features with lower flow speed " +"and accelerations while also not causing gaps on faster features.\n" +"\n" +"This feature aims to address this limitation by modeling the response of " +"your printer's extrusion system depending on the volumetric flow speed and " +"acceleration it is printing at. Internally, it generates a fitted model that " +"can extrapolate the needed pressure advance for any given volumetric flow " +"speed and acceleration, which is then emmited to the printer depending on " +"the current print conditions.\n" +"\n" +"When enabled, the pressure advance value above is overriden. However, a " +"reasonable default value above is strongly recomended to act as a fallback " +"and for when tool changing.\n" +"\n" +msgstr "" + +msgid "Adaptive pressure advance measurements (beta)" +msgstr "" + +msgid "" +"Add sets of pressure advance (PA) values, the volumetric flow speeds and " +"accelerations they were measured at, separated by a comma. One set of values " +"per line. For example\n" +"0.04,3.96,3000\n" +"0.033,3.96,10000\n" +"0.029,7.91,3000\n" +"0.026,7.91,10000\n" +"\n" +"How to calibrate:\n" +"1. Run the pressure advance test for at least 3 speeds per acceleration " +"value. It is recommended that the test is run for at least the speed of the " +"external perimeters, the speed of the internal perimeters and the fastest " +"feature print speed in your profile (usually its the sparse or solid " +"infill). Then run them for the same speeds for the slowest and fastest print " +"accelerations,and no faster than the recommended maximum acceleration as " +"given by the klipper input shaper.\n" +"2. Take note of the optimal PA value for each volumetric flow speed and " +"acceleration. You can find the flow number by selecting flow from the color " +"scheme drop down and move the horizontal slider over the PA pattern lines. " +"The number should be visible at the bottom of the page. The ideal PA value " +"should be decreasing the higher the volumetric flow is. If it is not, " +"confirm that your extruder is functioning correctly.The slower and with less " +"acceleration you print, the larger the range of acceptable PA values. If no " +"difference is visible, use the PA value from the faster test.3. Enter the " +"triplets of PA values, Flow and Accelerations in the text box here and save " +"your filament profile\n" +"\n" +msgstr "" + +msgid "Enable adaptive pressure advance for overhangs (beta)" +msgstr "" + +msgid "" +"Enable adaptive PA for overhangs as well as when flow changes within the " +"same feature. This is an experimental option, as if the PA profile is not " +"set accurately, it will cause uniformity issues on the external surfaces " +"before and after overhangs.\n" +msgstr "" + +msgid "Pressure advance for bridges" +msgstr "" + +msgid "" +"Pressure advance value for bridges. Set to 0 to disable. \n" +"\n" +" A lower PA value when printing bridges helps reduce the appearance of " +"slight under extrusion immediately after bridges. This is caused by the " +"pressure drop in the nozzle when printing in the air and a lower PA helps " +"counteract this." +msgstr "" + msgid "" "Default line width if other line widths are set to 0. If expressed as a %, " "it will be computed over the nozzle diameter." @@ -10949,6 +11028,21 @@ msgstr "" "Філамент охолоджується шляхом переміщення вперед-назад у охолоджувальних " "трубках. Вкажіть бажану кількість цих рухів." +msgid "Stamping loading speed" +msgstr "" + +msgid "Speed used for stamping." +msgstr "" + +msgid "Stamping distance measured from the center of the cooling tube" +msgstr "" + +msgid "" +"If set to nonzero value, filament is moved toward the nozzle between the " +"individual cooling moves (\"stamping\"). This option configures how long " +"this movement should be before the filament is retracted again." +msgstr "" + msgid "Speed of the first cooling move" msgstr "Швидкість першого охолоджуючого руху" @@ -11784,9 +11878,12 @@ msgstr "Максимальна ширина сегментованої обла msgid "Interlocking depth of a segmented region" msgstr "Глибина взаємного взаємодії сегментованої області" -msgid "Interlocking depth of a segmented region. Zero disables this feature." +msgid "" +"Interlocking depth of a segmented region. It will be ignored if " +"\"mmu_segmented_region_max_width\" is zero or if " +"\"mmu_segmented_region_interlocking_depth\"is bigger then " +"\"mmu_segmented_region_max_width\". Zero disables this feature." msgstr "" -"Глибина взаємного взаємодії сегментованої області. Нуль вимикає цю функцію." msgid "Use beam interlocking" msgstr "" @@ -12197,9 +12294,6 @@ msgstr "" "зберегти мінімальний час проходження шару, вказаний вище, коли ввімкнено " "сповільнення для кращого охолодження шару." -msgid "Nozzle diameter" -msgstr "Діаметр сопла" - msgid "Diameter of nozzle" msgstr "Діаметр сопла" @@ -12298,6 +12392,11 @@ msgstr "" "витікання не буде помітно. Це може зменшити час втягування складної моделі " "та заощадити час друку, але уповільнить нарізку та генерацію G-коду" +msgid "" +"This option will drop the temperature of the inactive extruders to prevent " +"oozing." +msgstr "" + msgid "Filename format" msgstr "Формат імені файлу" @@ -12347,6 +12446,9 @@ msgstr "" "Визначте відсоток звису щодо ширини лінії та використовуйте для друку іншу " "швидкість. Для 100%% -ного звису використовується швидкість моста." +msgid "Filament to print walls" +msgstr "" + msgid "" "Line width of inner wall. If expressed as a %, it will be computed over the " "nozzle diameter." @@ -12397,12 +12499,21 @@ msgstr "" "аргумент, і вони можуть отримати доступ до налаштувань Orca Slicer " "конфігурації шляхом читання змінних середовища." +msgid "Printer type" +msgstr "" + +msgid "Type of the printer" +msgstr "" + msgid "Printer notes" msgstr "Нотатки для принтера" msgid "You can put your notes regarding the printer here." msgstr "Ви можете залишити свої примітки щодо принтера тут." +msgid "Printer variant" +msgstr "" + msgid "Raft contact Z distance" msgstr "Відстань контакту плоту Z" @@ -12973,6 +13084,12 @@ msgstr "" "Площа заповнення, яка менша за порогове значення, замінюється внутрішнім " "суцільним заповненням" +msgid "Solid infill" +msgstr "" + +msgid "Filament to print solid infill" +msgstr "" + msgid "" "Line width of internal solid infill. If expressed as a %, it will be " "computed over the nozzle diameter." @@ -13039,6 +13156,31 @@ msgstr "Традиційний" msgid "Temperature variation" msgstr "Зміна температури" +#. TRN PrintSettings : "Ooze prevention" > "Temperature variation" +msgid "" +"Temperature difference to be applied when an extruder is not active. The " +"value is not used when 'idle_temperature' in filament settings is set to non " +"zero value." +msgstr "" + +msgid "Preheat time" +msgstr "" + +msgid "" +"To reduce the waiting time after tool change, Orca can preheat the next tool " +"while the current tool is still in use. This setting specifies the time in " +"seconds to preheat the next tool. Orca will insert a M104 command to preheat " +"the tool in advance." +msgstr "" + +msgid "Preheat steps" +msgstr "" + +msgid "" +"Insert multiple preheat commands(e.g. M104.1). Only useful for Prusa XL. For " +"other printers, please set it to 1." +msgstr "" + msgid "Start G-code" msgstr "Стартовий G-code" @@ -13707,12 +13849,6 @@ msgstr "" "Кут на вершині конуса, який використовується для стабілізації очисної вежі. " "Чим більший кут, тим ширша основа." -msgid "Wipe tower purge lines spacing" -msgstr "Протерти відстань між лініями продувки башти" - -msgid "Spacing of purge lines on the wipe tower." -msgstr "Відстань між лініями продувки на протиральній башті." - msgid "Maximum wipe tower print speed" msgstr "Максимальна швидкість друку протиральної башти" @@ -13758,9 +13894,6 @@ msgstr "" "Для зовнішніх периметрів вежі витирання використовується швидкість " "внутрішнього периметра незалежно від цього параметра." -msgid "Wipe tower extruder" -msgstr "Очисна башта екструдера" - msgid "" "The extruder to use when printing perimeter of the wipe tower. Set to 0 to " "use the one that is available (non-soluble would be preferred)." @@ -13817,6 +13950,30 @@ msgstr "Максимальна мостова відстань" msgid "Maximal distance between supports on sparse infill sections." msgstr "Максимальна відстань між підтримками на рідкісних ділянках заповнення." +msgid "Wipe tower purge lines spacing" +msgstr "Протерти відстань між лініями продувки башти" + +msgid "Spacing of purge lines on the wipe tower." +msgstr "Відстань між лініями продувки на протиральній башті." + +msgid "Extra flow for purging" +msgstr "" + +msgid "" +"Extra flow used for the purging lines on the wipe tower. This makes the " +"purging lines thicker or narrower than they normally would be. The spacing " +"is adjusted automatically." +msgstr "" + +msgid "Idle temperature" +msgstr "" + +msgid "" +"Nozzle temperature when the tool is currently not used in multi-tool setups." +"This is only used when 'Ooze prevention' is active in Print Settings. Set to " +"0 to disable." +msgstr "" + msgid "X-Y hole compensation" msgstr "Компенсація отвору XY" @@ -14155,6 +14312,14 @@ msgstr "Додаткове втягування" msgid "Currently planned extra extruder priming after deretraction." msgstr "В даний час планується додаткове ґрунтування екструдера після накату." +msgid "Absolute E position" +msgstr "" + +msgid "" +"Current position of the extruder axis. Only used with absolute extruder " +"addressing." +msgstr "" + msgid "Current extruder" msgstr "Поточний екструдер" @@ -14204,6 +14369,12 @@ msgid "Vector of bools stating whether a given extruder is used in the print." msgstr "" "Вектор bool, що вказує на те, чи використовується даний екструдер у друці." +msgid "Has single extruder MM priming" +msgstr "" + +msgid "Are the extra multi-material priming regions used in this print?" +msgstr "" + msgid "Volume per extruder" msgstr "Об'єм на один екструдер" @@ -14361,6 +14532,14 @@ msgstr "Ім'я фізичного принтера" msgid "Name of the physical printer used for slicing." msgstr "Назва фізичного принтера, який використовується для нарізки." +msgid "Number of extruders" +msgstr "" + +msgid "" +"Total number of extruders, regardless of whether they are used in the " +"current print." +msgstr "" + msgid "Layer number" msgstr "Номер шару" @@ -16800,6 +16979,76 @@ msgstr "" "ABS, відповідне підвищення температури гарячого ліжка може зменшити " "ймовірність деформації." +#~ msgid "up to" +#~ msgstr "аж до" + +#~ msgid "above" +#~ msgstr "вище" + +#~ msgid "from" +#~ msgstr "від" + +#~ msgid "Switching application language while some presets are modified." +#~ msgstr "Переключення мови програми при зміні деяких пресетів." + +#~ msgid "⌘+Shift+G" +#~ msgstr "⌘+Shift+G" + +#~ msgid "Ctrl+Shift+G" +#~ msgstr "Ctrl+Shift+G" + +#~ msgid "⌘+Any arrow" +#~ msgstr "⌘+будь-яка стрілка" + +#~ msgid "⌥+Left mouse button" +#~ msgstr "⌥+Ліва кнопка миші" + +#~ msgid "⌘+Left mouse button" +#~ msgstr "⌘+Ліва кнопка миші" + +#~ msgid "Ctrl+Any arrow" +#~ msgstr "Ctrl+будь-яка стрілка" + +#~ msgid "Alt+Left mouse button" +#~ msgstr "Alt+Ліва кнопка миші" + +#~ msgid "Ctrl+Left mouse button" +#~ msgstr "Ctrl+Ліва кнопка миші" + +#~ msgid "⌘+Mouse wheel" +#~ msgstr "⌘+Колесо миші" + +#~ msgid "⌥+Mouse wheel" +#~ msgstr "⌥+Колесо миші" + +#~ msgid "Ctrl+Mouse wheel" +#~ msgstr "Ctrl+Колесо миші" + +#~ msgid "Alt+Mouse wheel" +#~ msgstr "Alt+колесо миші" + +#~ msgid "" +#~ "Different nozzle diameters and different filament diameters is not " +#~ "allowed when prime tower is enabled." +#~ msgstr "" +#~ "Використання різних діаметрів насадок та різних діаметрів філаментів не " +#~ "допускається, коли увімкнено вежу підготовки." + +#~ msgid "" +#~ "Ooze prevention is currently not supported with the prime tower enabled." +#~ msgstr "" +#~ "Запобігання витіканню з увімкненою вежею підготовки в даний момент не " +#~ "підтримується." + +#~ msgid "" +#~ "Interlocking depth of a segmented region. Zero disables this feature." +#~ msgstr "" +#~ "Глибина взаємного взаємодії сегментованої області. Нуль вимикає цю " +#~ "функцію." + +#~ msgid "Wipe tower extruder" +#~ msgstr "Очисна башта екструдера" + #~ msgid "Current association: " #~ msgstr "Поточна асоціація: " diff --git a/localization/i18n/zh_CN/OrcaSlicer_zh_CN.po b/localization/i18n/zh_CN/OrcaSlicer_zh_CN.po index 066f6c30d6b..604c6c6d7cc 100644 --- a/localization/i18n/zh_CN/OrcaSlicer_zh_CN.po +++ b/localization/i18n/zh_CN/OrcaSlicer_zh_CN.po @@ -6,7 +6,7 @@ msgid "" msgstr "" "Project-Id-Version: Slic3rPE\n" "Report-Msgid-Bugs-To: \n" -"POT-Creation-Date: 2024-06-30 15:44+0200\n" +"POT-Creation-Date: 2024-08-03 18:54+0200\n" "PO-Revision-Date: 2024-07-28 07:12+0000\n" "Last-Translator: Handle \n" "Language-Team: \n" @@ -77,9 +77,6 @@ msgstr "智能填充角度" msgid "On overhangs only" msgstr "仅对悬空区生效" -msgid "Auto support threshold angle: " -msgstr "自动支撑角度阈值:" - msgid "Circle" msgstr "圆" @@ -99,6 +96,9 @@ msgstr "绘制仅对由%1%选中的面片生效" msgid "Highlight faces according to overhang angle." msgstr "根据当前设置的悬空角度来高亮片面。" +msgid "Auto support threshold angle: " +msgstr "自动支撑角度阈值:" + msgid "No auto support" msgstr "无自动支撑" @@ -1703,8 +1703,8 @@ msgid "" "No - Do not change these settings for me" msgstr "" "该模型顶面具有文字浮雕。\n" -"为了获得最佳效果,我们推荐您将“单层墙阈值”设置为 0 " -"以使“仅首层单层墙”效果最佳。\n" +"为了获得最佳效果,我们推荐您将“单层墙阈值”设置为 0 以使“仅首层单层墙”效果最" +"佳。\n" "\n" "自动调整这些设置?\n" "是 - 自动调整这些设置\n" @@ -3969,15 +3969,6 @@ msgstr "总时间" msgid "Total cost" msgstr "总成本" -msgid "up to" -msgstr "达到" - -msgid "above" -msgstr "高于" - -msgid "from" -msgstr "从" - msgid "Color Scheme" msgstr "颜色方案" @@ -4041,12 +4032,12 @@ msgstr "换料次数" msgid "Cost" msgstr "成本" -msgid "Color change" -msgstr "颜色更换" - msgid "Print" msgstr "打印" +msgid "Color change" +msgstr "颜色更换" + msgid "Printer" msgstr "打印机" @@ -5876,13 +5867,18 @@ msgid "The file does not contain any geometry data." msgstr "此文件不包含任何几何数据。" msgid "" -"Your object appears to be too large, Do you want to scale it down to fit the " -"heat bed automatically?" -msgstr "对象看起来太大,希望将对象自动缩小以适应热床吗?" +"Your object appears to be too large. It will be scaled down to fit the heat " +"bed automatically." +msgstr "" msgid "Object too large" msgstr "对象太大" +msgid "" +"Your object appears to be too large, Do you want to scale it down to fit the " +"heat bed automatically?" +msgstr "对象看起来太大,希望将对象自动缩小以适应热床吗?" + msgid "Export STL file:" msgstr "导出 STL 文件:" @@ -6238,9 +6234,6 @@ msgstr "是否继续?" msgid "Language selection" msgstr "语言选择" -msgid "Switching application language while some presets are modified." -msgstr "在切换应用语言之前发现某些参数预设有更改。" - msgid "Changing application language" msgstr "正在为应用程序切换语言" @@ -6301,8 +6294,9 @@ msgstr "局域网模式" msgid "" "This stops the transmission of data to Bambu's cloud services. Users who " "don't use BBL machines or use LAN mode only can safely turn on this function." -msgstr "停止向拓竹科技服务器发送数据。如果您不使用Bambu " -"Lab的打印机或仅使用局域网模式,则可以安全地启用此功能。" +msgstr "" +"停止向拓竹科技服务器发送数据。如果您不使用Bambu Lab的打印机或仅使用局域网模" +"式,则可以安全地启用此功能。" msgid "Enable network plugin" msgstr "启用网络插件" @@ -6334,8 +6328,9 @@ msgid "" "If this is enabled, when starting OrcaSlicer and another instance of the " "same OrcaSlicer is already running, that instance will be reactivated " "instead." -msgstr "如果启用,当您在已经启动一个 OrcaSlicer 实例时再次启动 OrcaSlicer ," -"将会激活您已经启动的 OrcaSlicer 实例。" +msgstr "" +"如果启用,当您在已经启动一个 OrcaSlicer 实例时再次启动 OrcaSlicer ,将会激活" +"您已经启动的 OrcaSlicer 实例。" msgid "Home" msgstr "首页" @@ -6422,6 +6417,12 @@ msgid "" "same time and manage multiple devices." msgstr "启用此选项后,您可以同时向多个设备发送任务并管理多个设备。" +msgid "Auto arrange plate after cloning" +msgstr "" + +msgid "Auto arrange plate after object cloning" +msgstr "" + msgid "Network" msgstr "网络" @@ -7351,12 +7352,21 @@ msgstr "支撑耗材" msgid "Tree supports" msgstr "树状支撑" -msgid "Skirt" -msgstr "裙边" +msgid "Multimaterial" +msgstr "材料" msgid "Prime tower" msgstr "擦拭塔" +msgid "Filament for Features" +msgstr "" + +msgid "Ooze prevention" +msgstr "" + +msgid "Skirt" +msgstr "裙边" + msgid "Special mode" msgstr "特殊模式" @@ -7403,6 +7413,9 @@ msgstr "建议喷嘴温度" msgid "Recommended nozzle temperature range of this filament. 0 means no set" msgstr "该材料的建议喷嘴温度范围。0表示未设置" +msgid "Flow ratio and Pressure Advance" +msgstr "" + msgid "Print chamber temperature" msgstr "打印仓温度" @@ -7500,9 +7513,6 @@ msgstr "耗材丝起始G-code" msgid "Filament end G-code" msgstr "耗材丝结束G-code" -msgid "Multimaterial" -msgstr "材料" - msgid "Wipe tower parameters" msgstr "色塔参数" @@ -7592,12 +7602,30 @@ msgstr "抖动限制" msgid "Single extruder multimaterial setup" msgstr "设置单挤出机多材料" +msgid "Number of extruders of the printer." +msgstr "" + +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 "" + +msgid "Nozzle diameter" +msgstr "喷嘴直径" + msgid "Wipe tower" msgstr "色塔" msgid "Single extruder multimaterial parameters" msgstr "单挤出机多材料参数" +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 "" + msgid "Layer height limits" msgstr "层高限制" @@ -8071,10 +8099,7 @@ msgstr "对象列表" msgid "Import geometry data from STL/STEP/3MF/OBJ/AMF files" msgstr "从STL/STEP/3MF/OBJ/AMF文件中导入几何数据" -msgid "⌘+Shift+G" -msgstr "" - -msgid "Ctrl+Shift+G" +msgid "Shift+G" msgstr "" msgid "Paste from clipboard" @@ -8124,33 +8149,18 @@ msgstr "" msgid "Collapse/Expand the sidebar" msgstr "收起/展开 侧边栏" -msgid "⌘+Any arrow" -msgstr "⌘+方向键" +msgid "Any arrow" +msgstr "" msgid "Movement in camera space" msgstr "沿相机视角移动对象" -msgid "⌥+Left mouse button" -msgstr "⌥+鼠标左键" - msgid "Select a part" msgstr "选择单个零件" -msgid "⌘+Left mouse button" -msgstr "⌘+鼠标左键" - msgid "Select multiple objects" msgstr "选择多个对象" -msgid "Ctrl+Any arrow" -msgstr "Ctrl+方向键" - -msgid "Alt+Left mouse button" -msgstr "Alt+鼠标左键" - -msgid "Ctrl+Left mouse button" -msgstr "Ctrl+鼠标左键" - msgid "Shift+Left mouse button" msgstr "Shift+鼠标左键" @@ -8253,24 +8263,12 @@ msgstr "准备" msgid "Move: press to snap by 1mm" msgstr "移动:以1mm为步进移动" -msgid "⌘+Mouse wheel" -msgstr "⌘+鼠标滚轮" - msgid "Support/Color Painting: adjust pen radius" msgstr "支撑/颜色绘制:调节画笔半径" -msgid "⌥+Mouse wheel" -msgstr "⌥+鼠标滚轮" - msgid "Support/Color Painting: adjust section position" msgstr "支撑/色彩绘制:调节剖面位置" -msgid "Ctrl+Mouse wheel" -msgstr "Ctrl+鼠标滚轮" - -msgid "Alt+Mouse wheel" -msgstr "Alt+鼠标滚轮" - msgid "Gizmo" msgstr "" @@ -8564,6 +8562,11 @@ msgstr "部分模型在这些高度可能过薄,或者模型存在面片错误 msgid "No object can be printed. Maybe too small" msgstr "没有可打印的对象。可能是因为尺寸过小。" +msgid "" +"Your print is very close to the priming regions. Make sure there is no " +"collision." +msgstr "" + msgid "" "Failed to generate gcode for invalid custom G-code.\n" "\n" @@ -8788,9 +8791,10 @@ msgid "Variable layer height is not supported with Organic supports." msgstr "Organic支撑不支持可变层高。" msgid "" -"Different nozzle diameters and different filament diameters is not allowed " -"when prime tower is enabled." -msgstr "启用擦拭塔时,不允许使用不同的喷嘴直径和不同的材料直径。" +"Different nozzle diameters and different filament diameters may not work " +"well when the prime tower is enabled. It's very experimental, so please " +"proceed with caution." +msgstr "" msgid "" "The Wipe Tower is currently only supported with the relative extruder " @@ -8800,8 +8804,9 @@ msgstr "" "塔。" msgid "" -"Ooze prevention is currently not supported with the prime tower enabled." -msgstr "当启用擦拭塔时,目前不支持防滴功能。" +"Ooze prevention is only supported with the wipe tower when " +"'single_extruder_multi_material' is off." +msgstr "" msgid "" "The prime tower is currently only supported for the Marlin, RepRap/Sprinter, " @@ -10072,6 +10077,86 @@ msgstr "启用压力提前,一旦启用会覆盖自动检测的结果" msgid "Pressure advance(Klipper) AKA Linear advance factor(Marlin)" msgstr "压力提前(Klipper)或者线性提前(Marlin)" +msgid "Enable adaptive pressure advance (beta)" +msgstr "" + +#, c-format, boost-format +msgid "" +"With increasing print speeds (and hence increasing volumetric flow through " +"the nozzle) and increasing accelerations, it has been observed that the " +"effective PA value typically decreases. This means that a single PA value is " +"not always 100% optimal for all features and a compromise value is usually " +"used that does not cause too much bulging on features with lower flow speed " +"and accelerations while also not causing gaps on faster features.\n" +"\n" +"This feature aims to address this limitation by modeling the response of " +"your printer's extrusion system depending on the volumetric flow speed and " +"acceleration it is printing at. Internally, it generates a fitted model that " +"can extrapolate the needed pressure advance for any given volumetric flow " +"speed and acceleration, which is then emmited to the printer depending on " +"the current print conditions.\n" +"\n" +"When enabled, the pressure advance value above is overriden. However, a " +"reasonable default value above is strongly recomended to act as a fallback " +"and for when tool changing.\n" +"\n" +msgstr "" + +msgid "Adaptive pressure advance measurements (beta)" +msgstr "" + +msgid "" +"Add sets of pressure advance (PA) values, the volumetric flow speeds and " +"accelerations they were measured at, separated by a comma. One set of values " +"per line. For example\n" +"0.04,3.96,3000\n" +"0.033,3.96,10000\n" +"0.029,7.91,3000\n" +"0.026,7.91,10000\n" +"\n" +"How to calibrate:\n" +"1. Run the pressure advance test for at least 3 speeds per acceleration " +"value. It is recommended that the test is run for at least the speed of the " +"external perimeters, the speed of the internal perimeters and the fastest " +"feature print speed in your profile (usually its the sparse or solid " +"infill). Then run them for the same speeds for the slowest and fastest print " +"accelerations,and no faster than the recommended maximum acceleration as " +"given by the klipper input shaper.\n" +"2. Take note of the optimal PA value for each volumetric flow speed and " +"acceleration. You can find the flow number by selecting flow from the color " +"scheme drop down and move the horizontal slider over the PA pattern lines. " +"The number should be visible at the bottom of the page. The ideal PA value " +"should be decreasing the higher the volumetric flow is. If it is not, " +"confirm that your extruder is functioning correctly.The slower and with less " +"acceleration you print, the larger the range of acceptable PA values. If no " +"difference is visible, use the PA value from the faster test.3. Enter the " +"triplets of PA values, Flow and Accelerations in the text box here and save " +"your filament profile\n" +"\n" +msgstr "" + +msgid "Enable adaptive pressure advance for overhangs (beta)" +msgstr "" + +msgid "" +"Enable adaptive PA for overhangs as well as when flow changes within the " +"same feature. This is an experimental option, as if the PA profile is not " +"set accurately, it will cause uniformity issues on the external surfaces " +"before and after overhangs.\n" +msgstr "" + +msgid "Pressure advance for bridges" +msgstr "" + +msgid "" +"Pressure advance value for bridges. Set to 0 to disable. \n" +"\n" +" A lower PA value when printing bridges helps reduce the appearance of " +"slight under extrusion immediately after bridges. This is caused by the " +"pressure drop in the nozzle when printing in the air and a lower PA helps " +"counteract this." +msgstr "" + msgid "" "Default line width if other line widths are set to 0. If expressed as a %, " "it will be computed over the nozzle diameter." @@ -10244,6 +10329,21 @@ msgid "" "Specify desired number of these moves." msgstr "耗材丝通过在喉管中来回移动来冷却。指定所需的移动次数。" +msgid "Stamping loading speed" +msgstr "" + +msgid "Speed used for stamping." +msgstr "" + +msgid "Stamping distance measured from the center of the cooling tube" +msgstr "" + +msgid "" +"If set to nonzero value, filament is moved toward the nozzle between the " +"individual cooling moves (\"stamping\"). This option configures how long " +"this movement should be before the filament is retracted again." +msgstr "" + msgid "Speed of the first cooling move" msgstr "第一次冷却移动的速度" @@ -10972,8 +11072,12 @@ msgstr "分段区域的最大宽度。将其设置为零会禁用此功能。" msgid "Interlocking depth of a segmented region" msgstr "分割区域的交错深度" -msgid "Interlocking depth of a segmented region. Zero disables this feature." -msgstr "分割区域的交错深度。0 则禁用此功能。" +msgid "" +"Interlocking depth of a segmented region. It will be ignored if " +"\"mmu_segmented_region_max_width\" is zero or if " +"\"mmu_segmented_region_interlocking_depth\"is bigger then " +"\"mmu_segmented_region_max_width\". Zero disables this feature." +msgstr "" msgid "Use beam interlocking" msgstr "" @@ -11338,11 +11442,9 @@ msgid "" "The minimum printing speed that the printer will slow down to to attempt to " "maintain the minimum layer time above, when slow down for better layer " "cooling is enabled." -msgstr "在您启用“降低打印速度 " -"以得到更好的冷却”选项时最小的打印速度,以尝试保持上方设置的最小层时间。" - -msgid "Nozzle diameter" -msgstr "喷嘴直径" +msgstr "" +"在您启用“降低打印速度 以得到更好的冷却”选项时最小的打印速度,以尝试保持上方设" +"置的最小层时间。" msgid "Diameter of nozzle" msgstr "喷嘴直径" @@ -11430,6 +11532,11 @@ msgstr "" "当空驶完全在填充区域内时不触发回抽。这意味着即使漏料也是不可见的。对于复杂模" "型,该设置能够减少回抽次数以及打印时长,但是会造成G-code生成变慢" +msgid "" +"This option will drop the temperature of the inactive extruders to prevent " +"oozing." +msgstr "" + msgid "Filename format" msgstr "文件名格式" @@ -11476,6 +11583,9 @@ msgid "" msgstr "" "检测悬空相对于线宽的百分比,并应用不同的速度打印。100%%的悬空将使用桥接速度。" +msgid "Filament to print walls" +msgstr "" + msgid "" "Line width of inner wall. If expressed as a %, it will be computed over the " "nozzle diameter." @@ -11515,10 +11625,15 @@ msgid "" "argument, and they can access the Orca Slicer config settings by reading " "environment variables." msgstr "" -"如果您希望使用自定义脚本来处理输出的 " -"G-code,只需要在此列出这些脚本的绝对路径,使用分号来分割多个脚本。" -"脚本执行的第一个参数将会被设置为 G-code 文件的绝对路径," -"并支持脚本通过全局变量来读取 Orca Slicer 的设置。" +"如果您希望使用自定义脚本来处理输出的 G-code,只需要在此列出这些脚本的绝对路" +"径,使用分号来分割多个脚本。脚本执行的第一个参数将会被设置为 G-code 文件的绝" +"对路径,并支持脚本通过全局变量来读取 Orca Slicer 的设置。" + +msgid "Printer type" +msgstr "" + +msgid "Type of the printer" +msgstr "" msgid "Printer notes" msgstr "打印机注释" @@ -11526,6 +11641,9 @@ msgstr "打印机注释" msgid "You can put your notes regarding the printer here." msgstr "你可以把你关于打印机的注释放在这里。" +msgid "Printer variant" +msgstr "" + msgid "Raft contact Z distance" msgstr "筏层Z间距" @@ -12022,6 +12140,12 @@ msgid "" "internal solid infill" msgstr "小于这个阈值的稀疏填充区域将会被内部实心填充替代。" +msgid "Solid infill" +msgstr "" + +msgid "Filament to print solid infill" +msgstr "" + msgid "" "Line width of internal solid infill. If expressed as a %, it will be " "computed over the nozzle diameter." @@ -12079,6 +12203,31 @@ msgstr "传统模式" msgid "Temperature variation" msgstr "软化温度" +#. TRN PrintSettings : "Ooze prevention" > "Temperature variation" +msgid "" +"Temperature difference to be applied when an extruder is not active. The " +"value is not used when 'idle_temperature' in filament settings is set to non " +"zero value." +msgstr "" + +msgid "Preheat time" +msgstr "" + +msgid "" +"To reduce the waiting time after tool change, Orca can preheat the next tool " +"while the current tool is still in use. This setting specifies the time in " +"seconds to preheat the next tool. Orca will insert a M104 command to preheat " +"the tool in advance." +msgstr "" + +msgid "Preheat steps" +msgstr "" + +msgid "" +"Insert multiple preheat commands(e.g. M104.1). Only useful for Prusa XL. For " +"other printers, please set it to 1." +msgstr "" + msgid "Start G-code" msgstr "起始G-code" @@ -12104,10 +12253,9 @@ msgid "" "printing, where we use M600/PAUSE to trigger the manual filament change " "action." msgstr "" -"启用该选项可以在打印开始时省略自定义更换耗材丝的 " -"G-code。整个打印过程中的工具头指令(如 " -"T0)将会被跳过。这对于手动多材料打印十分有用,其将会使用 M600/PAUSE " -"指令来使您可以进行手动对耗材丝进行更换。" +"启用该选项可以在打印开始时省略自定义更换耗材丝的 G-code。整个打印过程中的工具" +"头指令(如 T0)将会被跳过。这对于手动多材料打印十分有用,其将会使用 M600/" +"PAUSE 指令来使您可以进行手动对耗材丝进行更换。" msgid "Purge in prime tower" msgstr "冲刷进擦拭塔" @@ -12533,8 +12681,8 @@ msgid "" "added before \"machine_start_gcode\"\n" "G-code commands: M141/M191 S(0-255)" msgstr "" -"启用该选项以控制打印仓温度,这将会在\"machine_start_gcode" -"\"之前添加一个M191命令。\n" +"启用该选项以控制打印仓温度,这将会在\"machine_start_gcode\"之前添加一个M191命" +"令。\n" "G-code命令:M141/M191 S(0-255)" msgid "Chamber temperature" @@ -12688,12 +12836,6 @@ msgid "" "Larger angle means wider base." msgstr "塔锥体顶角的角度,用于稳定擦拭塔。角度越大,底座越宽。" -msgid "Wipe tower purge lines spacing" -msgstr "擦拭塔冲刷线间距" - -msgid "Spacing of purge lines on the wipe tower." -msgstr "擦拭塔上冲刷线的间距" - msgid "Maximum wipe tower print speed" msgstr "擦拭塔最大打印速度" @@ -12732,9 +12874,6 @@ msgstr "" "\n" "对于擦拭塔外墙,无论此设置如何,都使用内墙速度。" -msgid "Wipe tower extruder" -msgstr "擦拭塔挤出机" - msgid "" "The extruder to use when printing perimeter of the wipe tower. Set to 0 to " "use the one that is available (non-soluble would be preferred)." @@ -12785,6 +12924,30 @@ msgstr "最大桥接距离" msgid "Maximal distance between supports on sparse infill sections." msgstr "稀疏填充剖面上支撑之间的最大距离。" +msgid "Wipe tower purge lines spacing" +msgstr "擦拭塔冲刷线间距" + +msgid "Spacing of purge lines on the wipe tower." +msgstr "擦拭塔上冲刷线的间距" + +msgid "Extra flow for purging" +msgstr "" + +msgid "" +"Extra flow used for the purging lines on the wipe tower. This makes the " +"purging lines thicker or narrower than they normally would be. The spacing " +"is adjusted automatically." +msgstr "" + +msgid "Idle temperature" +msgstr "" + +msgid "" +"Nozzle temperature when the tool is currently not used in multi-tool setups." +"This is only used when 'Ooze prevention' is active in Print Settings. Set to " +"0 to disable." +msgstr "" + msgid "X-Y hole compensation" msgstr "X-Y 孔洞尺寸补偿" @@ -13088,6 +13251,14 @@ msgstr "" msgid "Currently planned extra extruder priming after deretraction." msgstr "" +msgid "Absolute E position" +msgstr "" + +msgid "" +"Current position of the extruder axis. Only used with absolute extruder " +"addressing." +msgstr "" + msgid "Current extruder" msgstr "" @@ -13130,6 +13301,12 @@ msgstr "" msgid "Vector of bools stating whether a given extruder is used in the print." msgstr "" +msgid "Has single extruder MM priming" +msgstr "" + +msgid "Are the extra multi-material priming regions used in this print?" +msgstr "" + msgid "Volume per extruder" msgstr "" @@ -13274,6 +13451,14 @@ msgstr "物理打印机名称" msgid "Name of the physical printer used for slicing." msgstr "用于切片的物理打印机的名称。" +msgid "Number of extruders" +msgstr "" + +msgid "" +"Total number of extruders, regardless of whether they are used in the " +"current print." +msgstr "" + msgid "Layer number" msgstr "层编号" @@ -15510,6 +15695,64 @@ msgstr "" "避免翘曲\n" "您知道吗?打印ABS这类易翘曲材料时,适当提高热床温度可以降低翘曲的概率。" +#~ msgid "up to" +#~ msgstr "达到" + +#~ msgid "above" +#~ msgstr "高于" + +#~ msgid "from" +#~ msgstr "从" + +#~ msgid "Switching application language while some presets are modified." +#~ msgstr "在切换应用语言之前发现某些参数预设有更改。" + +#~ msgid "⌘+Any arrow" +#~ msgstr "⌘+方向键" + +#~ msgid "⌥+Left mouse button" +#~ msgstr "⌥+鼠标左键" + +#~ msgid "⌘+Left mouse button" +#~ msgstr "⌘+鼠标左键" + +#~ msgid "Ctrl+Any arrow" +#~ msgstr "Ctrl+方向键" + +#~ msgid "Alt+Left mouse button" +#~ msgstr "Alt+鼠标左键" + +#~ msgid "Ctrl+Left mouse button" +#~ msgstr "Ctrl+鼠标左键" + +#~ msgid "⌘+Mouse wheel" +#~ msgstr "⌘+鼠标滚轮" + +#~ msgid "⌥+Mouse wheel" +#~ msgstr "⌥+鼠标滚轮" + +#~ msgid "Ctrl+Mouse wheel" +#~ msgstr "Ctrl+鼠标滚轮" + +#~ msgid "Alt+Mouse wheel" +#~ msgstr "Alt+鼠标滚轮" + +#~ msgid "" +#~ "Different nozzle diameters and different filament diameters is not " +#~ "allowed when prime tower is enabled." +#~ msgstr "启用擦拭塔时,不允许使用不同的喷嘴直径和不同的材料直径。" + +#~ msgid "" +#~ "Ooze prevention is currently not supported with the prime tower enabled." +#~ msgstr "当启用擦拭塔时,目前不支持防滴功能。" + +#~ msgid "" +#~ "Interlocking depth of a segmented region. Zero disables this feature." +#~ msgstr "分割区域的交错深度。0 则禁用此功能。" + +#~ msgid "Wipe tower extruder" +#~ msgstr "擦拭塔挤出机" + #~ msgid "V" #~ msgstr "V" diff --git a/localization/i18n/zh_TW/OrcaSlicer_zh_TW.po b/localization/i18n/zh_TW/OrcaSlicer_zh_TW.po index 9fd73bb2249..4ff1c7b5123 100644 --- a/localization/i18n/zh_TW/OrcaSlicer_zh_TW.po +++ b/localization/i18n/zh_TW/OrcaSlicer_zh_TW.po @@ -6,7 +6,7 @@ msgid "" msgstr "" "Project-Id-Version: Orca Slicer\n" "Report-Msgid-Bugs-To: \n" -"POT-Creation-Date: 2024-06-30 15:44+0200\n" +"POT-Creation-Date: 2024-08-03 18:54+0200\n" "PO-Revision-Date: 2023-11-06 14:37+0800\n" "Last-Translator: ablegods \n" "Language-Team: \n" @@ -85,9 +85,6 @@ msgstr "智慧填充角度" msgid "On overhangs only" msgstr "僅對懸空區生效" -msgid "Auto support threshold angle: " -msgstr "自動支撐角度臨界值:" - #, fuzzy msgid "Circle" msgstr "圓形" @@ -110,6 +107,9 @@ msgstr "僅允許在由以下條件選擇的平面上進行繪製:%1%" msgid "Highlight faces according to overhang angle." msgstr "根據懸空角度突出顯示面。" +msgid "Auto support threshold angle: " +msgstr "自動支撐角度臨界值:" + msgid "No auto support" msgstr "無自動支撐" @@ -4094,15 +4094,6 @@ msgstr "總時間" msgid "Total cost" msgstr "總成本" -msgid "up to" -msgstr "達到" - -msgid "above" -msgstr "高於" - -msgid "from" -msgstr "從" - msgid "Color Scheme" msgstr "顏色方案" @@ -4170,12 +4161,12 @@ msgstr "更換線材次數" msgid "Cost" msgstr "成本" -msgid "Color change" -msgstr "顏色更換" - msgid "Print" msgstr "列印" +msgid "Color change" +msgstr "顏色更換" + #, fuzzy msgid "Printer" msgstr "列印設備" @@ -6076,13 +6067,18 @@ msgid "The file does not contain any geometry data." msgstr "此檔案不包含任何幾何數據。" msgid "" -"Your object appears to be too large, Do you want to scale it down to fit the " -"heat bed automatically?" -msgstr "物件看起來太大,希望將物件自動縮小以適應列印板嗎?" +"Your object appears to be too large. It will be scaled down to fit the heat " +"bed automatically." +msgstr "" msgid "Object too large" msgstr "物件太大" +msgid "" +"Your object appears to be too large, Do you want to scale it down to fit the " +"heat bed automatically?" +msgstr "物件看起來太大,希望將物件自動縮小以適應列印板嗎?" + msgid "Export STL file:" msgstr "匯出 STL 檔案:" @@ -6447,9 +6443,6 @@ msgstr "是否繼續?" msgid "Language selection" msgstr "語言選擇" -msgid "Switching application language while some presets are modified." -msgstr "在切換應用語言之前發現某些參數預設有更改。" - msgid "Changing application language" msgstr "正在為應用程式切換語言" @@ -6628,6 +6621,12 @@ msgid "" "same time and manage multiple devices." msgstr "" +msgid "Auto arrange plate after cloning" +msgstr "" + +msgid "Auto arrange plate after object cloning" +msgstr "" + msgid "Network" msgstr "網路" @@ -7617,12 +7616,21 @@ msgstr "支撐線材" msgid "Tree supports" msgstr "樹狀支撐" -msgid "Skirt" -msgstr "側裙" +msgid "Multimaterial" +msgstr "多線材" msgid "Prime tower" msgstr "擦拭塔" +msgid "Filament for Features" +msgstr "" + +msgid "Ooze prevention" +msgstr "" + +msgid "Skirt" +msgstr "側裙" + msgid "Special mode" msgstr "特殊模式" @@ -7672,6 +7680,9 @@ msgstr "建議噴嘴溫度" msgid "Recommended nozzle temperature range of this filament. 0 means no set" msgstr "該線材的建議噴嘴溫度範圍。0 表示未設定" +msgid "Flow ratio and Pressure Advance" +msgstr "" + #, fuzzy msgid "Print chamber temperature" msgstr "列印設備內部溫度" @@ -7786,9 +7797,6 @@ msgstr "線材起始 G-code" msgid "Filament end G-code" msgstr "線材結束 G-code" -msgid "Multimaterial" -msgstr "多線材" - msgid "Wipe tower parameters" msgstr "色塔參數" @@ -7885,12 +7893,30 @@ msgstr "抖動限制" msgid "Single extruder multimaterial setup" msgstr "單擠出機多線材設定" +msgid "Number of extruders of the printer." +msgstr "" + +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 "" + +msgid "Nozzle diameter" +msgstr "噴嘴直徑" + msgid "Wipe tower" msgstr "色塔" msgid "Single extruder multimaterial parameters" msgstr "單擠出機多線材參數" +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 "" + msgid "Layer height limits" msgstr "層高限制" @@ -8373,10 +8399,7 @@ msgstr "物件清單" msgid "Import geometry data from STL/STEP/3MF/OBJ/AMF files" msgstr "從 STL/STEP/3MF/OBJ/AMF 檔案中匯入幾何數據" -msgid "⌘+Shift+G" -msgstr "" - -msgid "Ctrl+Shift+G" +msgid "Shift+G" msgstr "" msgid "Paste from clipboard" @@ -8430,35 +8453,20 @@ msgstr "" msgid "Collapse/Expand the sidebar" msgstr "摺疊/展開 側邊欄" -msgid "⌘+Any arrow" -msgstr "⌘+方向鍵" +msgid "Any arrow" +msgstr "" #, fuzzy msgid "Movement in camera space" msgstr "沿相機視角移動物件" -msgid "⌥+Left mouse button" -msgstr "⌥+滑鼠左鍵" - msgid "Select a part" msgstr "選擇單一零件" -msgid "⌘+Left mouse button" -msgstr "⌘+滑鼠左鍵" - #, fuzzy msgid "Select multiple objects" msgstr "選擇多個物件" -msgid "Ctrl+Any arrow" -msgstr "Ctrl+方向鍵" - -msgid "Alt+Left mouse button" -msgstr "Alt+滑鼠左鍵" - -msgid "Ctrl+Left mouse button" -msgstr "Ctrl+滑鼠左鍵" - msgid "Shift+Left mouse button" msgstr "Shift+滑鼠左鍵" @@ -8568,24 +8576,12 @@ msgstr "準備" msgid "Move: press to snap by 1mm" msgstr "移動:以 1mm 為單位步進移動" -msgid "⌘+Mouse wheel" -msgstr "⌘+滑鼠滾輪" - msgid "Support/Color Painting: adjust pen radius" msgstr "支撐/顏色繪製:調整筆刷半徑" -msgid "⌥+Mouse wheel" -msgstr "⌥+滑鼠滾輪" - msgid "Support/Color Painting: adjust section position" msgstr "支撐/色彩繪製:調整剖面位置" -msgid "Ctrl+Mouse wheel" -msgstr "Ctrl+滑鼠滾輪" - -msgid "Alt+Mouse wheel" -msgstr "Alt+滑鼠滾輪" - msgid "Gizmo" msgstr "" @@ -8890,6 +8886,11 @@ msgstr "部分模型在這些高度可能過薄,或者模型存在缺陷" msgid "No object can be printed. Maybe too small" msgstr "沒有可列印的物件。可能是因為尺寸過小。" +msgid "" +"Your print is very close to the priming regions. Make sure there is no " +"collision." +msgstr "" + #, fuzzy msgid "" "Failed to generate gcode for invalid custom G-code.\n" @@ -9117,8 +9118,9 @@ msgid "Variable layer height is not supported with Organic supports." msgstr "有機樹支撐不支持可變層高。" msgid "" -"Different nozzle diameters and different filament diameters is not allowed " -"when prime tower is enabled." +"Different nozzle diameters and different filament diameters may not work " +"well when the prime tower is enabled. It's very experimental, so please " +"proceed with caution." msgstr "" msgid "" @@ -9127,7 +9129,8 @@ msgid "" msgstr "擦拭塔目前僅支援相對擠出機定址 (use_relative_e_distances=1)。" msgid "" -"Ooze prevention is currently not supported with the prime tower enabled." +"Ooze prevention is only supported with the wipe tower when " +"'single_extruder_multi_material' is off." msgstr "" msgid "" @@ -10391,6 +10394,86 @@ msgstr "啟用壓力提前,一旦啟用會覆蓋自動校準的結果" msgid "Pressure advance(Klipper) AKA Linear advance factor(Marlin)" msgstr "壓力提前(Klipper)或者線性提前(Marlin)" +msgid "Enable adaptive pressure advance (beta)" +msgstr "" + +#, c-format, boost-format +msgid "" +"With increasing print speeds (and hence increasing volumetric flow through " +"the nozzle) and increasing accelerations, it has been observed that the " +"effective PA value typically decreases. This means that a single PA value is " +"not always 100% optimal for all features and a compromise value is usually " +"used that does not cause too much bulging on features with lower flow speed " +"and accelerations while also not causing gaps on faster features.\n" +"\n" +"This feature aims to address this limitation by modeling the response of " +"your printer's extrusion system depending on the volumetric flow speed and " +"acceleration it is printing at. Internally, it generates a fitted model that " +"can extrapolate the needed pressure advance for any given volumetric flow " +"speed and acceleration, which is then emmited to the printer depending on " +"the current print conditions.\n" +"\n" +"When enabled, the pressure advance value above is overriden. However, a " +"reasonable default value above is strongly recomended to act as a fallback " +"and for when tool changing.\n" +"\n" +msgstr "" + +msgid "Adaptive pressure advance measurements (beta)" +msgstr "" + +msgid "" +"Add sets of pressure advance (PA) values, the volumetric flow speeds and " +"accelerations they were measured at, separated by a comma. One set of values " +"per line. For example\n" +"0.04,3.96,3000\n" +"0.033,3.96,10000\n" +"0.029,7.91,3000\n" +"0.026,7.91,10000\n" +"\n" +"How to calibrate:\n" +"1. Run the pressure advance test for at least 3 speeds per acceleration " +"value. It is recommended that the test is run for at least the speed of the " +"external perimeters, the speed of the internal perimeters and the fastest " +"feature print speed in your profile (usually its the sparse or solid " +"infill). Then run them for the same speeds for the slowest and fastest print " +"accelerations,and no faster than the recommended maximum acceleration as " +"given by the klipper input shaper.\n" +"2. Take note of the optimal PA value for each volumetric flow speed and " +"acceleration. You can find the flow number by selecting flow from the color " +"scheme drop down and move the horizontal slider over the PA pattern lines. " +"The number should be visible at the bottom of the page. The ideal PA value " +"should be decreasing the higher the volumetric flow is. If it is not, " +"confirm that your extruder is functioning correctly.The slower and with less " +"acceleration you print, the larger the range of acceptable PA values. If no " +"difference is visible, use the PA value from the faster test.3. Enter the " +"triplets of PA values, Flow and Accelerations in the text box here and save " +"your filament profile\n" +"\n" +msgstr "" + +msgid "Enable adaptive pressure advance for overhangs (beta)" +msgstr "" + +msgid "" +"Enable adaptive PA for overhangs as well as when flow changes within the " +"same feature. This is an experimental option, as if the PA profile is not " +"set accurately, it will cause uniformity issues on the external surfaces " +"before and after overhangs.\n" +msgstr "" + +msgid "Pressure advance for bridges" +msgstr "" + +msgid "" +"Pressure advance value for bridges. Set to 0 to disable. \n" +"\n" +" A lower PA value when printing bridges helps reduce the appearance of " +"slight under extrusion immediately after bridges. This is caused by the " +"pressure drop in the nozzle when printing in the air and a lower PA helps " +"counteract this." +msgstr "" + #, fuzzy msgid "" "Default line width if other line widths are set to 0. If expressed as a %, " @@ -10566,6 +10649,21 @@ msgid "" "Specify desired number of these moves." msgstr "藉由在喉管中來回移動以冷卻線材。指定移動所需的次數。" +msgid "Stamping loading speed" +msgstr "" + +msgid "Speed used for stamping." +msgstr "" + +msgid "Stamping distance measured from the center of the cooling tube" +msgstr "" + +msgid "" +"If set to nonzero value, filament is moved toward the nozzle between the " +"individual cooling moves (\"stamping\"). This option configures how long " +"this movement should be before the filament is retracted again." +msgstr "" + msgid "Speed of the first cooling move" msgstr "第一次冷卻移動的速度" @@ -11318,7 +11416,11 @@ msgstr "分隔區域的最大寬度。零表示禁用此功能。" msgid "Interlocking depth of a segmented region" msgstr "" -msgid "Interlocking depth of a segmented region. Zero disables this feature." +msgid "" +"Interlocking depth of a segmented region. It will be ignored if " +"\"mmu_segmented_region_max_width\" is zero or if " +"\"mmu_segmented_region_interlocking_depth\"is bigger then " +"\"mmu_segmented_region_max_width\". Zero disables this feature." msgstr "" msgid "Use beam interlocking" @@ -11690,9 +11792,6 @@ msgid "" "cooling is enabled." msgstr "" -msgid "Nozzle diameter" -msgstr "噴嘴直徑" - msgid "Diameter of nozzle" msgstr "噴嘴直徑" @@ -11781,6 +11880,11 @@ msgstr "" "當空駛完全在填充區域內時不觸發回抽。這意味著即使漏料也是不可見的。對於複雜模" "型,該設定能夠減少回抽次數以及列印時長,但是會造成 G-code 產生變慢" +msgid "" +"This option will drop the temperature of the inactive extruders to prevent " +"oozing." +msgstr "" + msgid "Filename format" msgstr "檔案名稱格式" @@ -11831,6 +11935,9 @@ msgstr "" "偵測懸空相對於線寬的百分比,並應用不同的速度列印。100%% 的懸空將使用橋接速" "度。" +msgid "Filament to print walls" +msgstr "" + msgid "" "Line width of inner wall. If expressed as a %, it will be computed over the " "nozzle diameter." @@ -11867,12 +11974,21 @@ msgstr "" "分號分隔多個腳本。 腳本將傳遞 G-code 檔案的絕對路徑作為第一個參數,並且它們可" "以透過讀取環境變數來讀取 Orca Slicer 設定。" +msgid "Printer type" +msgstr "" + +msgid "Type of the printer" +msgstr "" + msgid "Printer notes" msgstr "列印設備備註" msgid "You can put your notes regarding the printer here." msgstr "可以將列印設備的備註填寫在此處" +msgid "Printer variant" +msgstr "" + msgid "Raft contact Z distance" msgstr "筏層Z間距" @@ -12339,6 +12455,12 @@ msgid "" "internal solid infill" msgstr "小於這個臨界值的稀疏填充區域將會被內部實心填充替代。" +msgid "Solid infill" +msgstr "" + +msgid "Filament to print solid infill" +msgstr "" + msgid "" "Line width of internal solid infill. If expressed as a %, it will be " "computed over the nozzle diameter." @@ -12393,6 +12515,31 @@ msgstr "傳統模式" msgid "Temperature variation" msgstr "軟化溫度" +#. TRN PrintSettings : "Ooze prevention" > "Temperature variation" +msgid "" +"Temperature difference to be applied when an extruder is not active. The " +"value is not used when 'idle_temperature' in filament settings is set to non " +"zero value." +msgstr "" + +msgid "Preheat time" +msgstr "" + +msgid "" +"To reduce the waiting time after tool change, Orca can preheat the next tool " +"while the current tool is still in use. This setting specifies the time in " +"seconds to preheat the next tool. Orca will insert a M104 command to preheat " +"the tool in advance." +msgstr "" + +msgid "Preheat steps" +msgstr "" + +msgid "" +"Insert multiple preheat commands(e.g. M104.1). Only useful for Prusa XL. For " +"other printers, please set it to 1." +msgstr "" + msgid "Start G-code" msgstr "起始 G-code" @@ -13004,12 +13151,6 @@ msgid "" "Larger angle means wider base." msgstr "圓錐體頂點處的角度,用於穩定擦拭塔。 更大的角度意味著更寬的底座。" -msgid "Wipe tower purge lines spacing" -msgstr "擦拭塔線距" - -msgid "Spacing of purge lines on the wipe tower." -msgstr "擦拭塔上的線距。" - msgid "Maximum wipe tower print speed" msgstr "" @@ -13035,9 +13176,6 @@ msgid "" "regardless of this setting." msgstr "" -msgid "Wipe tower extruder" -msgstr "擦拭塔擠出機" - msgid "" "The extruder to use when printing perimeter of the wipe tower. Set to 0 to " "use the one that is available (non-soluble would be preferred)." @@ -13092,6 +13230,30 @@ msgstr "最大橋接距離" msgid "Maximal distance between supports on sparse infill sections." msgstr "稀疏填充截面上的支撐之間的最大距離。" +msgid "Wipe tower purge lines spacing" +msgstr "擦拭塔線距" + +msgid "Spacing of purge lines on the wipe tower." +msgstr "擦拭塔上的線距。" + +msgid "Extra flow for purging" +msgstr "" + +msgid "" +"Extra flow used for the purging lines on the wipe tower. This makes the " +"purging lines thicker or narrower than they normally would be. The spacing " +"is adjusted automatically." +msgstr "" + +msgid "Idle temperature" +msgstr "" + +msgid "" +"Nozzle temperature when the tool is currently not used in multi-tool setups." +"This is only used when 'Ooze prevention' is active in Print Settings. Set to " +"0 to disable." +msgstr "" + msgid "X-Y hole compensation" msgstr "X-Y 孔洞尺寸補償" @@ -13395,6 +13557,14 @@ msgstr "" msgid "Currently planned extra extruder priming after deretraction." msgstr "" +msgid "Absolute E position" +msgstr "" + +msgid "" +"Current position of the extruder axis. Only used with absolute extruder " +"addressing." +msgstr "" + msgid "Current extruder" msgstr "" @@ -13437,6 +13607,12 @@ msgstr "" msgid "Vector of bools stating whether a given extruder is used in the print." msgstr "" +msgid "Has single extruder MM priming" +msgstr "" + +msgid "Are the extra multi-material priming regions used in this print?" +msgstr "" + msgid "Volume per extruder" msgstr "" @@ -13581,6 +13757,14 @@ msgstr "" msgid "Name of the physical printer used for slicing." msgstr "" +msgid "Number of extruders" +msgstr "" + +msgid "" +"Total number of extruders, regardless of whether they are used in the " +"current print." +msgstr "" + msgid "Layer number" msgstr "" @@ -15743,6 +15927,51 @@ msgid "" "probability of warping." msgstr "" +#~ msgid "up to" +#~ msgstr "達到" + +#~ msgid "above" +#~ msgstr "高於" + +#~ msgid "from" +#~ msgstr "從" + +#~ msgid "Switching application language while some presets are modified." +#~ msgstr "在切換應用語言之前發現某些參數預設有更改。" + +#~ msgid "⌘+Any arrow" +#~ msgstr "⌘+方向鍵" + +#~ msgid "⌥+Left mouse button" +#~ msgstr "⌥+滑鼠左鍵" + +#~ msgid "⌘+Left mouse button" +#~ msgstr "⌘+滑鼠左鍵" + +#~ msgid "Ctrl+Any arrow" +#~ msgstr "Ctrl+方向鍵" + +#~ msgid "Alt+Left mouse button" +#~ msgstr "Alt+滑鼠左鍵" + +#~ msgid "Ctrl+Left mouse button" +#~ msgstr "Ctrl+滑鼠左鍵" + +#~ msgid "⌘+Mouse wheel" +#~ msgstr "⌘+滑鼠滾輪" + +#~ msgid "⌥+Mouse wheel" +#~ msgstr "⌥+滑鼠滾輪" + +#~ msgid "Ctrl+Mouse wheel" +#~ msgstr "Ctrl+滑鼠滾輪" + +#~ msgid "Alt+Mouse wheel" +#~ msgstr "Alt+滑鼠滾輪" + +#~ msgid "Wipe tower extruder" +#~ msgstr "擦拭塔擠出機" + #, fuzzy #~ msgid "Printer local connection failed, please try again." #~ msgstr "列印設備區域網路連接失敗,請重試。" diff --git a/resources/info/filament_info.json b/resources/info/filament_info.json index 8472e66462e..158d78654a7 100644 --- a/resources/info/filament_info.json +++ b/resources/info/filament_info.json @@ -22,7 +22,8 @@ "PLA-CF", "PLA-AERO", "PVA", - "BVOH" + "BVOH", + "SBS" ], "high_low_compatible_filament":[ "HIPS", diff --git a/resources/profiles/BBL.json b/resources/profiles/BBL.json index 3cd51ed347a..e37da6dc428 100644 --- a/resources/profiles/BBL.json +++ b/resources/profiles/BBL.json @@ -673,6 +673,10 @@ "name": "fdm_filament_bvoh", "sub_path": "filament/fdm_filament_bvoh.json" }, + { + "name": "fdm_filament_sbs", + "sub_path": "filament/fdm_filament_sbs.json" + }, { "name": "Bambu PLA Matte @base", "sub_path": "filament/Bambu PLA Matte @base.json" @@ -733,6 +737,10 @@ "name": "Generic PLA-CF @base", "sub_path": "filament/Generic PLA-CF @base.json" }, + { + "name": "Generic SBS @base", + "sub_path": "filament/Generic SBS @base.json" + }, { "name": "Bambu PLA-CF @base", "sub_path": "filament/Bambu PLA-CF @base.json" @@ -1389,6 +1397,10 @@ "name": "Generic PLA-CF @BBL A1", "sub_path": "filament/Generic PLA-CF @BBL A1.json" }, + { + "name": "Generic SBS", + "sub_path": "filament/Generic SBS.json" + }, { "name": "Bambu PLA-CF @BBL X1C 0.8 nozzle", "sub_path": "filament/Bambu PLA-CF @BBL X1C 0.8 nozzle.json" diff --git a/resources/profiles/BBL/filament/Generic SBS @base.json b/resources/profiles/BBL/filament/Generic SBS @base.json new file mode 100644 index 00000000000..dffe348812e --- /dev/null +++ b/resources/profiles/BBL/filament/Generic SBS @base.json @@ -0,0 +1,17 @@ +{ + "type": "filament", + "name": "Generic SBS @base", + "inherits": "fdm_filament_sbs", + "from": "system", + "filament_id": "GFL99", + "instantiation": "false", + "filament_flow_ratio": [ + "0.98" + ], + "slow_down_layer_time": [ + "4" + ], + "filament_start_gcode": [ + "; filament start gcode\n{if (bed_temperature[current_extruder] >45)||(bed_temperature_initial_layer[current_extruder] >45)}M106 P3 S255\n{elsif(bed_temperature[current_extruder] >35)||(bed_temperature_initial_layer[current_extruder] >35)}M106 P3 S180\n{endif};Prevent PLA from jamming\n\n\n{if activate_air_filtration[current_extruder] && support_air_filtration}\nM106 P3 S{during_print_exhaust_fan_speed_num[current_extruder]} \n{endif}" + ] +} \ No newline at end of file diff --git a/resources/profiles/BBL/filament/Generic SBS.json b/resources/profiles/BBL/filament/Generic SBS.json new file mode 100644 index 00000000000..4309d0407ae --- /dev/null +++ b/resources/profiles/BBL/filament/Generic SBS.json @@ -0,0 +1,25 @@ +{ + "type": "filament", + "name": "Generic SBS", + "inherits": "Generic SBS @base", + "from": "system", + "setting_id": "GFSL99", + "instantiation": "true", + "compatible_printers": [ + "Bambu Lab X1 Carbon 0.4 nozzle", + "Bambu Lab X1 0.4 nozzle", + "Bambu Lab X1 Carbon 0.6 nozzle", + "Bambu Lab X1 Carbon 0.8 nozzle", + "Bambu Lab X1 0.6 nozzle", + "Bambu Lab X1 0.8 nozzle", + "Bambu Lab P1S 0.4 nozzle", + "Bambu Lab P1S 0.6 nozzle", + "Bambu Lab P1S 0.8 nozzle", + "Bambu Lab X1E 0.4 nozzle", + "Bambu Lab X1E 0.6 nozzle", + "Bambu Lab X1E 0.8 nozzle" + ], + "filament_start_gcode": [ + "; filament start gcode\n{if (bed_temperature[current_extruder] >55)||(bed_temperature_initial_layer[current_extruder] >55)}M106 P3 S200\n{elsif(bed_temperature[current_extruder] >50)||(bed_temperature_initial_layer[current_extruder] >50)}M106 P3 S150\n{elsif(bed_temperature[current_extruder] >45)||(bed_temperature_initial_layer[current_extruder] >45)}M106 P3 S50\n{endif}\n\n{if activate_air_filtration[current_extruder] && support_air_filtration}\nM106 P3 S{during_print_exhaust_fan_speed_num[current_extruder]} \n{endif}" + ] +} \ No newline at end of file diff --git a/resources/profiles/BBL/filament/fdm_filament_sbs.json b/resources/profiles/BBL/filament/fdm_filament_sbs.json new file mode 100644 index 00000000000..c73ab5bb95f --- /dev/null +++ b/resources/profiles/BBL/filament/fdm_filament_sbs.json @@ -0,0 +1,85 @@ +{ + "type": "filament", + "name": "fdm_filament_sbs", + "inherits": "fdm_filament_common", + "from": "system", + "instantiation": "false", + "fan_cooling_layer_time": [ + "100" + ], + "filament_max_volumetric_speed": [ + "23" + ], + "filament_type": [ + "SBS" + ], + "filament_density": [ + "1.02" + ], + "filament_cost": [ + "15" + ], + "cool_plate_temp": [ + "70" + ], + "eng_plate_temp": [ + "70" + ], + "hot_plate_temp": [ + "70" + ], + "textured_plate_temp": [ + "70" + ], + "cool_plate_temp_initial_layer": [ + "70" + ], + "eng_plate_temp_initial_layer": [ + "70" + ], + "hot_plate_temp_initial_layer": [ + "70" + ], + "textured_plate_temp_initial_layer": [ + "70" + ], + "nozzle_temperature_initial_layer": [ + "235" + ], + "reduce_fan_stop_start_freq": [ + "0" + ], + "fan_min_speed": [ + "0" + ], + "overhang_fan_threshold": [ + "50%" + ], + "close_fan_the_first_x_layers": [ + "3" + ], + "nozzle_temperature": [ + "235" + ], + "temperature_vitrification": [ + "70" + ], + "nozzle_temperature_range_low": [ + "215" + ], + "nozzle_temperature_range_high": [ + "250" + ], + "slow_down_min_speed": [ + "20" + ], + "slow_down_layer_time": [ + "4" + ], + "additional_cooling_fan_speed": [ + "40" + ], + "filament_start_gcode": [ + "; filament start gcode\n{if (bed_temperature[current_extruder] >45)||(bed_temperature_initial_layer[current_extruder] >45)}M106 P3 S255\n{elsif(bed_temperature[current_extruder] >35)||(bed_temperature_initial_layer[current_extruder] >35)}M106 P3 S180\n{endif}\n\n{if activate_air_filtration[current_extruder] && support_air_filtration}\nM106 P3 S{during_print_exhaust_fan_speed_num[current_extruder]} \n{endif}" + ] +} \ No newline at end of file diff --git a/resources/profiles/FLSun.json b/resources/profiles/FLSun.json index 7b658ca355d..851f1a0c2e0 100644 --- a/resources/profiles/FLSun.json +++ b/resources/profiles/FLSun.json @@ -1,226 +1,306 @@ -{ - "name": "FLSun", - "version": "02.01.01.00", - "force_update": "0", - "description": "FLSun configurations", - "machine_model_list": [ - { - "name": "FLSun Q5", - "sub_path": "machine/FLSun Q5.json" - }, - { - "name": "FLSun QQ-S Pro", - "sub_path": "machine/FLSun QQ-S Pro.json" - }, - { - "name": "FLSun Super Racer (SR)", - "sub_path": "machine/FLSun SR.json" - }, - { - "name": "FLSun V400", - "sub_path": "machine/FLSun V400.json" - }, - { - "name": "FLSun S1", - "sub_path": "machine/FLSun S1.json" - }, - { - "name": "FLSun T1", - "sub_path": "machine/FLSun T1.json" - } - ], - "process_list": [ - { - "name": "fdm_process_common", - "sub_path": "process/fdm_process_common.json" - }, - { - "name": "0.08mm Fine @FLSun Q5", - "sub_path": "process/0.08mm Fine @FLSun Q5.json" - }, - { - "name": "0.08mm Fine @FLSun QQSPro", - "sub_path": "process/0.08mm Fine @FLSun QQSPro.json" - }, - { - "name": "0.08mm Fine @FLSun SR", - "sub_path": "process/0.08mm Fine @FLSun SR.json" - }, - { - "name": "0.16mm Optimal @FLSun Q5", - "sub_path": "process/0.16mm Optimal @FLSun Q5.json" - }, - { - "name": "0.16mm Optimal @FLSun QQSPro", - "sub_path": "process/0.16mm Optimal @FLSun QQSPro.json" - }, - { - "name": "0.16mm Optimal @FLSun SR", - "sub_path": "process/0.16mm Optimal @FLSun SR.json" - }, - { - "name": "0.20mm Standard @FLSun Q5", - "sub_path": "process/0.20mm Standard @FLSun Q5.json" - }, - { - "name": "0.20mm Standard @FLSun QQSPro", - "sub_path": "process/0.20mm Standard @FLSun QQSPro.json" - }, - { - "name": "0.20mm Standard @FLSun SR", - "sub_path": "process/0.20mm Standard @FLSun SR.json" - }, - { - "name": "0.20mm Standard @FLSun V400", - "sub_path": "process/0.20mm Standard @FLSun V400.json" - }, - { - "name": "0.20mm Standard @FLSun S1", - "sub_path": "process/0.20mm Standard @FLSun S1.json" - }, - { - "name": "0.20mm Standard @FLSun T1", - "sub_path": "process/0.20mm Standard @FLSun T1.json" - }, - { - "name": "0.24mm Draft @FLSun Q5", - "sub_path": "process/0.24mm Draft @FLSun Q5.json" - }, - { - "name": "0.24mm Draft @FLSun QQSPro", - "sub_path": "process/0.24mm Draft @FLSun QQSPro.json" - }, - { - "name": "0.24mm Draft @FLSun SR", - "sub_path": "process/0.24mm Draft @FLSun SR.json" - }, - { - "name": "0.30mm Extra Draft @FLSun Q5", - "sub_path": "process/0.30mm Extra Draft @FLSun Q5.json" - }, - { - "name": "0.30mm Extra Draft @FLSun QQSPro", - "sub_path": "process/0.30mm Extra Draft @FLSun QQSPro.json" - }, - { - "name": "0.30mm Extra Draft @FLSun SR", - "sub_path": "process/0.30mm Extra Draft @FLSun SR.json" - } - ], - "filament_list": [ - { - "name": "fdm_filament_common", - "sub_path": "filament/fdm_filament_common.json" - }, - { - "name": "fdm_filament_pla", - "sub_path": "filament/fdm_filament_pla.json" - }, - { - "name": "fdm_filament_tpu", - "sub_path": "filament/fdm_filament_tpu.json" - }, - { - "name": "fdm_filament_pet", - "sub_path": "filament/fdm_filament_pet.json" - }, - { - "name": "fdm_filament_abs", - "sub_path": "filament/fdm_filament_abs.json" - }, - { - "name": "fdm_filament_pc", - "sub_path": "filament/fdm_filament_pc.json" - }, - { - "name": "fdm_filament_asa", - "sub_path": "filament/fdm_filament_asa.json" - }, - { - "name": "fdm_filament_pva", - "sub_path": "filament/fdm_filament_pva.json" - }, - { - "name": "fdm_filament_pa", - "sub_path": "filament/fdm_filament_pa.json" - }, - { - "name": "FLSun Generic PLA", - "sub_path": "filament/FLSun Generic PLA.json" - }, - { - "name": "FLSun Generic PLA-CF", - "sub_path": "filament/FLSun Generic PLA-CF.json" - }, - { - "name": "FLSun Generic PETG", - "sub_path": "filament/FLSun Generic PETG.json" - }, - { - "name": "FLSun Generic ABS", - "sub_path": "filament/FLSun Generic ABS.json" - }, - { - "name": "FLSun Generic TPU", - "sub_path": "filament/FLSun Generic TPU.json" - }, - { - "name": "FLSun Generic ASA", - "sub_path": "filament/FLSun Generic ASA.json" - }, - { - "name": "FLSun Generic PC", - "sub_path": "filament/FLSun Generic PC.json" - }, - { - "name": "FLSun Generic PVA", - "sub_path": "filament/FLSun Generic PVA.json" - }, - { - "name": "FLSun Generic PA", - "sub_path": "filament/FLSun Generic PA.json" - }, - { - "name": "FLSun Generic PA-CF", - "sub_path": "filament/FLSun Generic PA-CF.json" - }, - { - "name": "FLSun Generic PLA-HS-S1", - "sub_path": "filament/FLSun Generic PLA-HS-S1.json" - }, - { - "name": "FLSun Generic PLA-HS-T1", - "sub_path": "filament/FLSun Generic PLA-HS-T1.json" - } - ], - "machine_list": [ - { - "name": "fdm_machine_common", - "sub_path": "machine/fdm_machine_common.json" - }, - { - "name": "FLSun Q5 0.4 nozzle", - "sub_path": "machine/FLSun Q5 0.4 nozzle.json" - }, - { - "name": "FLSun QQ-S Pro 0.4 nozzle", - "sub_path": "machine/FLSun QQ-S Pro 0.4 nozzle.json" - }, - { - "name": "FLSun Super Racer 0.4 nozzle", - "sub_path": "machine/FLSun SR 0.4 nozzle.json" - }, - { - "name": "FLSun V400 0.4 nozzle", - "sub_path": "machine/FLSun V400 0.4 nozzle.json" - }, - { - "name": "FLSun T1 0.4 nozzle", - "sub_path": "machine/FLSun T1 0.4 nozzle.json" - }, - { - "name": "FLSun S1 0.4 nozzle", - "sub_path": "machine/FLSun S1 0.4 nozzle.json" - } - ] -} \ No newline at end of file +{ + "name": "FLSun", + "version": "02.01.01.00", + "force_update": "0", + "description": "FLSun configurations", + "machine_model_list": [ + { + "name": "FLSun Q5", + "sub_path": "machine/FLSun Q5.json" + }, + { + "name": "FLSun QQ-S Pro", + "sub_path": "machine/FLSun QQ-S Pro.json" + }, + { + "name": "FLSun Super Racer (SR)", + "sub_path": "machine/FLSun SR.json" + }, + { + "name": "FLSun V400", + "sub_path": "machine/FLSun V400.json" + }, + { + "name": "FLSun T1", + "sub_path": "machine/FLSun T1.json" + }, + { + "name": "FLSun S1", + "sub_path": "machine/FLSun S1.json" + } + ], + "process_list": [ + { + "name": "fdm_process_common", + "sub_path": "process/fdm_process_common.json" + }, + { + "name": "0.08mm Fine @FLSun Q5", + "sub_path": "process/0.08mm Fine @FLSun Q5.json" + }, + { + "name": "0.08mm Fine @FLSun QQSPro", + "sub_path": "process/0.08mm Fine @FLSun QQSPro.json" + }, + { + "name": "0.08mm Fine @FLSun SR", + "sub_path": "process/0.08mm Fine @FLSun SR.json" + }, + { + "name": "0.12mm Fine @FLSun T1", + "sub_path": "process/0.12mm Fine @FLSun T1.json" + }, + { + "name": "0.12mm Fine @FLSun S1", + "sub_path": "process/0.12mm Fine @FLSun S1.json" + }, + { + "name": "0.16mm Optimal @FLSun Q5", + "sub_path": "process/0.16mm Optimal @FLSun Q5.json" + }, + { + "name": "0.16mm Optimal @FLSun QQSPro", + "sub_path": "process/0.16mm Optimal @FLSun QQSPro.json" + }, + { + "name": "0.16mm Optimal @FLSun SR", + "sub_path": "process/0.16mm Optimal @FLSun SR.json" + }, + { + "name": "0.16mm Optimal @FLSun T1", + "sub_path": "process/0.16mm Optimal @FLSun T1.json" + }, + { + "name": "0.16mm Optimal @FLSun S1", + "sub_path": "process/0.16mm Optimal @FLSun S1.json" + }, + { + "name": "0.20mm Standard @FLSun Q5", + "sub_path": "process/0.20mm Standard @FLSun Q5.json" + }, + { + "name": "0.20mm Standard @FLSun QQSPro", + "sub_path": "process/0.20mm Standard @FLSun QQSPro.json" + }, + { + "name": "0.20mm Standard @FLSun SR", + "sub_path": "process/0.20mm Standard @FLSun SR.json" + }, + { + "name": "0.20mm Standard @FLSun V400", + "sub_path": "process/0.20mm Standard @FLSun V400.json" + }, + { + "name": "0.20mm Standard @FLSun T1", + "sub_path": "process/0.20mm Standard @FLSun T1.json" + }, + { + "name": "0.20mm Standard @FLSun S1", + "sub_path": "process/0.20mm Standard @FLSun S1.json" + }, + { + "name": "0.24mm Draft @FLSun Q5", + "sub_path": "process/0.24mm Draft @FLSun Q5.json" + }, + { + "name": "0.24mm Draft @FLSun QQSPro", + "sub_path": "process/0.24mm Draft @FLSun QQSPro.json" + }, + { + "name": "0.24mm Draft @FLSun SR", + "sub_path": "process/0.24mm Draft @FLSun SR.json" + }, + { + "name": "0.24mm Draft @FLSun T1", + "sub_path": "process/0.24mm Draft @FLSun T1.json" + }, + { + "name": "0.24mm Draft @FLSun S1", + "sub_path": "process/0.24mm Draft @FLSun S1.json" + }, + { + "name": "0.30mm Extra Draft @FLSun Q5", + "sub_path": "process/0.30mm Extra Draft @FLSun Q5.json" + }, + { + "name": "0.30mm Extra Draft @FLSun QQSPro", + "sub_path": "process/0.30mm Extra Draft @FLSun QQSPro.json" + }, + { + "name": "0.30mm Extra Draft @FLSun SR", + "sub_path": "process/0.30mm Extra Draft @FLSun SR.json" + }, + { + "name": "0.30mm Extra Draft @FLSun T1", + "sub_path": "process/0.30mm Extra Draft @FLSun T1.json" + }, + { + "name": "0.30mm Extra Draft @FLSun S1", + "sub_path": "process/0.30mm Extra Draft @FLSun S1.json" + } + ], + "filament_list": [ + { + "name": "fdm_filament_common", + "sub_path": "filament/fdm_filament_common.json" + }, + { + "name": "fdm_filament_pla", + "sub_path": "filament/fdm_filament_pla.json" + }, + { + "name": "fdm_filament_tpu", + "sub_path": "filament/fdm_filament_tpu.json" + }, + { + "name": "fdm_filament_pet", + "sub_path": "filament/fdm_filament_pet.json" + }, + { + "name": "fdm_filament_abs", + "sub_path": "filament/fdm_filament_abs.json" + }, + { + "name": "fdm_filament_pc", + "sub_path": "filament/fdm_filament_pc.json" + }, + { + "name": "fdm_filament_asa", + "sub_path": "filament/fdm_filament_asa.json" + }, + { + "name": "fdm_filament_pva", + "sub_path": "filament/fdm_filament_pva.json" + }, + { + "name": "fdm_filament_pa", + "sub_path": "filament/fdm_filament_pa.json" + }, + { + "name": "FLSun Generic PLA", + "sub_path": "filament/FLSun Generic PLA.json" + }, + { + "name": "FLSun Generic PLA-CF", + "sub_path": "filament/FLSun Generic PLA-CF.json" + }, + { + "name": "FLSun Generic PETG", + "sub_path": "filament/FLSun Generic PETG.json" + }, + { + "name": "FLSun Generic ABS", + "sub_path": "filament/FLSun Generic ABS.json" + }, + { + "name": "FLSun Generic TPU", + "sub_path": "filament/FLSun Generic TPU.json" + }, + { + "name": "FLSun Generic ASA", + "sub_path": "filament/FLSun Generic ASA.json" + }, + { + "name": "FLSun Generic PC", + "sub_path": "filament/FLSun Generic PC.json" + }, + { + "name": "FLSun Generic PVA", + "sub_path": "filament/FLSun Generic PVA.json" + }, + { + "name": "FLSun Generic PA", + "sub_path": "filament/FLSun Generic PA.json" + }, + { + "name": "FLSun Generic PA-CF", + "sub_path": "filament/FLSun Generic PA-CF.json" + }, + { + "name": "FLSun T1 PLA High Speed", + "sub_path": "filament/FLSun T1 PLA High Speed.json" + }, + { + "name": "FLSun S1 PLA High Speed", + "sub_path": "filament/FLSun S1 PLA High Speed.json" + }, + { + "name": "FLSun T1 PLA Silk", + "sub_path": "filament/FLSun T1 PLA Silk.json" + }, + { + "name": "FLSun S1 PLA Silk", + "sub_path": "filament/FLSun S1 PLA Silk.json" + }, + { + "name": "FLSun T1 PLA Generic", + "sub_path": "filament/FLSun T1 PLA Generic.json" + }, + { + "name": "FLSun S1 PLA Generic", + "sub_path": "filament/FLSun S1 PLA Generic.json" + }, + { + "name": "FLSun T1 PETG", + "sub_path": "filament/FLSun T1 PETG.json" + }, + { + "name": "FLSun S1 PETG", + "sub_path": "filament/FLSun S1 PETG.json" + }, + { + "name": "FLSun T1 ASA", + "sub_path": "filament/FLSun T1 ASA.json" + }, + { + "name": "FLSun S1 ASA", + "sub_path": "filament/FLSun S1 ASA.json" + }, + { + "name": "FLSun T1 TPU", + "sub_path": "filament/FLSun T1 TPU.json" + }, + { + "name": "FLSun S1 TPU", + "sub_path": "filament/FLSun S1 TPU.json" + }, + { + "name": "FLSun T1 ABS", + "sub_path": "filament/FLSun T1 ABS.json" + }, + { + "name": "FLSun S1 ABS", + "sub_path": "filament/FLSun S1 ABS.json" + } + ], + "machine_list": [ + { + "name": "fdm_machine_common", + "sub_path": "machine/fdm_machine_common.json" + }, + { + "name": "FLSun Q5 0.4 nozzle", + "sub_path": "machine/FLSun Q5 0.4 nozzle.json" + }, + { + "name": "FLSun QQ-S Pro 0.4 nozzle", + "sub_path": "machine/FLSun QQ-S Pro 0.4 nozzle.json" + }, + { + "name": "FLSun Super Racer 0.4 nozzle", + "sub_path": "machine/FLSun SR 0.4 nozzle.json" + }, + { + "name": "FLSun V400 0.4 nozzle", + "sub_path": "machine/FLSun V400 0.4 nozzle.json" + }, + { + "name": "FLSun T1 0.4 nozzle", + "sub_path": "machine/FLSun T1 0.4 nozzle.json" + }, + { + "name": "FLSun S1 0.4 nozzle", + "sub_path": "machine/FLSun S1 0.4 nozzle.json" + } + ] +} diff --git a/resources/profiles/FLSun/FLSun S1_cover.png b/resources/profiles/FLSun/FLSun S1_cover.png index d5c49294bb2..a1e43c2a502 100644 Binary files a/resources/profiles/FLSun/FLSun S1_cover.png and b/resources/profiles/FLSun/FLSun S1_cover.png differ diff --git a/resources/profiles/FLSun/FLSun T1_cover.png b/resources/profiles/FLSun/FLSun T1_cover.png index 5ee7fb0f129..37435793c06 100644 Binary files a/resources/profiles/FLSun/FLSun T1_cover.png and b/resources/profiles/FLSun/FLSun T1_cover.png differ diff --git a/resources/profiles/FLSun/FLSun_S1_buildplate_texture.png b/resources/profiles/FLSun/FLSun_S1_buildplate_texture.png new file mode 100644 index 00000000000..81f375fce90 Binary files /dev/null and b/resources/profiles/FLSun/FLSun_S1_buildplate_texture.png differ diff --git a/resources/profiles/FLSun/FLSun_T1_buildplate_texture.png b/resources/profiles/FLSun/FLSun_T1_buildplate_texture.png new file mode 100644 index 00000000000..a080ed71d50 Binary files /dev/null and b/resources/profiles/FLSun/FLSun_T1_buildplate_texture.png differ diff --git a/resources/profiles/FLSun/filament/FLSun Generic PLA-HS-S1.json b/resources/profiles/FLSun/filament/FLSun Generic PLA-HS-S1.json deleted file mode 100644 index b1a01576e7b..00000000000 --- a/resources/profiles/FLSun/filament/FLSun Generic PLA-HS-S1.json +++ /dev/null @@ -1,24 +0,0 @@ -{ - "type": "filament", - "filament_id": "GFH99", - "setting_id": "GFSA04", - "name": "FLSun Generic PLA-HS-S1", - "from": "system", - "instantiation": "true", - "inherits": "fdm_filament_pla", - "filament_flow_ratio": [ - "1.1" - ], - "filament_type": [ - "PLA-HS" - ], - "filament_max_volumetric_speed": [ - "110" - ], - "slow_down_layer_time": [ - "1" - ], - "compatible_printers": [ - "FLSun S1 0.4 nozzle" - ] -} \ No newline at end of file diff --git a/resources/profiles/FLSun/filament/FLSun Generic PLA-HS-T1.json b/resources/profiles/FLSun/filament/FLSun Generic PLA-HS-T1.json deleted file mode 100644 index 2f0ea5402c3..00000000000 --- a/resources/profiles/FLSun/filament/FLSun Generic PLA-HS-T1.json +++ /dev/null @@ -1,21 +0,0 @@ -{ - "type": "filament", - "filament_id": "GFL99", - "setting_id": "GFSA04", - "name": "FLSun Generic PLA-HS-T1", - "from": "system", - "instantiation": "true", - "inherits": "fdm_filament_pla", - "filament_flow_ratio": [ - "0.95" - ], - "filament_max_volumetric_speed": [ - "60" - ], - "slow_down_layer_time": [ - "100" - ], - "compatible_printers": [ - "FLSun T1 0.4 nozzle" - ] -} \ No newline at end of file diff --git a/resources/profiles/FLSun/filament/FLSun S1 ABS.json b/resources/profiles/FLSun/filament/FLSun S1 ABS.json new file mode 100644 index 00000000000..9dc8efb7d45 --- /dev/null +++ b/resources/profiles/FLSun/filament/FLSun S1 ABS.json @@ -0,0 +1,34 @@ +{ + "type": "filament", + "filament_id": "GFB99", + "setting_id": "GFSA04", + "name": "FLSun S1 ABS", + "from": "system", + "instantiation": "true", + "inherits": "FLSun Generic ABS", + "fan_max_speed": ["50"], + "fan_min_speed": ["10"], + "filament_density" : "1.05", + "filament_flow_ratio" : "0.95", + "activate_air_filtration": ["1"], + "complete_print_exhaust_fan_speed": ["0"], + "during_print_exhaust_fan_speed": ["0"], + "fan_cooling_layer_time": ["30"], + "filament_cost": ["0"], + "full_fan_speed_layer": ["3"], + "hot_plate_temp": ["90"], + "hot_plate_temp_initial_layer": ["90"], + "nozzle_temperature": ["280"], + "nozzle_temperature_initial_layer": ["280"], + "nozzle_temperature_range_low": ["240"], + "nozzle_temperature_range_high": ["300"], + "overhang_fan_speed": ["50"], + "slow_down_layer_time": ["12"], + "slow_down_min_speed": ["30"], + "temperature_vitrification": ["100"], + "filament_max_volumetric_speed": ["20"], + "dont_slow_down_outer_wall": ["1"], + "compatible_printers": [ + "FLSun S1 0.4 nozzle" + ] +} diff --git a/resources/profiles/FLSun/filament/FLSun S1 ASA.json b/resources/profiles/FLSun/filament/FLSun S1 ASA.json new file mode 100644 index 00000000000..a08d6ed9f47 --- /dev/null +++ b/resources/profiles/FLSun/filament/FLSun S1 ASA.json @@ -0,0 +1,34 @@ +{ + "type": "filament", + "filament_id": "GFB98", + "setting_id": "GFSA04", + "name": "FLSun S1 ASA", + "from": "system", + "instantiation": "true", + "inherits": "FLSun Generic ASA", + "fan_max_speed": ["50"], + "fan_min_speed": ["35"], + "filament_density" : "1.05", + "filament_flow_ratio" : "0.95", + "activate_air_filtration": ["1"], + "complete_print_exhaust_fan_speed": ["0"], + "during_print_exhaust_fan_speed": ["0"], + "fan_cooling_layer_time": ["35"], + "filament_cost": ["0"], + "full_fan_speed_layer": ["3"], + "hot_plate_temp": ["90"], + "hot_plate_temp_initial_layer": ["90"], + "nozzle_temperature": ["280"], + "nozzle_temperature_initial_layer": ["280"], + "nozzle_temperature_range_low": ["240"], + "nozzle_temperature_range_high": ["300"], + "overhang_fan_speed": ["35"], + "slow_down_layer_time": ["2"], + "slow_down_min_speed": ["80"], + "temperature_vitrification": ["100"], + "filament_max_volumetric_speed": ["25"], + "dont_slow_down_outer_wall": ["1"], + "compatible_printers": [ + "FLSun S1 0.4 nozzle" + ] +} diff --git a/resources/profiles/FLSun/filament/FLSun S1 PETG.json b/resources/profiles/FLSun/filament/FLSun S1 PETG.json new file mode 100644 index 00000000000..b0bd5de241c --- /dev/null +++ b/resources/profiles/FLSun/filament/FLSun S1 PETG.json @@ -0,0 +1,32 @@ +{ + "type": "filament", + "filament_id": "GFG99", + "setting_id": "GFSA04", + "name": "FLSun S1 PETG", + "from": "system", + "instantiation": "true", + "inherits": "FLSun Generic PETG", + "fan_max_speed": ["60"], + "fan_min_speed": ["50"], + "activate_air_filtration": ["1"], + "complete_print_exhaust_fan_speed": ["0"], + "during_print_exhaust_fan_speed": ["100"], + "fan_cooling_layer_time": ["100"], + "filament_cost": ["0"], + "full_fan_speed_layer": ["2"], + "hot_plate_temp": ["80"], + "hot_plate_temp_initial_layer": ["80"], + "nozzle_temperature": ["260"], + "nozzle_temperature_initial_layer": ["260"], + "nozzle_temperature_range_low": ["230"], + "nozzle_temperature_range_high": ["270"], + "overhang_fan_speed": ["35"], + "slow_down_layer_time": ["2"], + "slow_down_min_speed": ["30"], + "temperature_vitrification": ["70"], + "filament_max_volumetric_speed": ["15"], + "dont_slow_down_outer_wall": ["1"], + "compatible_printers": [ + "FLSun S1 0.4 nozzle" + ] +} diff --git a/resources/profiles/FLSun/filament/FLSun S1 PLA Generic.json b/resources/profiles/FLSun/filament/FLSun S1 PLA Generic.json new file mode 100644 index 00000000000..0fe334a390e --- /dev/null +++ b/resources/profiles/FLSun/filament/FLSun S1 PLA Generic.json @@ -0,0 +1,30 @@ +{ + "type": "filament", + "filament_id": "GFL99", + "setting_id": "GFSA04", + "name": "FLSun S1 PLA Generic", + "from": "system", + "instantiation": "true", + "inherits": "FLSun Generic PLA", + "activate_air_filtration": ["1"], + "complete_print_exhaust_fan_speed": ["0"], + "during_print_exhaust_fan_speed": ["100"], + "fan_cooling_layer_time": ["100"], + "filament_cost": ["0"], + "filament_density" : "1.32", + "full_fan_speed_layer": ["3"], + "hot_plate_temp": ["60"], + "hot_plate_temp_initial_layer": ["60"], + "nozzle_temperature": ["240"], + "nozzle_temperature_initial_layer": ["240"], + "nozzle_temperature_range_low": ["190"], + "nozzle_temperature_range_high": ["240"], + "overhang_fan_speed": ["35"], + "slow_down_layer_time": ["1"], + "slow_down_min_speed": ["80"], + "filament_max_volumetric_speed": ["60"], + "dont_slow_down_outer_wall": ["1"], + "compatible_printers": [ + "FLSun S1 0.4 nozzle" + ] +} diff --git a/resources/profiles/FLSun/filament/FLSun S1 PLA High Speed.json b/resources/profiles/FLSun/filament/FLSun S1 PLA High Speed.json new file mode 100644 index 00000000000..613d5ae908d --- /dev/null +++ b/resources/profiles/FLSun/filament/FLSun S1 PLA High Speed.json @@ -0,0 +1,29 @@ +{ + "type": "filament", + "filament_id": "GFL99", + "setting_id": "GFSA04", + "name": "FLSun S1 PLA High Speed", + "from": "system", + "instantiation": "true", + "inherits": "FLSun Generic PLA", + "activate_air_filtration": ["1"], + "complete_print_exhaust_fan_speed": ["0"], + "during_print_exhaust_fan_speed": ["100"], + "fan_cooling_layer_time": ["100"], + "filament_cost": ["0"], + "full_fan_speed_layer": ["3"], + "hot_plate_temp": ["60"], + "hot_plate_temp_initial_layer": ["60"], + "nozzle_temperature": ["230"], + "nozzle_temperature_initial_layer": ["230"], + "nozzle_temperature_range_low": ["190"], + "nozzle_temperature_range_high": ["240"], + "overhang_fan_speed": ["35"], + "slow_down_layer_time": ["1"], + "slow_down_min_speed": ["80"], + "filament_max_volumetric_speed": ["110"], + "dont_slow_down_outer_wall": ["1"], + "compatible_printers": [ + "FLSun S1 0.4 nozzle" + ] +} diff --git a/resources/profiles/FLSun/filament/FLSun S1 PLA Silk.json b/resources/profiles/FLSun/filament/FLSun S1 PLA Silk.json new file mode 100644 index 00000000000..2a083160922 --- /dev/null +++ b/resources/profiles/FLSun/filament/FLSun S1 PLA Silk.json @@ -0,0 +1,30 @@ +{ + "type": "filament", + "filament_id": "GFL99", + "setting_id": "GFSA04", + "name": "FLSun S1 PLA Silk", + "from": "system", + "instantiation": "true", + "inherits": "FLSun Generic PLA", + "activate_air_filtration": ["1"], + "complete_print_exhaust_fan_speed": ["0"], + "during_print_exhaust_fan_speed": ["100"], + "fan_cooling_layer_time": ["100"], + "filament_cost": ["0"], + "filament_density" : "1.32", + "full_fan_speed_layer": ["3"], + "hot_plate_temp": ["60"], + "hot_plate_temp_initial_layer": ["60"], + "nozzle_temperature": ["240"], + "nozzle_temperature_initial_layer": ["240"], + "nozzle_temperature_range_low": ["190"], + "nozzle_temperature_range_high": ["240"], + "overhang_fan_speed": ["35"], + "slow_down_layer_time": ["1"], + "slow_down_min_speed": ["80"], + "filament_max_volumetric_speed": ["25"], + "dont_slow_down_outer_wall": ["1"], + "compatible_printers": [ + "FLSun S1 0.4 nozzle" + ] +} diff --git a/resources/profiles/FLSun/filament/FLSun S1 TPU.json b/resources/profiles/FLSun/filament/FLSun S1 TPU.json new file mode 100644 index 00000000000..d6013af73b2 --- /dev/null +++ b/resources/profiles/FLSun/filament/FLSun S1 TPU.json @@ -0,0 +1,35 @@ +{ + "type": "filament", + "filament_id": "GFU99", + "setting_id": "GFSA04", + "name": "FLSun S1 TPU", + "from": "system", + "instantiation": "true", + "inherits": "FLSun Generic TPU", + "fan_max_speed": ["100"], + "fan_min_speed": ["100"], + "filament_density" : "1.22", + "filament_flow_ratio" : "1", + "activate_air_filtration": ["1"], + "complete_print_exhaust_fan_speed": ["0"], + "close_fan_the_first_x_layers": ["1"], + "during_print_exhaust_fan_speed": ["100"], + "fan_cooling_layer_time": ["100"], + "filament_cost": ["0"], + "full_fan_speed_layer": ["3"], + "hot_plate_temp": ["35"], + "hot_plate_temp_initial_layer": ["35"], + "nozzle_temperature": ["240"], + "nozzle_temperature_initial_layer": ["240"], + "nozzle_temperature_range_low": ["200"], + "nozzle_temperature_range_high": ["250"], + "overhang_fan_speed": ["100"], + "slow_down_layer_time": ["8"], + "slow_down_min_speed": ["20"], + "temperature_vitrification": ["30"], + "filament_max_volumetric_speed": ["3.5"], + "dont_slow_down_outer_wall": ["1"], + "compatible_printers": [ + "FLSun S1 0.4 nozzle" + ] +} diff --git a/resources/profiles/FLSun/filament/FLSun T1 ABS.json b/resources/profiles/FLSun/filament/FLSun T1 ABS.json new file mode 100644 index 00000000000..aa6c0b25e07 --- /dev/null +++ b/resources/profiles/FLSun/filament/FLSun T1 ABS.json @@ -0,0 +1,34 @@ +{ + "type": "filament", + "filament_id": "GFB99", + "setting_id": "GFSA04", + "name": "FLSun T1 ABS", + "from": "system", + "instantiation": "true", + "inherits": "FLSun Generic ABS", + "fan_max_speed": ["50"], + "fan_min_speed": ["10"], + "filament_density" : "1.05", + "filament_flow_ratio" : "0.95", + "activate_air_filtration": ["1"], + "complete_print_exhaust_fan_speed": ["0"], + "during_print_exhaust_fan_speed": ["0"], + "fan_cooling_layer_time": ["30"], + "filament_cost": ["0"], + "full_fan_speed_layer": ["3"], + "hot_plate_temp": ["90"], + "hot_plate_temp_initial_layer": ["90"], + "nozzle_temperature": ["280"], + "nozzle_temperature_initial_layer": ["280"], + "nozzle_temperature_range_low": ["240"], + "nozzle_temperature_range_high": ["300"], + "overhang_fan_speed": ["50"], + "slow_down_layer_time": ["12"], + "slow_down_min_speed": ["30"], + "temperature_vitrification": ["100"], + "filament_max_volumetric_speed": ["20"], + "dont_slow_down_outer_wall": ["1"], + "compatible_printers": [ + "FLSun T1 0.4 nozzle" + ] +} diff --git a/resources/profiles/FLSun/filament/FLSun T1 ASA.json b/resources/profiles/FLSun/filament/FLSun T1 ASA.json new file mode 100644 index 00000000000..307917f630c --- /dev/null +++ b/resources/profiles/FLSun/filament/FLSun T1 ASA.json @@ -0,0 +1,34 @@ +{ + "type": "filament", + "filament_id": "GFB98", + "setting_id": "GFSA04", + "name": "FLSun T1 ASA", + "from": "system", + "instantiation": "true", + "inherits": "FLSun Generic ASA", + "fan_max_speed": ["50"], + "fan_min_speed": ["35"], + "filament_density" : "1.05", + "filament_flow_ratio" : "0.95", + "activate_air_filtration": ["1"], + "complete_print_exhaust_fan_speed": ["0"], + "during_print_exhaust_fan_speed": ["0"], + "fan_cooling_layer_time": ["35"], + "filament_cost": ["0"], + "full_fan_speed_layer": ["3"], + "hot_plate_temp": ["90"], + "hot_plate_temp_initial_layer": ["90"], + "nozzle_temperature": ["280"], + "nozzle_temperature_initial_layer": ["280"], + "nozzle_temperature_range_low": ["240"], + "nozzle_temperature_range_high": ["300"], + "overhang_fan_speed": ["35"], + "slow_down_layer_time": ["2"], + "slow_down_min_speed": ["80"], + "temperature_vitrification": ["100"], + "filament_max_volumetric_speed": ["25"], + "dont_slow_down_outer_wall": ["1"], + "compatible_printers": [ + "FLSun T1 0.4 nozzle" + ] +} diff --git a/resources/profiles/FLSun/filament/FLSun T1 PETG.json b/resources/profiles/FLSun/filament/FLSun T1 PETG.json new file mode 100644 index 00000000000..fa55fe27e84 --- /dev/null +++ b/resources/profiles/FLSun/filament/FLSun T1 PETG.json @@ -0,0 +1,32 @@ +{ + "type": "filament", + "filament_id": "GFG99", + "setting_id": "GFSA04", + "name": "FLSun T1 PETG", + "from": "system", + "instantiation": "true", + "inherits": "FLSun Generic PETG", + "fan_max_speed": ["60"], + "fan_min_speed": ["50"], + "activate_air_filtration": ["1"], + "complete_print_exhaust_fan_speed": ["0"], + "during_print_exhaust_fan_speed": ["100"], + "fan_cooling_layer_time": ["100"], + "filament_cost": ["0"], + "full_fan_speed_layer": ["2"], + "hot_plate_temp": ["80"], + "hot_plate_temp_initial_layer": ["80"], + "nozzle_temperature": ["260"], + "nozzle_temperature_initial_layer": ["260"], + "nozzle_temperature_range_low": ["230"], + "nozzle_temperature_range_high": ["270"], + "overhang_fan_speed": ["35"], + "slow_down_layer_time": ["2"], + "slow_down_min_speed": ["30"], + "temperature_vitrification": ["70"], + "filament_max_volumetric_speed": ["15"], + "dont_slow_down_outer_wall": ["1"], + "compatible_printers": [ + "FLSun T1 0.4 nozzle" + ] +} diff --git a/resources/profiles/FLSun/filament/FLSun T1 PLA Generic.json b/resources/profiles/FLSun/filament/FLSun T1 PLA Generic.json new file mode 100644 index 00000000000..2c418b24019 --- /dev/null +++ b/resources/profiles/FLSun/filament/FLSun T1 PLA Generic.json @@ -0,0 +1,30 @@ +{ + "type": "filament", + "filament_id": "GFL99", + "setting_id": "GFSA04", + "name": "FLSun T1 PLA Generic", + "from": "system", + "instantiation": "true", + "inherits": "FLSun Generic PLA", + "activate_air_filtration": ["1"], + "complete_print_exhaust_fan_speed": ["0"], + "during_print_exhaust_fan_speed": ["100"], + "fan_cooling_layer_time": ["100"], + "filament_cost": ["0"], + "filament_density" : "1.32", + "full_fan_speed_layer": ["3"], + "hot_plate_temp": ["60"], + "hot_plate_temp_initial_layer": ["60"], + "nozzle_temperature": ["240"], + "nozzle_temperature_initial_layer": ["240"], + "nozzle_temperature_range_low": ["190"], + "nozzle_temperature_range_high": ["240"], + "overhang_fan_speed": ["35"], + "slow_down_layer_time": ["1"], + "slow_down_min_speed": ["80"], + "filament_max_volumetric_speed": ["60"], + "dont_slow_down_outer_wall": ["1"], + "compatible_printers": [ + "FLSun T1 0.4 nozzle" + ] +} diff --git a/resources/profiles/FLSun/filament/FLSun T1 PLA High Speed.json b/resources/profiles/FLSun/filament/FLSun T1 PLA High Speed.json new file mode 100644 index 00000000000..6f48058ca3f --- /dev/null +++ b/resources/profiles/FLSun/filament/FLSun T1 PLA High Speed.json @@ -0,0 +1,29 @@ +{ + "type": "filament", + "filament_id": "GFL99", + "setting_id": "GFSA04", + "name": "FLSun T1 PLA High Speed", + "from": "system", + "instantiation": "true", + "inherits": "FLSun Generic PLA", + "activate_air_filtration": ["1"], + "complete_print_exhaust_fan_speed": ["0"], + "during_print_exhaust_fan_speed": ["100"], + "fan_cooling_layer_time": ["100"], + "filament_cost": ["0"], + "full_fan_speed_layer": ["3"], + "hot_plate_temp": ["60"], + "hot_plate_temp_initial_layer": ["60"], + "nozzle_temperature": ["230"], + "nozzle_temperature_initial_layer": ["230"], + "nozzle_temperature_range_low": ["190"], + "nozzle_temperature_range_high": ["240"], + "overhang_fan_speed": ["35"], + "slow_down_layer_time": ["1"], + "slow_down_min_speed": ["80"], + "filament_max_volumetric_speed": ["60"], + "dont_slow_down_outer_wall": ["1"], + "compatible_printers": [ + "FLSun T1 0.4 nozzle" + ] +} diff --git a/resources/profiles/FLSun/filament/FLSun T1 PLA Silk.json b/resources/profiles/FLSun/filament/FLSun T1 PLA Silk.json new file mode 100644 index 00000000000..56fa05286c7 --- /dev/null +++ b/resources/profiles/FLSun/filament/FLSun T1 PLA Silk.json @@ -0,0 +1,30 @@ +{ + "type": "filament", + "filament_id": "GFL99", + "setting_id": "GFSA04", + "name": "FLSun T1 PLA Silk", + "from": "system", + "instantiation": "true", + "inherits": "FLSun Generic PLA", + "activate_air_filtration": ["1"], + "complete_print_exhaust_fan_speed": ["0"], + "during_print_exhaust_fan_speed": ["100"], + "fan_cooling_layer_time": ["100"], + "filament_cost": ["0"], + "filament_density" : "1.32", + "full_fan_speed_layer": ["3"], + "hot_plate_temp": ["60"], + "hot_plate_temp_initial_layer": ["60"], + "nozzle_temperature": ["240"], + "nozzle_temperature_initial_layer": ["240"], + "nozzle_temperature_range_low": ["190"], + "nozzle_temperature_range_high": ["240"], + "overhang_fan_speed": ["35"], + "slow_down_layer_time": ["1"], + "slow_down_min_speed": ["80"], + "filament_max_volumetric_speed": ["25"], + "dont_slow_down_outer_wall": ["1"], + "compatible_printers": [ + "FLSun T1 0.4 nozzle" + ] +} diff --git a/resources/profiles/FLSun/filament/FLSun T1 TPU.json b/resources/profiles/FLSun/filament/FLSun T1 TPU.json new file mode 100644 index 00000000000..d704dd036c8 --- /dev/null +++ b/resources/profiles/FLSun/filament/FLSun T1 TPU.json @@ -0,0 +1,35 @@ +{ + "type": "filament", + "filament_id": "GFU99", + "setting_id": "GFSA04", + "name": "FLSun T1 TPU", + "from": "system", + "instantiation": "true", + "inherits": "FLSun Generic TPU", + "fan_max_speed": ["100"], + "fan_min_speed": ["100"], + "filament_density" : "1.22", + "filament_flow_ratio" : "1", + "activate_air_filtration": ["1"], + "complete_print_exhaust_fan_speed": ["0"], + "close_fan_the_first_x_layers": ["1"], + "during_print_exhaust_fan_speed": ["100"], + "fan_cooling_layer_time": ["100"], + "filament_cost": ["0"], + "full_fan_speed_layer": ["3"], + "hot_plate_temp": ["35"], + "hot_plate_temp_initial_layer": ["35"], + "nozzle_temperature": ["240"], + "nozzle_temperature_initial_layer": ["240"], + "nozzle_temperature_range_low": ["200"], + "nozzle_temperature_range_high": ["250"], + "overhang_fan_speed": ["100"], + "slow_down_layer_time": ["8"], + "slow_down_min_speed": ["20"], + "temperature_vitrification": ["30"], + "filament_max_volumetric_speed": ["3.5"], + "dont_slow_down_outer_wall": ["1"], + "compatible_printers": [ + "FLSun T1 0.4 nozzle" + ] +} diff --git a/resources/profiles/FLSun/flsun_T1_buildplate_model.stl b/resources/profiles/FLSun/flsun_T1_buildplate_model.stl index 5702cb464f9..75c16944045 100644 Binary files a/resources/profiles/FLSun/flsun_T1_buildplate_model.stl and b/resources/profiles/FLSun/flsun_T1_buildplate_model.stl differ diff --git a/resources/profiles/FLSun/flsun_T1_buildplate_texture.svg b/resources/profiles/FLSun/flsun_T1_buildplate_texture.svg deleted file mode 100644 index a90e5aa342e..00000000000 --- a/resources/profiles/FLSun/flsun_T1_buildplate_texture.svg +++ /dev/null @@ -1 +0,0 @@ - \ No newline at end of file diff --git a/resources/profiles/FLSun/flsun_s1_buildplate_model.stl b/resources/profiles/FLSun/flsun_s1_buildplate_model.stl index 5702cb464f9..5197d985ad2 100644 Binary files a/resources/profiles/FLSun/flsun_s1_buildplate_model.stl and b/resources/profiles/FLSun/flsun_s1_buildplate_model.stl differ diff --git a/resources/profiles/FLSun/flsun_s1_buildplate_texture.svg b/resources/profiles/FLSun/flsun_s1_buildplate_texture.svg deleted file mode 100644 index 082fc11ee90..00000000000 --- a/resources/profiles/FLSun/flsun_s1_buildplate_texture.svg +++ /dev/null @@ -1 +0,0 @@ - \ No newline at end of file diff --git a/resources/profiles/FLSun/machine/FLSun S1 0.4 nozzle.json b/resources/profiles/FLSun/machine/FLSun S1 0.4 nozzle.json index 940d7a6530c..9a7b7fdc0ce 100644 --- a/resources/profiles/FLSun/machine/FLSun S1 0.4 nozzle.json +++ b/resources/profiles/FLSun/machine/FLSun S1 0.4 nozzle.json @@ -1,100 +1,178 @@ { - "type": "machine", - "setting_id": "GM003", - "name": "FLSun S1 0.4 nozzle", - "from": "system", - "instantiation": "true", - "inherits": "fdm_machine_common", - "printer_model": "FLSun S1", - "default_print_profile": "0.20mm PLA_HS_S1_FLSUN @FLSUN", - "gcode_flavor": "klipper", - "nozzle_diameter": [ - "0.4" - ], - "bed_exclude_area": [ - "0x0" - ], - "printable_area": [ - "159.392x13.945", - "157.57x27.7838", - "154.549x41.4112", - "150.351x54.7234", - "145.01x67.6191", - "138.564x80.0002", - "131.065x91.7725", - "122.567x102.846", - "113.137x113.137", - "102.846x122.567", - "91.7725x131.065", - "80.0003x138.564", - "67.6191x145.01", - "54.7234x150.351", - "41.4112x154.549", - "27.7838x157.57", - "13.945x159.392", - "9.79721e-15x160", - "-13.945x159.392", - "-27.7838x157.57", - "-41.4112x154.549", - "-54.7234x150.351", - "-67.6191x145.01", - "-80.0002x138.564", - "-91.7725x131.065", - "-102.846x122.567", - "-113.137x113.137", - "-122.567x102.846", - "-131.065x91.7725", - "-138.564x80.0003", - "-145.01x67.6191", - "-150.351x54.7234", - "-154.549x41.4112", - "-157.57x27.7838", - "-159.392x13.945", - "-160x1.95944e-14", - "-159.392x-13.945", - "-157.57x-27.7838", - "-154.549x-41.4112", - "-150.351x-54.7234", - "-145.01x-67.6191", - "-138.564x-80.0003", - "-131.065x-91.7725", - "-122.567x-102.846", - "-113.137x-113.137", - "-102.846x-122.567", - "-91.7725x-131.065", - "-80.0003x-138.564", - "-67.6191x-145.01", - "-54.7234x-150.351", - "-41.4112x-154.549", - "-27.7838x-157.57", - "-13.945x-159.392", - "-2.93916e-14x-160", - "13.945x-159.392", - "27.7838x-157.57", - "41.4112x-154.549", - "54.7234x-150.351", - "67.6191x-145.01", - "80.0002x-138.564", - "91.7725x-131.065", - "102.846x-122.567", - "113.137x-113.137", - "122.567x-102.846", - "131.065x-91.7725", - "138.564x-80.0002", - "145.01x-67.6191", - "150.351x-54.7234", - "154.549x-41.4112", - "157.57x-27.7838", - "159.392x-13.945", - "160x-3.91888e-14" - ], - "printable_height": "430", - "machine_end_gcode": "M107 T0\nM104 S0\nM104 S0 T1\nM140 S0\nG92 E0\nG91\nG1 Z+0.5 F6000\nG28 \nG90 ;absolute positioning", - "machine_start_gcode": "G21\nG90\nM82\nG28 ; home all axes\nM140 S[first_layer_bed_temperature] is_AB\nM104 S[first_layer_temperature] T0\nG1 F3000 Z1\nG1 X-155 Y0 Z0.4\nM107 T0\nM109 S[first_layer_temperature] T0\nM190 S[first_layer_bed_temperature] is_AB\nG92 E0\nG3 X0 Y-155 I155 Z0.3 E30 F2000\nG92 E0\nSET_TMC_CURRENT STEPPER=extruder CURRENT=0.8", - "layer_change_gcode": "", - "machine_pause_gcode": "M600", - "scan_first_layer": "0", - "nozzle_type": "hardened_steel", - "auxiliary_fan": "0" -} - + "type": "machine", + "setting_id": "GM003", + "name": "FLSun S1 0.4 nozzle", + "from": "system", + "instantiation": "true", + "inherits": "fdm_machine_common", + "printer_model": "FLSun S1", + "default_print_profile": "0.20mm Standard @FLSun S1", + "gcode_flavor": "klipper", + "printer_structure": "delta", + "nozzle_diameter": [ + "0.4" + ], + "bed_exclude_area": [ + "0x0" + ], + "thumbnails": [ + "48x48/PNG, 300x300/PNG" + ], + "deretraction_speed": [ + "80" + ], + "max_layer_height": [ + "0.3" + ], + "retract_before_wipe": [ + "30%" + ], + "retract_length_toolchange": [ + "1" + ], + "retract_restart_extra": [ + "-0.05" + ], + "retract_restart_extra_toolchange": [ + "-0.05" + ], + "retraction_length": [ + "1" + ], + "retraction_minimum_travel": [ + "2" + ], + "retraction_speed": [ + "80" + ], + "machine_max_acceleration_e": [ + "40000" + ], + "machine_max_acceleration_extruding": [ + "40000" + ], + "machine_max_acceleration_retracting": [ + "40000" + ], + "machine_max_acceleration_x": [ + "40000" + ], + "machine_max_acceleration_y": [ + "40000" + ], + "machine_max_acceleration_z": [ + "40000" + ], + "machine_max_jerk_e": [ + "100" + ], + "machine_max_jerk_x": [ + "20000" + ], + "machine_max_jerk_y": [ + "20000" + ], + "machine_max_jerk_z": [ + "10000" + ], + "machine_max_speed_e": [ + "1200" + ], + "machine_max_speed_x": [ + "1200" + ], + "machine_max_speed_y": [ + "1200" + ], + "machine_max_speed_z": [ + "1200" + ], + "printable_area": [ + "159.391x13.9449", + "157.569x27.7837", + "154.548x41.411", + "150.351x54.7232", + "145.009x67.6189", + "138.564x80", + "131.064x91.7722", + "122.567x102.846", + "113.137x113.137", + "102.846x122.567", + "91.7722x131.064", + "80x138.564", + "67.6189x145.009", + "54.7232x150.351", + "41.411x154.548", + "27.7837x157.569", + "13.9449x159.391", + "9.79717e-15x160", + "-13.9449x159.391", + "-27.7837x157.569", + "-41.411x154.548", + "-54.7232x150.351", + "-67.6189x145.009", + "-80x138.564", + "-91.7722x131.064", + "-102.846x122.567", + "-113.137x113.137", + "-122.567x102.846", + "-131.064x91.7722", + "-138.564x80", + "-145.009x67.6189", + "-150.351x54.7232", + "-154.548x41.411", + "-157.569x27.7837", + "-159.391x13.9449", + "-160x1.95943e-14", + "-159.391x-13.9449", + "-157.569x-27.7837", + "-154.548x-41.411", + "-150.351x-54.7232", + "-145.009x-67.6189", + "-138.564x-80", + "-131.064x-91.7722", + "-122.567x-102.846", + "-113.137x-113.137", + "-102.846x-122.567", + "-91.7722x-131.064", + "-80x-138.564", + "-67.6189x-145.009", + "-54.7232x-150.351", + "-41.411x-154.548", + "-27.7837x-157.569", + "-13.9449x-159.391", + "-2.93915e-14x-160", + "13.9449x-159.391", + "27.7837x-157.569", + "41.411x-154.548", + "54.7232x-150.351", + "67.6189x-145.009", + "80x-138.564", + "91.7722x-131.064", + "102.846x-122.567", + "113.137x-113.137", + "122.567x-102.846", + "131.064x-91.7722", + "138.564x-80", + "145.009x-67.6189", + "150.351x-54.7232", + "154.548x-41.411", + "157.569x-27.7837", + "159.391x-13.9449", + "160x-3.91887e-14" + ], + "support_air_filtration": "1", + "printable_height": "430", + "machine_end_gcode": "M107 T0\nM104 S0\nM140 S0\nM104 S0 T1\nG92 E0\nG91\nG1 E-1 F2100\nG1 Z+0.5 F6000\nG28\nG90", + "machine_start_gcode": "G90\nM82\nG28\n{if (first_layer_print_min[0] > 100 || first_layer_print_max[0] > 100 || first_layer_print_min[1] > 100 || first_layer_print_max[1] > 100 || first_layer_print_min[0] < -100 || first_layer_print_max[0] < -100 || first_layer_print_min[1] < -100 || first_layer_print_max[1] < -100)}M140 S[first_layer_bed_temperature] A1 B1{else}M140 S[first_layer_bed_temperature] A1 B0{endif}\nM104 S[first_layer_temperature] T0\nM107 T0\nM109 S[first_layer_temperature] T0\n{if (first_layer_print_min[0] > 100 || first_layer_print_max[0] > 100 || first_layer_print_min[1] > 100 || first_layer_print_max[1] > 100 || first_layer_print_min[0] < -100 || first_layer_print_max[0] < -100 || first_layer_print_min[1] < -100 || first_layer_print_max[1] < -100)}M190 S[first_layer_bed_temperature] A1 B1{else}M190 S[first_layer_bed_temperature] A1 B0{endif}\nG1 Z150 F6000\nG1 X-160 Y0 Z0.4 F4000\nG92 E0\nG3 X0 Y-160 I160 J0 Z0.3 E30 F2000\nG1 Z2 F2000\nG92 E0\nSET_TMC_CURRENT STEPPER=extruder CURRENT=0.8", + "change_filament_gcode": "PAUSE", + "machine_pause_gcode": "PAUSE", + "layer_change_gcode": "", + "support_chamber_temp_control": "0", + "scan_first_layer": "0", + "nozzle_type": "hardened_steel", + "adaptive_bed_mesh_margin": "0", + "emit_machine_limits_to_gcode": "0", + "auxiliary_fan": "0" + } + \ No newline at end of file diff --git a/resources/profiles/FLSun/machine/FLSun S1.json b/resources/profiles/FLSun/machine/FLSun S1.json index bb824ef9068..99a240d1289 100644 --- a/resources/profiles/FLSun/machine/FLSun S1.json +++ b/resources/profiles/FLSun/machine/FLSun S1.json @@ -1,12 +1,12 @@ { - "type": "machine_model", - "name": "FLSun S1", - "model_id": "FLSun_S1", - "nozzle_diameter": "0.4", - "machine_tech": "FFF", - "family": "FLSun", - "bed_model": "flsun_s1_buildplate_model.stl", - "bed_texture": "flsun_s1_buildplate_texture.svg", - "hotend_model": "", - "default_materials": "FLSun Generic PLA-HS-S1" + "type": "machine_model", + "name": "FLSun S1", + "model_id": "FLSun_S1", + "nozzle_diameter": "0.4", + "machine_tech": "FFF", + "family": "FLSun", + "bed_model": "FLSun_S1_buildplate_model.stl", + "bed_texture": "FLSun_S1_buildplate_texture.png", + "hotend_model": "", + "default_materials": "FLSun S1 PLA High Speed;FLSun S1 PLA Silk;FLSun S1 PLA Generic;FLSun S1 PETG;FLSun S1 ASA;FLSun S1 TPU;FLSun S1 ABS" } diff --git a/resources/profiles/FLSun/machine/FLSun T1 0.4 nozzle.json b/resources/profiles/FLSun/machine/FLSun T1 0.4 nozzle.json index fe098bd2bc4..9a8c9c283f3 100644 --- a/resources/profiles/FLSun/machine/FLSun T1 0.4 nozzle.json +++ b/resources/profiles/FLSun/machine/FLSun T1 0.4 nozzle.json @@ -6,14 +6,87 @@ "instantiation": "true", "inherits": "fdm_machine_common", "printer_model": "FLSun T1", - "default_print_profile": "0.20mm PLA_HS_T1_FLSUN @FLSUN", + "default_print_profile": "0.20mm Standard @FLSun T1", "gcode_flavor": "klipper", + "printer_structure": "delta", "nozzle_diameter": [ "0.4" ], "bed_exclude_area": [ "0x0" ], + "thumbnails": [ + "48x48/PNG, 300x300/PNG" + ], + "deretraction_speed": [ + "70" + ], + "max_layer_height": [ + "0.3" + ], + "retract_before_wipe": [ + "30%" + ], + "retract_length_toolchange": [ + "1" + ], + "retract_restart_extra": [ + "-0.05" + ], + "retract_restart_extra_toolchange": [ + "-0.05" + ], + "retraction_length": [ + "1" + ], + "retraction_minimum_travel": [ + "2" + ], + "retraction_speed": [ + "70" + ], + "machine_max_acceleration_e": [ + "30000" + ], + "machine_max_acceleration_extruding": [ + "30000" + ], + "machine_max_acceleration_retracting": [ + "30000" + ], + "machine_max_acceleration_x": [ + "30000" + ], + "machine_max_acceleration_y": [ + "30000" + ], + "machine_max_acceleration_z": [ + "30000" + ], + "machine_max_jerk_e": [ + "100" + ], + "machine_max_jerk_x": [ + "20000" + ], + "machine_max_jerk_y": [ + "20000" + ], + "machine_max_jerk_z": [ + "10000" + ], + "machine_max_speed_e": [ + "1000" + ], + "machine_max_speed_x": [ + "1000" + ], + "machine_max_speed_y": [ + "1000" + ], + "machine_max_speed_z": [ + "1000" + ], "printable_area": [ "129.505x11.3302", "128.025x22.5743", @@ -88,13 +161,18 @@ "129.505x-11.3302", "130x-3.18408e-14" ], + "support_air_filtration": "1", "printable_height": "330", - "machine_end_gcode": "M107 T0\nM104 S0\nM104 S0 T1\nM140 S0\nG92 E0\nG91\nG1 Z+0.5 F6000\nG28 \nG90 ;absolute positioning\nTIMELAPSE_RENDER", - "machine_start_gcode": "G21\nG90\nM82\nG28 ; home all axes\nM140 S[first_layer_bed_temperature]\nM104 S[first_layer_temperature] T0\nG1 F3000 Z1\nG1 X-125 Y0 Z0.4\nM109 S[first_layer_temperature] T0\nM190 S[first_layer_bed_temperature]\nM107 T0\nG92 E0\nG3 X0 Y-125 I125 Z0.3 E30 F2000\nG92 E0\nSET_TMC_CURRENT STEPPER=extruder CURRENT=0.8", + "machine_end_gcode": "M107 T0\nM104 S0\nM104 S0 T1\nM140 S0\nG92 E0\nG91\nG1 E-1 F2100\nG1 Z+0.5 F6000\nG28\nG90", + "machine_start_gcode": "G21\nG90\nM82\nG28\nM140 S[first_layer_bed_temperature]\nM104 S[first_layer_temperature] T0\nM109 S[first_layer_temperature] T0\nM190 S[first_layer_bed_temperature]\nG1 Z150 F3000\nG1 X-130 Y0 Z0.4\nM107 T0\nG92 E0\nG3 X0 Y-130 I130 J0 Z0.3 E30 F2000\nG1 Z2 F2000\nG92 E0\nSET_TMC_CURRENT STEPPER=extruder CURRENT=0.8", + "change_filament_gcode": "PAUSE", + "machine_pause_gcode": "PAUSE", "layer_change_gcode": "", - "machine_pause_gcode": "M600", + "support_chamber_temp_control": "0", "scan_first_layer": "0", "nozzle_type": "hardened_steel", + "adaptive_bed_mesh_margin": "0", + "emit_machine_limits_to_gcode": "0", "auxiliary_fan": "0" } diff --git a/resources/profiles/FLSun/machine/FLSun T1.json b/resources/profiles/FLSun/machine/FLSun T1.json index 65ea1a37375..663970ea873 100644 --- a/resources/profiles/FLSun/machine/FLSun T1.json +++ b/resources/profiles/FLSun/machine/FLSun T1.json @@ -1,12 +1,12 @@ { - "type": "machine_model", - "name": "FLSun T1", - "model_id": "FLSun_T1", - "nozzle_diameter": "0.4", - "machine_tech": "FFF", - "family": "FLSun", - "bed_model": "flsun_T1_buildplate_model.stl", - "bed_texture": "flsun_T1_buildplate_texture.svg", - "hotend_model": "", - "default_materials": "FLSun Generic PLA-HS-T1" + "type": "machine_model", + "name": "FLSun T1", + "model_id": "FLSun_T1", + "nozzle_diameter": "0.4", + "machine_tech": "FFF", + "family": "FLSun", + "bed_model": "FLSun_T1_buildplate_model.stl", + "bed_texture": "FLSun_T1_buildplate_texture.png", + "hotend_model": "", + "default_materials": "FLSun T1 PLA High Speed;FLSun T1 PLA Silk;FLSun T1 PLA Generic;FLSun T1 PETG;FLSun T1 ASA;FLSun T1 TPU;FLSun T1 ABS" } diff --git a/resources/profiles/FLSun/process/0.12mm Fine @FLSun S1.json b/resources/profiles/FLSun/process/0.12mm Fine @FLSun S1.json new file mode 100644 index 00000000000..6a4b71cd375 --- /dev/null +++ b/resources/profiles/FLSun/process/0.12mm Fine @FLSun S1.json @@ -0,0 +1,69 @@ +{ + "type": "process", + "setting_id": "GP004", + "name": "0.12mm Fine @FLSun S1", + "from": "system", + "instantiation": "true", + "inherits": "fdm_process_common", + "layer_height": "0.12", + "bottom_shell_layers": "7", + "bottom_shell_thickness": "0.84", + "bottom_surface_pattern": "monotonicline", + "bridge_acceleration": "5000", + "default_acceleration": "32000", + "default_jerk": "200", + "elefant_foot_compensation": "0.15", + "gap_infill_speed": "450", + "infill_jerk": "600", + "infill_wall_overlap": "15%", + "initial_layer_acceleration": "12000", + "initial_layer_infill_speed": "105", + "initial_layer_jerk": "20", + "initial_layer_speed": "80", + "initial_layer_travel_speed": "400", + "inner_wall_acceleration": "22000", + "inner_wall_jerk": "150", + "inner_wall_speed": "550", + "internal_solid_infill_acceleration": "20000", + "internal_solid_infill_line_width": "0.42", + "internal_solid_infill_speed": "500", + "internal_bridge_speed": "200", + "is_custom_defined": "0", + "line_width": "0.42", + "only_one_wall_top": "1", + "outer_wall_acceleration": "10000", + "outer_wall_jerk": "20", + "outer_wall_line_width": "0.42", + "outer_wall_speed": "400", + "overhang_1_4_speed": "200", + "overhang_2_4_speed": "150", + "overhang_3_4_speed": "100", + "overhang_4_4_speed": "50", + "skirt_speed": "80", + "sparse_infill_acceleration": "20000", + "sparse_infill_density": "10%", + "sparse_infill_pattern": "gyroid", + "sparse_infill_speed": "800", + "support_interface_speed": "100", + "support_line_width": "0.42", + "support_speed": "350", + "support_type": "tree(auto)", + "support_bottom_z_distance": "0.12", + "support_threshold_angle": "20", + "support_top_z_distance": "0.12", + "top_shell_layers": "7", + "top_surface_acceleration": "12000", + "top_surface_jerk": "20", + "top_surface_line_width": "0.40", + "top_surface_speed": "250", + "top_shell_thickness": "0.84", + "travel_acceleration": "32000", + "travel_jerk": "600", + "travel_speed": "1200", + "wall_generator": "classic", + "wall_loops": "2", + "compatible_printers": [ + "FLSun S1 0.4 nozzle" + ], + "exclude_object": "1" +} \ No newline at end of file diff --git a/resources/profiles/FLSun/process/0.12mm Fine @FLSun T1.json b/resources/profiles/FLSun/process/0.12mm Fine @FLSun T1.json new file mode 100644 index 00000000000..74e7a2616fa --- /dev/null +++ b/resources/profiles/FLSun/process/0.12mm Fine @FLSun T1.json @@ -0,0 +1,69 @@ +{ + "type": "process", + "setting_id": "GP004", + "name": "0.12mm Fine @FLSun T1", + "from": "system", + "instantiation": "true", + "inherits": "fdm_process_common", + "layer_height": "0.12", + "bottom_shell_layers": "7", + "bottom_shell_thickness": "0.84", + "bottom_surface_pattern": "monotonicline", + "bridge_acceleration": "5000", + "default_acceleration": "30000", + "default_jerk": "200", + "elefant_foot_compensation": "0.15", + "gap_infill_speed": "450", + "infill_jerk": "500", + "infill_wall_overlap": "15%", + "initial_layer_acceleration": "10000", + "initial_layer_infill_speed": "105", + "initial_layer_jerk": "20", + "initial_layer_speed": "80", + "initial_layer_travel_speed": "400", + "inner_wall_acceleration": "15000", + "inner_wall_jerk": "150", + "inner_wall_speed": "550", + "internal_solid_infill_acceleration": "15000", + "internal_solid_infill_line_width": "0.42", + "internal_solid_infill_speed": "500", + "internal_bridge_speed": "200", + "is_custom_defined": "0", + "line_width": "0.42", + "only_one_wall_top": "1", + "outer_wall_acceleration": "10000", + "outer_wall_jerk": "20", + "outer_wall_line_width": "0.42", + "outer_wall_speed": "400", + "overhang_1_4_speed": "200", + "overhang_2_4_speed": "150", + "overhang_3_4_speed": "100", + "overhang_4_4_speed": "50", + "skirt_speed": "80", + "sparse_infill_acceleration": "15000", + "sparse_infill_density": "10%", + "sparse_infill_pattern": "gyroid", + "sparse_infill_speed": "600", + "support_interface_speed": "100", + "support_line_width": "0.42", + "support_speed": "350", + "support_type": "tree(auto)", + "support_bottom_z_distance": "0.12", + "support_threshold_angle": "20", + "support_top_z_distance": "0.12", + "top_shell_layers": "7", + "top_surface_acceleration": "10000", + "top_surface_jerk": "20", + "top_surface_line_width": "0.40", + "top_surface_speed": "250", + "top_shell_thickness": "0.84", + "travel_acceleration": "20000", + "travel_jerk": "500", + "travel_speed": "1000", + "wall_generator": "classic", + "wall_loops": "2", + "compatible_printers": [ + "FLSun T1 0.4 nozzle" + ], + "exclude_object": "1" +} \ No newline at end of file diff --git a/resources/profiles/FLSun/process/0.16mm Optimal @FLSun S1.json b/resources/profiles/FLSun/process/0.16mm Optimal @FLSun S1.json new file mode 100644 index 00000000000..88bd17f7e35 --- /dev/null +++ b/resources/profiles/FLSun/process/0.16mm Optimal @FLSun S1.json @@ -0,0 +1,69 @@ +{ + "type": "process", + "setting_id": "GP004", + "name": "0.16mm Optimal @FLSun S1", + "from": "system", + "instantiation": "true", + "inherits": "fdm_process_common", + "layer_height": "0.16", + "bottom_shell_layers": "6", + "bottom_shell_thickness": "0.96", + "bottom_surface_pattern": "monotonicline", + "bridge_acceleration": "5000", + "default_acceleration": "32000", + "default_jerk": "200", + "elefant_foot_compensation": "0.15", + "gap_infill_speed": "400", + "infill_jerk": "600", + "infill_wall_overlap": "15%", + "initial_layer_acceleration": "12000", + "initial_layer_infill_speed": "105", + "initial_layer_jerk": "20", + "initial_layer_speed": "80", + "initial_layer_travel_speed": "400", + "inner_wall_acceleration": "22000", + "inner_wall_jerk": "150", + "inner_wall_speed": "500", + "internal_solid_infill_acceleration": "20000", + "internal_solid_infill_line_width": "0.42", + "internal_solid_infill_speed": "500", + "internal_bridge_speed": "200", + "is_custom_defined": "0", + "line_width": "0.42", + "only_one_wall_top": "1", + "outer_wall_acceleration": "10000", + "outer_wall_jerk": "20", + "outer_wall_line_width": "0.42", + "outer_wall_speed": "400", + "overhang_1_4_speed": "200", + "overhang_2_4_speed": "150", + "overhang_3_4_speed": "100", + "overhang_4_4_speed": "50", + "skirt_speed": "80", + "sparse_infill_acceleration": "20000", + "sparse_infill_density": "10%", + "sparse_infill_pattern": "gyroid", + "sparse_infill_speed": "800", + "support_interface_speed": "100", + "support_line_width": "0.42", + "support_speed": "350", + "support_type": "tree(auto)", + "support_bottom_z_distance": "0.16", + "support_threshold_angle": "25", + "support_top_z_distance": "0.16", + "top_shell_layers": "6", + "top_surface_acceleration": "12000", + "top_surface_jerk": "20", + "top_surface_line_width": "0.40", + "top_surface_speed": "250", + "top_shell_thickness": "0.96", + "travel_acceleration": "32000", + "travel_jerk": "600", + "travel_speed": "1200", + "wall_generator": "classic", + "wall_loops": "2", + "compatible_printers": [ + "FLSun S1 0.4 nozzle" + ], + "exclude_object": "1" +} \ No newline at end of file diff --git a/resources/profiles/FLSun/process/0.16mm Optimal @FLSun T1.json b/resources/profiles/FLSun/process/0.16mm Optimal @FLSun T1.json new file mode 100644 index 00000000000..1f406fe36cd --- /dev/null +++ b/resources/profiles/FLSun/process/0.16mm Optimal @FLSun T1.json @@ -0,0 +1,69 @@ +{ + "type": "process", + "setting_id": "GP004", + "name": "0.16mm Optimal @FLSun T1", + "from": "system", + "instantiation": "true", + "inherits": "fdm_process_common", + "layer_height": "0.16", + "bottom_shell_layers": "6", + "bottom_shell_thickness": "0.96", + "bottom_surface_pattern": "monotonicline", + "bridge_acceleration": "5000", + "default_acceleration": "30000", + "default_jerk": "200", + "elefant_foot_compensation": "0.15", + "gap_infill_speed": "400", + "infill_jerk": "500", + "infill_wall_overlap": "15%", + "initial_layer_acceleration": "10000", + "initial_layer_infill_speed": "105", + "initial_layer_jerk": "20", + "initial_layer_speed": "80", + "initial_layer_travel_speed": "400", + "inner_wall_acceleration": "15000", + "inner_wall_jerk": "150", + "inner_wall_speed": "500", + "internal_solid_infill_acceleration": "15000", + "internal_solid_infill_line_width": "0.42", + "internal_solid_infill_speed": "500", + "internal_bridge_speed": "200", + "is_custom_defined": "0", + "line_width": "0.42", + "only_one_wall_top": "1", + "outer_wall_acceleration": "10000", + "outer_wall_jerk": "20", + "outer_wall_line_width": "0.42", + "outer_wall_speed": "400", + "overhang_1_4_speed": "200", + "overhang_2_4_speed": "150", + "overhang_3_4_speed": "100", + "overhang_4_4_speed": "50", + "skirt_speed": "80", + "sparse_infill_acceleration": "15000", + "sparse_infill_density": "10%", + "sparse_infill_pattern": "gyroid", + "sparse_infill_speed": "600", + "support_interface_speed": "100", + "support_line_width": "0.42", + "support_speed": "350", + "support_type": "tree(auto)", + "support_bottom_z_distance": "0.16", + "support_threshold_angle": "25", + "support_top_z_distance": "0.16", + "top_shell_layers": "6", + "top_surface_acceleration": "10000", + "top_surface_jerk": "20", + "top_surface_line_width": "0.40", + "top_surface_speed": "250", + "top_shell_thickness": "0.96", + "travel_acceleration": "20000", + "travel_jerk": "500", + "travel_speed": "1000", + "wall_generator": "classic", + "wall_loops": "2", + "compatible_printers": [ + "FLSun T1 0.4 nozzle" + ], + "exclude_object": "1" +} \ No newline at end of file diff --git a/resources/profiles/FLSun/process/0.20mm Standard @FLSun S1.json b/resources/profiles/FLSun/process/0.20mm Standard @FLSun S1.json index 0d528e73875..a772514af31 100644 --- a/resources/profiles/FLSun/process/0.20mm Standard @FLSun S1.json +++ b/resources/profiles/FLSun/process/0.20mm Standard @FLSun S1.json @@ -1,30 +1,64 @@ { "type": "process", "setting_id": "GP004", - "name": "0.20mm PLA_HS_S1_FLSUN @FLSUN", + "name": "0.20mm Standard @FLSun S1", "from": "system", "instantiation": "true", "inherits": "fdm_process_common", - "outer_wall_speed": "400", - "inner_wall_speed": "500", - "sparse_infill_speed": "800", - "internal_solid_infill_speed": "500", - "default_acceleration": "30000", + "bottom_shell_layers": "5", + "bottom_shell_thickness": "0.8", + "bottom_surface_pattern": "monotonicline", + "bridge_acceleration": "5000", + "default_acceleration": "32000", "default_jerk": "200", - "gap_infill_speed": "400", - "initial_layer_acceleration": "5000", - "initial_layer_infill_speed": "80", - "initial_layer_speed": "50", + "elefant_foot_compensation": "0.15", + "gap_infill_speed": "350", + "infill_jerk": "600", + "infill_wall_overlap": "15%", + "initial_layer_acceleration": "12000", + "initial_layer_infill_speed": "105", + "initial_layer_jerk": "20", + "initial_layer_speed": "80", + "initial_layer_travel_speed": "400", "inner_wall_acceleration": "22000", + "inner_wall_jerk": "150", + "inner_wall_speed": "500", + "internal_solid_infill_acceleration": "20000", + "internal_solid_infill_line_width": "0.42", + "internal_solid_infill_speed": "500", + "internal_bridge_speed": "200", "is_custom_defined": "0", - "outer_wall_acceleration": "8000", - "overhang_2_4_speed": "1234", + "line_width": "0.42", + "only_one_wall_top": "1", + "outer_wall_acceleration": "10000", + "outer_wall_jerk": "20", + "outer_wall_line_width": "0.42", + "outer_wall_speed": "400", + "overhang_1_4_speed": "200", + "overhang_2_4_speed": "150", + "overhang_3_4_speed": "100", + "overhang_4_4_speed": "50", + "skirt_speed": "80", + "sparse_infill_acceleration": "20000", + "sparse_infill_density": "10%", + "sparse_infill_pattern": "gyroid", + "sparse_infill_speed": "800", + "support_interface_speed": "100", + "support_line_width": "0.42", + "support_speed": "350", + "support_type": "tree(auto)", + "top_shell_layers": "5", "top_surface_acceleration": "12000", - "top_surface_speed": "400", + "top_surface_jerk": "20", + "top_surface_line_width": "0.40", + "top_surface_speed": "250", "travel_acceleration": "32000", + "travel_jerk": "600", "travel_speed": "1200", + "wall_generator": "classic", + "wall_loops": "2", "compatible_printers": [ "FLSun S1 0.4 nozzle" ], - "exclude_object": "1" + "exclude_object": "1" } \ No newline at end of file diff --git a/resources/profiles/FLSun/process/0.20mm Standard @FLSun T1.json b/resources/profiles/FLSun/process/0.20mm Standard @FLSun T1.json index 90caef323d8..90c63838e0d 100644 --- a/resources/profiles/FLSun/process/0.20mm Standard @FLSun T1.json +++ b/resources/profiles/FLSun/process/0.20mm Standard @FLSun T1.json @@ -1,30 +1,64 @@ { "type": "process", "setting_id": "GP004", - "name": "0.20mm PLA_HS_T1_FLSUN @FLSUN", + "name": "0.20mm Standard @FLSun T1", "from": "system", "instantiation": "true", "inherits": "fdm_process_common", - "outer_wall_speed": "120", - "inner_wall_speed": "260", - "sparse_infill_speed": "400", - "internal_solid_infill_speed": "260", - "default_acceleration": "8000", - "default_jerk": "20", - "gap_infill_speed": "250", - "initial_layer_acceleration": "1000", - "initial_layer_infill_speed": "60", - "initial_layer_speed": "30", - "inner_wall_acceleration": "8000", + "bottom_shell_layers": "5", + "bottom_shell_thickness": "0.8", + "bottom_surface_pattern": "monotonicline", + "bridge_acceleration": "5000", + "default_acceleration": "30000", + "default_jerk": "200", + "elefant_foot_compensation": "0.15", + "gap_infill_speed": "350", + "infill_jerk": "500", + "infill_wall_overlap": "15%", + "initial_layer_acceleration": "10000", + "initial_layer_infill_speed": "105", + "initial_layer_jerk": "20", + "initial_layer_speed": "80", + "initial_layer_travel_speed": "400", + "inner_wall_acceleration": "15000", + "inner_wall_jerk": "150", + "inner_wall_speed": "500", + "internal_solid_infill_acceleration": "15000", + "internal_solid_infill_line_width": "0.42", + "internal_solid_infill_speed": "500", + "internal_bridge_speed": "200", "is_custom_defined": "0", - "outer_wall_acceleration": "8000", - "overhang_1_4_speed": "80", - "top_surface_acceleration": "12000", - "top_surface_speed": "300", + "line_width": "0.42", + "only_one_wall_top": "1", + "outer_wall_acceleration": "10000", + "outer_wall_jerk": "20", + "outer_wall_line_width": "0.42", + "outer_wall_speed": "400", + "overhang_1_4_speed": "200", + "overhang_2_4_speed": "150", + "overhang_3_4_speed": "100", + "overhang_4_4_speed": "50", + "skirt_speed": "80", + "sparse_infill_acceleration": "15000", + "sparse_infill_density": "10%", + "sparse_infill_pattern": "gyroid", + "sparse_infill_speed": "600", + "support_interface_speed": "100", + "support_line_width": "0.42", + "support_speed": "350", + "support_type": "tree(auto)", + "top_shell_layers": "5", + "top_surface_acceleration": "10000", + "top_surface_jerk": "20", + "top_surface_line_width": "0.40", + "top_surface_speed": "250", "travel_acceleration": "20000", - "travel_speed": "800", + "travel_jerk": "500", + "travel_speed": "1000", + "wall_generator": "classic", + "wall_loops": "2", "compatible_printers": [ "FLSun T1 0.4 nozzle" ], - "exclude_object": "1" + "exclude_object": "1" } \ No newline at end of file diff --git a/resources/profiles/FLSun/process/0.24mm Draft @FLSun S1.json b/resources/profiles/FLSun/process/0.24mm Draft @FLSun S1.json new file mode 100644 index 00000000000..03760147554 --- /dev/null +++ b/resources/profiles/FLSun/process/0.24mm Draft @FLSun S1.json @@ -0,0 +1,65 @@ +{ + "type": "process", + "setting_id": "GP004", + "name": "0.24mm Draft @FLSun S1", + "from": "system", + "instantiation": "true", + "inherits": "fdm_process_common", + "bottom_shell_layers": "5", + "bottom_shell_thickness": "0.8", + "bottom_surface_pattern": "monotonicline", + "bridge_acceleration": "5000", + "default_acceleration": "32000", + "default_jerk": "200", + "elefant_foot_compensation": "0.15", + "gap_infill_speed": "330", + "infill_jerk": "600", + "infill_wall_overlap": "15%", + "initial_layer_acceleration": "12000", + "initial_layer_infill_speed": "105", + "initial_layer_jerk": "20", + "initial_layer_speed": "80", + "initial_layer_travel_speed": "400", + "inner_wall_acceleration": "22000", + "inner_wall_jerk": "150", + "inner_wall_speed": "450", + "internal_solid_infill_acceleration": "20000", + "internal_solid_infill_line_width": "0.42", + "internal_solid_infill_speed": "450", + "internal_bridge_speed": "200", + "is_custom_defined": "0", + "line_width": "0.42", + "only_one_wall_top": "1", + "outer_wall_acceleration": "10000", + "outer_wall_jerk": "20", + "outer_wall_line_width": "0.42", + "outer_wall_speed": "400", + "overhang_1_4_speed": "200", + "overhang_2_4_speed": "150", + "overhang_3_4_speed": "100", + "overhang_4_4_speed": "50", + "skirt_speed": "80", + "sparse_infill_acceleration": "20000", + "sparse_infill_density": "10%", + "sparse_infill_pattern": "gyroid", + "sparse_infill_speed": "750", + "support_interface_speed": "100", + "support_line_width": "0.42", + "support_speed": "350", + "support_type": "tree(auto)", + "support_threshold_angle": "35", + "top_shell_layers": "5", + "top_surface_acceleration": "12000", + "top_surface_jerk": "20", + "top_surface_line_width": "0.40", + "top_surface_speed": "250", + "travel_acceleration": "32000", + "travel_jerk": "600", + "travel_speed": "1200", + "wall_generator": "classic", + "wall_loops": "2", + "compatible_printers": [ + "FLSun S1 0.4 nozzle" + ], + "exclude_object": "1" +} \ No newline at end of file diff --git a/resources/profiles/FLSun/process/0.24mm Draft @FLSun T1.json b/resources/profiles/FLSun/process/0.24mm Draft @FLSun T1.json new file mode 100644 index 00000000000..a75bd2c3fca --- /dev/null +++ b/resources/profiles/FLSun/process/0.24mm Draft @FLSun T1.json @@ -0,0 +1,65 @@ +{ + "type": "process", + "setting_id": "GP004", + "name": "0.24mm Draft @FLSun T1", + "from": "system", + "instantiation": "true", + "inherits": "fdm_process_common", + "bottom_shell_layers": "5", + "bottom_shell_thickness": "0.8", + "bottom_surface_pattern": "monotonicline", + "bridge_acceleration": "5000", + "default_acceleration": "30000", + "default_jerk": "200", + "elefant_foot_compensation": "0.15", + "gap_infill_speed": "330", + "infill_jerk": "500", + "infill_wall_overlap": "15%", + "initial_layer_acceleration": "10000", + "initial_layer_infill_speed": "105", + "initial_layer_jerk": "20", + "initial_layer_speed": "80", + "initial_layer_travel_speed": "400", + "inner_wall_acceleration": "15000", + "inner_wall_jerk": "150", + "inner_wall_speed": "450", + "internal_solid_infill_acceleration": "15000", + "internal_solid_infill_line_width": "0.42", + "internal_solid_infill_speed": "450", + "internal_bridge_speed": "200", + "is_custom_defined": "0", + "line_width": "0.42", + "only_one_wall_top": "1", + "outer_wall_acceleration": "10000", + "outer_wall_jerk": "20", + "outer_wall_line_width": "0.42", + "outer_wall_speed": "400", + "overhang_1_4_speed": "200", + "overhang_2_4_speed": "150", + "overhang_3_4_speed": "100", + "overhang_4_4_speed": "50", + "skirt_speed": "80", + "sparse_infill_acceleration": "15000", + "sparse_infill_density": "10%", + "sparse_infill_pattern": "gyroid", + "sparse_infill_speed": "550", + "support_interface_speed": "100", + "support_line_width": "0.42", + "support_speed": "350", + "support_type": "tree(auto)", + "support_threshold_angle": "35", + "top_shell_layers": "5", + "top_surface_acceleration": "10000", + "top_surface_jerk": "20", + "top_surface_line_width": "0.40", + "top_surface_speed": "250", + "travel_acceleration": "20000", + "travel_jerk": "500", + "travel_speed": "1000", + "wall_generator": "classic", + "wall_loops": "2", + "compatible_printers": [ + "FLSun T1 0.4 nozzle" + ], + "exclude_object": "1" +} \ No newline at end of file diff --git a/resources/profiles/FLSun/process/0.30mm Extra Draft @FLSun S1.json b/resources/profiles/FLSun/process/0.30mm Extra Draft @FLSun S1.json new file mode 100644 index 00000000000..6232a5b7f3b --- /dev/null +++ b/resources/profiles/FLSun/process/0.30mm Extra Draft @FLSun S1.json @@ -0,0 +1,67 @@ +{ + "type": "process", + "setting_id": "GP004", + "name": "0.30mm Extra Draft @FLSun S1", + "from": "system", + "instantiation": "true", + "inherits": "fdm_process_common", + "layer_height": "0.3", + "bottom_shell_layers": "4", + "bottom_shell_thickness": "1.2", + "bottom_surface_pattern": "monotonicline", + "bridge_acceleration": "5000", + "default_acceleration": "32000", + "default_jerk": "200", + "elefant_foot_compensation": "0.15", + "gap_infill_speed": "300", + "infill_jerk": "600", + "infill_wall_overlap": "15%", + "initial_layer_acceleration": "12000", + "initial_layer_infill_speed": "105", + "initial_layer_jerk": "20", + "initial_layer_speed": "80", + "initial_layer_travel_speed": "400", + "inner_wall_acceleration": "22000", + "inner_wall_jerk": "150", + "inner_wall_speed": "450", + "internal_solid_infill_acceleration": "20000", + "internal_solid_infill_line_width": "0.42", + "internal_solid_infill_speed": "450", + "internal_bridge_speed": "200", + "is_custom_defined": "0", + "line_width": "0.42", + "only_one_wall_top": "1", + "outer_wall_acceleration": "10000", + "outer_wall_jerk": "20", + "outer_wall_line_width": "0.42", + "outer_wall_speed": "400", + "overhang_1_4_speed": "200", + "overhang_2_4_speed": "150", + "overhang_3_4_speed": "100", + "overhang_4_4_speed": "50", + "skirt_speed": "80", + "sparse_infill_acceleration": "20000", + "sparse_infill_density": "10%", + "sparse_infill_pattern": "gyroid", + "sparse_infill_speed": "650", + "support_interface_speed": "100", + "support_line_width": "0.42", + "support_speed": "350", + "support_type": "tree(auto)", + "support_threshold_angle": "40", + "top_shell_layers": "4", + "top_shell_thickness": "1.2", + "top_surface_acceleration": "12000", + "top_surface_jerk": "20", + "top_surface_line_width": "0.40", + "top_surface_speed": "250", + "travel_acceleration": "32000", + "travel_jerk": "600", + "travel_speed": "1200", + "wall_generator": "classic", + "wall_loops": "2", + "compatible_printers": [ + "FLSun S1 0.4 nozzle" + ], + "exclude_object": "1" +} \ No newline at end of file diff --git a/resources/profiles/FLSun/process/0.30mm Extra Draft @FLSun T1.json b/resources/profiles/FLSun/process/0.30mm Extra Draft @FLSun T1.json new file mode 100644 index 00000000000..9c14d746510 --- /dev/null +++ b/resources/profiles/FLSun/process/0.30mm Extra Draft @FLSun T1.json @@ -0,0 +1,67 @@ +{ + "type": "process", + "setting_id": "GP004", + "name": "0.30mm Extra Draft @FLSun T1", + "from": "system", + "instantiation": "true", + "inherits": "fdm_process_common", + "layer_height": "0.3", + "bottom_shell_layers": "4", + "bottom_shell_thickness": "1.2", + "bottom_surface_pattern": "monotonicline", + "bridge_acceleration": "5000", + "default_acceleration": "30000", + "default_jerk": "200", + "elefant_foot_compensation": "0.15", + "gap_infill_speed": "300", + "infill_jerk": "500", + "infill_wall_overlap": "15%", + "initial_layer_acceleration": "10000", + "initial_layer_infill_speed": "105", + "initial_layer_jerk": "20", + "initial_layer_speed": "80", + "initial_layer_travel_speed": "400", + "inner_wall_acceleration": "15000", + "inner_wall_jerk": "150", + "inner_wall_speed": "450", + "internal_solid_infill_acceleration": "15000", + "internal_solid_infill_line_width": "0.42", + "internal_solid_infill_speed": "450", + "internal_bridge_speed": "200", + "is_custom_defined": "0", + "line_width": "0.42", + "only_one_wall_top": "1", + "outer_wall_acceleration": "10000", + "outer_wall_jerk": "20", + "outer_wall_line_width": "0.42", + "outer_wall_speed": "400", + "overhang_1_4_speed": "200", + "overhang_2_4_speed": "150", + "overhang_3_4_speed": "100", + "overhang_4_4_speed": "50", + "skirt_speed": "80", + "sparse_infill_acceleration": "15000", + "sparse_infill_density": "10%", + "sparse_infill_pattern": "gyroid", + "sparse_infill_speed": "500", + "support_interface_speed": "100", + "support_line_width": "0.42", + "support_speed": "350", + "support_type": "tree(auto)", + "support_threshold_angle": "40", + "top_shell_layers": "4", + "top_shell_thickness": "1.2", + "top_surface_acceleration": "10000", + "top_surface_jerk": "20", + "top_surface_line_width": "0.40", + "top_surface_speed": "250", + "travel_acceleration": "20000", + "travel_jerk": "500", + "travel_speed": "1000", + "wall_generator": "classic", + "wall_loops": "2", + "compatible_printers": [ + "FLSun T1 0.4 nozzle" + ], + "exclude_object": "1" +} \ No newline at end of file diff --git a/resources/profiles_template/Template/filament/filament_sbs_template.json b/resources/profiles_template/Template/filament/filament_sbs_template.json new file mode 100644 index 00000000000..2cc7bd22c64 --- /dev/null +++ b/resources/profiles_template/Template/filament/filament_sbs_template.json @@ -0,0 +1,168 @@ +{ + "type": "filament", + "name": "Generic SBS template", + "instantiation": "false", + "activate_air_filtration": [ + "0" + ], + "additional_cooling_fan_speed": [ + "40" + ], + "chamber_temperatures": [ + "0" + ], + "close_fan_the_first_x_layers": [ + "3" + ], + "complete_print_exhaust_fan_speed": [ + "70" + ], + "cool_plate_temp": [ + "70" + ], + "cool_plate_temp_initial_layer": [ + "70" + ], + "during_print_exhaust_fan_speed": [ + "70" + ], + "eng_plate_temp": [ + "70" + ], + "eng_plate_temp_initial_layer": [ + "70" + ], + "fan_cooling_layer_time": [ + "100" + ], + "fan_max_speed": [ + "40" + ], + "fan_min_speed": [ + "0" + ], + "filament_cost": [ + "15" + ], + "filament_density": [ + "1.02" + ], + "filament_deretraction_speed": [ + "nil" + ], + "filament_diameter": [ + "1.75" + ], + "filament_flow_ratio": [ + "0.98" + ], + "filament_is_support": [ + "0" + ], + "filament_max_volumetric_speed": [ + "23" + ], + "filament_minimal_purge_on_wipe_tower": [ + "15" + ], + "filament_retract_before_wipe": [ + "nil" + ], + "filament_retract_restart_extra": [ + "nil" + ], + "filament_retract_when_changing_layer": [ + "nil" + ], + "filament_retraction_length": [ + "nil" + ], + "filament_retraction_minimum_travel": [ + "nil" + ], + "filament_retraction_speed": [ + "nil" + ], + "filament_settings_id": [ + "" + ], + "filament_soluble": [ + "0" + ], + "filament_type": [ + "SBS" + ], + "filament_vendor": [ + "Generic" + ], + "filament_wipe": [ + "nil" + ], + "filament_wipe_distance": [ + "nil" + ], + "filament_z_hop": [ + "nil" + ], + "filament_z_hop_types": [ + "nil" + ], + "full_fan_speed_layer": [ + "0" + ], + "hot_plate_temp": [ + "5705" + ], + "hot_plate_temp_initial_layer": [ + "70" + ], + "nozzle_temperature": [ + "235" + ], + "nozzle_temperature_initial_layer": [ + "235" + ], + "nozzle_temperature_range_low": [ + "215" + ], + "nozzle_temperature_range_high": [ + "250" + ], + "overhang_fan_speed": [ + "100" + ], + "overhang_fan_threshold": [ + "50%" + ], + "reduce_fan_stop_start_freq": [ + "0" + ], + "required_nozzle_HRC": [ + "3" + ], + "slow_down_for_layer_cooling": [ + "1" + ], + "slow_down_layer_time": [ + "4" + ], + "slow_down_min_speed": [ + "20" + ], + "temperature_vitrification": [ + "70" + ], + "textured_plate_temp": [ + "70" + ], + "textured_plate_temp_initial_layer": [ + "70" + ], + "compatible_printers": [], + "filament_start_gcode": [ + "; filament start gcode\n{if (bed_temperature[current_extruder] >45)||(bed_temperature_initial_layer[current_extruder] >45)}M106 P3 S255\n{elsif(bed_temperature[current_extruder] >35)||(bed_temperature_initial_layer[current_extruder] >35)}M106 P3 S180\n{endif}\n\n{if activate_air_filtration[current_extruder] && support_air_filtration}\nM106 P3 S{during_print_exhaust_fan_speed_num[current_extruder]} \n{endif}" + ], + "filament_end_gcode": [ + "; filament end gcode \nM106 P3 S0\n" + ] +} \ No newline at end of file diff --git a/resources/web/data/text.js b/resources/web/data/text.js index 7d242960849..056a7b85f14 100644 --- a/resources/web/data/text.js +++ b/resources/web/data/text.js @@ -1304,6 +1304,9 @@ var LangText = { t113: "Możesz zmienić swój wybór w preferencjach w dowolnym momencie.", orca1: "Edytuj informacje o projekcie", orca2: "brak informacji o modelu", + orca3: "Tryb «Niewidzialny»", + orca4: "To wyłączy przesyłanie danych do usług chmurowych Bambu. Użytkownicy, którzy nie korzystają z maszyn BBL lub używają tylko trybu LAN, mogą bez obaw włączyć tę opcję.", + orca5: "Włącz tryb «Niewidzialny»", }, pt_BR: { t1: "Bem-vindo ao Orca Slicer", diff --git a/run_gettext.bat b/run_gettext.bat index c095a3db0a4..a5fac6a70f4 100644 --- a/run_gettext.bat +++ b/run_gettext.bat @@ -10,7 +10,7 @@ for %%a in (%*) do ( if %FULL_MODE%==1 ( .\tools\xgettext.exe --keyword=L --keyword=_L --keyword=_u8L --keyword=L_CONTEXT:1,2c --keyword=_L_PLURAL:1,2 --add-comments=TRN --from-code=UTF-8 --no-location --debug --boost -f ./localization/i18n/list.txt -o ./localization/i18n/OrcaSlicer.pot - python3 scripts/HintsToPot.py ./resources ./localization/i18n + python scripts/HintsToPot.py ./resources ./localization/i18n ) REM Print the current directory echo %cd% diff --git a/src/BaseException.cpp b/src/BaseException.cpp index 705ac8f8c1a..2443ebe4bb1 100644 --- a/src/BaseException.cpp +++ b/src/BaseException.cpp @@ -358,7 +358,7 @@ void CBaseException::ShowExceptionInformation() OutputString(_T("Exception Flag :0x%x "), m_pEp->ExceptionRecord->ExceptionFlags); OutputString(_T("NumberParameters :%ld \n"), m_pEp->ExceptionRecord->NumberParameters); - for (unsigned int i = 0; i < m_pEp->ExceptionRecord->NumberParameters; i++) + for (int i = 0; i < m_pEp->ExceptionRecord->NumberParameters; i++) { OutputString(_T("Param %d :0x%x \n"), i, m_pEp->ExceptionRecord->ExceptionInformation[i]); } diff --git a/src/OrcaSlicer.cpp b/src/OrcaSlicer.cpp index 71c39d874c6..bb52a0aea16 100644 --- a/src/OrcaSlicer.cpp +++ b/src/OrcaSlicer.cpp @@ -1190,8 +1190,9 @@ int CLI::run(int argc, char **argv) //BBS: add plate data related logic PlateDataPtrs plate_data_src; std::vector plate_obj_size_infos; + int arrange_option; int plate_to_slice = 0, filament_count = 0, duplicate_count = 0, real_duplicate_count = 0; - bool first_file = true, is_bbl_3mf = false, need_arrange = true, up_config_to_date = false, normative_check = true, duplicate_single_object = false, use_first_fila_as_default = false, minimum_save = false, enable_timelapse = false; + bool first_file = true, is_bbl_3mf = false, need_arrange = true, has_thumbnails = false, up_config_to_date = false, normative_check = true, duplicate_single_object = false, use_first_fila_as_default = false, minimum_save = false, enable_timelapse = false; bool allow_rotations = true, skip_modified_gcodes = false, avoid_extrusion_cali_region = false, skip_useless_pick = false, allow_newer_file = false; Semver file_version; std::map orients_requirement; @@ -1545,7 +1546,7 @@ int CLI::run(int argc, char **argv) { ModelObject* object = model.objects[obj_index]; - for (int clone_index = 1; clone_index < clone_count; clone_index++) + for (unsigned int clone_index = 1; clone_index < clone_count; clone_index++) { ModelObject* newObj = model.add_object(*object); newObj->name = object->name +"_"+ std::to_string(clone_index+1); @@ -1618,7 +1619,7 @@ int CLI::run(int argc, char **argv) } } catch (std::exception& e) { - boost::nowide::cerr << "construct_assemble_list: " << e.what() << std::endl; + boost::nowide::cerr << construct_assemble_list << ": " << e.what() << std::endl; record_exit_reson(outfile_dir, CLI_DATA_FILE_ERROR, 0, cli_errors[CLI_DATA_FILE_ERROR], sliced_info); flush_and_exit(CLI_DATA_FILE_ERROR); } @@ -2102,7 +2103,7 @@ int CLI::run(int argc, char **argv) record_exit_reson(outfile_dir, CLI_INVALID_PARAMS, 0, cli_errors[CLI_INVALID_PARAMS], sliced_info); flush_and_exit(CLI_INVALID_PARAMS); } - for (int index = 0; index < filament_count; index ++) + for (unsigned int index = 0; index < filament_count; index ++) { std::string file = uptodate_filaments[index]; DynamicPrintConfig config; @@ -2219,7 +2220,7 @@ int CLI::run(int argc, char **argv) } //upwards check - bool process_compatible = false, /* machine_upwards = false, */ machine_switch = false; + bool process_compatible = false, machine_upwards = false, machine_switch = false; BOOST_LOG_TRIVIAL(info) << boost::format("current printer %1%, new printer %2%, current process %3%, new process %4%")%current_printer_name %new_printer_name %current_process_name %new_process_name; BOOST_LOG_TRIVIAL(info) << boost::format("current printer inherits %1%, new printer inherits %2%, current process inherits %3%, new process inherits %4%") %current_printer_system_name %new_printer_system_name %current_process_system_name %new_process_system_name; @@ -2289,7 +2290,7 @@ int CLI::run(int argc, char **argv) for (int index = 0; index < upward_compatible_printers.size(); index++) { if (upward_compatible_printers[index] == new_printer_system_name) { process_compatible = true; - // machine_upwards = true; + machine_upwards = true; BOOST_LOG_TRIVIAL(info) << boost::format("new printer is upward_compatible"); break; } @@ -2899,8 +2900,7 @@ int CLI::run(int argc, char **argv) for (auto& model : m_models) for (ModelObject* o : model.objects) { - /* ModelObject* new_object = */ - m.add_object(*o); + ModelObject* new_object = m.add_object(*o); //BOOST_LOG_TRIVIAL(info) << "object "<name <<", id :" << o->id().id << "\n"; //orients_requirement.emplace(new_object->id().id, orients_requirement[o->id().id]); //orients_requirement.erase(o->id().id); @@ -3343,6 +3343,7 @@ int CLI::run(int argc, char **argv) BOOST_LOG_TRIVIAL(info) << boost::format("downward_check: all failed, size %1%")%downward_check_size; break; } + Slic3r::GUI::PartPlate* cur_plate = (Slic3r::GUI::PartPlate *)partplate_list.get_plate(index); Vec3d size = plate_obj_size_infos[index].obj_bbox.size(); for (int index2 = 0; index2 < downward_check_size; index2 ++) @@ -3392,6 +3393,7 @@ int CLI::run(int argc, char **argv) } // Loop through transform options. + bool user_center_specified = false; Points beds = get_bed_shape(m_print_config); ArrangeParams arrange_cfg; @@ -3415,6 +3417,7 @@ int CLI::run(int argc, char **argv) ModelObject* new_object = m.add_object(); new_object->name = _u8L("Assembly"); new_object->add_instance(); + int idx = 0; for (auto& model : m_models) for (ModelObject* o : model.objects) { for (auto volume : o->volumes) { @@ -3516,6 +3519,7 @@ int CLI::run(int argc, char **argv) } } } else if (opt_key == "center") { + user_center_specified = true; for (auto &model : m_models) { model.add_default_instances(); // this affects instances: @@ -3815,6 +3819,7 @@ int CLI::run(int argc, char **argv) { //do arrange for plate ArrangePolygons selected, unselected; + Model& model = m_models[0]; arrange_cfg = ArrangeParams(); // reset all params get_print_sequence(cur_plate, m_print_config, arrange_cfg.is_seq_print); @@ -3840,6 +3845,7 @@ int CLI::run(int argc, char **argv) if (!arrange_cfg.is_seq_print && assemble_plate.filaments_count > 1) { //prepare the wipe tower + int plate_count = partplate_list.get_plate_count(); auto printer_structure_opt = m_print_config.option>("printer_structure"); const float tower_brim_width = m_print_config.option("prime_tower_width", true)->value; @@ -4225,6 +4231,7 @@ int CLI::run(int argc, char **argv) //float depth = v * (filaments_cnt - 1) / (layer_height * w); Vec3d wipe_tower_size = cur_plate->estimate_wipe_tower_size(m_print_config, w, v, filaments_cnt); + Vec3d plate_origin = cur_plate->get_origin(); int plate_width, plate_depth, plate_height; partplate_list.get_plate_size(plate_width, plate_depth, plate_height); float depth = wipe_tower_size(1); @@ -4603,7 +4610,7 @@ int CLI::run(int argc, char **argv) } // loop through action options - bool export_to_3mf = false, load_slicedata = false, export_slicedata = false; + bool export_to_3mf = false, load_slicedata = false, export_slicedata = false, export_slicedata_error = false; bool no_check = false; std::string export_3mf_file, load_slice_data_dir, export_slice_data_dir, export_stls_dir; std::vector calibration_thumbnails; @@ -5092,6 +5099,7 @@ int CLI::run(int argc, char **argv) int ret = print->export_cached_data(plate_dir, with_space); if (ret) { BOOST_LOG_TRIVIAL(error) << "plate "<< index+1<< ": export Slicing data error, ret=" << ret; + export_slicedata_error = true; if (fs::exists(plate_dir)) fs::remove_all(plate_dir); record_exit_reson(outfile_dir, ret, index+1, cli_errors[ret], sliced_info); @@ -5218,7 +5226,8 @@ int CLI::run(int argc, char **argv) bool need_regenerate_top_thumbnail = oriented_or_arranged || regenerate_thumbnails; bool need_create_thumbnail_group = false, need_create_no_light_group = false, need_create_top_group = false; - // get color for platedata + // get type and color for platedata + auto* filament_types = dynamic_cast(m_print_config.option("filament_type")); const ConfigOptionStrings* filament_color = dynamic_cast(m_print_config.option("filament_colour")); auto* filament_id = dynamic_cast(m_print_config.option("filament_ids")); const ConfigOptionFloats* nozzle_diameter_option = dynamic_cast(m_print_config.option("nozzle_diameter")); diff --git a/src/admesh/connect.cpp b/src/admesh/connect.cpp index 4cf78f076a5..30a199120d1 100644 --- a/src/admesh/connect.cpp +++ b/src/admesh/connect.cpp @@ -216,7 +216,7 @@ struct HashTableEdges { // This is a match. Record result in neighbors list. match_neighbors(edge, *link->next); // Delete the matched edge from the list. - // HashEdge *temp = link->next; + HashEdge *temp = link->next; link->next = link->next->next; // pool.destroy(temp); #ifndef NDEBUG diff --git a/src/admesh/normals.cpp b/src/admesh/normals.cpp index 02fb16bb809..f74ba01b6da 100644 --- a/src/admesh/normals.cpp +++ b/src/admesh/normals.cpp @@ -193,7 +193,7 @@ void stl_fix_normal_directions(stl_file *stl) norm_sw[facet_num] = 1; // Record this one as being fixed. ++ checked; } - // stl_normal *temp = head->next; // Delete this facet from the list. + stl_normal *temp = head->next; // Delete this facet from the list. head->next = head->next->next; // pool.destroy(temp); } else { // If we ran out of facets to fix: All of the facets in this part have been fixed. diff --git a/src/imgui/imgui_widgets.cpp b/src/imgui/imgui_widgets.cpp index 054312cfc07..ded72f41788 100644 --- a/src/imgui/imgui_widgets.cpp +++ b/src/imgui/imgui_widgets.cpp @@ -768,9 +768,11 @@ bool ImGui::BBLButtonEx(const char* label, const ImVec2& size_arg, ImGuiButtonFl bool hovered, held; bool pressed = ButtonBehavior(bb, id, &hovered, &held, flags); + bool b_hover = false; if (hovered) { PushStyleColor(ImGuiCol_Text,GetColorU32(ImGuiCol_CheckMark)); + b_hover = true; } // Render @@ -4165,6 +4167,8 @@ bool ImGui::BBLInputScalar(const char *label, ImGuiDataType data_type, void *p_d const ImRect frame_bb(window->DC.CursorPos, window->DC.CursorPos + ImVec2(w, label_size.y + style.FramePadding.y * 2.0f)); // Tabbing or CTRL-clicking on Drag turns it into an InputText const bool hovered = ItemHoverable(frame_bb, id); + // We are only allowed to access the state if we are already the active widget. + ImGuiInputTextState *state = GetInputTextState(id); bool push_color_count = 0; if (hovered || g.ActiveId == id) { @@ -6294,9 +6298,9 @@ bool ImGui::ColorButton(const char* desc_id, const ImVec4& col, ImGuiColorEditFl RenderFrameBorder(bb.Min, bb.Max, rounding); else #ifdef __APPLE__ - window->DrawList->AddRect(bb.Min - ImVec2(3, 3), bb.Max + ImVec2(3, 3), GetColorU32(ImGuiCol_FrameBg), rounding * 2,0,4.0f);; // Color button are often in need of some sort of border + window->DrawList->AddRect(bb.Min - ImVec2(3, 3), bb.Max + ImVec2(3, 3), GetColorU32(ImGuiCol_FrameBg), rounding * 2,NULL,4.0f);; // Color button are often in need of some sort of border #else - window->DrawList->AddRect(bb.Min - ImVec2(2, 2), bb.Max + ImVec2(2, 2), GetColorU32(ImGuiCol_FrameBg), rounding * 2,0,3.0f); // Color button are often in need of some sort of border + window->DrawList->AddRect(bb.Min - ImVec2(2, 2), bb.Max + ImVec2(2, 2), GetColorU32(ImGuiCol_FrameBg), rounding * 2,NULL,3.0f); // Color button are often in need of some sort of border #endif } @@ -7093,6 +7097,7 @@ bool ImGui::BBLImageSelectable(ImTextureID user_texture_id, const ImVec2& size_a // Text stays at the submission position, but bounding box may be extended on both sides const float arrow_size = (flags & ImGuiComboFlags_NoArrowButton) ? 0.0f : GetFrameHeight(); + const ImVec2 text_min = ImVec2(pos.x + arrow_size, pos.y); const ImVec2 text_max(min_x + size.x, pos.y + size.y); // Selectables are meant to be tightly packed together with no click-gap, so we extend their box to cover spacing between selectable. @@ -7204,6 +7209,7 @@ bool ImGui::BBLImageSelectable(ImTextureID user_texture_id, const ImVec2& size_a if (flags & ImGuiSelectableFlags_Disabled) PushStyleColor(ImGuiCol_Text, style.Colors[ImGuiCol_TextDisabled]); // Render + const ImU32 col = GetColorU32((held && hovered) ? ImGuiCol_ButtonActive : hovered ? ImGuiCol_ButtonHovered : ImGuiCol_Button); ImVec2 p_min = bb.Min + ImVec2(style.ItemInnerSpacing.x, (bb.Max.y - bb.Min.y - font_size.y) / 2); ImVec2 p_max = p_min + font_size; window->DrawList->AddImage(user_texture_id, p_min, p_max, uv0, uv1, selected || (held && hovered) ? GetColorU32(ImVec4(1.f, 1.f, 1.f, 1.f)) : GetColorU32(tint_col)); diff --git a/src/imguizmo/ImGuizmo.cpp b/src/imguizmo/ImGuizmo.cpp index 0f717395f90..1acf8b63e45 100644 --- a/src/imguizmo/ImGuizmo.cpp +++ b/src/imguizmo/ImGuizmo.cpp @@ -2807,6 +2807,7 @@ namespace IMGUIZMO_NAMESPACE { static bool isDraging = false; static bool isClicking = false; + static bool isInside = false; static vec_t interpolationUp; static vec_t interpolationDir; static int interpolationFrames = 0; @@ -3054,6 +3055,7 @@ namespace IMGUIZMO_NAMESPACE LookAt(&newEye.x, &camTarget.x, &newUp.x, view); viewUpdated = true; } + isInside = gContext.mbMouseOver && ImRect(position, position + size).Contains(io.MousePos); if (io.MouseDown[0] && (fabsf(io.MouseDelta[0]) || fabsf(io.MouseDelta[1])) && isClicking) { diff --git a/src/libnest2d/include/libnest2d/geometry_traits_nfp.hpp b/src/libnest2d/include/libnest2d/geometry_traits_nfp.hpp index 4f8cf964b9c..ab5f7678fdb 100644 --- a/src/libnest2d/include/libnest2d/geometry_traits_nfp.hpp +++ b/src/libnest2d/include/libnest2d/geometry_traits_nfp.hpp @@ -182,6 +182,7 @@ inline TPoint referenceVertex(const RawShape& sh) template inline NfpResult nfpInnerRectBed(const RawBox &bed, const RawShape &other) { using Vertex = TPoint; + using Edge = _Segment; namespace sl = shapelike; auto sbox = sl::boundingBox(other); diff --git a/src/libnest2d/include/libnest2d/placers/nfpplacer.hpp b/src/libnest2d/include/libnest2d/placers/nfpplacer.hpp index ebe3da6c5dc..65a3344b046 100644 --- a/src/libnest2d/include/libnest2d/placers/nfpplacer.hpp +++ b/src/libnest2d/include/libnest2d/placers/nfpplacer.hpp @@ -1119,6 +1119,7 @@ class _NofitPolyPlacer: public PlacerBoilerplate<_NofitPolyPlacer 1; std::vector objs,excludes; for (const Item &item : items_) { diff --git a/src/libslic3r/AppConfig.cpp b/src/libslic3r/AppConfig.cpp index 054a09c4f72..7d114b45fce 100644 --- a/src/libslic3r/AppConfig.cpp +++ b/src/libslic3r/AppConfig.cpp @@ -18,7 +18,9 @@ #include #include #include +#include #include +#include #include #include #include diff --git a/src/libslic3r/Arachne/BeadingStrategy/BeadingStrategy.cpp b/src/libslic3r/Arachne/BeadingStrategy/BeadingStrategy.cpp index 6e344daf58e..b57c84d6398 100644 --- a/src/libslic3r/Arachne/BeadingStrategy/BeadingStrategy.cpp +++ b/src/libslic3r/Arachne/BeadingStrategy/BeadingStrategy.cpp @@ -1,6 +1,7 @@ //Copyright (c) 2022 Ultimaker B.V. //CuraEngine is released under the terms of the AGPLv3 or higher. +#include #include "BeadingStrategy.hpp" #include "Point.hpp" diff --git a/src/libslic3r/Arachne/BeadingStrategy/BeadingStrategyFactory.cpp b/src/libslic3r/Arachne/BeadingStrategy/BeadingStrategyFactory.cpp index c42ef3d2f3e..97acd271ac3 100644 --- a/src/libslic3r/Arachne/BeadingStrategy/BeadingStrategyFactory.cpp +++ b/src/libslic3r/Arachne/BeadingStrategy/BeadingStrategyFactory.cpp @@ -9,6 +9,7 @@ #include "RedistributeBeadingStrategy.hpp" #include "OuterWallInsetBeadingStrategy.hpp" +#include #include namespace Slic3r::Arachne diff --git a/src/libslic3r/Arachne/BeadingStrategy/RedistributeBeadingStrategy.cpp b/src/libslic3r/Arachne/BeadingStrategy/RedistributeBeadingStrategy.cpp index 93ffdfb7500..2b4dda02722 100644 --- a/src/libslic3r/Arachne/BeadingStrategy/RedistributeBeadingStrategy.cpp +++ b/src/libslic3r/Arachne/BeadingStrategy/RedistributeBeadingStrategy.cpp @@ -3,6 +3,7 @@ #include "RedistributeBeadingStrategy.hpp" +#include #include namespace Slic3r::Arachne diff --git a/src/libslic3r/Arachne/SkeletalTrapezoidation.cpp b/src/libslic3r/Arachne/SkeletalTrapezoidation.cpp index 9278fb49b7d..19d49c3e12f 100644 --- a/src/libslic3r/Arachne/SkeletalTrapezoidation.cpp +++ b/src/libslic3r/Arachne/SkeletalTrapezoidation.cpp @@ -1595,6 +1595,7 @@ SkeletalTrapezoidation::edge_t* SkeletalTrapezoidation::getQuadMaxRedgeTo(edge_t void SkeletalTrapezoidation::propagateBeadingsUpward(std::vector& upward_quad_mids, ptr_vector_t& node_beadings) { + const auto _central_filter_dist = central_filter_dist(); for (auto upward_quad_mids_it = upward_quad_mids.rbegin(); upward_quad_mids_it != upward_quad_mids.rend(); ++upward_quad_mids_it) { edge_t* upward_edge = *upward_quad_mids_it; @@ -1611,7 +1612,7 @@ void SkeletalTrapezoidation::propagateBeadingsUpward(std::vector& upwar { // Only propagate to places where there is place continue; } - assert((upward_edge->from->data.distance_to_boundary != upward_edge->to->data.distance_to_boundary || shorter_then(upward_edge->to->p - upward_edge->from->p, central_filter_dist())) && "zero difference R edges should always be central"); + assert((upward_edge->from->data.distance_to_boundary != upward_edge->to->data.distance_to_boundary || shorter_then(upward_edge->to->p - upward_edge->from->p, _central_filter_dist)) && "zero difference R edges should always be central"); coord_t length = (upward_edge->to->p - upward_edge->from->p).cast().norm(); BeadingPropagation upper_beading = lower_beading; upper_beading.dist_to_bottom_source += length; diff --git a/src/libslic3r/Arachne/SkeletalTrapezoidationGraph.cpp b/src/libslic3r/Arachne/SkeletalTrapezoidationGraph.cpp index 3909868beec..c49340ec596 100644 --- a/src/libslic3r/Arachne/SkeletalTrapezoidationGraph.cpp +++ b/src/libslic3r/Arachne/SkeletalTrapezoidationGraph.cpp @@ -2,11 +2,15 @@ //CuraEngine is released under the terms of the AGPLv3 or higher. #include "SkeletalTrapezoidationGraph.hpp" +#include "../Line.hpp" #include #include +#include "utils/linearAlg2D.hpp" +#include "../Line.hpp" + namespace Slic3r::Arachne { diff --git a/src/libslic3r/Arachne/utils/ExtrusionLine.cpp b/src/libslic3r/Arachne/utils/ExtrusionLine.cpp index b671b807350..ac7b88af833 100644 --- a/src/libslic3r/Arachne/utils/ExtrusionLine.cpp +++ b/src/libslic3r/Arachne/utils/ExtrusionLine.cpp @@ -4,6 +4,7 @@ #include #include "ExtrusionLine.hpp" +#include "linearAlg2D.hpp" #include "../../VariableWidth.hpp" namespace Slic3r::Arachne diff --git a/src/libslic3r/Arachne/utils/SquareGrid.cpp b/src/libslic3r/Arachne/utils/SquareGrid.cpp index 856eb5968bc..ae899657954 100644 --- a/src/libslic3r/Arachne/utils/SquareGrid.cpp +++ b/src/libslic3r/Arachne/utils/SquareGrid.cpp @@ -2,6 +2,7 @@ //CuraEngine is released under the terms of the AGPLv3 or higher. #include "SquareGrid.hpp" +#include "../../Point.hpp" using namespace Slic3r::Arachne; diff --git a/src/libslic3r/Arrange.cpp b/src/libslic3r/Arrange.cpp index f9559ede248..d82997aaa92 100644 --- a/src/libslic3r/Arrange.cpp +++ b/src/libslic3r/Arrange.cpp @@ -199,19 +199,23 @@ void update_selected_items_axis_align(ArrangePolygons& selected, const DynamicPr } if (std::abs(a00) > EPSILON) { - double db1_2, db1_6, db1_12, db1_24; - double m00, m10, m01, m20, m11, m02; + double db1_2, db1_6, db1_12, db1_24, db1_20, db1_60; + double m00, m10, m01, m20, m11, m02, m30, m21, m12, m03; if (a00 > 0) { db1_2 = 0.5; db1_6 = 0.16666666666666666666666666666667; db1_12 = 0.083333333333333333333333333333333; db1_24 = 0.041666666666666666666666666666667; + db1_20 = 0.05; + db1_60 = 0.016666666666666666666666666666667; } else { db1_2 = -0.5; db1_6 = -0.16666666666666666666666666666667; db1_12 = -0.083333333333333333333333333333333; db1_24 = -0.041666666666666666666666666666667; + db1_20 = -0.05; + db1_60 = -0.016666666666666666666666666666667; } m00 = a00 * db1_2; m10 = a10 * db1_6; @@ -219,6 +223,10 @@ void update_selected_items_axis_align(ArrangePolygons& selected, const DynamicPr m20 = a20 * db1_12; m11 = a11 * db1_24; m02 = a02 * db1_12; + m30 = a30 * db1_20; + m21 = a21 * db1_60; + m12 = a12 * db1_60; + m03 = a03 * db1_20; double cx = m10 / m00; double cy = m01 / m00; diff --git a/src/libslic3r/BlacklistedLibraryCheck.cpp b/src/libslic3r/BlacklistedLibraryCheck.cpp index 2c9bf9b8e9a..938f5424977 100644 --- a/src/libslic3r/BlacklistedLibraryCheck.cpp +++ b/src/libslic3r/BlacklistedLibraryCheck.cpp @@ -1,5 +1,6 @@ #include "BlacklistedLibraryCheck.hpp" +#include #include #ifdef WIN32 diff --git a/src/libslic3r/Brim.cpp b/src/libslic3r/Brim.cpp index 089761cd183..9690a92d000 100644 --- a/src/libslic3r/Brim.cpp +++ b/src/libslic3r/Brim.cpp @@ -576,6 +576,7 @@ double getadhesionCoeff(const PrintObject* printObject) auto& insts = printObject->instances(); auto objectVolumes = insts[0].model_instance->get_object()->volumes; + auto print = printObject->print(); std::vector extrudersFirstLayer; auto firstLayerRegions = printObject->layers().front()->regions(); if (!firstLayerRegions.empty()) { @@ -1583,6 +1584,7 @@ static void make_inner_brim(const Print& print, const ConstPrintObjectPtrs& top_ //BBS: generate out brim by offseting ExPolygons 'islands_area_ex' Polygons tryExPolygonOffset(const ExPolygons islandAreaEx, const Print& print) { + const auto scaled_resolution = scaled(print.config().resolution.value); Polygons loops; ExPolygons islands_ex; Flow flow = print.brim_flow(); @@ -1657,6 +1659,7 @@ void make_brim(const Print& print, PrintTryCancel try_cancel, Polygons& islands_ std::map brimAreaMap; std::map supportBrimAreaMap; Flow flow = print.brim_flow(); + const auto scaled_resolution = scaled(print.config().resolution.value); ExPolygons islands_area_ex = outer_inner_brim_area(print, float(flow.scaled_spacing()), brimAreaMap, supportBrimAreaMap, objPrintVec, printExtruders); diff --git a/src/libslic3r/CSGMesh/ModelToCSGMesh.hpp b/src/libslic3r/CSGMesh/ModelToCSGMesh.hpp index e5038df54be..5963b29109e 100644 --- a/src/libslic3r/CSGMesh/ModelToCSGMesh.hpp +++ b/src/libslic3r/CSGMesh/ModelToCSGMesh.hpp @@ -28,7 +28,7 @@ bool model_to_csgmesh(const ModelObject &mo, { bool do_positives = parts_to_include & mpartsPositive; bool do_negatives = parts_to_include & mpartsNegative; - // bool do_drillholes = parts_to_include & mpartsDrillHoles; + bool do_drillholes = parts_to_include & mpartsDrillHoles; bool do_splits = parts_to_include & mpartsDoSplits; bool has_splitable_volume = false; diff --git a/src/libslic3r/Config.cpp b/src/libslic3r/Config.cpp index d74e5ef3bd8..e826bb4c5b3 100644 --- a/src/libslic3r/Config.cpp +++ b/src/libslic3r/Config.cpp @@ -775,9 +775,10 @@ ConfigSubstitutions ConfigBase::load(const std::string &file, ForwardCompatibili //BBS: add json support ConfigSubstitutions ConfigBase::load_from_json(const std::string &file, ForwardCompatibilitySubstitutionRule compatibility_rule, std::map& key_values, std::string& reason) { + int ret = 0; ConfigSubstitutionContext substitutions_ctxt(compatibility_rule); - load_from_json(file, substitutions_ctxt, true, key_values, reason); + ret = load_from_json(file, substitutions_ctxt, true, key_values, reason); return std::move(substitutions_ctxt.substitutions); } diff --git a/src/libslic3r/ExtrusionEntityCollection.cpp b/src/libslic3r/ExtrusionEntityCollection.cpp index 3383d0de34e..9a37ff3ac12 100644 --- a/src/libslic3r/ExtrusionEntityCollection.cpp +++ b/src/libslic3r/ExtrusionEntityCollection.cpp @@ -2,6 +2,7 @@ #include "ShortestPath.hpp" #include #include +#include namespace Slic3r { diff --git a/src/libslic3r/ExtrusionEntityCollection.hpp b/src/libslic3r/ExtrusionEntityCollection.hpp index 7d6f92a5287..613d531db02 100644 --- a/src/libslic3r/ExtrusionEntityCollection.hpp +++ b/src/libslic3r/ExtrusionEntityCollection.hpp @@ -62,6 +62,19 @@ class ExtrusionEntityCollection : public ExtrusionEntity } return out; } + bool has_perimeters() const + { + return std::any_of(entities.begin(), entities.end(), [](const ExtrusionEntity* ee) { return is_perimeter(ee->role()); }); + } + bool has_infill() const + { + return std::any_of(entities.begin(), entities.end(), [](const ExtrusionEntity* ee) { return is_infill(ee->role()); }); + } + bool has_solid_infill() const + { + return std::any_of(entities.begin(), entities.end(), [](const ExtrusionEntity* ee) { return is_solid_infill(ee->role()); }); + } + bool can_sort() const override { return !this->no_sort; } bool can_reverse() const override { diff --git a/src/libslic3r/Fill/FillConcentric.cpp b/src/libslic3r/Fill/FillConcentric.cpp index 93a54a07398..f7fe82ad5f7 100644 --- a/src/libslic3r/Fill/FillConcentric.cpp +++ b/src/libslic3r/Fill/FillConcentric.cpp @@ -9,6 +9,20 @@ namespace Slic3r { +template +int stagger_seam_index(int ind, LINE_T line) +{ + Point const *point = &line.points[ind]; + double dist = 0; + while (dist < 0.5 / SCALING_FACTOR) { + ind = (ind + 1) % line.points.size(); + Point const &next = line.points[ind]; + dist += point->distance_to(next); + point = &next; + }; + return ind; +} + void FillConcentric::_fill_surface_single( const FillParams ¶ms, unsigned int thickness_layers, @@ -42,7 +56,7 @@ void FillConcentric::_fill_surface_single( size_t iPathFirst = polylines_out.size(); Point last_pos(0, 0); for (const Polygon &loop : loops) { - polylines_out.emplace_back(loop.split_at_index(last_pos.nearest_point_index(loop.points))); + polylines_out.emplace_back(loop.split_at_index(stagger_seam_index(last_pos.nearest_point_index(loop.points), loop))); last_pos = polylines_out.back().last_point(); } @@ -110,7 +124,7 @@ void FillConcentric::_fill_surface_single(const FillParams& params, ThickPolyline thick_polyline = Arachne::to_thick_polyline(*extrusion); if (extrusion->is_closed) - thick_polyline.start_at_index(last_pos.nearest_point_index(thick_polyline.points)); + thick_polyline.start_at_index(stagger_seam_index(last_pos.nearest_point_index(thick_polyline.points), thick_polyline)); thick_polylines_out.emplace_back(std::move(thick_polyline)); last_pos = thick_polylines_out.back().last_point(); } diff --git a/src/libslic3r/Fill/FillConcentricInternal.cpp b/src/libslic3r/Fill/FillConcentricInternal.cpp index 1deb99183a2..d565992ea19 100644 --- a/src/libslic3r/Fill/FillConcentricInternal.cpp +++ b/src/libslic3r/Fill/FillConcentricInternal.cpp @@ -1,3 +1,6 @@ +#include "../ClipperUtils.hpp" +#include "../ExPolygon.hpp" +#include "../Surface.hpp" #include "../VariableWidth.hpp" #include "Arachne/WallToolPaths.hpp" diff --git a/src/libslic3r/Fill/FillCrossHatch.cpp b/src/libslic3r/Fill/FillCrossHatch.cpp index 7b9f96fa781..10f421bef31 100644 --- a/src/libslic3r/Fill/FillCrossHatch.cpp +++ b/src/libslic3r/Fill/FillCrossHatch.cpp @@ -1,5 +1,6 @@ #include "../ClipperUtils.hpp" #include "../ShortestPath.hpp" +#include "../Surface.hpp" #include #include "FillCrossHatch.hpp" @@ -64,6 +65,7 @@ static Polylines generate_transform_pattern(double inprogress, int direction, co odd_poly.points.reserve(num_of_cycle * one_cycle.size()); // replicate to odd line + Point translate = Point(0, 0); for (size_t i = 0; i < num_of_cycle; i++) { Polyline odd_points; odd_points = Polyline(one_cycle); @@ -150,6 +152,7 @@ static Polylines generate_infill_layers(coordf_t z_height, double repeat_ratio, coordf_t period = trans_layer_size + repeat_layer_size; coordf_t remains = z_height - std::floor(z_height / period) * period; coordf_t trans_z = remains - repeat_layer_size; // put repeat layer first. + coordf_t repeat_z = remains; int phase = fmod(z_height, period * 2) - (period - 1); // add epsilon int direction = phase <= 0 ? -1 : 1; diff --git a/src/libslic3r/Fill/Lightning/Generator.cpp b/src/libslic3r/Fill/Lightning/Generator.cpp index a0cbe2b21e0..bf1142ee456 100644 --- a/src/libslic3r/Fill/Lightning/Generator.cpp +++ b/src/libslic3r/Fill/Lightning/Generator.cpp @@ -4,6 +4,7 @@ #include "Generator.hpp" #include "TreeNode.hpp" +#include "../../ClipperUtils.hpp" #include "../../Layer.hpp" #include "../../Print.hpp" @@ -34,7 +35,7 @@ static std::string get_svg_filename(std::string layer_nr_or_z, std::string tag rand_init = true; } - // int rand_num = rand() % 1000000; + int rand_num = rand() % 1000000; //makedir("./SVG"); std::string prefix = "./SVG/"; std::string suffix = ".svg"; diff --git a/src/libslic3r/FlushVolCalc.cpp b/src/libslic3r/FlushVolCalc.cpp index c135b939485..29cbcbe4012 100644 --- a/src/libslic3r/FlushVolCalc.cpp +++ b/src/libslic3r/FlushVolCalc.cpp @@ -1,4 +1,5 @@ #include +#include #include "slic3r/Utils/ColorSpaceConvert.hpp" #include "FlushVolCalc.hpp" diff --git a/src/libslic3r/Format/3mf.cpp b/src/libslic3r/Format/3mf.cpp index 20007ee579a..894de0549b5 100644 --- a/src/libslic3r/Format/3mf.cpp +++ b/src/libslic3r/Format/3mf.cpp @@ -298,6 +298,7 @@ bool PrusaFileParser::check_3mf_from_prusa(const std::string filename) const std::string model_file = "3D/3dmodel.model"; int model_file_index = mz_zip_reader_locate_file(&archive, model_file.c_str(), nullptr, 0); if (model_file_index != -1) { + int depth = 0; m_parser = XML_ParserCreate(nullptr); XML_SetUserData(m_parser, (void *) this); XML_SetElementHandler(m_parser, start_element_handler, nullptr); diff --git a/src/libslic3r/Format/OBJ.cpp b/src/libslic3r/Format/OBJ.cpp index f9a19d7a1b5..abaae3692bf 100644 --- a/src/libslic3r/Format/OBJ.cpp +++ b/src/libslic3r/Format/OBJ.cpp @@ -100,6 +100,7 @@ bool load_obj(const char *path, TriangleMesh *meshptr, ObjInfo& obj_info, std::s obj_info.is_single_mtl = data.usemtls.size() == 1 && mtl_data.new_mtl_unmap.size() == 1; obj_info.face_colors.reserve(num_faces + num_quads); } + bool has_color = data.has_vertex_color; for (size_t i = 0; i < num_vertices; ++ i) { size_t j = i * OBJ_VERTEX_LENGTH; its.vertices.emplace_back(data.coordinates[j], data.coordinates[j + 1], data.coordinates[j + 2]); diff --git a/src/libslic3r/Format/bbs_3mf.cpp b/src/libslic3r/Format/bbs_3mf.cpp index 191246af74e..7df4fbca493 100644 --- a/src/libslic3r/Format/bbs_3mf.cpp +++ b/src/libslic3r/Format/bbs_3mf.cpp @@ -878,6 +878,7 @@ void PlateData::parse_filament_info(GCodeProcessorResult *result) bool extract_object_model() { mz_zip_archive archive; + mz_zip_archive_file_stat stat; mz_zip_zero_struct(&archive); if (!open_zip_reader(&archive, zip_path)) { @@ -1616,9 +1617,9 @@ void PlateData::parse_filament_info(GCodeProcessorResult *result) } else { _extract_xml_from_archive(archive, sub_rels, _handle_start_relationships_element, _handle_end_relationships_element); + int index = 0; #if 0 - int index = 0; for (auto path : m_sub_model_paths) { if (proFn) { proFn(IMPORT_STAGE_READ_FILES, ++index, 3 + m_sub_model_paths.size(), cb_cancel); @@ -2218,6 +2219,7 @@ void PlateData::parse_filament_info(GCodeProcessorResult *result) bool _BBS_3MF_Importer::_extract_from_archive(mz_zip_archive& archive, std::string const & path, std::function extract, bool restore) { + mz_uint num_entries = mz_zip_reader_get_num_files(&archive); mz_zip_archive_file_stat stat; std::string path2 = path; if (path2.front() == '/') path2 = path2.substr(1); @@ -3317,9 +3319,9 @@ void PlateData::parse_filament_info(GCodeProcessorResult *result) // Adjust backup object/volume id std::istringstream iss(m_curr_object->uuid); int backup_id; - // bool need_replace = false; + bool need_replace = false; if (iss >> std::hex >> backup_id) { - // need_replace = (m_curr_object->id != backup_id); + need_replace = (m_curr_object->id != backup_id); m_curr_object->id = backup_id; } if (!m_curr_object->components.empty()) @@ -4992,9 +4994,9 @@ void PlateData::parse_filament_info(GCodeProcessorResult *result) if (is_bbl_3mf && boost::ends_with(current_object->uuid, OBJECT_UUID_SUFFIX) && top_importer->m_load_restore) { std::istringstream iss(current_object->uuid); int backup_id; - // bool need_replace = false; + bool need_replace = false; if (iss >> std::hex >> backup_id) { - // need_replace = (current_object->id != backup_id); + need_replace = (current_object->id != backup_id); current_object->id = backup_id; } //if (need_replace) @@ -5989,6 +5991,8 @@ void PlateData::parse_filament_info(GCodeProcessorResult *result) auto src_gcode_file = plate_data->gcode_file; boost::filesystem::ifstream ifs(src_gcode_file, std::ios::binary); std::string buf(64 * 1024, 0); + const std::size_t & size = boost::filesystem::file_size(src_gcode_file); + std::size_t left_size = size; while (ifs) { ifs.read(buf.data(), buf.size()); int read_bytes = ifs.gcount(); @@ -6226,6 +6230,7 @@ void PlateData::parse_filament_info(GCodeProcessorResult *result) bool _BBS_3MF_Exporter::_add_bbox_file_to_archive(mz_zip_archive& archive, const PlateBBoxData& id_bboxes, int index) { + bool res = false; nlohmann::json j; id_bboxes.to_json(j); std::string out = j.dump(); @@ -6615,6 +6620,7 @@ void PlateData::parse_filament_info(GCodeProcessorResult *result) auto iter = objects_data.find(objects[i]); ObjectToObjectDataMap objects_data2; objects_data2.insert(*iter); + auto & object = *iter->second.object; mz_zip_archive archive; mz_zip_zero_struct(&archive); mz_zip_writer_init_heap(&archive, 0, 1024 * 1024); @@ -7531,7 +7537,7 @@ void PlateData::parse_filament_info(GCodeProcessorResult *result) if (!m_skip_model && instance_size > 0) { - for (int j = 0; j < instance_size; ++j) + for (unsigned int j = 0; j < instance_size; ++j) { stream << " <" << INSTANCE_TAG << ">\n"; int obj_id = plate_data->objects_and_instances[j].first; diff --git a/src/libslic3r/Format/svg.cpp b/src/libslic3r/Format/svg.cpp index ed170cf5704..4a96274b99e 100644 --- a/src/libslic3r/Format/svg.cpp +++ b/src/libslic3r/Format/svg.cpp @@ -113,6 +113,9 @@ double get_profile_area(std::vector> profile_line_poin double area = 0; for (auto line_points : profile_line_points) { + bool flag = true; + if (line_points.second.Y() < line_points.first.Y()) flag = false; + area += (line_points.second.X() + line_points.first.X() - 2 * min_x) * (line_points.second.Y() - line_points.first.Y()) / 2; } @@ -134,6 +137,8 @@ bool get_svg_profile(const char *path, std::vector &element_infos, int name_index = 1; for (NSVGshape *shape = svg_data->shapes; shape; shape = shape->next) { + char * id = shape->id; + int interpolation_precision = 10; // Number of interpolation points float step = 1.0f / float(interpolation_precision - 1); @@ -379,6 +384,7 @@ bool load_svg(const char *path, Model *model, std::string &message) ModelObject *new_object = model->add_object(); // new_object->name ? new_object->input_file = path; + auto stage_unit3 = stl.size() / LOAD_STEP_STAGE_UNIT_NUM + 1; for (size_t i = 0; i < stl.size(); i++) { // BBS: maybe mesh is empty from step file. Don't add if (stl[i].stats.number_of_facets > 0) { diff --git a/src/libslic3r/GCode.cpp b/src/libslic3r/GCode.cpp index fc29347f9ab..d95a7227c1a 100644 --- a/src/libslic3r/GCode.cpp +++ b/src/libslic3r/GCode.cpp @@ -116,6 +116,7 @@ static std::vector get_path_of_change_filament(const Print& print) if (excluse_area.size() != 4) return out_points; + double cutter_area_x = excluse_area[2].x() + 2; double cutter_area_y = excluse_area[2].y() + 2; double start_x_position = start_point.x(); @@ -2491,6 +2492,7 @@ void GCode::_do_export(Print& print, GCodeOutputStream &file, ThumbnailsGenerato m_avoid_crossing_perimeters.use_external_mp_once(); // BBS. change tool before moving to origin point. if (m_writer.need_toolchange(initial_extruder_id)) { + const PrintObjectConfig& object_config = object.config(); coordf_t initial_layer_print_height = print.config().initial_layer_print_height.value; file.write(this->set_extruder(initial_extruder_id, initial_layer_print_height, true)); prime_extruder = true; @@ -3275,17 +3277,14 @@ namespace ProcessLayer const PrintConfig &config) { std::string gcode; + // BBS + bool single_filament_print = config.filament_diameter.size() == 1; if (custom_gcode != nullptr) { // Extruder switches are processed by LayerTools, they should be filtered out. assert(custom_gcode->type != CustomGCode::ToolChange); CustomGCode::Type gcode_type = custom_gcode->type; - - //BBS: inserting color gcode is removed -#if 0 - // BBS - bool single_filament_print = config.filament_diameter.size() == 1; bool color_change = gcode_type == CustomGCode::ColorChange; bool tool_change = gcode_type == CustomGCode::ToolChange; // Tool Change is applied as Color Change for a single extruder printer only. @@ -3297,7 +3296,8 @@ namespace ProcessLayer m600_extruder_before_layer = custom_gcode->extruder - 1; else if (gcode_type == CustomGCode::PausePrint) pause_print_msg = custom_gcode->extra; - + //BBS: inserting color gcode is removed +#if 0 // we should add or not colorprint_change in respect to nozzle_diameter count instead of really used extruders count if (color_change || tool_change) { @@ -3360,8 +3360,8 @@ namespace Skirt { { // Prime all extruders printing over the 1st layer over the skirt lines. size_t n_loops = print.skirt().entities.size(); - // size_t n_tools = layer_tools.extruders.size(); - // size_t lines_per_extruder = (n_loops + n_tools - 1) / n_tools; + size_t n_tools = layer_tools.extruders.size(); + size_t lines_per_extruder = (n_loops + n_tools - 1) / n_tools; // BBS. Extrude skirt with first extruder if min_skirt_length is zero //ORCA: Always extrude skirt with first extruder, independantly of if the minimum skirt length is zero or not. The code below @@ -3717,8 +3717,7 @@ LayerResult GCode::process_layer( Skirt::make_skirt_loops_per_extruder_other_layers(print, layer_tools, m_skirt_done); // BBS: get next extruder according to flush and soluble - // Orca: Left unused due to removed code below -/* auto get_next_extruder = [&](int current_extruder,const std::vector&extruders) { + auto get_next_extruder = [&](int current_extruder,const std::vector&extruders) { std::vector flush_matrix(cast(m_config.flush_volumes_matrix.values)); const unsigned int number_of_extruders = (unsigned int)(sqrt(flush_matrix.size()) + EPSILON); // Extract purging volumes for each extruder pair: @@ -3736,7 +3735,7 @@ LayerResult GCode::process_layer( } } return next_extruder; - }; */ + }; if (m_config.enable_overhang_speed && !m_config.overhang_speed_classic) { for (const auto &layer_to_print : layers) { @@ -4871,8 +4870,8 @@ std::string GCode::extrude_support(const ExtrusionEntityCollection &support_fill std::string gcode; if (! support_fills.entities.empty()) { - // const double support_speed = m_config.support_speed.value; - // const double support_interface_speed = m_config.get_abs_value("support_interface_speed"); + const double support_speed = m_config.support_speed.value; + const double support_interface_speed = m_config.get_abs_value("support_interface_speed"); for (const ExtrusionEntity *ee : support_fills.entities) { ExtrusionRole role = ee->role(); assert(role == erSupportMaterial || role == erSupportMaterialInterface || role == erSupportTransition); @@ -6041,6 +6040,7 @@ bool GCode::needs_retraction(const Polyline &travel, ExtrusionRole role, LiftTyp for (int i = 0; i < m_config.z_hop.size(); i++) max_z_hop = std::max(max_z_hop, (float)m_config.z_hop.get_at(i)); float travel_len_thresh = scale_(max_z_hop / tan(this->writer().extruder()->travel_slope())); + float accum_len = 0.f; Polyline clipped_travel; clipped_travel.append(Polyline(travel.points[0], travel.points[1])); @@ -6142,6 +6142,7 @@ std::string GCode::retract(bool toolchange, bool is_last_retraction, LiftType li } if (needs_lift && can_lift) { + size_t extruder_id = m_writer.extruder()->id(); gcode += m_writer.lift(!m_spiral_vase ? lift_type : LiftType::NormalLift); } diff --git a/src/libslic3r/GCode/ConflictChecker.cpp b/src/libslic3r/GCode/ConflictChecker.cpp index 8b8e43aea2c..fb69372a9af 100644 --- a/src/libslic3r/GCode/ConflictChecker.cpp +++ b/src/libslic3r/GCode/ConflictChecker.cpp @@ -28,6 +28,7 @@ inline Grids line_rasterization(const Line &line, int64_t xdist = scale_(1), int Point rayStart = line.a; Point rayEnd = line.b; IndexPair currentVoxel = point_map_grid_index(rayStart, xdist, ydist); + IndexPair firstVoxel = currentVoxel; IndexPair lastVoxel = point_map_grid_index(rayEnd, xdist, ydist); Point ray = rayEnd - rayStart; diff --git a/src/libslic3r/GCode/GCodeProcessor.cpp b/src/libslic3r/GCode/GCodeProcessor.cpp index c8d61bc4883..852bebda312 100644 --- a/src/libslic3r/GCode/GCodeProcessor.cpp +++ b/src/libslic3r/GCode/GCodeProcessor.cpp @@ -392,8 +392,10 @@ void GCodeProcessor::TimeProcessor::reset() extruder_unloaded = true; machine_envelope_processing_enabled = false; machine_limits = MachineEnvelopeConfig(); - filament_load_times = std::vector(); - filament_unload_times = std::vector(); + filament_load_times = 0.0f; + filament_unload_times = 0.0f; + machine_tool_change_time = 0.0f; + for (size_t i = 0; i < static_cast(PrintEstimatedStatistics::ETimeMode::Count); ++i) { machines[i].reset(); @@ -1115,23 +1117,9 @@ void GCodeProcessor::apply_config(const PrintConfig& config) // Filament load / unload times are not specific to a firmware flavor. Let anybody use it if they find it useful. // As of now the fields are shown at the UI dialog in the same combo box as the ramming values, so they // are considered to be active for the single extruder multi-material printers only. - if(s_IsBBLPrinter){ - // BBL printers use machine_load_filament_time and machine_unload_filament_time - m_time_processor.filament_load_times.resize(1); - m_time_processor.filament_load_times[0] = static_cast(config.machine_load_filament_time.value); - m_time_processor.filament_unload_times.resize(1); - m_time_processor.filament_unload_times[0] = static_cast(config.machine_unload_filament_time.value); - } else { - // for non-BBL printers use the filament_load_time and filament_unload_time - m_time_processor.filament_load_times.resize(config.filament_load_time.values.size()); - for (size_t i = 0; i < config.filament_load_time.values.size(); ++i) { - m_time_processor.filament_load_times[i] = static_cast(config.filament_load_time.values[i]); - } - m_time_processor.filament_unload_times.resize(config.filament_unload_time.values.size()); - for (size_t i = 0; i < config.filament_unload_time.values.size(); ++i) { - m_time_processor.filament_unload_times[i] = static_cast(config.filament_unload_time.values[i]); - } - } + m_time_processor.filament_load_times = static_cast(config.machine_load_filament_time.value); + m_time_processor.filament_unload_times = static_cast(config.machine_unload_filament_time.value); + m_time_processor.machine_tool_change_time = static_cast(config.machine_tool_change_time.value); for (size_t i = 0; i < static_cast(PrintEstimatedStatistics::ETimeMode::Count); ++i) { float max_acceleration = get_option_value(m_time_processor.machine_limits.machine_max_acceleration_extruding, i); @@ -1352,36 +1340,18 @@ void GCodeProcessor::apply_config(const DynamicPrintConfig& config) m_extruder_temps.resize(m_result.extruders_count); - if(s_IsBBLPrinter){ - // BBL printers use machine_load_filament_time and machine_unload_filament_time - const ConfigOptionFloat* machine_load_filament_time = config.option("machine_load_filament_time"); - if (machine_load_filament_time != nullptr){ - m_time_processor.filament_load_times.resize(1); - m_time_processor.filament_load_times[0] = static_cast(machine_load_filament_time->value); - } + const ConfigOptionFloat* machine_load_filament_time = config.option("machine_load_filament_time"); + if (machine_load_filament_time != nullptr) + m_time_processor.filament_load_times = static_cast(machine_load_filament_time->value); + + const ConfigOptionFloat* machine_unload_filament_time = config.option("machine_unload_filament_time"); + if (machine_unload_filament_time != nullptr) + m_time_processor.filament_unload_times = static_cast(machine_unload_filament_time->value); + + const ConfigOptionFloat* machine_tool_change_time = config.option("machine_tool_change_time"); + if (machine_tool_change_time != nullptr) + m_time_processor.machine_tool_change_time = static_cast(machine_tool_change_time->value); - const ConfigOptionFloat* machine_unload_filament_time = config.option("machine_unload_filament_time"); - if (machine_unload_filament_time != nullptr){ - m_time_processor.filament_unload_times.resize(1); - m_time_processor.filament_unload_times[0] = static_cast(machine_unload_filament_time->value); - } - } else { - // non-BBL printers use filament_load_time and filament_unload_time - const ConfigOptionFloats* filament_load_time = config.option("filament_load_time"); - if (filament_load_time != nullptr) { - m_time_processor.filament_load_times.resize(filament_load_time->values.size()); - for (size_t i = 0; i < filament_load_time->values.size(); ++i) { - m_time_processor.filament_load_times[i] = static_cast(filament_load_time->values[i]); - } - } - const ConfigOptionFloats* filament_unload_time = config.option("filament_unload_time"); - if (filament_unload_time != nullptr) { - m_time_processor.filament_unload_times.resize(filament_unload_time->values.size()); - for (size_t i = 0; i < filament_unload_time->values.size(); ++i) { - m_time_processor.filament_unload_times[i] = static_cast(filament_unload_time->values[i]); - } - } - } if (m_flavor == gcfMarlinLegacy || m_flavor == gcfMarlinFirmware || m_flavor == gcfKlipper) { const ConfigOptionFloats* machine_max_acceleration_x = config.option("machine_max_acceleration_x"); @@ -3481,6 +3451,7 @@ void GCodeProcessor::process_G2_G3(const GCodeReader::GCodeLine& line) arc_length = ((int)line.p()) * 2 * PI * (start_point - m_arc_center).norm(); //BBS: Attention! arc_onterpolation does not support P mode while P is not 1. arc_interpolation(start_point, end_point, m_arc_center, (m_move_path_type == EMovePathType::Arc_move_ccw)); + float radian = ArcSegment::calc_arc_radian(start_point, end_point, m_arc_center, (m_move_path_type == EMovePathType::Arc_move_ccw)); Vec3f start_dir = Circle::calc_tangential_vector(start_point, m_arc_center, (m_move_path_type == EMovePathType::Arc_move_ccw)); Vec3f end_dir = Circle::calc_tangential_vector(end_point, m_arc_center, (m_move_path_type == EMovePathType::Arc_move_ccw)); @@ -4373,6 +4344,7 @@ void GCodeProcessor::process_T(const std::string_view command) float extra_time = get_filament_unload_time(static_cast(m_last_extruder_id)); m_time_processor.extruder_unloaded = false; extra_time += get_filament_load_time(static_cast(m_extruder_id)); + extra_time += m_time_processor.machine_tool_change_time; simulate_st_synchronize(extra_time); } @@ -5277,32 +5249,14 @@ void GCodeProcessor::set_travel_acceleration(PrintEstimatedStatistics::ETimeMode float GCodeProcessor::get_filament_load_time(size_t extruder_id) { - if (s_IsBBLPrinter) { - // BBL printers - // BBS: change load time to machine config and all extruder has same value - return m_time_processor.extruder_unloaded ? 0.0f : m_time_processor.filament_load_times[0]; - } else { - // non-BBL printers - return (m_time_processor.filament_load_times.empty() || m_time_processor.extruder_unloaded) ? - 0.0f : - ((extruder_id < m_time_processor.filament_load_times.size()) ? m_time_processor.filament_load_times[extruder_id] : - m_time_processor.filament_load_times.front()); - } + //BBS: change load time to machine config and all extruder has same value + return m_time_processor.extruder_unloaded ? 0.0f : m_time_processor.filament_load_times; } float GCodeProcessor::get_filament_unload_time(size_t extruder_id) { - if (s_IsBBLPrinter) { - // BBL printers - // BBS: change unload time to machine config and all extruder has same value - return m_time_processor.extruder_unloaded ? 0.0f : m_time_processor.filament_unload_times[0]; - } else { - // non-BBL printers - return (m_time_processor.filament_unload_times.empty() || m_time_processor.extruder_unloaded) ? - 0.0f : - ((extruder_id < m_time_processor.filament_unload_times.size()) ? m_time_processor.filament_unload_times[extruder_id] : - m_time_processor.filament_unload_times.front()); - } + //BBS: change unload time to machine config and all extruder has same value + return m_time_processor.extruder_unloaded ? 0.0f : m_time_processor.filament_unload_times; } //BBS diff --git a/src/libslic3r/GCode/GCodeProcessor.hpp b/src/libslic3r/GCode/GCodeProcessor.hpp index 976f4541c59..da47cea6889 100644 --- a/src/libslic3r/GCode/GCodeProcessor.hpp +++ b/src/libslic3r/GCode/GCodeProcessor.hpp @@ -492,8 +492,10 @@ class Print; bool machine_envelope_processing_enabled; MachineEnvelopeConfig machine_limits; // Additional load / unload times for a filament exchange sequence. - std::vector filament_load_times; - std::vector filament_unload_times; + float filament_load_times; + float filament_unload_times; + //Orca: time for tool change + float machine_tool_change_time; bool disable_m73; std::array(PrintEstimatedStatistics::ETimeMode::Count)> machines; diff --git a/src/libslic3r/GCode/RetractWhenCrossingPerimeters.cpp b/src/libslic3r/GCode/RetractWhenCrossingPerimeters.cpp index 3043e091b51..776091adfbf 100644 --- a/src/libslic3r/GCode/RetractWhenCrossingPerimeters.cpp +++ b/src/libslic3r/GCode/RetractWhenCrossingPerimeters.cpp @@ -1,5 +1,6 @@ #include "../ClipperUtils.hpp" #include "../Layer.hpp" +#include "../Polyline.hpp" #include "RetractWhenCrossingPerimeters.hpp" diff --git a/src/libslic3r/GCode/SmallAreaInfillFlowCompensator.cpp b/src/libslic3r/GCode/SmallAreaInfillFlowCompensator.cpp index d52b02237d7..e472b20794d 100644 --- a/src/libslic3r/GCode/SmallAreaInfillFlowCompensator.cpp +++ b/src/libslic3r/GCode/SmallAreaInfillFlowCompensator.cpp @@ -15,6 +15,7 @@ #include "../PrintConfig.hpp" #include "SmallAreaInfillFlowCompensator.hpp" +#include "spline/spline.h" #include namespace Slic3r { @@ -79,6 +80,9 @@ SmallAreaInfillFlowCompensator::SmallAreaInfillFlowCompensator(const Slic3r::GCo BOOST_LOG_TRIVIAL(error) << "Error parsing small area infill compensation model: " << e.what(); } } + +SmallAreaInfillFlowCompensator::~SmallAreaInfillFlowCompensator() = default; + double SmallAreaInfillFlowCompensator::flow_comp_model(const double line_length) { if(flowModel == nullptr) diff --git a/src/libslic3r/GCode/SmallAreaInfillFlowCompensator.hpp b/src/libslic3r/GCode/SmallAreaInfillFlowCompensator.hpp index e25c88522e4..1bfa5149f7d 100644 --- a/src/libslic3r/GCode/SmallAreaInfillFlowCompensator.hpp +++ b/src/libslic3r/GCode/SmallAreaInfillFlowCompensator.hpp @@ -4,25 +4,20 @@ #include "../libslic3r.h" #include "../PrintConfig.hpp" #include "../ExtrusionEntity.hpp" -#include "spline/spline.h" #include -namespace Slic3r { +namespace tk { +class spline; +} // namespace tk -#ifndef _WIN32 -// Currently on Linux/macOS, this class spits out large amounts of subobject linkage -// warnings because of the flowModel field. tk::spline is in an anonymous namespace which -// causes this issue. Until the issue can be solved, this is a temporary solution. -#pragma GCC diagnostic push -#pragma GCC diagnostic ignored "-Wsubobject-linkage" -#endif +namespace Slic3r { class SmallAreaInfillFlowCompensator { public: SmallAreaInfillFlowCompensator() = delete; explicit SmallAreaInfillFlowCompensator(const Slic3r::GCodeConfig& config); - ~SmallAreaInfillFlowCompensator() = default; + ~SmallAreaInfillFlowCompensator(); double modify_flow(const double line_length, const double dE, const ExtrusionRole role); @@ -39,10 +34,6 @@ class SmallAreaInfillFlowCompensator double max_modified_length() { return eLengths.back(); } }; -#ifndef _WIN32 -#pragma GCC diagnostic pop -#endif - } // namespace Slic3r #endif /* slic3r_GCode_SmallAreaInfillFlowCompensator_hpp_ */ diff --git a/src/libslic3r/GCode/ToolOrdering.cpp b/src/libslic3r/GCode/ToolOrdering.cpp index 03a3c491e99..0abeedd58e6 100644 --- a/src/libslic3r/GCode/ToolOrdering.cpp +++ b/src/libslic3r/GCode/ToolOrdering.cpp @@ -1,3 +1,4 @@ +#include "ExtrusionEntity.hpp" #include "Print.hpp" #include "ToolOrdering.hpp" #include "Layer.hpp" @@ -171,12 +172,25 @@ unsigned int LayerTools::extruder(const ExtrusionEntityCollection &extrusions, c assert(region.config().sparse_infill_filament.value > 0); assert(region.config().solid_infill_filament.value > 0); // 1 based extruder ID. - unsigned int extruder = ((this->extruder_override == 0) ? - (is_infill(extrusions.role()) ? - (is_solid_infill(extrusions.entities.front()->role()) ? region.config().solid_infill_filament : region.config().sparse_infill_filament) : - region.config().wall_filament.value) : - this->extruder_override); - return (extruder == 0) ? 0 : extruder - 1; + unsigned int extruder = 1; + + if (this->extruder_override == 0) { + if (extrusions.has_infill()) { + if (extrusions.has_solid_infill()) { + extruder = region.config().solid_infill_filament; + } else { + extruder = region.config().sparse_infill_filament; + } + } else if (extrusions.has_perimeters()) { + extruder = region.config().wall_filament.value; + } else { + extruder = this->extruder_override; + } + } else { + extruder = this->extruder_override; + } + + return (extruder == 0) ? 0 : extruder - 1; } static double calc_max_layer_height(const PrintConfig &config, double max_object_layer_height) @@ -311,6 +325,7 @@ ToolOrdering::ToolOrdering(const Print &print, unsigned int first_extruder, bool std::vector ToolOrdering::generate_first_layer_tool_order(const Print& print) { std::vector tool_order; + int initial_extruder_id = -1; std::map min_areas_per_extruder; for (auto object : print.objects()) { @@ -339,6 +354,7 @@ std::vector ToolOrdering::generate_first_layer_tool_order(const Pr } } + double max_minimal_area = 0.; for (auto ape : min_areas_per_extruder) { auto iter = tool_order.begin(); for (; iter != tool_order.end(); iter++) { @@ -371,6 +387,7 @@ std::vector ToolOrdering::generate_first_layer_tool_order(const Pr std::vector ToolOrdering::generate_first_layer_tool_order(const PrintObject& object) { std::vector tool_order; + int initial_extruder_id = -1; std::map min_areas_per_extruder; auto first_layer = object.get_layer(0); for (auto layerm : first_layer->regions()) { @@ -395,6 +412,7 @@ std::vector ToolOrdering::generate_first_layer_tool_order(const Pr } } + double max_minimal_area = 0.; for (auto ape : min_areas_per_extruder) { auto iter = tool_order.begin(); for (; iter != tool_order.end(); iter++) { diff --git a/src/libslic3r/GCode/WipeTower.cpp b/src/libslic3r/GCode/WipeTower.cpp index f18afb5d30f..39c603a4703 100644 --- a/src/libslic3r/GCode/WipeTower.cpp +++ b/src/libslic3r/GCode/WipeTower.cpp @@ -1072,6 +1072,8 @@ void WipeTower::toolchange_Wipe( const float target_speed = is_first_layer() ? std::min(m_first_layer_speed * 60.f, 4800.f) : 4800.f; float wipe_speed = 0.33f * target_speed; + float start_y = writer.y(); + #if 0 // if there is less than 2.5*m_perimeter_width to the edge, advance straightaway (there is likely a blob anyway) if ((m_left_to_right ? xr-writer.x() : writer.x()-xl) < 2.5f*m_perimeter_width) { @@ -1130,6 +1132,8 @@ void WipeTower::toolchange_Wipe( m_left_to_right = !m_left_to_right; } + float end_y = writer.y(); + // We may be going back to the model - wipe the nozzle. If this is followed // by finish_layer, this wipe path will be overwritten. //writer.add_wipe_point(writer.x(), writer.y()) @@ -1418,6 +1422,7 @@ void WipeTower::plan_tower() // If wipe tower height is between the current and next member, set the min_depth as linear interpolation between them auto next_height_to_depth = *iter; if (next_height_to_depth.first > m_wipe_tower_height) { + float height_base = curr_height_to_depth.first; float height_diff = next_height_to_depth.first - curr_height_to_depth.first; float min_depth_base = curr_height_to_depth.second; float depth_diff = next_height_to_depth.second - curr_height_to_depth.second; diff --git a/src/libslic3r/GCodeWriter.cpp b/src/libslic3r/GCodeWriter.cpp index f60d81a95a9..ad3ad640c04 100644 --- a/src/libslic3r/GCodeWriter.cpp +++ b/src/libslic3r/GCodeWriter.cpp @@ -34,8 +34,10 @@ void GCodeWriter::apply_print_config(const PrintConfig &print_config) std::round((use_mach_limits && supports_separate_travel_acceleration(print_config.gcode_flavor.value)) ? print_config.machine_max_acceleration_travel.values.front() : 0)); - m_max_jerk = std::lrint( - use_mach_limits ? std::min(print_config.machine_max_jerk_x.values.front(), print_config.machine_max_jerk_y.values.front()) : 0); + if (use_mach_limits) { + m_max_jerk_x = std::lrint(print_config.machine_max_jerk_x.values.front()); + m_max_jerk_y = std::lrint(print_config.machine_max_jerk_y.values.front()); + }; m_max_jerk_z = print_config.machine_max_jerk_z.values.front(); m_max_jerk_e = print_config.machine_max_jerk_e.values.front(); } @@ -230,20 +232,31 @@ std::string GCodeWriter::set_acceleration_internal(Acceleration type, unsigned i std::string GCodeWriter::set_jerk_xy(double jerk) { - // Clamp the jerk to the allowed maximum. - if (m_max_jerk > 0 && jerk > m_max_jerk) - jerk = m_max_jerk; - if (jerk < 0.01 || is_approx(jerk, m_last_jerk)) return std::string(); m_last_jerk = jerk; - + std::ostringstream gcode; - if(FLAVOR_IS(gcfKlipper)) + if (FLAVOR_IS(gcfKlipper)) { + // Clamp the jerk to the allowed maximum. + if (m_max_jerk_x > 0 && jerk > m_max_jerk_x) + jerk = m_max_jerk_x; + if (m_max_jerk_y > 0 && jerk > m_max_jerk_y) + jerk = m_max_jerk_y; + gcode << "SET_VELOCITY_LIMIT SQUARE_CORNER_VELOCITY=" << jerk; - else - gcode << "M205 X" << jerk << " Y" << jerk; + } else { + double jerk_x = jerk; + double jerk_y = jerk; + // Clamp the axis jerk to the allowed maximum. + if (m_max_jerk_x > 0 && jerk > m_max_jerk_x) + jerk_x = m_max_jerk_x; + if (m_max_jerk_y > 0 && jerk > m_max_jerk_y) + jerk_y = m_max_jerk_y; + + gcode << "M205 X" << jerk_x << " Y" << jerk_y; + } if (m_is_bbl_printers) gcode << std::setprecision(2) << " Z" << m_max_jerk_z << " E" << m_max_jerk_e; @@ -277,8 +290,10 @@ std::string GCodeWriter::set_accel_and_jerk(unsigned int acceleration, double je is_empty = false; } // Clamp the jerk to the allowed maximum. - if (m_max_jerk > 0 && jerk > m_max_jerk) - jerk = m_max_jerk; + if (m_max_jerk_x > 0 && jerk > m_max_jerk_x) + jerk = m_max_jerk_x; + if (m_max_jerk_y > 0 && jerk > m_max_jerk_y) + jerk = m_max_jerk_y; if (jerk > 0.01 && !is_approx(jerk, m_last_jerk)) { gcode << " SQUARE_CORNER_VELOCITY=" << jerk; diff --git a/src/libslic3r/GCodeWriter.hpp b/src/libslic3r/GCodeWriter.hpp index ccdd460fe07..28569e909de 100644 --- a/src/libslic3r/GCodeWriter.hpp +++ b/src/libslic3r/GCodeWriter.hpp @@ -20,7 +20,7 @@ class GCodeWriter { multiple_extruders(false), m_extruder(nullptr), m_single_extruder_multi_material(false), m_last_acceleration(0), m_max_acceleration(0),m_last_travel_acceleration(0), m_max_travel_acceleration(0), - m_last_jerk(0), m_max_jerk(0), + m_last_jerk(0), m_max_jerk_x(0), m_max_jerk_y(0), m_last_bed_temperature(0), m_last_bed_temperature_reached(true), m_lifted(0), m_to_lift(0), @@ -130,7 +130,8 @@ class GCodeWriter { // Limit for setting the acceleration, to respect the machine limits set for the Marlin firmware. // If set to zero, the limit is not in action. unsigned int m_max_acceleration; - double m_max_jerk; + double m_max_jerk_x; + double m_max_jerk_y; double m_last_jerk; double m_max_jerk_z; double m_max_jerk_e; diff --git a/src/libslic3r/Geometry.cpp b/src/libslic3r/Geometry.cpp index 62385a5018a..54dcb14cca3 100644 --- a/src/libslic3r/Geometry.cpp +++ b/src/libslic3r/Geometry.cpp @@ -4,14 +4,21 @@ #include "ClipperUtils.hpp" #include "ExPolygon.hpp" #include "Line.hpp" +#include "clipper.hpp" +#include #include #include +#include +#include +#include +#include #include #include #include #include #include +#include #if defined(_MSC_VER) && defined(__clang__) #define BOOST_NO_CXX17_HDR_STRING_VIEW diff --git a/src/libslic3r/Geometry/Circle.cpp b/src/libslic3r/Geometry/Circle.cpp index d7279c3b1b4..67966719549 100644 --- a/src/libslic3r/Geometry/Circle.cpp +++ b/src/libslic3r/Geometry/Circle.cpp @@ -1,5 +1,7 @@ #include "Circle.hpp" +#include "../Polygon.hpp" + #include #include #include diff --git a/src/libslic3r/Geometry/MedialAxis.cpp b/src/libslic3r/Geometry/MedialAxis.cpp index 2a27db1d8ad..f3514bb5125 100644 --- a/src/libslic3r/Geometry/MedialAxis.cpp +++ b/src/libslic3r/Geometry/MedialAxis.cpp @@ -1,7 +1,9 @@ +#include #include "MedialAxis.hpp" #include "clipper.hpp" #include "VoronoiOffset.hpp" +#include "../ClipperUtils.hpp" #ifdef SLIC3R_DEBUG namespace boost { namespace polygon { @@ -449,6 +451,19 @@ MedialAxis::MedialAxis(double min_width, double max_width, const ExPolygon &expo void MedialAxis::build(ThickPolylines* polylines) { m_vd.construct_voronoi(m_lines.begin(), m_lines.end()); + + // For several ExPolygons in SPE-1729, an invalid Voronoi diagram was produced that wasn't fixable by rotating input data. + // Those ExPolygons contain very thin lines and holes formed by very close (1-5nm) vertices that are on the edge of our resolution. + // Those thin lines and holes are both unprintable and cause the Voronoi diagram to be invalid. + // So we filter out such thin lines and holes and try to compute the Voronoi diagram again. + if (!m_vd.is_valid()) { + m_lines = to_lines(closing_ex({m_expolygon}, float(2. * SCALED_EPSILON))); + m_vd.construct_voronoi(m_lines.begin(), m_lines.end()); + + if (!m_vd.is_valid()) + BOOST_LOG_TRIVIAL(error) << "MedialAxis - Invalid Voronoi diagram even after morphological closing."; + } + Slic3r::Voronoi::annotate_inside_outside(m_vd, m_lines); // static constexpr double threshold_alpha = M_PI / 12.; // 30 degrees // std::vector skeleton_edges = Slic3r::Voronoi::skeleton_edges_rough(vd, lines, threshold_alpha); diff --git a/src/libslic3r/Geometry/Voronoi.cpp b/src/libslic3r/Geometry/Voronoi.cpp index fc7ead40d02..58923b9ada6 100644 --- a/src/libslic3r/Geometry/Voronoi.cpp +++ b/src/libslic3r/Geometry/Voronoi.cpp @@ -2,6 +2,7 @@ #include "libslic3r/Arachne/utils/PolygonsSegmentIndex.hpp" #include "libslic3r/Geometry/VoronoiUtils.hpp" +#include "libslic3r/Geometry/VoronoiUtilsCgal.hpp" #include "libslic3r/MultiMaterialSegmentation.hpp" #include @@ -146,6 +147,9 @@ void VoronoiDiagram::copy_to_local(voronoi_diagram_type &voronoi_diagram) { new_edge.prev(&m_edges[prev_edge_idx]); } } + + m_voronoi_diagram.clear(); + m_is_modified = true; } template @@ -346,9 +350,6 @@ VoronoiDiagram::try_to_repair_degenerated_voronoi_diagram_by_rotation(const Segm for (vertex_type &vertex : m_vertices) vertex.color(0); - m_voronoi_diagram.clear(); - m_is_modified = true; - return issue_type; } diff --git a/src/libslic3r/Geometry/VoronoiUtilsCgal.cpp b/src/libslic3r/Geometry/VoronoiUtilsCgal.cpp index 60f66edbf69..3118bf82803 100644 --- a/src/libslic3r/Geometry/VoronoiUtilsCgal.cpp +++ b/src/libslic3r/Geometry/VoronoiUtilsCgal.cpp @@ -1,3 +1,5 @@ +// Needed since the CGAL headers are not self-contained. +#include #include #include #include diff --git a/src/libslic3r/JumpPointSearch.cpp b/src/libslic3r/JumpPointSearch.cpp index a3b078127bf..f8ef2ff100b 100644 --- a/src/libslic3r/JumpPointSearch.cpp +++ b/src/libslic3r/JumpPointSearch.cpp @@ -1,18 +1,26 @@ #include "JumpPointSearch.hpp" #include "BoundingBox.hpp" +#include "ExPolygon.hpp" #include "Point.hpp" #include "libslic3r/AStar.hpp" #include "libslic3r/KDTreeIndirect.hpp" +#include "libslic3r/Polygon.hpp" #include "libslic3r/Polyline.hpp" #include "libslic3r/libslic3r.h" +#include +#include +#include #include #include #include #include #include +#include #include #include +#include + //#define DEBUG_FILES #ifdef DEBUG_FILES #include "libslic3r/SVG.hpp" diff --git a/src/libslic3r/Line.cpp b/src/libslic3r/Line.cpp index 51c84a16f76..7e75d563222 100644 --- a/src/libslic3r/Line.cpp +++ b/src/libslic3r/Line.cpp @@ -1,7 +1,9 @@ #include "Geometry.hpp" #include "Line.hpp" +#include "Polyline.hpp" #include #include +#include namespace Slic3r { diff --git a/src/libslic3r/MeshBoolean.cpp b/src/libslic3r/MeshBoolean.cpp index 3cd0771962d..c412553a223 100644 --- a/src/libslic3r/MeshBoolean.cpp +++ b/src/libslic3r/MeshBoolean.cpp @@ -330,7 +330,7 @@ void segment(CGALMesh& src, std::vector& dst, double smoothing_alpha = // fill holes typedef boost::graph_traits<_EpicMesh>::halfedge_descriptor halfedge_descriptor; -// typedef boost::graph_traits<_EpicMesh>::vertex_descriptor vertex_descriptor; + typedef boost::graph_traits<_EpicMesh>::vertex_descriptor vertex_descriptor; std::vector border_cycles; CGAL::Polygon_mesh_processing::extract_boundary_cycles(out, std::back_inserter(border_cycles)); for (halfedge_descriptor h : border_cycles) @@ -693,7 +693,7 @@ bool do_boolean_single(McutMesh &srcMesh, const McutMesh &cutMesh, const std::st McutMesh outMesh; int N_vertices = 0; // traversal of all connected components - for (unsigned int n = 0; n < numConnComps; ++n) { + for (int n = 0; n < numConnComps; ++n) { // query the data of each connected component from MCUT McConnectedComponent connComp = connectedComponents[n]; diff --git a/src/libslic3r/Model.cpp b/src/libslic3r/Model.cpp index 96136db395e..534777b6c1d 100644 --- a/src/libslic3r/Model.cpp +++ b/src/libslic3r/Model.cpp @@ -442,7 +442,7 @@ ModelObject* Model::add_object(const ModelObject &other) this->objects.push_back(new_object); // BBS: backup if (need_backup) { - if (other.get_model()) { + if (auto model = other.get_model()) { auto iter = object_backup_id_map.find(other.id().id); if (iter != object_backup_id_map.end()) { object_backup_id_map.emplace(new_object->id().id, iter->second); @@ -2615,7 +2615,7 @@ size_t ModelVolume::split(unsigned int max_extruders) size_t ivolume = std::find(this->object->volumes.begin(), this->object->volumes.end(), this) - this->object->volumes.begin(); const std::string name = this->name; - // unsigned int extruder_counter = 0; + unsigned int extruder_counter = 0; const Vec3d offset = this->get_offset(); for (TriangleMesh &mesh : meshes) { @@ -2930,6 +2930,9 @@ bool Model::obj_import_vertex_color_deal(const std::vector &verte std::cout << "error"; } }; + auto calc_tri_area = [](const Vec3f &v0, const Vec3f &v1, const Vec3f &v2) { + return std::abs((v0 - v1).cross(v0 - v2).norm()) / 2; + }; auto volume = obj->volumes[0]; volume->config.set("extruder", first_extruder_id); auto face_count = volume->mesh().its.indices.size(); @@ -3029,6 +3032,7 @@ bool Model::obj_import_face_color_deal(const std::vector &face_fi volume->mmu_segmentation_facets.reserve(face_count); if (volume->mesh().its.indices.size() != face_filament_ids.size()) { return false; } for (size_t i = 0; i < volume->mesh().its.indices.size(); i++) { + auto face = volume->mesh().its.indices[i]; auto filament_id = face_filament_ids[i]; if (filament_id <= 1) { continue; } std::string result; @@ -3293,7 +3297,7 @@ bool FacetsAnnotation::has_facets(const ModelVolume& mv, EnforcerBlockerType typ bool FacetsAnnotation::set(const TriangleSelector& selector) { - std::pair>, std::vector> sel_map = selector.serialize(); + TriangleSelector::TriangleSplittingData sel_map = selector.serialize(); if (sel_map != m_data) { m_data = std::move(sel_map); this->touch(); @@ -3304,8 +3308,8 @@ bool FacetsAnnotation::set(const TriangleSelector& selector) void FacetsAnnotation::reset() { - m_data.first.clear(); - m_data.second.clear(); + m_data.triangles_to_split.clear(); + m_data.bitstream.clear(); this->touch(); } @@ -3316,15 +3320,15 @@ std::string FacetsAnnotation::get_triangle_as_string(int triangle_idx) const { std::string out; - auto triangle_it = std::lower_bound(m_data.first.begin(), m_data.first.end(), triangle_idx, [](const std::pair &l, const int r) { return l.first < r; }); - if (triangle_it != m_data.first.end() && triangle_it->first == triangle_idx) { - int offset = triangle_it->second; - int end = ++ triangle_it == m_data.first.end() ? int(m_data.second.size()) : triangle_it->second; + auto triangle_it = std::lower_bound(m_data.triangles_to_split.begin(), m_data.triangles_to_split.end(), triangle_idx, [](const TriangleSelector::TriangleBitStreamMapping &l, const int r) { return l.triangle_idx < r; }); + if (triangle_it != m_data.triangles_to_split.end() && triangle_it->triangle_idx == triangle_idx) { + int offset = triangle_it->bitstream_start_idx; + int end = ++ triangle_it == m_data.triangles_to_split.end() ? int(m_data.bitstream.size()) : triangle_it->bitstream_start_idx; while (offset < end) { int next_code = 0; for (int i=3; i>=0; --i) { next_code = next_code << 1; - next_code |= int(m_data.second[offset + i]); + next_code |= int(m_data.bitstream[offset + i]); } offset += 4; @@ -3341,9 +3345,10 @@ std::string FacetsAnnotation::get_triangle_as_string(int triangle_idx) const void FacetsAnnotation::set_triangle_from_string(int triangle_id, const std::string& str) { assert(! str.empty()); - assert(m_data.first.empty() || m_data.first.back().first < triangle_id); - m_data.first.emplace_back(triangle_id, int(m_data.second.size())); + assert(m_data.triangles_to_split.empty() || m_data.triangles_to_split.back().triangle_idx < triangle_id); + m_data.triangles_to_split.emplace_back(triangle_id, int(m_data.bitstream.size())); + const size_t bitstream_start_idx = m_data.bitstream.size(); for (auto it = str.crbegin(); it != str.crend(); ++it) { const char ch = *it; int dec = 0; @@ -3355,14 +3360,16 @@ void FacetsAnnotation::set_triangle_from_string(int triangle_id, const std::stri assert(false); // Convert to binary and append into code. - for (int i=0; i<4; ++i) - m_data.second.insert(m_data.second.end(), bool(dec & (1 << i))); + for (int i = 0; i < 4; ++i) + m_data.bitstream.insert(m_data.bitstream.end(), bool(dec & (1 << i))); } + + m_data.update_used_states(bitstream_start_idx); } bool FacetsAnnotation::equals(const FacetsAnnotation &other) const { - const std::pair>, std::vector>& data = other.get_data(); + const auto& data = other.get_data(); return (m_data == data); } diff --git a/src/libslic3r/Model.hpp b/src/libslic3r/Model.hpp index 927ab47f9ba..9fc315778fa 100644 --- a/src/libslic3r/Model.hpp +++ b/src/libslic3r/Model.hpp @@ -16,6 +16,7 @@ #include "enum_bitmask.hpp" #include "TextConfiguration.hpp" #include "EmbossShape.hpp" +#include "TriangleSelector.hpp" //BBS: add bbs 3mf #include "Format/bbs_3mf.hpp" @@ -704,31 +705,6 @@ class ModelObject final : public ObjectBase void update_min_max_z(); }; -enum class EnforcerBlockerType : int8_t { - // Maximum is 3. The value is serialized in TriangleSelector into 2 bits. - NONE = 0, - ENFORCER = 1, - BLOCKER = 2, - // Maximum is 15. The value is serialized in TriangleSelector into 6 bits using a 2 bit prefix code. - Extruder1 = ENFORCER, - Extruder2 = BLOCKER, - Extruder3, - Extruder4, - Extruder5, - Extruder6, - Extruder7, - Extruder8, - Extruder9, - Extruder10, - Extruder11, - Extruder12, - Extruder13, - Extruder14, - Extruder15, - Extruder16, - ExtruderMax = Extruder16 -}; - enum class ConversionType : int { CONV_TO_INCH, CONV_FROM_INCH, @@ -745,9 +721,9 @@ enum class En3mfType : int { class FacetsAnnotation final : public ObjectWithTimestamp { public: // Assign the content if the timestamp differs, don't assign an ObjectID. - void assign(const FacetsAnnotation& rhs) { if (! this->timestamp_matches(rhs)) { m_data = rhs.m_data; this->copy_timestamp(rhs); } } - void assign(FacetsAnnotation&& rhs) { if (! this->timestamp_matches(rhs)) { m_data = std::move(rhs.m_data); this->copy_timestamp(rhs); } } - const std::pair>, std::vector>& get_data() const throw() { return m_data; } + void assign(const FacetsAnnotation &rhs) { if (! this->timestamp_matches(rhs)) { m_data = rhs.m_data; this->copy_timestamp(rhs); } } + void assign(FacetsAnnotation &&rhs) { if (! this->timestamp_matches(rhs)) { m_data = std::move(rhs.m_data); this->copy_timestamp(rhs); } } + const TriangleSelector::TriangleSplittingData &get_data() const noexcept { return m_data; } bool set(const TriangleSelector& selector); indexed_triangle_set get_facets(const ModelVolume& mv, EnforcerBlockerType type) const; // BBS @@ -755,7 +731,7 @@ class FacetsAnnotation final : public ObjectWithTimestamp { void set_enforcer_block_type_limit(const ModelVolume& mv, EnforcerBlockerType max_type); indexed_triangle_set get_facets_strict(const ModelVolume& mv, EnforcerBlockerType type) const; bool has_facets(const ModelVolume& mv, EnforcerBlockerType type) const; - bool empty() const { return m_data.first.empty(); } + bool empty() const { return m_data.triangles_to_split.empty(); } // Following method clears the config and increases its timestamp, so the deleted // state is considered changed from perspective of the undo/redo stack. @@ -765,11 +741,11 @@ class FacetsAnnotation final : public ObjectWithTimestamp { std::string get_triangle_as_string(int i) const; // Before deserialization, reserve space for n_triangles. - void reserve(int n_triangles) { m_data.first.reserve(n_triangles); } + void reserve(int n_triangles) { m_data.triangles_to_split.reserve(n_triangles); } // Deserialize triangles one by one, with strictly increasing triangle_id. void set_triangle_from_string(int triangle_id, const std::string& str); // After deserializing the last triangle, shrink data to fit. - void shrink_to_fit() { m_data.first.shrink_to_fit(); m_data.second.shrink_to_fit(); } + void shrink_to_fit() { m_data.triangles_to_split.shrink_to_fit(); m_data.bitstream.shrink_to_fit(); } bool equals(const FacetsAnnotation &other) const; private: @@ -796,7 +772,7 @@ class FacetsAnnotation final : public ObjectWithTimestamp { ar(cereal::base_class(this), m_data); } - std::pair>, std::vector> m_data; + TriangleSelector::TriangleSplittingData m_data; // To access set_new_unique_id() when copy / pasting a ModelVolume. friend class ModelVolume; diff --git a/src/libslic3r/ModelArrange.cpp b/src/libslic3r/ModelArrange.cpp index f1f926fe6dc..477509e69e9 100644 --- a/src/libslic3r/ModelArrange.cpp +++ b/src/libslic3r/ModelArrange.cpp @@ -167,6 +167,7 @@ ArrangePolygon get_instance_arrange_poly(ModelInstance* instance, const Slic3r:: auto support_type_ptr = obj->get_config_value>(config, "support_type"); auto support_type = support_type_ptr->value; auto enable_support = supp_type_ptr->getBool(); + int support_int = support_type_ptr->getInt(); if (enable_support && (support_type == stNormalAuto || support_type == stNormal)) ap.brim_width = 6.0; diff --git a/src/libslic3r/MultiMaterialSegmentation.cpp b/src/libslic3r/MultiMaterialSegmentation.cpp index c0476de6d97..4fe0d6b4b16 100644 --- a/src/libslic3r/MultiMaterialSegmentation.cpp +++ b/src/libslic3r/MultiMaterialSegmentation.cpp @@ -338,6 +338,7 @@ static std::vector> get_all_next_arcs( if (arc.type == MMU_Graph::ARC_TYPE::BORDER && arc.color != color) continue; + Vec2d arc_line = graph.nodes[arc.to_idx].point - graph.nodes[arc.from_idx].point; next_continue_arc.emplace_back(&arc); all_next_arcs.emplace_back(next_continue_arc); } @@ -1285,6 +1286,7 @@ static void cut_segmented_layers(const std::vector &input_exp const std::function &throw_on_cancel_callback) { BOOST_LOG_TRIVIAL(debug) << "MM segmentation - cutting segmented layers in parallel - begin"; + const float interlocking_cut_width = interlocking_depth > 0.f ? std::max(cut_width - interlocking_depth, 0.f) : 0.f; tbb::parallel_for(tbb::blocked_range(0, segmented_regions.size()), [&segmented_regions, &input_expolygons, &cut_width, &interlocking_depth, &throw_on_cancel_callback](const tbb::blocked_range &range) { for (size_t layer_idx = range.begin(); layer_idx < range.end(); ++layer_idx) { diff --git a/src/libslic3r/Orient.cpp b/src/libslic3r/Orient.cpp index 2fcbb6389a2..ce448fc7e6c 100644 --- a/src/libslic3r/Orient.cpp +++ b/src/libslic3r/Orient.cpp @@ -138,6 +138,8 @@ class AutoOrienter { auto cost_items = get_features(orientation, params.min_volume); + float unprintability = target_function(cost_items, params.min_volume); + results[orientation] = cost_items; BOOST_LOG_TRIVIAL(info) << std::fixed << std::setprecision(4) << "orientation:" << orientation.transpose() << ", cost:" << std::fixed << std::setprecision(4) << cost_items.field_values(); @@ -228,10 +230,10 @@ class AutoOrienter { { std::unordered_map alignments; // init to 0 - for (Eigen::Index i = 0; i < areas_.size(); i++) + for (size_t i = 0; i < areas_.size(); i++) alignments.insert(std::pair(normals_.row(i), 0)); // cumulate areas - for (Eigen::Index i = 0; i < areas_.size(); i++) + for (size_t i = 0; i < areas_.size(); i++) { alignments[normals_.row(i)] += areas_(i); } @@ -255,11 +257,11 @@ class AutoOrienter { Vec3f n1 = { 0, 0, 0 }; std::vector current_areas = {0, 0}; // init to 0 - for (Eigen::Index i = 0; i < areas_.size(); i++) { + for (size_t i = 0; i < areas_.size(); i++) { alignments_.insert(std::pair(quantize_normals_.row(i), std::pair(current_areas, n1))); } // cumulate areas - for (Eigen::Index i = 0; i < areas_.size(); i++) + for (size_t i = 0; i < areas_.size(); i++) { alignments_[quantize_normals_.row(i)].first[1] += areas_(i); if (areas_(i) > alignments_[quantize_normals_.row(i)].first[0]){ @@ -337,7 +339,7 @@ class AutoOrienter { z_max_hull.resize(mesh_convex_hull.facets_count(), 1); its = mesh_convex_hull.its; - for (Eigen::Index i = 0; i < z_max_hull.rows(); i++) + for (size_t i = 0; i < z_max_hull.rows(); i++) { float z0 = its.get_vertex(i,0).dot(orientation); float z1 = its.get_vertex(i,1).dot(orientation); @@ -391,7 +393,7 @@ class AutoOrienter { // filter overhang Eigen::VectorXf normal_projection(normals.rows(), 1);// = this->normals.dot(orientation); - for (Eigen::Index i = 0; i < normals.rows(); i++) + for (size_t i = 0; i < normals.rows(); i++) { normal_projection(i) = normals.row(i).dot(orientation); } @@ -457,6 +459,7 @@ class AutoOrienter { cost = params.TAR_A * (overhang + params.TAR_B) + params.RELATIVE_F * (/*costs.volume/100*/overhang*params.TAR_C + params.TAR_D + params.TAR_LAF * costs.area_laf * params.use_low_angle_face) / (params.TAR_D + params.CONTOUR_F * costs.contour + params.BOTTOM_F * bottom + params.BOTTOM_HULL_F * bottom_hull + params.TAR_E * overhang + params.TAR_PROJ_AREA * costs.area_projected); } else { + float overhang = costs.overhang; cost = params.RELATIVE_F * (costs.overhang * params.TAR_C + params.TAR_D + params.TAR_LAF * costs.area_laf * params.use_low_angle_face) / (params.TAR_D + params.CONTOUR_F * costs.contour + params.BOTTOM_F * bottom + params.BOTTOM_HULL_F * bottom_hull + params.TAR_PROJ_AREA * costs.area_projected); } cost += (costs.bottom < params.BOTTOM_MIN) * 100;// +(costs.height_to_bottom_hull_ratio > params.height_to_bottom_hull_ratio_MIN) * 110; diff --git a/src/libslic3r/PerimeterGenerator.cpp b/src/libslic3r/PerimeterGenerator.cpp index 941cdf8f42f..439ef578748 100644 --- a/src/libslic3r/PerimeterGenerator.cpp +++ b/src/libslic3r/PerimeterGenerator.cpp @@ -242,10 +242,12 @@ static std::deque split_polyline_by_degree(const Polyline &p Polyline right; Polyline temp_copy = polyline_with_insert_points; + size_t poly_size = polyline_with_insert_points.size(); // BBS: merge degree in limited range //find first degee base double degree_base = int(points_overhang[points_overhang.size() - 1] / min_degree_gap) * min_degree_gap + min_degree_gap; degree_base = degree_base > max_overhang_degree ? max_overhang_degree : degree_base; + double short_poly_len = 0; for (int point_idx = points_overhang.size() - 2; point_idx > 0; --point_idx) { double degree = points_overhang[point_idx]; @@ -938,6 +940,7 @@ static ExtrusionEntityCollection traverse_extrusions(const PerimeterGenerator& p if (perimeter_generator.config->overhang_speed_classic && perimeter_generator.config->enable_overhang_speed && perimeter_generator.config->fuzzy_skin == FuzzySkinType::None) { + Flow flow = is_external ? perimeter_generator.ext_perimeter_flow : perimeter_generator.perimeter_flow; std::map> clipper_serise; std::map recognization_paths; @@ -2250,6 +2253,7 @@ void PerimeterGenerator::process_no_bridge(Surfaces& all_surfaces, coord_t perim if (!unsupported.empty()) { //only consider the part that can be bridged (really, by the bridge algorithm) //first, separate into islands (ie, each ExPlolygon) + int numploy = 0; //only consider the bottom layer that intersect unsupported, to be sure it's only on our island. ExPolygonCollection lower_island(support); //a detector per island @@ -2367,6 +2371,7 @@ void PerimeterGenerator::process_no_bridge(Surfaces& all_surfaces, coord_t perim //ExPolygons no_bridge = diff_ex(offset_ex(unbridgeable, ext_perimeter_width * 3 / 2), last); //bridges_temp = diff_ex(bridges_temp, no_bridge); coordf_t offset_to_do = bridged_infill_margin; + bool first = true; unbridgeable = diff_ex(unbridgeable, offset_ex(bridges_temp, ext_perimeter_width)); while (offset_to_do > ext_perimeter_width * 1.5) { unbridgeable = offset2_ex(unbridgeable, -ext_perimeter_width / 4, ext_perimeter_width * 2.25, ClipperLib::jtSquare); @@ -2374,6 +2379,7 @@ void PerimeterGenerator::process_no_bridge(Surfaces& all_surfaces, coord_t perim bridges_temp = offset_ex(bridges_temp, ext_perimeter_width, ClipperLib::jtMiter, 6.); unbridgeable = diff_ex(unbridgeable, offset_ex(bridges_temp, ext_perimeter_width)); offset_to_do -= ext_perimeter_width; + first = false; } unbridgeable = offset_ex(unbridgeable, ext_perimeter_width + offset_to_do, ClipperLib::jtSquare); bridges_temp = diff_ex(bridges_temp, unbridgeable); diff --git a/src/libslic3r/Polygon.cpp b/src/libslic3r/Polygon.cpp index 1d93458166d..5d3d6433498 100644 --- a/src/libslic3r/Polygon.cpp +++ b/src/libslic3r/Polygon.cpp @@ -355,6 +355,8 @@ Polygon Polygon::transform(const Transform3d& trafo) const if (vertices_count == 0) return dstpoly; + unsigned int data_size = 3 * vertices_count * sizeof(float); + Eigen::MatrixXd src(3, vertices_count); for (size_t i = 0; i < vertices_count; i++) { diff --git a/src/libslic3r/Polyline.cpp b/src/libslic3r/Polyline.cpp index 8a650c926bb..b30564f3c19 100644 --- a/src/libslic3r/Polyline.cpp +++ b/src/libslic3r/Polyline.cpp @@ -51,6 +51,7 @@ void Polyline::reverse() // removes the given distance from the end of the polyline void Polyline::clip_end(double distance) { + bool last_point_inserted = false; size_t remove_after_index = MultiPoint::size(); while (distance > 0) { Vec2d last_point = this->last_point().cast(); @@ -64,6 +65,7 @@ void Polyline::clip_end(double distance) double lsqr = v.squaredNorm(); if (lsqr > distance * distance) { this->points.emplace_back((last_point + v * (distance / sqrt(lsqr))).cast()); + last_point_inserted = true; break; } distance -= sqrt(lsqr); diff --git a/src/libslic3r/Preset.cpp b/src/libslic3r/Preset.cpp index dcbe87b9e95..98a3a61155c 100644 --- a/src/libslic3r/Preset.cpp +++ b/src/libslic3r/Preset.cpp @@ -841,8 +841,8 @@ static std::vector s_Preset_filament_options { "nozzle_temperature_range_low", "nozzle_temperature_range_high", //SoftFever "enable_pressure_advance", "pressure_advance","adaptive_pressure_advance","adaptive_pressure_advance_model","adaptive_pressure_advance_overhangs", "adaptive_pressure_advance_bridges","chamber_temperature", "filament_shrink", "support_material_interface_fan_speed", "filament_notes" /*,"filament_seam_gap"*/, - "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_stamping_loading_speed", "filament_stamping_distance", + "filament_loading_speed", "filament_loading_speed_start", + "filament_unloading_speed", "filament_unloading_speed_start", "filament_toolchange_delay", "filament_cooling_moves", "filament_stamping_loading_speed", "filament_stamping_distance", "filament_cooling_initial_speed", "filament_cooling_final_speed", "filament_ramming_parameters", "filament_multitool_ramming", "filament_multitool_ramming_volume", "filament_multitool_ramming_flow", "activate_chamber_temp_control", "filament_long_retractions_when_cut","filament_retraction_distances_when_cut", "idle_temperature" @@ -865,11 +865,9 @@ static std::vector s_Preset_printer_options { "nozzle_height", "default_print_profile", "inherits", "silent_mode", - // BBS - "scan_first_layer", "machine_load_filament_time", "machine_unload_filament_time","time_cost", "machine_pause_gcode", "template_custom_gcode", + "scan_first_layer", "machine_load_filament_time", "machine_unload_filament_time", "machine_tool_change_time", "time_cost", "machine_pause_gcode", "template_custom_gcode", "nozzle_type", "nozzle_hrc","auxiliary_fan", "nozzle_volume","upward_compatible_machine", "z_hop_types", "travel_slope", "retract_lift_enforce","support_chamber_temp_control","support_air_filtration","printer_structure", "best_object_pos","head_wrap_detect_zone", - //SoftFever "host_type", "print_host", "printhost_apikey", "bbl_use_printhost", "print_host_webui", "printhost_cafile","printhost_port","printhost_authorization_type", @@ -1572,6 +1570,7 @@ bool PresetCollection::load_user_preset(std::string name, std::map presets_loaded; + int count = 0; BOOST_LOG_TRIVIAL(info) << __FUNCTION__ << boost::format(" enter, name %1% , total value counts %2%")%name %preset_values.size(); diff --git a/src/libslic3r/PresetBundle.cpp b/src/libslic3r/PresetBundle.cpp index b45edc8a855..92a8069e6e4 100644 --- a/src/libslic3r/PresetBundle.cpp +++ b/src/libslic3r/PresetBundle.cpp @@ -1853,7 +1853,7 @@ void PresetBundle::export_selections(AppConfig &config) // BBS void PresetBundle::set_num_filaments(unsigned int n, std::string new_color) { - size_t old_filament_count = this->filament_presets.size(); + int old_filament_count = this->filament_presets.size(); if (n > old_filament_count && old_filament_count != 0) filament_presets.resize(n, filament_presets.back()); else { @@ -1867,7 +1867,7 @@ void PresetBundle::set_num_filaments(unsigned int n, std::string new_color) //BBS set new filament color to new_color if (old_filament_count < n) { if (!new_color.empty()) { - for (size_t i = old_filament_count; i < n; i++) { + for (int i = old_filament_count; i < n; i++) { filament_color->values[i] = new_color; } } @@ -2054,7 +2054,7 @@ bool PresetBundle::check_filament_temp_equation_by_printer_type_and_nozzle_for_m //BBS: check whether this is the only edited filament bool PresetBundle::is_the_only_edited_filament(unsigned int filament_index) { - size_t n = this->filament_presets.size(); + int n = this->filament_presets.size(); if (filament_index >= n) return false; @@ -2117,6 +2117,7 @@ DynamicPrintConfig PresetBundle::full_fff_config() const // BBS size_t num_filaments = this->filament_presets.size(); + auto* extruder_diameter = dynamic_cast(out.option("nozzle_diameter")); // Collect the "compatible_printers_condition" and "inherits" values over all presets (print, filaments, printers) into a single vector. std::vector compatible_printers_condition; std::vector compatible_prints_condition; @@ -2275,7 +2276,7 @@ DynamicPrintConfig PresetBundle::full_fff_config() const //BBS: add logic for settings check between different system presets out.erase("different_settings_to_system"); - static const char *keys[] = { "support_filament", "support_interface_filament" }; + static const char* keys[] = {"support_filament", "support_interface_filament", "wipe_tower_filament"}; for (size_t i = 0; i < sizeof(keys) / sizeof(keys[0]); ++ i) { std::string key = std::string(keys[i]); auto *opt = dynamic_cast(out.option(key, false)); @@ -2283,6 +2284,14 @@ DynamicPrintConfig PresetBundle::full_fff_config() const opt->value = boost::algorithm::clamp(opt->value, 0, int(num_filaments)); } + static const char* keys_1based[] = {"wall_filament", "sparse_infill_filament", "solid_infill_filament"}; + for (size_t i = 0; i < sizeof(keys_1based) / sizeof(keys_1based[0]); ++ i) { + std::string key = std::string(keys_1based[i]); + auto *opt = dynamic_cast(out.option(key, false)); + assert(opt != nullptr); + if(opt->value < 1 || opt->value > int(num_filaments)) + opt->value = 1; + } out.option("print_settings_id", true)->value = this->prints.get_selected_preset_name(); out.option("filament_settings_id", true)->values = this->filament_presets; out.option("printer_settings_id", true)->value = this->printers.get_selected_preset_name(); @@ -2471,7 +2480,7 @@ void PresetBundle::load_config_file_config(const std::string &name_or_path, bool std::vector filament_ids = std::move(config.option("filament_ids", true)->values); std::vector print_compatible_printers = std::move(config.option("print_compatible_printers", true)->values); //BBS: add different settings check logic - // bool has_different_settings_to_system = config.option("different_settings_to_system")?true:false; + bool has_different_settings_to_system = config.option("different_settings_to_system")?true:false; std::vector different_values = std::move(config.option("different_settings_to_system", true)->values); std::string &compatible_printers_condition = Preset::compatible_printers_condition(config); std::string &compatible_prints_condition = Preset::compatible_prints_condition(config); diff --git a/src/libslic3r/Print.cpp b/src/libslic3r/Print.cpp index b663f48976c..dfec7089dc2 100644 --- a/src/libslic3r/Print.cpp +++ b/src/libslic3r/Print.cpp @@ -382,12 +382,12 @@ std::vector Print::object_extruders() const { std::vector extruders; extruders.reserve(m_print_regions.size() * m_objects.size() * 3); - // BBS -#if 0 + + //Orca: Collect extruders from all regions. for (const PrintObject *object : m_objects) for (const PrintRegion ®ion : object->all_regions()) region.collect_object_printing_extruders(*this, extruders); -#else + for (const PrintObject* object : m_objects) { const ModelObject* mo = object->model_object(); for (const ModelVolume* mv : mo->volumes) { @@ -410,7 +410,6 @@ std::vector Print::object_extruders() const } } } -#endif sort_remove_duplicates(extruders); return extruders; } @@ -832,6 +831,7 @@ StringObjectException Print::sequential_print_clearance_valid(const Print &print for (int i = k+1; i < print_instance_count; i++) { + auto& p = print_instance_with_bounding_box[i].print_instance; auto bbox2 = print_instance_with_bounding_box[i].bounding_box; auto py1 = bbox2.min.y(); auto py2 = bbox2.max.y(); @@ -1402,30 +1402,32 @@ StringObjectException Print::validate(StringObjectException *warning, Polygons* const ConfigOptionDef* bed_type_def = print_config_def.get("curr_bed_type"); assert(bed_type_def != nullptr); - if (is_BBL_printer()) { + if (is_BBL_printer()) { const t_config_enum_values* bed_type_keys_map = bed_type_def->enum_keys_map; - const ConfigOptionInts* bed_temp_opt = m_config.option(get_bed_temp_key(m_config.curr_bed_type)); for (unsigned int extruder_id : extruders) { - int curr_bed_temp = bed_temp_opt->get_at(extruder_id); - if (curr_bed_temp == 0 && bed_type_keys_map != nullptr) { - std::string bed_type_name; - for (auto item : *bed_type_keys_map) { - if (item.second == m_config.curr_bed_type) { - bed_type_name = item.first; - break; + const ConfigOptionInts* bed_temp_opt = m_config.option(get_bed_temp_key(m_config.curr_bed_type)); + for (unsigned int extruder_id : extruders) { + int curr_bed_temp = bed_temp_opt->get_at(extruder_id); + if (curr_bed_temp == 0 && bed_type_keys_map != nullptr) { + std::string bed_type_name; + for (auto item : *bed_type_keys_map) { + if (item.second == m_config.curr_bed_type) { + bed_type_name = item.first; + break; + } } - } - - StringObjectException except; - except.string = Slic3r::format(L("Plate %d: %s does not support filament %s"), this->get_plate_index() + 1, L(bed_type_name), extruder_id + 1); - except.string += "\n"; - except.type = STRING_EXCEPT_FILAMENT_NOT_MATCH_BED_TYPE; - except.params.push_back(std::to_string(this->get_plate_index() + 1)); - except.params.push_back(L(bed_type_name)); - except.params.push_back(std::to_string(extruder_id+1)); - except.object = nullptr; - return except; - } + + StringObjectException except; + except.string = Slic3r::format(L("Plate %d: %s does not support filament %s"), this->get_plate_index() + 1, L(bed_type_name), extruder_id + 1); + except.string += "\n"; + except.type = STRING_EXCEPT_FILAMENT_NOT_MATCH_BED_TYPE; + except.params.push_back(std::to_string(this->get_plate_index() + 1)); + except.params.push_back(L(bed_type_name)); + except.params.push_back(std::to_string(extruder_id+1)); + except.object = nullptr; + return except; + } + } } } @@ -1442,7 +1444,7 @@ StringObjectException Print::validate(StringObjectException *warning, Polygons* } return warning_key; }; - /* auto check_motion_ability_region_setting = [&](const std::vector& keys_to_check, double limit) -> std::string { + auto check_motion_ability_region_setting = [&](const std::vector& keys_to_check, double limit) -> std::string { std::string warning_key; for (const auto& key : keys_to_check) { if (m_default_region_config.get_abs_value(key) > limit) { @@ -1451,7 +1453,7 @@ StringObjectException Print::validate(StringObjectException *warning, Polygons* } } return warning_key; - }; */ + }; std::string warning_key; // check jerk @@ -2464,7 +2466,7 @@ FilamentTempType Print::get_filament_temp_type(const std::string& filament_type) in.close(); BOOST_LOG_TRIVIAL(error) << __FUNCTION__ << ": parse " << file_path.string() << " got a nlohmann::detail::parse_error, reason = " << err.what(); filament_temp_type_map[HighTempFilamentStr] = {"ABS","ASA","PC","PA","PA-CF","PA-GF","PA6-CF","PET-CF","PPS","PPS-CF","PPA-GF","PPA-CF","ABS-Aero","ABS-GF"}; - filament_temp_type_map[LowTempFilamentStr] = {"PLA","TPU","PLA-CF","PLA-AERO","PVA","BVOH"}; + filament_temp_type_map[LowTempFilamentStr] = {"PLA","TPU","PLA-CF","PLA-AERO","PVA","BVOH","SBS"}; filament_temp_type_map[HighLowCompatibleFilamentStr] = { "HIPS","PETG","PCTG","PE","PP","EVA","PE-CF","PP-CF","PP-GF","PHA"}; } } @@ -2667,7 +2669,7 @@ void Print::_make_wipe_tower() for (auto &layer_tools : m_wipe_tower_data.tool_ordering.layer_tools()) { // for all layers if (!layer_tools.has_wipe_tower) continue; - // bool first_layer = &layer_tools == &m_wipe_tower_data.tool_ordering.front(); + bool first_layer = &layer_tools == &m_wipe_tower_data.tool_ordering.front(); wipe_tower.plan_toolchange((float) layer_tools.print_z, (float) layer_tools.wipe_tower_layer_height, current_extruder_id, current_extruder_id); diff --git a/src/libslic3r/PrintApply.cpp b/src/libslic3r/PrintApply.cpp index b6fd173c036..232c86b9ec5 100644 --- a/src/libslic3r/PrintApply.cpp +++ b/src/libslic3r/PrintApply.cpp @@ -1498,11 +1498,22 @@ Print::ApplyStatus Print::apply(const Model &model, DynamicPrintConfig new_full_ } std::vector painting_extruders; if (const auto &volumes = print_object.model_object()->volumes; - num_extruders > 1 && + num_extruders > 1 && std::find_if(volumes.begin(), volumes.end(), [](const ModelVolume *v) { return ! v->mmu_segmentation_facets.empty(); }) != volumes.end()) { - //FIXME be more specific! Don't enumerate extruders that are not used for painting! - painting_extruders.assign(num_extruders , 0); - std::iota(painting_extruders.begin(), painting_extruders.end(), 1); + + std::array(EnforcerBlockerType::ExtruderMax)> used_facet_states{}; + for (const ModelVolume *volume : volumes) { + const std::vector &volume_used_facet_states = volume->mmu_segmentation_facets.get_data().used_states; + + assert(volume_used_facet_states.size() == used_facet_states.size()); + for (size_t state_idx = 0; state_idx < std::min(volume_used_facet_states.size(), used_facet_states.size()); ++state_idx) + used_facet_states[state_idx] |= volume_used_facet_states[state_idx]; + } + + for (size_t state_idx = static_cast(EnforcerBlockerType::Extruder1); state_idx < used_facet_states.size(); ++state_idx) { + if (used_facet_states[state_idx]) + painting_extruders.emplace_back(state_idx); + } } if (model_object_status.print_object_regions_status == ModelObjectStatus::PrintObjectRegionsStatus::Valid) { // Verify that the trafo for regions & volume bounding boxes thus for regions is still applicable. diff --git a/src/libslic3r/PrintConfig.cpp b/src/libslic3r/PrintConfig.cpp index 7f86be01f02..4814c8f518b 100644 --- a/src/libslic3r/PrintConfig.cpp +++ b/src/libslic3r/PrintConfig.cpp @@ -897,7 +897,7 @@ void PrintConfigDef::init_fff_params() def->label = L("Bridge flow ratio"); def->category = L("Quality"); def->tooltip = L("Decrease this value slightly(for example 0.9) to reduce the amount of material for bridge, " - "to improve sag"); + "to improve sag. \n\nThe actual bridge flow used is calculated by multiplying this value with the filament flow ratio, and if set, the object's flow ratio."); def->min = 0; def->max = 2.0; def->mode = comAdvanced; @@ -906,7 +906,8 @@ void PrintConfigDef::init_fff_params() def = this->add("internal_bridge_flow", coFloat); def->label = L("Internal bridge flow ratio"); def->category = L("Quality"); - def->tooltip = L("This value governs the thickness of the internal bridge layer. This is the first layer over sparse infill. Decrease this value slightly (for example 0.9) to improve surface quality over sparse infill."); + def->tooltip = L("This value governs the thickness of the internal bridge layer. This is the first layer over sparse infill. Decrease this value slightly (for example 0.9) to improve surface quality over sparse infill." + "\n\nThe actual internal bridge flow used is calculated by multiplying this value with the bridge flow ratio, the filament flow ratio, and if set, the object's flow ratio."); def->min = 0; def->max = 2.0; def->mode = comAdvanced; @@ -916,7 +917,8 @@ void PrintConfigDef::init_fff_params() def->label = L("Top surface flow ratio"); def->category = L("Advanced"); def->tooltip = L("This factor affects the amount of material for top solid infill. " - "You can decrease it slightly to have smooth surface finish"); + "You can decrease it slightly to have smooth surface finish. " + "\n\nThe actual top surface flow used is calculated by multiplying this value with the filament flow ratio, and if set, the object's flow ratio."); def->min = 0; def->max = 2; def->mode = comAdvanced; @@ -925,7 +927,8 @@ void PrintConfigDef::init_fff_params() def = this->add("bottom_solid_infill_flow_ratio", coFloat); def->label = L("Bottom surface flow ratio"); def->category = L("Advanced"); - def->tooltip = L("This factor affects the amount of material for bottom solid infill"); + def->tooltip = L("This factor affects the amount of material for bottom solid infill. " + "\n\nThe actual bottom solid infill flow used is calculated by multiplying this value with the filament flow ratio, and if set, the object's flow ratio."); def->min = 0; def->max = 2; def->mode = comAdvanced; @@ -1664,7 +1667,8 @@ void PrintConfigDef::init_fff_params() def->tooltip = L("The material may have volumetric change after switching between molten state and crystalline state. " "This setting changes all extrusion flow of this filament in gcode proportionally. " "Recommended value range is between 0.95 and 1.05. " - "Maybe you can tune this value to get nice flat surface when there has slight overflow or underflow"); + "Maybe you can tune this value to get nice flat surface when there has slight overflow or underflow. " + "\n\nThe final object flow ratio is this value multiplied by the filament flow ratio."); def->mode = comAdvanced; def->max = 2; def->min = 0.01; @@ -1818,7 +1822,7 @@ void PrintConfigDef::init_fff_params() def = this->add("machine_load_filament_time", coFloat); def->label = L("Filament load time"); - def->tooltip = L("Time to load new filament when switch filament. For statistics only"); + def->tooltip = L("Time to load new filament when switch filament. It's usually applicable for single-extruder multi-material machines. For tool changers or multi-tool machines, it's typically 0. For statistics only"); def->sidetext = L("s"); def->min = 0; def->mode = comAdvanced; @@ -1826,12 +1830,21 @@ void PrintConfigDef::init_fff_params() def = this->add("machine_unload_filament_time", coFloat); def->label = L("Filament unload time"); - def->tooltip = L("Time to unload old filament when switch filament. For statistics only"); + def->tooltip = L("Time to unload old filament when switch filament. It's usually applicable for single-extruder multi-material machines. For tool changers or multi-tool machines, it's typically 0. For statistics only"); def->sidetext = L("s"); def->min = 0; def->mode = comAdvanced; def->set_default_value(new ConfigOptionFloat(0.0)); + def = this->add("machine_tool_change_time", coFloat); + def->label = L("Tool change time"); + def->tooltip = L("Time taken to switch tools. It's usually applicable for tool changers or multi-tool machines. For single-extruder multi-material machines, it's typically 0. For statistics only"); + def->sidetext = L("s"); + def->min = 0; + def->mode = comAdvanced; + def->set_default_value(new ConfigOptionFloat { 0. }); + + def = this->add("filament_diameter", coFloats); def->label = L("Diameter"); def->tooltip = L("Filament diameter is used to calculate extrusion in gcode, so it's important and should be accurate"); @@ -1978,14 +1991,6 @@ void PrintConfigDef::init_fff_params() def->mode = comAdvanced; def->set_default_value(new ConfigOptionFloats { 3.4 }); - def = this->add("filament_load_time", coFloats); - def->label = L("Filament load time"); - def->tooltip = L("Time for the printer firmware (or the Multi Material Unit 2.0) to load a new filament during a tool change (when executing the T code). This time is added to the total print time by the G-code time estimator."); - def->sidetext = L("s"); - def->min = 0; - def->mode = comAdvanced; - def->set_default_value(new ConfigOptionFloats { 0. }); - def = this->add("filament_ramming_parameters", coStrings); def->label = L("Ramming parameters"); def->tooltip = L("This string is edited by RammingDialog and contains ramming specific parameters."); @@ -1993,14 +1998,6 @@ void PrintConfigDef::init_fff_params() def->set_default_value(new ConfigOptionStrings { "120 100 6.6 6.8 7.2 7.6 7.9 8.2 8.7 9.4 9.9 10.0|" " 0.05 6.6 0.45 6.8 0.95 7.8 1.45 8.3 1.95 9.7 2.45 10 2.95 7.6 3.45 7.6 3.95 7.6 4.45 7.6 4.95 7.6" }); - def = this->add("filament_unload_time", coFloats); - def->label = L("Filament unload time"); - def->tooltip = L("Time for the printer firmware (or the Multi Material Unit 2.0) to unload a filament during a tool change (when executing the T code). This time is added to the total print time by the G-code time estimator."); - def->sidetext = L("s"); - def->min = 0; - def->mode = comAdvanced; - def->set_default_value(new ConfigOptionFloats { 0. }); - def = this->add("filament_multitool_ramming", coBools); def->label = L("Enable ramming for multitool setups"); def->tooltip = L("Perform ramming when using multitool printer (i.e. when the 'Single Extruder Multimaterial' in Printer Settings is unchecked). " @@ -2073,6 +2070,7 @@ void PrintConfigDef::init_fff_params() def->enum_values.push_back("PPS-CF"); def->enum_values.push_back("PVA"); def->enum_values.push_back("PVB"); + def->enum_values.push_back("SBS"); def->enum_values.push_back("TPU"); def->mode = comSimple; def->set_default_value(new ConfigOptionStrings { "PLA" }); @@ -3458,9 +3456,9 @@ void PrintConfigDef::init_fff_params() def = this->add("wall_filament", coInt); def->gui_type = ConfigOptionDef::GUIType::i_enum_open; - def->label = "Walls"; - def->category = "Extruders"; - def->tooltip = "Filament to print walls"; + def->label = L("Walls"); + def->category = L("Extruders"); + def->tooltip = L("Filament to print walls"); def->min = 1; def->mode = comAdvanced; def->set_default_value(new ConfigOptionInt(1)); @@ -3518,8 +3516,8 @@ void PrintConfigDef::init_fff_params() def = this->add("printer_model", coString); //def->label = L("Printer type"); //def->tooltip = L("Type of the printer"); - def->label = "Printer type"; - def->tooltip = "Type of the printer"; + def->label = L("Printer type"); + def->tooltip = L("Type of the printer"); def->set_default_value(new ConfigOptionString()); def->cli = ConfigOptionDef::nocli; @@ -3534,7 +3532,7 @@ void PrintConfigDef::init_fff_params() def = this->add("printer_variant", coString); //def->label = L("Printer variant"); - def->label = "Printer variant"; + def->label = L("Printer variant"); //def->tooltip = L("Name of the printer variant. For example, the printer variants may be differentiated by a nozzle diameter."); def->set_default_value(new ConfigOptionString()); def->cli = ConfigOptionDef::nocli; @@ -4049,9 +4047,9 @@ void PrintConfigDef::init_fff_params() def = this->add("solid_infill_filament", coInt); def->gui_type = ConfigOptionDef::GUIType::i_enum_open; - def->label = "Solid infill"; - def->category = "Extruders"; - def->tooltip = "Filament to print solid infill"; + def->label = L("Solid infill"); + def->category = L("Extruders"); + def->tooltip = L("Filament to print solid infill"); def->min = 1; def->mode = comAdvanced; def->set_default_value(new ConfigOptionInt(1)); @@ -4776,7 +4774,7 @@ void PrintConfigDef::init_fff_params() def->set_default_value(new ConfigOptionInts { 240 }); def = this->add("head_wrap_detect_zone", coPoints); - def->label ="Head wrap detect zone"; //do not need translation + def->label = "Head wrap detect zone"; //do not need translation def->mode = comDevelop; def->set_default_value(new ConfigOptionPoints{}); @@ -6142,7 +6140,7 @@ void PrintConfigDef::handle_legacy(t_config_option_key &opt_key, std::string &va "z_hop_type", "z_lift_type", "bed_temperature_difference","long_retraction_when_cut", "retraction_distance_when_cut", "extruder_type", - "internal_bridge_support_thickness","extruder_clearance_max_radius", "top_area_threshold", "reduce_wall_solid_infill" + "internal_bridge_support_thickness","extruder_clearance_max_radius", "top_area_threshold", "reduce_wall_solid_infill","filament_load_time","filament_unload_time" }; if (ignore.find(opt_key) != ignore.end()) { diff --git a/src/libslic3r/PrintConfig.hpp b/src/libslic3r/PrintConfig.hpp index 000559b765f..015befbd9f1 100644 --- a/src/libslic3r/PrintConfig.hpp +++ b/src/libslic3r/PrintConfig.hpp @@ -1119,15 +1119,13 @@ PRINT_CONFIG_CLASS_DEFINE( ((ConfigOptionFloat, parking_pos_retraction)) ((ConfigOptionFloat, extra_loading_move)) ((ConfigOptionFloat, machine_load_filament_time)) + ((ConfigOptionFloat, machine_tool_change_time)) ((ConfigOptionFloat, machine_unload_filament_time)) ((ConfigOptionFloats, filament_loading_speed)) ((ConfigOptionFloats, filament_loading_speed_start)) - ((ConfigOptionFloats, filament_load_time)) ((ConfigOptionFloats, filament_unloading_speed)) ((ConfigOptionFloats, filament_unloading_speed_start)) ((ConfigOptionFloats, filament_toolchange_delay)) - // Orca todo: consolidate with machine_load_filament_time - ((ConfigOptionFloats, filament_unload_time)) ((ConfigOptionInts, filament_cooling_moves)) ((ConfigOptionFloats, filament_cooling_initial_speed)) ((ConfigOptionFloats, filament_minimal_purge_on_wipe_tower)) diff --git a/src/libslic3r/PrintObject.cpp b/src/libslic3r/PrintObject.cpp index 72efdb02a8e..8674c1a4ea5 100644 --- a/src/libslic3r/PrintObject.cpp +++ b/src/libslic3r/PrintObject.cpp @@ -139,6 +139,9 @@ PrintBase::ApplyStatus PrintObject::set_instances(PrintInstances &&instances) std::vector> PrintObject::all_regions() const { std::vector> out; + if(!m_shared_regions) + return out; + out.reserve(m_shared_regions->all_regions.size()); for (const std::unique_ptr ®ion : m_shared_regions->all_regions) out.emplace_back(*region.get()); @@ -677,6 +680,7 @@ void PrintObject::estimate_curled_extrusions() [](const PrintRegion *region) { return region->config().enable_overhang_speed.getBool(); })) { // Estimate curling of support material and add it to the malformaition lines of each layer + float support_flow_width = support_material_flow(this, this->config().layer_height).width(); SupportSpotsGenerator::Params params{this->print()->m_config.filament_type.values, float(this->print()->default_object_config().inner_wall_acceleration.getFloat()), this->config().raft_layers.getInt(), this->config().brim_type.value, @@ -2887,11 +2891,11 @@ static void apply_to_print_region_config(PrintRegionConfig &out, const DynamicPr // 1) Copy the "extruder key to sparse_infill_filament and wall_filament. auto *opt_extruder = in.opt(key_extruder); if (opt_extruder) - if (int extruder = opt_extruder->value; extruder != 1) { + if (int extruder = opt_extruder->value; extruder != 0) { // Not a default extruder. - out.sparse_infill_filament .value = extruder; - out.solid_infill_filament.value = extruder; - out.wall_filament .value = extruder; + out.sparse_infill_filament.value = extruder; + out.solid_infill_filament.value = extruder; + out.wall_filament.value = extruder; } // 2) Copy the rest of the values. for (auto it = in.cbegin(); it != in.cend(); ++ it) @@ -2948,16 +2952,16 @@ struct POProfiler void PrintObject::generate_support_preview() { - // POProfiler profiler; + POProfiler profiler; - // boost::posix_time::ptime ts1 = boost::posix_time::microsec_clock::local_time(); + boost::posix_time::ptime ts1 = boost::posix_time::microsec_clock::local_time(); this->slice(); - // boost::posix_time::ptime ts2 = boost::posix_time::microsec_clock::local_time(); - // profiler.duration1 = (ts2 - ts1).total_milliseconds(); + boost::posix_time::ptime ts2 = boost::posix_time::microsec_clock::local_time(); + profiler.duration1 = (ts2 - ts1).total_milliseconds(); this->generate_support_material(); - // boost::posix_time::ptime ts3 = boost::posix_time::microsec_clock::local_time(); - // profiler.duration2 = (ts3 - ts2).total_milliseconds(); + boost::posix_time::ptime ts3 = boost::posix_time::microsec_clock::local_time(); + profiler.duration2 = (ts3 - ts2).total_milliseconds(); } void PrintObject::update_slicing_parameters() @@ -3010,10 +3014,11 @@ std::vector PrintObject::object_extruders() const { std::vector extruders; extruders.reserve(this->all_regions().size() * 3); -#if 0 + + //Orca: Collect extruders from all regions. for (const PrintRegion ®ion : this->all_regions()) region.collect_object_printing_extruders(*this->print(), extruders); -#else + const ModelObject* mo = this->model_object(); for (const ModelVolume* mv : mo->volumes) { std::vector volume_extruders = mv->get_extruders(); @@ -3022,7 +3027,6 @@ std::vector PrintObject::object_extruders() const extruders.push_back(extruder - 1); } } -#endif sort_remove_duplicates(extruders); return extruders; } @@ -3667,6 +3671,7 @@ template void PrintObject::remove_bridges_from_contacts( SupportNecessaryType PrintObject::is_support_necessary() { + static const double super_overhang_area_threshold = SQ(scale_(5.0)); const double cantilevel_dist_thresh = scale_(6); #if 0 double threshold_rad = (m_config.support_threshold_angle.value < EPSILON ? 30 : m_config.support_threshold_angle.value + 1) * M_PI / 180.; diff --git a/src/libslic3r/PrintObjectSlice.cpp b/src/libslic3r/PrintObjectSlice.cpp index fd467e076f5..98f7d8b20e2 100644 --- a/src/libslic3r/PrintObjectSlice.cpp +++ b/src/libslic3r/PrintObjectSlice.cpp @@ -151,8 +151,8 @@ static std::vector slice_volumes_inner( params_base.mode_below = params_base.mode; // BBS - // const size_t num_extruders = print_config.filament_diameter.size(); - // const bool is_mm_painted = num_extruders > 1 && std::any_of(model_volumes.cbegin(), model_volumes.cend(), [](const ModelVolume *mv) { return mv->is_mm_painted(); }); + const size_t num_extruders = print_config.filament_diameter.size(); + const bool is_mm_painted = num_extruders > 1 && std::any_of(model_volumes.cbegin(), model_volumes.cend(), [](const ModelVolume *mv) { return mv->is_mm_painted(); }); // BBS: don't do size compensation when slice volume. // Will handle contour and hole size compensation seperately later. //const auto extra_offset = is_mm_painted ? 0.f : std::max(0.f, float(print_object_config.xy_contour_compensation.value)); @@ -336,8 +336,7 @@ static std::vector> slices_to_regions( }; // BBS - // Orca: unused -/* auto trim_overlap = [](ExPolygons& expolys_a, ExPolygons& expolys_b) { + auto trim_overlap = [](ExPolygons& expolys_a, ExPolygons& expolys_b) { ExPolygons trimming_a; ExPolygons trimming_b; @@ -362,7 +361,7 @@ static std::vector> slices_to_regions( expolys_a = diff_ex(expolys_a, trimming_a); expolys_b = diff_ex(expolys_b, trimming_b); - }; */ + }; std::vector temp_slices; for (size_t zs_complex_idx = range.begin(); zs_complex_idx < range.end(); ++ zs_complex_idx) { diff --git a/src/libslic3r/Shape/TextShape.cpp b/src/libslic3r/Shape/TextShape.cpp index 58df800a51a..dce731af191 100644 --- a/src/libslic3r/Shape/TextShape.cpp +++ b/src/libslic3r/Shape/TextShape.cpp @@ -99,6 +99,8 @@ std::vector init_occt_fonts() static bool TextToBRep(const char* text, const char* font, const float theTextHeight, Font_FontAspect& theFontAspect, TopoDS_Shape& theShape, double& text_width) { + Standard_Integer anArgIt = 1; + Standard_CString aName = "text_shape"; Standard_CString aText = text; Font_BRepFont aFont; diff --git a/src/libslic3r/ShortEdgeCollapse.cpp b/src/libslic3r/ShortEdgeCollapse.cpp index f19ff9f22e1..3397daf55cb 100644 --- a/src/libslic3r/ShortEdgeCollapse.cpp +++ b/src/libslic3r/ShortEdgeCollapse.cpp @@ -2,6 +2,7 @@ #include "libslic3r/NormalUtils.hpp" #include +#include #include #include diff --git a/src/libslic3r/SlicesToTriangleMesh.cpp b/src/libslic3r/SlicesToTriangleMesh.cpp index 5740665ae27..3b55cf066b3 100644 --- a/src/libslic3r/SlicesToTriangleMesh.cpp +++ b/src/libslic3r/SlicesToTriangleMesh.cpp @@ -1,5 +1,8 @@ +#include + #include "SlicesToTriangleMesh.hpp" +//#include "libslic3r/MTUtils.hpp" #include "libslic3r/Execution/ExecutionTBB.hpp" #include "libslic3r/ClipperUtils.hpp" #include "libslic3r/Tesselate.hpp" diff --git a/src/libslic3r/Support/OrganicSupport.cpp b/src/libslic3r/Support/OrganicSupport.cpp index 5543f76fd58..05e515d94ec 100644 --- a/src/libslic3r/Support/OrganicSupport.cpp +++ b/src/libslic3r/Support/OrganicSupport.cpp @@ -1,6 +1,12 @@ #include "OrganicSupport.hpp" #include "SupportCommon.hpp" + +#include "../AABBTreeLines.hpp" +#include "../ClipperUtils.hpp" +#include "../Polygon.hpp" +#include "../Polyline.hpp" #include "../MutablePolygon.hpp" +#include "../TriangleMeshSlicer.hpp" #include diff --git a/src/libslic3r/Support/SupportParameters.cpp b/src/libslic3r/Support/SupportParameters.cpp index 4af36e05aea..8508206cb9f 100644 --- a/src/libslic3r/Support/SupportParameters.cpp +++ b/src/libslic3r/Support/SupportParameters.cpp @@ -1,4 +1,6 @@ #include "../Print.hpp" +#include "../PrintConfig.hpp" +#include "../Slicing.hpp" #include "SupportParameters.hpp" namespace Slic3r::FFFSupport { diff --git a/src/libslic3r/SupportMaterial.cpp b/src/libslic3r/SupportMaterial.cpp index e1c6c97cc1f..b022607bf75 100644 --- a/src/libslic3r/SupportMaterial.cpp +++ b/src/libslic3r/SupportMaterial.cpp @@ -338,7 +338,7 @@ static std::string get_svg_filename(std::string layer_nr_or_z, std::string tag rand_init = true; } - // int rand_num = rand() % 1000000; + int rand_num = rand() % 1000000; //makedir("./SVG"); std::string prefix = "./SVG/"; std::string suffix = ".svg"; @@ -1554,6 +1554,7 @@ static inline ExPolygons detect_overhangs( double thresh_angle = object_config.support_threshold_angle.value > 0 ? object_config.support_threshold_angle.value + 1 : 0; thresh_angle = std::min(thresh_angle, 89.); // BBS should be smaller than 90 const double threshold_rad = Geometry::deg2rad(thresh_angle); + const coordf_t max_bridge_length = scale_(object_config.max_bridge_length.value); const bool bridge_no_support = object_config.bridge_no_support.value; const coordf_t xy_expansion = scale_(object_config.support_expansion.value); @@ -1576,6 +1577,7 @@ static inline ExPolygons detect_overhangs( { // Generate overhang / contact_polygons for non-raft layers. const Layer &lower_layer = *layer.lower_layer; + const bool has_enforcer = !annotations.enforcers_layers.empty() && !annotations.enforcers_layers[layer_id].empty(); // Can't directly use lower_layer.lslices, or we'll miss some very sharp tails. // Filter out areas whose diameter that is smaller than extrusion_width. Do not use offset2() for this purpose! // FIXME if there are multiple regions with different extrusion width, the following code may not be right. @@ -1687,6 +1689,7 @@ static inline ExPolygons detect_overhangs( // check cantilever if (layer.lower_layer) { for (ExPolygon& poly : overhang_areas) { + float fw = float(layer.regions().front()->flow(frExternalPerimeter).scaled_width()); auto cluster_boundary_ex = intersection_ex(poly, offset_ex(layer.lower_layer->lslices, scale_(0.5))); Polygons cluster_boundary = to_polygons(cluster_boundary_ex); if (cluster_boundary.empty()) continue; @@ -1731,6 +1734,7 @@ static inline std::tuple detect_contacts( Polygons enforcer_polygons; // BBS. + const bool auto_normal_support = object_config.support_type.value == stNormalAuto; const bool buildplate_only = !annotations.buildplate_covered.empty(); float no_interface_offset = 0.f; @@ -1744,6 +1748,8 @@ static inline std::tuple detect_contacts( // Generate overhang / contact_polygons for non-raft layers. const Layer& lower_layer = *layer.lower_layer; const bool has_enforcer = !annotations.enforcers_layers.empty() && !annotations.enforcers_layers[layer_id].empty(); + const ExPolygons& lower_layer_expolys = lower_layer.lslices; + const ExPolygons& lower_layer_sharptails = lower_layer.sharp_tails; // Cache support trimming polygons derived from lower layer polygons, possible merged with "on build plate only" trimming polygons. auto slices_margin_update = @@ -2181,6 +2187,7 @@ struct OverhangCluster { static OverhangCluster* add_overhang(std::vector& clusters, ExPolygon* overhang, int layer_nr, coordf_t offset_scaled) { OverhangCluster* cluster = nullptr; + bool found = false; for (int i = 0; i < clusters.size(); i++) { auto cluster_i = &clusters[i]; if (cluster_i->intersects(*overhang, layer_nr)) { @@ -3539,13 +3546,13 @@ std::pair 1. // Contact layer needs a base_interface layer, therefore run the following block if support_interface_top_layers > 0, has soluble support and extruders are different. -// bool soluble_interface_non_soluble_base = -// // Zero z-gap between the overhangs and the support interface. -// m_slicing_params.soluble_interface && -// // Interface extruder soluble. -// m_object_config->support_interface_filament.value > 0 && m_print_config->filament_soluble.get_at(m_object_config->support_interface_filament.value - 1) && -// // Base extruder: Either "print with active extruder" not soluble. -// (m_object_config->support_filament.value == 0 || ! m_print_config->filament_soluble.get_at(m_object_config->support_filament.value - 1)); + bool soluble_interface_non_soluble_base = + // Zero z-gap between the overhangs and the support interface. + m_slicing_params.soluble_interface && + // Interface extruder soluble. + m_object_config->support_interface_filament.value > 0 && m_print_config->filament_soluble.get_at(m_object_config->support_interface_filament.value - 1) && + // Base extruder: Either "print with active extruder" not soluble. + (m_object_config->support_filament.value == 0 || ! m_print_config->filament_soluble.get_at(m_object_config->support_filament.value - 1)); bool snug_supports = m_object_config->support_style.value == smsSnug; // BBS: if support interface and support base do not use the same filament, add a base layer to improve their adhesion bool differnt_support_interface_filament = m_object_config->support_interface_filament.value != m_object_config->support_filament.value; @@ -4621,6 +4628,7 @@ void PrintObjectSupportMaterial::generate_toolpaths( if (object_layer != nullptr) { float biggest_bridge_area = 0.f; + const Polygons& top_contact_polys = top_contact_layer.polygons_to_extrude(); for (auto layerm : object_layer->regions()) { for (auto bridge_surface : layerm->fill_surfaces.filter_by_type(stBottomBridge)) { float bs_area = bridge_surface->area(); diff --git a/src/libslic3r/TreeSupport.cpp b/src/libslic3r/TreeSupport.cpp index 364e1f37ebb..c588409ac1d 100644 --- a/src/libslic3r/TreeSupport.cpp +++ b/src/libslic3r/TreeSupport.cpp @@ -5,6 +5,7 @@ #include "Print.hpp" #include "Layer.hpp" #include "Fill/FillBase.hpp" +#include "Fill/FillConcentric.hpp" #include "CurveAnalyzer.hpp" #include "SVG.hpp" #include "ShortestPath.hpp" @@ -12,6 +13,7 @@ #include #include +#include #include #define _L(s) Slic3r::I18N::translate(s) @@ -467,6 +469,7 @@ static bool move_inside_expolys(const ExPolygons& polygons, Point& from, double Point ret = from; std::vector valid_pts; double bestDist2 = std::numeric_limits::max(); + unsigned int bestPoly = NO_INDEX; bool is_already_on_correct_side_of_boundary = false; // whether [from] is already on the right side of the boundary Point inward_dir; for (unsigned int poly_idx = 0; poly_idx < polygons.size(); poly_idx++) @@ -507,6 +510,7 @@ static bool move_inside_expolys(const ExPolygons& polygons, Point& from, double if (dist2 < bestDist2) { bestDist2 = dist2; + bestPoly = poly_idx; if (distance == 0) { ret = x; } else { @@ -543,6 +547,7 @@ static bool move_inside_expolys(const ExPolygons& polygons, Point& from, double if (dist2 < bestDist2) { bestDist2 = dist2; + bestPoly = poly_idx; if (distance == 0) { ret = x; } else { @@ -627,6 +632,7 @@ static bool is_inside_ex(const ExPolygons &polygons, const Point &pt) static bool move_out_expolys(const ExPolygons& polygons, Point& from, double distance, double max_move_distance) { + Point from0 = from; ExPolygons polys_dilated = union_ex(offset_ex(polygons, scale_(distance))); Point pt = projection_onto(polys_dilated, from);// find_closest_ex(from, polys_dilated); Point outward_dir = pt - from; @@ -728,12 +734,16 @@ void TreeSupport::detect_overhangs(bool detect_first_sharp_tail_only) const coordf_t extrusion_width = config.get_abs_value("line_width", nozzle_diameter); const coordf_t extrusion_width_scaled = scale_(extrusion_width); const coordf_t max_bridge_length = scale_(config.max_bridge_length.value); + const bool bridge_no_support = max_bridge_length > 0; const bool support_critical_regions_only = config.support_critical_regions_only.value; const bool config_remove_small_overhangs = config.support_remove_small_overhang.value; const int enforce_support_layers = config.enforce_support_layers.value; const double area_thresh_well_supported = SQ(scale_(6)); const double length_thresh_well_supported = scale_(6); static const double sharp_tail_max_support_height = 16.f; + // a region is considered well supported if the number of layers below it exceeds this threshold + const int thresh_layers_below = 10 / config.layer_height; + double obj_height = m_object->size().z(); // +1 makes the threshold inclusive double thresh_angle = config.support_threshold_angle.value > EPSILON ? config.support_threshold_angle.value + 1 : 30; thresh_angle = std::min(thresh_angle, 89.); // should be smaller than 90 @@ -1396,6 +1406,7 @@ void TreeSupport::generate_toolpaths() const PrintObjectConfig &object_config = m_object->config(); coordf_t support_extrusion_width = m_support_params.support_extrusion_width; coordf_t nozzle_diameter = print_config.nozzle_diameter.get_at(object_config.support_filament - 1); + coordf_t layer_height = object_config.layer_height.value; const size_t wall_count = object_config.tree_support_wall_count.value; // Check if set to zero, use default if so. @@ -1409,6 +1420,8 @@ void TreeSupport::generate_toolpaths() coordf_t interface_density = std::min(1., m_support_material_interface_flow.spacing() / interface_spacing); coordf_t bottom_interface_density = std::min(1., m_support_material_interface_flow.spacing() / bottom_interface_spacing); + const coordf_t branch_radius = object_config.tree_support_branch_diameter.value / 2; + const coordf_t branch_radius_scaled = scale_(branch_radius); if (m_object->support_layers().empty()) return; @@ -2113,6 +2126,7 @@ void TreeSupport::draw_circles(const std::vector>& contact_no const bool with_lightning_infill = m_support_params.base_fill_pattern == ipLightning; coordf_t support_extrusion_width = m_support_params.support_extrusion_width; + const size_t wall_count = config.tree_support_wall_count.value; const PrintObjectConfig& object_config = m_object->config(); BOOST_LOG_TRIVIAL(info) << "draw_circles for object: " << m_object->model_object()->name; @@ -2363,7 +2377,7 @@ void TreeSupport::draw_circles(const std::vector>& contact_no ExPolygons& base_areas = ts_layer->base_areas; int layer_nr_lower = layer_nr - 1; - for (;layer_nr_lower >= 0; layer_nr_lower--) { + for (layer_nr_lower; layer_nr_lower >= 0; layer_nr_lower--) { if (!m_object->get_support_layer(layer_nr_lower + m_raft_layers)->area_groups.empty()) break; } if (layer_nr_lower <= 0) continue; @@ -2453,7 +2467,7 @@ void TreeSupport::draw_circles(const std::vector>& contact_no if (ts_layer->area_groups.empty()) continue; int layer_nr_lower = layer_nr - 1; - for (;layer_nr_lower >= 0; layer_nr_lower--) { + for (layer_nr_lower; layer_nr_lower >= 0; layer_nr_lower--) { if (!m_object->get_support_layer(layer_nr_lower + m_raft_layers)->area_groups.empty()) break; } if (layer_nr_lower < 0) continue; @@ -2568,10 +2582,15 @@ void TreeSupport::drop_nodes(std::vector>& contact_nodes) const coordf_t radius_sample_resolution = m_ts_data->m_radius_sample_resolution; const bool support_on_buildplate_only = config.support_on_build_plate_only.value; const size_t bottom_interface_layers = config.support_interface_bottom_layers.value; + const size_t top_interface_layers = config.support_interface_top_layers.value; float DO_NOT_MOVER_UNDER_MM = is_slim ? 0 : 5; // do not move contact points under 5mm const auto nozzle_diameter = m_object->print()->config().nozzle_diameter.get_at(m_object->config().support_interface_filament-1); const auto support_line_width = config.support_line_width.get_abs_value(nozzle_diameter); + auto get_branch_angle = [this,&config](coordf_t radius) { + if (config.tree_support_branch_angle.value < 30.0) return config.tree_support_branch_angle.value; + return (radius - MIN_BRANCH_RADIUS) / (MAX_BRANCH_RADIUS - MIN_BRANCH_RADIUS) * (config.tree_support_branch_angle.value - 30.0) + 30.0; + }; auto get_max_move_dist = [this, &config, branch_radius, tip_layers, diameter_angle_scale_factor, wall_count, support_extrusion_width, support_line_width](const Node *node, int power = 1) { double move_dist = node->max_move_dist; if (node->max_move_dist == 0) { @@ -3183,6 +3202,7 @@ void TreeSupport::adjust_layer_heights(std::vector>& contact_ const coordf_t layer_height = config.layer_height.value; const coordf_t max_layer_height = m_slicing_params.max_layer_height; const size_t bot_intf_layers = config.support_interface_bottom_layers.value; + const size_t top_intf_layers = config.support_interface_top_layers.value; // if already using max layer height, no need to adjust if (layer_height == max_layer_height) return; @@ -3304,6 +3324,7 @@ std::vector TreeSupport::plan_layer_heights(std::vector>, std::vector> TriangleSelector::serialize() const -{ +TriangleSelector::TriangleSplittingData TriangleSelector::serialize() const { // Each original triangle of the mesh is assigned a number encoding its state // or how it is split. Each triangle is encoded by 4 bits (xxyy) or 8 bits (zzzzxxyy): // leaf triangle: xx = EnforcerBlockerType (Only values 0, 1, and 2. Value 3 is used as an indicator for additional 4 bits.), yy = 0 @@ -1639,7 +1638,7 @@ std::pair>, std::vector> TriangleSelector: // (std::function calls using a pointer, while this implementation calls directly). struct Serializer { const TriangleSelector* triangle_selector; - std::pair>, std::vector> data; + TriangleSplittingData data; void serialize(int facet_idx) { const Triangle& tr = triangle_selector->m_triangles[facet_idx]; @@ -1648,8 +1647,8 @@ std::pair>, std::vector> TriangleSelector: int split_sides = tr.number_of_split_sides(); assert(split_sides >= 0 && split_sides <= 3); - data.second.push_back(split_sides & 0b01); - data.second.push_back(split_sides & 0b10); + data.bitstream.push_back(split_sides & 0b01); + data.bitstream.push_back(split_sides & 0b10); if (split_sides) { // If this triangle is split, save which side is split (in case @@ -1657,8 +1656,8 @@ std::pair>, std::vector> TriangleSelector: // be ignored for 3-side split. assert(tr.is_split() && split_sides > 0); assert(tr.special_side() >= 0 && tr.special_side() <= 3); - data.second.push_back(tr.special_side() & 0b01); - data.second.push_back(tr.special_side() & 0b10); + data.bitstream.push_back(tr.special_side() & 0b01); + data.bitstream.push_back(tr.special_side() & 0b10); // Now save all children. // Serialized in reverse order for compatibility with PrusaSlicer 2.3.1. for (int child_idx = split_sides; child_idx >= 0; -- child_idx) @@ -1666,45 +1665,48 @@ std::pair>, std::vector> TriangleSelector: } else { // In case this is leaf, we better save information about its state. int n = int(tr.get_state()); + if (n < static_cast(EnforcerBlockerType::ExtruderMax)) + data.used_states[n] = true; + if (n >= 3) { assert(n <= 16); if (n <= 16) { // Store "11" plus 4 bits of (n-3). - data.second.insert(data.second.end(), { true, true }); + data.bitstream.insert(data.bitstream.end(), { true, true }); n -= 3; for (size_t bit_idx = 0; bit_idx < 4; ++bit_idx) - data.second.push_back(n & (uint64_t(0b0001) << bit_idx)); + data.bitstream.push_back(n & (uint64_t(0b0001) << bit_idx)); } } else { // Simple case, compatible with PrusaSlicer 2.3.1 and older for storing paint on supports and seams. // Store 2 bits of n. - data.second.push_back(n & 0b01); - data.second.push_back(n & 0b10); + data.bitstream.push_back(n & 0b01); + data.bitstream.push_back(n & 0b10); } } } } out { this }; - out.data.first.reserve(m_orig_size_indices); + out.data.triangles_to_split.reserve(m_orig_size_indices); for (int i=0; i>, std::vector> &data, bool needs_reset, EnforcerBlockerType max_ebt) +void TriangleSelector::deserialize(const TriangleSplittingData& data, bool needs_reset, EnforcerBlockerType max_ebt) { if (needs_reset) reset(); // dump any current state - for (auto [triangle_id, ibit] : data.first) { + for (auto [triangle_id, ibit] : data.triangles_to_split) { if (triangle_id >= int(m_triangles.size())) { BOOST_LOG_TRIVIAL(info) << __FUNCTION__ << "array bound:error:triangle_id >= int(m_triangles.size())"; return; @@ -1712,7 +1714,7 @@ void TriangleSelector::deserialize(const std::pair parents; - for (auto [triangle_id, ibit] : data.first) { + for (auto [triangle_id, ibit] : data.triangles_to_split) { assert(triangle_id < int(m_triangles.size())); - assert(ibit < int(data.second.size())); + assert(ibit < int(data.bitstream.size())); auto next_nibble = [&data, &ibit = ibit]() { int n = 0; for (int i = 0; i < 4; ++ i) - n |= data.second[ibit ++] << i; + n |= data.bitstream[ibit ++] << i; return n; }; @@ -1811,21 +1813,53 @@ void TriangleSelector::deserialize(const std::pairbitstream.size()); + assert(!this->bitstream.empty() && this->bitstream.size() != bitstream_start_idx); + assert((this->bitstream.size() - bitstream_start_idx) % 4 == 0); + + if (this->bitstream.empty() || this->bitstream.size() == bitstream_start_idx) + return; + + size_t nibble_idx = bitstream_start_idx; + + auto read_next_nibble = [&data_bitstream = std::as_const(this->bitstream), &nibble_idx]() -> uint8_t { + assert(nibble_idx + 3 < data_bitstream.size()); + uint8_t code = 0; + for (size_t bit_idx = 0; bit_idx < 4; ++bit_idx) + code |= data_bitstream[nibble_idx++] << bit_idx; + return code; + }; + + while (nibble_idx < this->bitstream.size()) { + const uint8_t code = read_next_nibble(); + + if (const bool is_split = (code & 0b11) != 0; is_split) + continue; + + const uint8_t facet_state = (code & 0b1100) == 0b1100 ? read_next_nibble() + 3 : code >> 2; + assert(facet_state < this->used_states.size()); + if (facet_state >= this->used_states.size()) + continue; + + this->used_states[facet_state] = true; + } +} + // Lightweight variant of deserialization, which only tests whether a face of test_state exists. -bool TriangleSelector::has_facets(const std::pair>, std::vector> &data, const EnforcerBlockerType test_state) -{ +bool TriangleSelector::has_facets(const TriangleSplittingData &data, const EnforcerBlockerType test_state) { // Depth-first queue of a number of unvisited children. // Kept outside of the loop to avoid re-allocating inside the loop. std::vector parents_children; parents_children.reserve(64); - for (const std::pair &triangle_id_and_ibit : data.first) { - int ibit = triangle_id_and_ibit.second; - assert(ibit < int(data.second.size())); + for (const TriangleBitStreamMapping &triangle_id_and_ibit : data.triangles_to_split) { + int ibit = triangle_id_and_ibit.bitstream_start_idx; + assert(ibit < int(data.bitstream.size())); auto next_nibble = [&data, &ibit = ibit]() { int n = 0; for (int i = 0; i < 4; ++ i) - n |= data.second[ibit ++] << i; + n |= data.bitstream[ibit ++] << i; return n; }; // < 0 -> negative of a number of children diff --git a/src/libslic3r/TriangleSelector.hpp b/src/libslic3r/TriangleSelector.hpp index b73283c0e1c..e22a551baf5 100644 --- a/src/libslic3r/TriangleSelector.hpp +++ b/src/libslic3r/TriangleSelector.hpp @@ -7,10 +7,34 @@ #include #include "Point.hpp" #include "TriangleMesh.hpp" -#include "libslic3r/Model.hpp" namespace Slic3r { +enum class EnforcerBlockerType : int8_t { + // Maximum is 3. The value is serialized in TriangleSelector into 2 bits. + NONE = 0, + ENFORCER = 1, + BLOCKER = 2, + // Maximum is 15. The value is serialized in TriangleSelector into 6 bits using a 2 bit prefix code. + Extruder1 = ENFORCER, + Extruder2 = BLOCKER, + Extruder3, + Extruder4, + Extruder5, + Extruder6, + Extruder7, + Extruder8, + Extruder9, + Extruder10, + Extruder11, + Extruder12, + Extruder13, + Extruder14, + Extruder15, + Extruder16, + ExtruderMax = Extruder16 +}; + // Following class holds information about selected triangles. It also has power // to recursively subdivide the triangles and make the selection finer. class TriangleSelector @@ -208,6 +232,56 @@ class TriangleSelector } }; + struct TriangleBitStreamMapping + { + // Index of the triangle to which we assign the bitstream containing splitting information. + int triangle_idx = -1; + // Index of the first bit of the bitstream assigned to this triangle. + int bitstream_start_idx = -1; + + TriangleBitStreamMapping() = default; + explicit TriangleBitStreamMapping(int triangleIdx, int bitstreamStartIdx) : triangle_idx(triangleIdx), bitstream_start_idx(bitstreamStartIdx) {} + + friend bool operator==(const TriangleBitStreamMapping &lhs, const TriangleBitStreamMapping &rhs) { return lhs.triangle_idx == rhs.triangle_idx && lhs.bitstream_start_idx == rhs.bitstream_start_idx; } + friend bool operator!=(const TriangleBitStreamMapping &lhs, const TriangleBitStreamMapping &rhs) { return !(lhs == rhs); } + + private: + friend class cereal::access; + template void serialize(Archive &ar) { ar(triangle_idx, bitstream_start_idx); } + }; + + struct TriangleSplittingData { + // Vector of triangles and its indexes to the bitstream. + std::vector triangles_to_split; + // Bit stream containing splitting information. + std::vector bitstream; + // Array indicating which triangle state types are used (encoded inside bitstream). + std::vector used_states { std::vector(static_cast(EnforcerBlockerType::ExtruderMax), false) }; + + TriangleSplittingData() = default; + + friend bool operator==(const TriangleSplittingData &lhs, const TriangleSplittingData &rhs) { + return lhs.triangles_to_split == rhs.triangles_to_split + && lhs.bitstream == rhs.bitstream + && lhs.used_states == rhs.used_states; + } + + friend bool operator!=(const TriangleSplittingData &lhs, const TriangleSplittingData &rhs) { return !(lhs == rhs); } + + // Reset all used states before they are recomputed based on the bitstream. + void reset_used_states() { + used_states.resize(static_cast(EnforcerBlockerType::ExtruderMax), false); + std::fill(used_states.begin(), used_states.end(), false); + } + + // Update used states based on the bitstream. It just iterated over the bitstream from the bitstream_start_idx till the end. + void update_used_states(size_t bitstream_start_idx); + + private: + friend class cereal::access; + template void serialize(Archive &ar) { ar(triangles_to_split, bitstream, used_states); } + }; + std::pair, std::vector> precompute_all_neighbors() const; void precompute_all_neighbors_recursive(int facet_idx, const Vec3i32 &neighbors, const Vec3i32 &neighbors_propagated, std::vector &neighbors_out, std::vector &neighbors_normal_out) const; @@ -247,7 +321,7 @@ class TriangleSelector bool force_reselection = false); // force reselection of the triangle mesh even in cases that mouse is pointing on the selected triangle bool has_facets(EnforcerBlockerType state) const; - static bool has_facets(const std::pair>, std::vector> &data, EnforcerBlockerType test_state); + static bool has_facets(const TriangleSplittingData &data, EnforcerBlockerType test_state); int num_facets(EnforcerBlockerType state) const; // Get facets at a given state. Don't triangulate T-joints. indexed_triangle_set get_facets(EnforcerBlockerType state) const; @@ -270,10 +344,15 @@ class TriangleSelector // Store the division trees in compact form (a long stream of bits for each triangle of the original mesh). // First vector contains pairs of (triangle index, first bit in the second vector). - std::pair>, std::vector> serialize() const; + TriangleSplittingData serialize() const; // Load serialized data. Assumes that correct mesh is loaded. - void deserialize(const std::pair>, std::vector>& data, bool needs_reset = true, EnforcerBlockerType max_ebt = EnforcerBlockerType::ExtruderMax); + void deserialize(const TriangleSplittingData& data, + bool needs_reset = true, + EnforcerBlockerType max_ebt = EnforcerBlockerType::ExtruderMax); + + // Extract all used facet states from the given TriangleSplittingData. + static std::vector extract_used_facet_states(const TriangleSplittingData &data); // For all triangles, remove the flag indicating that the triangle was selected by seed fill. void seed_fill_unselect_all_triangles(); diff --git a/src/libslic3r/TriangleSetSampling.cpp b/src/libslic3r/TriangleSetSampling.cpp index 5333aaf7f10..bb03ff6d750 100644 --- a/src/libslic3r/TriangleSetSampling.cpp +++ b/src/libslic3r/TriangleSetSampling.cpp @@ -2,6 +2,7 @@ #include #include #include +#include namespace Slic3r { diff --git a/src/libslic3r/TriangulateWall.cpp b/src/libslic3r/TriangulateWall.cpp index 133ca8236cd..b8746ef0d29 100644 --- a/src/libslic3r/TriangulateWall.cpp +++ b/src/libslic3r/TriangulateWall.cpp @@ -1,5 +1,5 @@ -//#include "TriangulateWall.hpp" -//#include "MTUtils.hpp" +#include "TriangulateWall.hpp" +#include "MTUtils.hpp" namespace Slic3r { diff --git a/src/libslic3r/Triangulation.cpp b/src/libslic3r/Triangulation.cpp index 782553e2a7e..f290442bf11 100644 --- a/src/libslic3r/Triangulation.cpp +++ b/src/libslic3r/Triangulation.cpp @@ -1,10 +1,6 @@ #include "Triangulation.hpp" #include "IntersectionPoints.hpp" - -#ifndef _WIN32 -// On linux and macOS, this include is required #include -#endif // _WIN32 #include #include #include diff --git a/src/libslic3r/calib.cpp b/src/libslic3r/calib.cpp index 141a2203ccf..44b44160ed1 100644 --- a/src/libslic3r/calib.cpp +++ b/src/libslic3r/calib.cpp @@ -18,13 +18,19 @@ float CalibPressureAdvance::find_optimal_PA_speed(const DynamicPrintConfig &conf return std::floor(pa_speed); } -std::string CalibPressureAdvance::move_to(Vec2d pt, GCodeWriter &writer, std::string comment) +std::string CalibPressureAdvance::move_to(Vec2d pt, GCodeWriter &writer, std::string comment, double z, double layer_height) { std::stringstream gcode; - gcode << writer.retract(); - gcode << writer.travel_to_xy(pt, comment); - gcode << writer.unretract(); + gcode << writer.retract(); // retract before z move or move + if(z > EPSILON && layer_height >= 0){ + gcode << writer.travel_to_z(z, "z-hop"); // Perform z hop + gcode << writer.travel_to_xy(pt, comment); // Travel with z move + gcode << writer.travel_to_z(layer_height, "undo z-hop"); // Undo z hop + }else { + gcode << writer.travel_to_xy(pt, comment); + } + gcode << writer.unretract(); // unretract after z move is complete m_last_pos = Vec3d(pt.x(), pt.y(), 0); @@ -465,9 +471,8 @@ std::string CalibPressureAdvanceLine::print_pa_lines(double start_x, double star const double e_per_mm = CalibPressureAdvance::e_per_mm(m_line_width, m_height_layer, m_nozzle_diameter, filament_diameter, print_flow_ratio); - // Orca: Unused due to skip drawing indicator lines - // const double thin_e_per_mm = CalibPressureAdvance::e_per_mm(m_thin_line_width, m_height_layer, m_nozzle_diameter, filament_diameter, - // print_flow_ratio); + const double thin_e_per_mm = CalibPressureAdvance::e_per_mm(m_thin_line_width, m_height_layer, m_nozzle_diameter, filament_diameter, + print_flow_ratio); const double number_e_per_mm = CalibPressureAdvance::e_per_mm(m_number_line_width, m_height_layer, m_nozzle_diameter, filament_diameter, print_flow_ratio); @@ -565,10 +570,11 @@ void CalibPressureAdvancePattern::generate_custom_gcodes(const DynamicPrintConfi std::vector gcode_items; const int num_patterns = get_num_patterns(); // "cache" for use in loops + const double zhop_config_value = m_config.option("z_hop")->get_at(0); // draw pressure advance pattern for (int i = 0; i < m_num_layers; ++i) { const double layer_height = height_first_layer() + height_z_offset() + (i * height_layer()); - const double zhop_height = layer_height + height_layer(); + const double zhop_height = layer_height + zhop_config_value; if (i > 0) { gcode << "; end pressure advance pattern for layer\n"; @@ -619,9 +625,7 @@ void CalibPressureAdvancePattern::generate_custom_gcodes(const DynamicPrintConfi double initial_x = to_x; double initial_y = to_y; - gcode << m_writer.travel_to_z(zhop_height, "z-hop before move"); - gcode << move_to(Vec2d(to_x, to_y), m_writer, "Move to pattern start"); - gcode << m_writer.travel_to_z(layer_height, "undo z-hop"); + gcode << move_to(Vec2d(to_x, to_y), m_writer, "Move to pattern start",zhop_height,layer_height); for (int j = 0; j < num_patterns; ++j) { // increment pressure advance @@ -646,22 +650,16 @@ void CalibPressureAdvancePattern::generate_custom_gcodes(const DynamicPrintConfi if (k != wall_count() - 1) { // perimeters not done yet. move to next perimeter to_x += line_spacing_angle(); - gcode << m_writer.travel_to_z(zhop_height, "z-hop before move"); - gcode << move_to(Vec2d(to_x, to_y), m_writer, "Move to start next pattern wall"); - gcode << m_writer.travel_to_z(layer_height, "undo z-hop"); + gcode << move_to(Vec2d(to_x, to_y), m_writer, "Move to start next pattern wall", zhop_height, layer_height); // Call move to command with XY as well as z hop and layer height to invoke and undo z lift } else if (j != num_patterns - 1) { // patterns not done yet. move to next pattern to_x += m_pattern_spacing + line_width(); - gcode << m_writer.travel_to_z(zhop_height, "z-hop before move"); - gcode << move_to(Vec2d(to_x, to_y), m_writer, "Move to next pattern"); - gcode << m_writer.travel_to_z(layer_height, "undo z-hop"); + gcode << move_to(Vec2d(to_x, to_y), m_writer, "Move to next pattern", zhop_height, layer_height); // Call move to command with XY as well as z hop and layer height to invoke and undo z lift } else if (i != m_num_layers - 1) { // layers not done yet. move back to start to_x = initial_x; - gcode << m_writer.travel_to_z(zhop_height, "z-hop before move"); - gcode << move_to(Vec2d(to_x, to_y), m_writer, "Move back to start position"); - gcode << m_writer.travel_to_z(layer_height, "undo z-hop"); - gcode << m_writer.reset_e(); // reset extruder before printing placeholder cube to avoid + gcode << move_to(Vec2d(to_x, to_y), m_writer, "Move back to start position", zhop_height, layer_height); // Call move to command with XY as well as z hop and layer height to invoke and undo z lift + gcode << m_writer.reset_e(); // reset extruder before printing placeholder cube to avoid over extrusion } else { // everything done } diff --git a/src/libslic3r/calib.hpp b/src/libslic3r/calib.hpp index af5bbb81d59..e612c58026c 100644 --- a/src/libslic3r/calib.hpp +++ b/src/libslic3r/calib.hpp @@ -151,7 +151,7 @@ class CalibPressureAdvance void delta_scale_bed_ext(BoundingBoxf &bed_ext) const { bed_ext.scale(1.0f / 1.41421f); } - std::string move_to(Vec2d pt, GCodeWriter &writer, std::string comment = std::string()); + std::string move_to(Vec2d pt, GCodeWriter &writer, std::string comment = std::string(), double z = 0, double layer_height = -1); double e_per_mm(double line_width, double layer_height, float nozzle_diameter, float filament_diameter, float print_flow_ratio) const; double speed_adjust(int speed) const { return speed * 60; }; diff --git a/src/libslic3r/utils.cpp b/src/libslic3r/utils.cpp index 362cc521b68..733ac626f41 100644 --- a/src/libslic3r/utils.cpp +++ b/src/libslic3r/utils.cpp @@ -3,12 +3,19 @@ #include #include +#include #include #include #include "format.hpp" +#include "Platform.hpp" +#include "Time.hpp" #include "libslic3r.h" +#ifdef __APPLE__ +#include "MacUtils.hpp" +#endif + #ifdef WIN32 #include #include @@ -25,7 +32,6 @@ #ifdef __APPLE__ #include #include - #include "MacUtils.hpp" #endif #ifdef __linux__ #include @@ -33,7 +39,6 @@ #include #include #include - #include "Platform.hpp" #endif #endif @@ -54,6 +59,7 @@ #include #include #include +#include // We are using quite an old TBB 2017 U7, which does not support global control API officially. // Before we update our build servers, let's use the old API, which is deprecated in up to date TBB. @@ -1483,6 +1489,8 @@ bool bbl_calc_md5(std::string &filename, std::string &md5_out) MD5_Init(&ctx); boost::nowide::ifstream ifs(filename, std::ios::binary); std::string buf(64 * 1024, 0); + const std::size_t & size = boost::filesystem::file_size(filename); + std::size_t left_size = size; while (ifs) { ifs.read(buf.data(), buf.size()); int read_bytes = ifs.gcount(); diff --git a/src/slic3r/GUI/3DScene.cpp b/src/slic3r/GUI/3DScene.cpp index e58b5c7eff2..86ab5d2239e 100644 --- a/src/slic3r/GUI/3DScene.cpp +++ b/src/slic3r/GUI/3DScene.cpp @@ -241,7 +241,7 @@ float GLVolume::last_explosion_ratio = 1.0; void GLVolume::set_render_color() { - // bool outside = is_outside || is_below_printbed(); + bool outside = is_outside || is_below_printbed(); if (force_native_color || force_neutral_color) { #ifdef ENABBLE_OUTSIDE_COLOR @@ -859,6 +859,7 @@ void GLVolumeCollection::render(GLVolumeCollection::ERenderType type, bool disab return; GLShaderProgram* sink_shader = GUI::wxGetApp().get_shader("flat"); + GLShaderProgram* edges_shader = GUI::wxGetApp().get_shader("flat"); if (type == ERenderType::Transparent) { glsafe(::glEnable(GL_BLEND)); @@ -1022,6 +1023,7 @@ bool GLVolumeCollection::check_outside_state(const BuildVolume &build_volume, Mo GUI::PartPlate* curr_plate = GUI::wxGetApp().plater()->get_partplate_list().get_selected_plate(); const Pointfs& pp_bed_shape = curr_plate->get_shape(); BuildVolume plate_build_volume(pp_bed_shape, build_volume.printable_height()); + const std::vector& exclude_areas = curr_plate->get_exclude_areas(); for (GLVolume* volume : this->volumes) { diff --git a/src/slic3r/GUI/AMSMaterialsSetting.cpp b/src/slic3r/GUI/AMSMaterialsSetting.cpp index b4c5e956469..f44dc199178 100644 --- a/src/slic3r/GUI/AMSMaterialsSetting.cpp +++ b/src/slic3r/GUI/AMSMaterialsSetting.cpp @@ -331,6 +331,7 @@ void AMSMaterialsSetting::create_panel_kn(wxWindow* parent) kn_val_sizer->Add(m_input_k_val, 0, wxALL | wxEXPAND | wxALIGN_CENTER_VERTICAL, FromDIP(0)); // n params input + wxBoxSizer* n_sizer = new wxBoxSizer(wxHORIZONTAL); m_n_param = new wxStaticText(parent, wxID_ANY, _L("Factor N"), wxDefaultPosition, wxDefaultSize, 0); m_n_param->SetFont(::Label::Body_13); m_n_param->SetForegroundColour(wxColour(50, 58, 61)); @@ -356,7 +357,7 @@ void AMSMaterialsSetting::paintEvent(wxPaintEvent &evt) { auto size = GetSize(); wxPaintDC dc(this); - dc.SetPen(wxPen(StateColor::darkModeColorFor(wxColour("#000000")), 1, wxPENSTYLE_SOLID)); + dc.SetPen(wxPen(StateColor::darkModeColorFor(wxColour("#000000")), 1, wxSOLID)); dc.SetBrush(wxBrush(*wxTRANSPARENT_BRUSH)); dc.DrawRectangle(0, 0, size.x, size.y); } diff --git a/src/slic3r/GUI/AmsMappingPopup.cpp b/src/slic3r/GUI/AmsMappingPopup.cpp index 41abe5a4717..492926b9526 100644 --- a/src/slic3r/GUI/AmsMappingPopup.cpp +++ b/src/slic3r/GUI/AmsMappingPopup.cpp @@ -366,6 +366,7 @@ void MaterialItem::doRender(wxDC &dc) wxString out_txt = m_msg; wxString count_txt = ""; + int new_line_pos = 0; for (int i = 0; i < m_msg.length(); i++) { auto text_size = m_warning_text->GetTextExtent(count_txt); @@ -401,6 +402,7 @@ void AmsMapingPopup::on_left_down(wxMouseEvent &evt) auto pos = ClientToScreen(evt.GetPosition()); for (MappingItem *item : m_mapping_item_list) { auto p_rect = item->ClientToScreen(wxPoint(0, 0)); + auto left = item->GetSize(); if (pos.x > p_rect.x && pos.y > p_rect.y && pos.x < (p_rect.x + item->GetSize().x) && pos.y < (p_rect.y + item->GetSize().y)) { if (item->m_tray_data.type == TrayType::NORMAL && !is_match_material(item->m_tray_data.filament_type)) return; @@ -1522,6 +1524,9 @@ void AmsRMGroup::on_mouse_move(wxMouseEvent& evt) std::string tray_name = iter->first; wxColour tray_color = iter->second; + int x = size.x / 2; + int y = size.y / 2; + int radius = size.x / 2; endAngle += ev_angle; if (click_angle >= startAngle && click_angle < endAngle) { diff --git a/src/slic3r/GUI/Auxiliary.cpp b/src/slic3r/GUI/Auxiliary.cpp index 5bc3280e758..8d338edc213 100644 --- a/src/slic3r/GUI/Auxiliary.cpp +++ b/src/slic3r/GUI/Auxiliary.cpp @@ -989,7 +989,7 @@ void AuxiliaryPanel::create_folder(wxString name) fs::path bfs_path((m_root_dir + "/" + folder_name).ToStdWstring()); if (fs::exists(bfs_path)) { try { - fs::remove_all(bfs_path); + bool is_done = fs::remove_all(bfs_path); } catch (...) { BOOST_LOG_TRIVIAL(error) << "Failed removing the auxiliary directory " << m_root_dir.c_str(); } diff --git a/src/slic3r/GUI/AuxiliaryDataViewModel.cpp b/src/slic3r/GUI/AuxiliaryDataViewModel.cpp index cad5cf5455d..50368b85443 100644 --- a/src/slic3r/GUI/AuxiliaryDataViewModel.cpp +++ b/src/slic3r/GUI/AuxiliaryDataViewModel.cpp @@ -337,7 +337,7 @@ wxDataViewItemArray AuxiliaryModel::ImportFile(AuxiliaryModelNode* sel, wxArrayS dir_path += "\\" + src_bfs_path.filename().generic_wstring(); boost::system::error_code ec; - if (!fs::copy_file(src_bfs_path, fs::path(dir_path.ToStdWstring()), fs::copy_options::overwrite_existing, ec)) + if (!fs::copy_file(src_bfs_path, fs::path(dir_path.ToStdWstring()), fs::copy_option::overwrite_if_exists, ec)) continue; // Update model data diff --git a/src/slic3r/GUI/BBLStatusBar.cpp b/src/slic3r/GUI/BBLStatusBar.cpp index b0d3513f59b..7c3d640d6e4 100644 --- a/src/slic3r/GUI/BBLStatusBar.cpp +++ b/src/slic3r/GUI/BBLStatusBar.cpp @@ -3,6 +3,8 @@ #include #include #include +#include +#include #include "GUI_App.hpp" diff --git a/src/slic3r/GUI/BBLTopbar.cpp b/src/slic3r/GUI/BBLTopbar.cpp index 30d4878ddfb..0bf251d7292 100644 --- a/src/slic3r/GUI/BBLTopbar.cpp +++ b/src/slic3r/GUI/BBLTopbar.cpp @@ -230,7 +230,7 @@ void BBLTopbar::Init(wxFrame* parent) this->AddSpacer(FromDIP(10)); wxBitmap save_bitmap = create_scaled_bitmap("topbar_save", nullptr, TOPBAR_ICON_SIZE); - this->AddTool(wxID_SAVE, "", save_bitmap); + wxAuiToolBarItem* save_btn = this->AddTool(wxID_SAVE, "", save_bitmap); this->AddSpacer(FromDIP(10)); @@ -278,7 +278,7 @@ void BBLTopbar::Init(wxFrame* parent) this->AddSpacer(FromDIP(4)); wxBitmap iconize_bitmap = create_scaled_bitmap("topbar_min", nullptr, TOPBAR_ICON_SIZE); - this->AddTool(wxID_ICONIZE_FRAME, "", iconize_bitmap); + wxAuiToolBarItem* iconize_btn = this->AddTool(wxID_ICONIZE_FRAME, "", iconize_bitmap); this->AddSpacer(FromDIP(4)); @@ -294,7 +294,7 @@ void BBLTopbar::Init(wxFrame* parent) this->AddSpacer(FromDIP(4)); wxBitmap close_bitmap = create_scaled_bitmap("topbar_close", nullptr, TOPBAR_ICON_SIZE); - this->AddTool(wxID_CLOSE_FRAME, "", close_bitmap); + wxAuiToolBarItem* close_btn = this->AddTool(wxID_CLOSE_FRAME, "", close_bitmap); Realize(); // m_toolbar_h = this->GetSize().GetHeight(); @@ -466,6 +466,7 @@ void BBLTopbar::UpdateToolbarWidth(int width) } void BBLTopbar::Rescale() { + int em = em_unit(this); wxAuiToolBarItem* item; /*item = this->FindTool(ID_LOGO); @@ -495,7 +496,7 @@ void BBLTopbar::Rescale() { item->SetBitmap(create_scaled_bitmap("calib_sf", nullptr, TOPBAR_ICON_SIZE)); item->SetDisabledBitmap(create_scaled_bitmap("calib_sf_inactive", nullptr, TOPBAR_ICON_SIZE)); - // item = this->FindTool(ID_TITLE); + item = this->FindTool(ID_TITLE); /*item = this->FindTool(ID_PUBLISH); item->SetBitmap(create_scaled_bitmap("topbar_publish", this, TOPBAR_ICON_SIZE)); @@ -547,14 +548,14 @@ void BBLTopbar::OnCloseFrame(wxAuiToolBarEvent& event) void BBLTopbar::OnMouseLeftDClock(wxMouseEvent& mouse) { + wxPoint mouse_pos = ::wxGetMousePosition(); // check whether mouse is not on any tool item if (this->FindToolByCurrentPosition() != NULL && this->FindToolByCurrentPosition() != m_title_item) { mouse.Skip(); return; } -#ifdef __WXMSW__ - wxPoint mouse_pos = ::wxGetMousePosition(); +#ifdef __W1XMSW__ ::PostMessage((HWND) m_frame->GetHandle(), WM_NCLBUTTONDBLCLK, HTCAPTION, MAKELPARAM(mouse_pos.x, mouse_pos.y)); return; #endif // __WXMSW__ @@ -636,6 +637,7 @@ void BBLTopbar::OnMouseLeftDown(wxMouseEvent& event) void BBLTopbar::OnMouseLeftUp(wxMouseEvent& event) { + wxPoint mouse_pos = ::wxGetMousePosition(); if (HasCapture()) { ReleaseMouse(); diff --git a/src/slic3r/GUI/BackgroundSlicingProcess.cpp b/src/slic3r/GUI/BackgroundSlicingProcess.cpp index 1f6c9e4b94e..ca8c7a16630 100644 --- a/src/slic3r/GUI/BackgroundSlicingProcess.cpp +++ b/src/slic3r/GUI/BackgroundSlicingProcess.cpp @@ -5,9 +5,13 @@ #include "format.hpp" #include +#include +#include // For zipped archive creation +#include #include +#include #include @@ -16,18 +20,23 @@ #include "libslic3r/SLAPrint.hpp" #include "libslic3r/Utils.hpp" #include "libslic3r/GCode/PostProcessor.hpp" +#include "libslic3r/Format/SL1.hpp" #include "libslic3r/Thread.hpp" #include "libslic3r/libslic3r.h" #include #include +#include #include #include #include +#include #include "I18N.hpp" //#include "RemovableDriveManager.hpp" +#include "slic3r/GUI/Plater.hpp" + namespace Slic3r { bool SlicingProcessCompletedEvent::critical_error() const diff --git a/src/slic3r/GUI/BindDialog.cpp b/src/slic3r/GUI/BindDialog.cpp index 28360f0d7a4..134d91e7c54 100644 --- a/src/slic3r/GUI/BindDialog.cpp +++ b/src/slic3r/GUI/BindDialog.cpp @@ -67,6 +67,7 @@ PingCodeBindDialog::PingCodeBindDialog(Plater* plater /*= nullptr*/) SetIcon(wxIcon(encode_path(icon_path.c_str()), wxBITMAP_TYPE_ICO)); SetBackgroundColour(*wxWHITE); + wxBoxSizer* m_sizer_main = new wxBoxSizer(wxVERTICAL); auto m_line_top = new wxPanel(this, wxID_ANY, wxDefaultPosition, wxSize(-1, 1), wxTAB_TRAVERSAL); m_line_top->SetBackgroundColour(wxColour(166, 169, 170)); diff --git a/src/slic3r/GUI/CalibrationPanel.cpp b/src/slic3r/GUI/CalibrationPanel.cpp index 94a3186721a..9a16c133222 100644 --- a/src/slic3r/GUI/CalibrationPanel.cpp +++ b/src/slic3r/GUI/CalibrationPanel.cpp @@ -226,7 +226,7 @@ SelectMObjectPopup::SelectMObjectPopup(wxWindow* parent) m_refresh_timer = new wxTimer(); m_refresh_timer->SetOwner(this); Bind(EVT_UPDATE_USER_MLIST, &SelectMObjectPopup::update_machine_list, this); - Bind(wxEVT_TIMER, [this](wxTimerEvent&) { on_timer(); }); + Bind(wxEVT_TIMER, &SelectMObjectPopup::on_timer, this); Bind(EVT_DISSMISS_MACHINE_LIST, &SelectMObjectPopup::on_dissmiss_win, this); } @@ -265,7 +265,7 @@ void SelectMObjectPopup::Popup(wxWindow* WXUNUSED(focus)) } } - on_timer(); + wxPostEvent(this, wxTimerEvent()); PopupWindow::Popup(); } @@ -304,7 +304,7 @@ bool SelectMObjectPopup::Show(bool show) { return PopupWindow::Show(show); } -void SelectMObjectPopup::on_timer() +void SelectMObjectPopup::on_timer(wxTimerEvent& event) { BOOST_LOG_TRIVIAL(trace) << "SelectMObjectPopup on_timer"; wxGetApp().reset_to_active(); @@ -459,7 +459,7 @@ CalibrationPanel::CalibrationPanel(wxWindow* parent, wxWindowID id, const wxPoin Layout(); init_timer(); - Bind(wxEVT_TIMER, [this](wxTimerEvent&) { on_timer(); }); + Bind(wxEVT_TIMER, &CalibrationPanel::on_timer, this); } void CalibrationPanel::init_tabpanel() { @@ -502,10 +502,10 @@ void CalibrationPanel::init_timer() m_refresh_timer = new wxTimer(); m_refresh_timer->SetOwner(this); m_refresh_timer->Start(REFRESH_INTERVAL); - on_timer(); + wxPostEvent(this, wxTimerEvent()); } -void CalibrationPanel::on_timer() { +void CalibrationPanel::on_timer(wxTimerEvent& event) { update_all(); } @@ -644,7 +644,7 @@ bool CalibrationPanel::Show(bool show) { m_refresh_timer->Stop(); m_refresh_timer->SetOwner(this); m_refresh_timer->Start(REFRESH_INTERVAL); - on_timer(); + wxPostEvent(this, wxTimerEvent()); DeviceManager* dev = Slic3r::GUI::wxGetApp().getDeviceManager(); if (dev) { @@ -670,6 +670,9 @@ bool CalibrationPanel::Show(bool show) { void CalibrationPanel::on_printer_clicked(wxMouseEvent& event) { + auto mouse_pos = ClientToScreen(event.GetPosition()); + wxPoint rect = m_side_tools->ClientToScreen(wxPoint(0, 0)); + if (!m_side_tools->is_in_interval()) { wxPoint pos = m_side_tools->ClientToScreen(wxPoint(0, 0)); pos.y += m_side_tools->GetRect().height; diff --git a/src/slic3r/GUI/CalibrationPanel.hpp b/src/slic3r/GUI/CalibrationPanel.hpp index 7b56abd8e7d..a993ff28869 100644 --- a/src/slic3r/GUI/CalibrationPanel.hpp +++ b/src/slic3r/GUI/CalibrationPanel.hpp @@ -94,7 +94,7 @@ class SelectMObjectPopup : public PopupWindow private: void OnLeftUp(wxMouseEvent& event); - void on_timer(); + void on_timer(wxTimerEvent& event); void update_user_devices(); void on_dissmiss_win(wxCommandEvent& event); }; @@ -117,7 +117,7 @@ class CalibrationPanel : public wxPanel protected: void init_tabpanel(); void init_timer(); - void on_timer(); + void on_timer(wxTimerEvent& event); int last_status; diff --git a/src/slic3r/GUI/CalibrationWizard.cpp b/src/slic3r/GUI/CalibrationWizard.cpp index 6280c96402f..f6cbbc3065b 100644 --- a/src/slic3r/GUI/CalibrationWizard.cpp +++ b/src/slic3r/GUI/CalibrationWizard.cpp @@ -1126,6 +1126,7 @@ void FlowRateWizard::on_cali_save() } std::string old_preset_name; + CalibrationPresetPage* preset_page = (static_cast(preset_step->page)); std::map selected_filaments = get_cached_selected_filament(curr_obj); if (!selected_filaments.empty()) { old_preset_name = selected_filaments.begin()->second->name; @@ -1172,6 +1173,7 @@ void FlowRateWizard::on_cali_save() return; std::string old_preset_name; + CalibrationPresetPage* preset_page = (static_cast(preset_step->page)); std::map selected_filaments = get_cached_selected_filament(curr_obj); if (!selected_filaments.empty()) { old_preset_name = selected_filaments.begin()->second->name; @@ -1441,6 +1443,7 @@ void MaxVolumetricSpeedWizard::on_cali_save() std::string old_preset_name; std::string new_preset_name; + CalibrationPresetPage *preset_page = (static_cast(preset_step->page)); std::map selected_filaments = get_cached_selected_filament(curr_obj); if (!selected_filaments.empty()) { old_preset_name = selected_filaments.begin()->second->name; diff --git a/src/slic3r/GUI/CalibrationWizardPresetPage.cpp b/src/slic3r/GUI/CalibrationWizardPresetPage.cpp index f972d229885..482ce61a128 100644 --- a/src/slic3r/GUI/CalibrationWizardPresetPage.cpp +++ b/src/slic3r/GUI/CalibrationWizardPresetPage.cpp @@ -790,6 +790,7 @@ wxString CalibrationPresetPage::format_text(wxString& m_msg) wxString out_txt = m_msg; wxString count_txt = ""; + int new_line_pos = 0; for (int i = 0; i < m_msg.length(); i++) { auto text_size = m_statictext_printer_msg->GetTextExtent(count_txt); diff --git a/src/slic3r/GUI/Camera.cpp b/src/slic3r/GUI/Camera.cpp index c6c04141948..c87b3cf2d2a 100644 --- a/src/slic3r/GUI/Camera.cpp +++ b/src/slic3r/GUI/Camera.cpp @@ -586,6 +586,9 @@ double Camera::calc_zoom_to_volumes_factor(const GLVolumePtrs& volumes, Vec3d& c void Camera::set_distance(double distance) { + if(distance < EPSILON || distance > 1.0e6) + return; + if (m_distance != distance) { m_view_matrix.translate((distance - m_distance) * get_dir_forward()); m_distance = distance; diff --git a/src/slic3r/GUI/ConfigManipulation.cpp b/src/slic3r/GUI/ConfigManipulation.cpp index 9893ee5efcc..a9fd41f8b8a 100644 --- a/src/slic3r/GUI/ConfigManipulation.cpp +++ b/src/slic3r/GUI/ConfigManipulation.cpp @@ -282,6 +282,7 @@ void ConfigManipulation::update_print_fff_config(DynamicPrintConfig* config, con } double sparse_infill_density = config->option("sparse_infill_density")->value; + auto timelapse_type = config->opt_enum("timelapse_type"); if (!is_plate_config && config->opt_bool("spiral_mode") && @@ -297,6 +298,7 @@ void ConfigManipulation::update_print_fff_config(DynamicPrintConfig* config, con { DynamicPrintConfig new_conf = *config; auto answer = show_spiral_mode_settings_dialog(is_object_config); + bool support = true; if (answer == wxID_YES) { new_conf.set_key_value("wall_loops", new ConfigOptionInt(1)); new_conf.set_key_value("top_shell_layers", new ConfigOptionInt(0)); @@ -308,6 +310,8 @@ void ConfigManipulation::update_print_fff_config(DynamicPrintConfig* config, con new_conf.set_key_value("wall_direction", new ConfigOptionEnum(WallDirection::Auto)); new_conf.set_key_value("timelapse_type", new ConfigOptionEnum(tlTraditional)); sparse_infill_density = 0; + timelapse_type = TimelapseType::tlTraditional; + support = false; } else { new_conf.set_key_value("spiral_mode", new ConfigOptionBool(false)); diff --git a/src/slic3r/GUI/ConfigWizard.cpp b/src/slic3r/GUI/ConfigWizard.cpp index fd00db7f78e..1768d8cd473 100644 --- a/src/slic3r/GUI/ConfigWizard.cpp +++ b/src/slic3r/GUI/ConfigWizard.cpp @@ -2438,7 +2438,7 @@ bool ConfigWizard::priv::apply_config(AppConfig *app_config, PresetBundle *prese header = _L_PLURAL("A new vendor was installed and one of its printers will be activated", "New vendors were installed and one of theirs printers will be activated", install_bundles.size()); // Decide whether to create snapshot based on run_reason and the reset profile checkbox - /*bool snapshot = true; + bool snapshot = true; Snapshot::Reason snapshot_reason = Snapshot::SNAPSHOT_UPGRADE; switch (run_reason) { case ConfigWizard::RR_DATA_EMPTY: @@ -2456,7 +2456,7 @@ bool ConfigWizard::priv::apply_config(AppConfig *app_config, PresetBundle *prese snapshot = false; snapshot_reason = Snapshot::SNAPSHOT_USER; break; - }*/ + } //BBS: remove snapshot logic /*if (snapshot && ! take_config_snapshot_cancel_on_error(*app_config, snapshot_reason, "", _u8L("Do you want to continue changing the configuration?"))) @@ -2701,7 +2701,8 @@ ConfigWizard::ConfigWizard(wxWindow *parent) //BBS: add BBL as default const auto bbl_it = p->bundles.find("BBL"); wxCHECK_RET(bbl_it != p->bundles.cend(), "Vendor BambooLab not found"); - + const VendorProfile * vendor_bbl = bbl_it->second.vendor_profile; + p->only_sla_mode = false; p->any_sla_selected = p->check_sla_selected(); if (p->only_sla_mode) diff --git a/src/slic3r/GUI/CreatePresetsDialog.cpp b/src/slic3r/GUI/CreatePresetsDialog.cpp index 0166238cab9..03aaef6b13b 100644 --- a/src/slic3r/GUI/CreatePresetsDialog.cpp +++ b/src/slic3r/GUI/CreatePresetsDialog.cpp @@ -315,7 +315,7 @@ static wxBoxSizer *create_preset_tree(wxWindow *parent, std::pair preset : printer_and_preset.second) { wxString preset_name = wxString::FromUTF8(preset->name); - treeCtrl->AppendItem(rootId, preset_name); + wxTreeItemId childId1 = treeCtrl->AppendItem(rootId, preset_name); row++; } @@ -671,6 +671,8 @@ bool CreateFilamentPresetDialog::is_check_box_selected() wxBoxSizer *CreateFilamentPresetDialog::create_item(FilamentOptionType option_type) { + + wxSizer *item = nullptr; switch (option_type) { case VENDOR: return create_vendor_item(); case TYPE: return create_type_item(); @@ -3090,6 +3092,10 @@ bool CreatePrinterPresetDialog::check_printable_area() { if (x == 0 || y == 0) { return false; } + double x0 = 0.0; + double y0 = 0.0; + double x1 = x; + double y1 = y; if (dx >= x || dy >= y) { return false; } @@ -4627,6 +4633,7 @@ wxBoxSizer *EditFilamentPresetDialog::create_button_sizer() WarningDialog dlg(this, _L("All the filament presets belong to this filament would be deleted. \nIf you are using this filament on your printer, please reset the filament information for that slot."), _L("Delete filament"), wxYES | wxCANCEL | wxCANCEL_DEFAULT | wxCENTRE); int res = dlg.ShowModal(); if (wxID_YES == res) { + PresetBundle *preset_bundle = wxGetApp().preset_bundle; std::set> inherit_preset_names; std::set> root_preset_names; for (std::pair>> printer_and_preset : m_printer_compatible_presets) { diff --git a/src/slic3r/GUI/DailyTips.cpp b/src/slic3r/GUI/DailyTips.cpp index ba4427964e8..2e5b99e8b29 100644 --- a/src/slic3r/GUI/DailyTips.cpp +++ b/src/slic3r/GUI/DailyTips.cpp @@ -89,6 +89,7 @@ void DailyTipsDataRenderer::open_wiki() const void DailyTipsDataRenderer::render(const ImVec2& pos, const ImVec2& size) const { + ImGuiWrapper& imgui = *wxGetApp().imgui(); ImGuiWindow* parent_window = ImGui::GetCurrentWindow(); int window_flags = parent_window->Flags; window_flags &= ~ImGuiWindowFlags_NoScrollbar; @@ -189,6 +190,7 @@ void DailyTipsDataRenderer::render_text(const ImVec2& start_pos, const ImVec2& s std::string tips_line = _u8L("For more information, please check out Wiki"); std::string wiki_part_text = _u8L("Wiki"); std::string first_part_text = tips_line.substr(0, tips_line.find(wiki_part_text)); + ImVec2 wiki_part_size = ImGui::CalcTextSize(wiki_part_text.c_str()); ImVec2 first_part_size = ImGui::CalcTextSize(first_part_text.c_str()); //text @@ -198,6 +200,7 @@ void DailyTipsDataRenderer::render_text(const ImVec2& start_pos, const ImVec2& s ImColor HyperColor = ImColor(31, 142, 234, (int)(255 * m_fade_opacity)).Value; ImVec2 wiki_part_rect_min = ImVec2(link_start_pos.x + first_part_size.x, link_start_pos.y); + ImVec2 wiki_part_rect_max = wiki_part_rect_min + wiki_part_size; ImGui::PushStyleColor(ImGuiCol_Text, HyperColor.Value); ImGui::SetCursorScreenPos(wiki_part_rect_min); imgui.text(wiki_part_text.c_str()); @@ -261,6 +264,9 @@ ImVec2 DailyTipsPanel::get_size() void DailyTipsPanel::render() { + ImGuiWrapper& imgui = *wxGetApp().imgui(); + float scale = imgui.get_font_size() / 15.0f; + if (!m_first_enter) { retrieve_data_from_hint_database(HintDataNavigation::Curr); m_first_enter = true; diff --git a/src/slic3r/GUI/DeviceManager.cpp b/src/slic3r/GUI/DeviceManager.cpp index 28a5523b224..a79dd0a027e 100644 --- a/src/slic3r/GUI/DeviceManager.cpp +++ b/src/slic3r/GUI/DeviceManager.cpp @@ -1007,17 +1007,17 @@ int MachineObject::ams_filament_mapping(std::vector filaments, std reset_mapping_result(result); try { // try to use ordering ams mapping - // bool order_mapping_result = true; + bool order_mapping_result = true; for (int i = 0; i < filaments.size(); i++) { if (i >= tray_info_list.size()) { - // order_mapping_result = false; + order_mapping_result = false; break; } if (tray_info_list[i].tray_id == -1) { result[i].tray_id = tray_info_list[i].tray_id; } else { if (!tray_info_list[i].type.empty() && tray_info_list[i].type != filaments[i].type) { - // order_mapping_result = false; + order_mapping_result = false; break; } else { result[i].tray_id = tray_info_list[i].tray_id; @@ -1319,6 +1319,7 @@ wxString MachineObject::get_curr_stage() int MachineObject::get_curr_stage_idx() { + int result = -1; for (int i = 0; i < stage_list_info.size(); i++) { if (stage_list_info[i] == stage_curr) { return i; @@ -2348,6 +2349,8 @@ int MachineObject::command_xcam_control(std::string module_name, bool on_off, st int MachineObject::command_xcam_control_ai_monitoring(bool on_off, std::string lvl) { + bool print_halt = (lvl == "never_halt") ? false:true; + xcam_ai_monitoring = on_off; xcam_ai_monitoring_hold_count = HOLD_COUNT_MAX; xcam_ai_monitoring_sensitivity = lvl; @@ -5659,7 +5662,9 @@ void DeviceManager::parse_user_print_info(std::string body) } } } - catch (std::exception&) {} + catch (std::exception& e) { + ; + } } void DeviceManager::update_user_machine_list_info() diff --git a/src/slic3r/GUI/DownloadProgressDialog.cpp b/src/slic3r/GUI/DownloadProgressDialog.cpp index 425c2deb3b5..542db08561c 100644 --- a/src/slic3r/GUI/DownloadProgressDialog.cpp +++ b/src/slic3r/GUI/DownloadProgressDialog.cpp @@ -128,6 +128,7 @@ wxString DownloadProgressDialog::format_text(wxStaticText* st, wxString str, int wxString out_txt = str; wxString count_txt = ""; + int new_line_pos = 0; for (int i = 0; i < str.length(); i++) { auto text_size = st->GetTextExtent(count_txt); diff --git a/src/slic3r/GUI/ExtrusionCalibration.cpp b/src/slic3r/GUI/ExtrusionCalibration.cpp index eda9da58579..26216edc936 100644 --- a/src/slic3r/GUI/ExtrusionCalibration.cpp +++ b/src/slic3r/GUI/ExtrusionCalibration.cpp @@ -626,6 +626,7 @@ void ExtrusionCalibration::update_combobox_filaments() { m_comboBox_filament->SetValue(wxEmptyString); user_filaments.clear(); + int selection_idx = -1; int filament_index = -1; int curr_selection = -1; wxArrayString filament_items; diff --git a/src/slic3r/GUI/FileArchiveDialog.cpp b/src/slic3r/GUI/FileArchiveDialog.cpp index 689b31598d1..2cd84b6acdc 100644 --- a/src/slic3r/GUI/FileArchiveDialog.cpp +++ b/src/slic3r/GUI/FileArchiveDialog.cpp @@ -2,6 +2,7 @@ #include "I18N.hpp" #include "GUI_App.hpp" +#include "GUI.hpp" #include "MainFrame.hpp" #include "ExtraRenderers.hpp" #include "format.hpp" diff --git a/src/slic3r/GUI/GCodeViewer.cpp b/src/slic3r/GUI/GCodeViewer.cpp index b35ade0be4a..0d649b9a6a6 100644 --- a/src/slic3r/GUI/GCodeViewer.cpp +++ b/src/slic3r/GUI/GCodeViewer.cpp @@ -1447,6 +1447,9 @@ void GCodeViewer::_render_calibration_thumbnail_internal(ThumbnailData& thumbnai //shader->set_uniform("emission_factor", 0.0f); } else { + switch (buffer.render_primitive_type) { + default: break; + } int uniform_color = shader->get_uniform_location("uniform_color"); auto it_path = buffer.render_paths.begin(); for (unsigned int ibuffer_id = 0; ibuffer_id < static_cast(buffer.indices.size()); ++ibuffer_id) { @@ -1744,10 +1747,10 @@ void GCodeViewer::update_layers_slider_mode() // true -> single-extruder printer profile OR // multi-extruder printer profile , but whole model is printed by only one extruder // false -> multi-extruder printer profile , and model is printed by several extruders - // bool one_extruder_printed_model = true; + bool one_extruder_printed_model = true; // extruder used for whole model for multi-extruder printer profile - // int only_extruder = -1; + int only_extruder = -1; // BBS if (wxGetApp().filaments_cnt() > 1) { @@ -1770,10 +1773,10 @@ void GCodeViewer::update_layers_slider_mode() return true; }; - // if (is_one_extruder_printed_model()) - // only_extruder = extruder; - // else - // one_extruder_printed_model = false; + if (is_one_extruder_printed_model()) + only_extruder = extruder; + else + one_extruder_printed_model = false; } } @@ -3244,6 +3247,12 @@ void GCodeViewer::refresh_render_paths(bool keep_sequential_current_first, bool return in_layers_range(path.sub_paths.front().first.s_id) && in_layers_range(path.sub_paths.back().last.s_id); }; + //BBS + auto is_extruder_in_layer_range = [this](const Path& path, size_t extruder_id) { + return path.extruder_id == extruder_id; + }; + + auto is_travel_in_layers_range = [this](size_t path_id, size_t min_id, size_t max_id) { const TBuffer& buffer = m_buffers[buffer_id(EMoveType::Travel)]; if (path_id >= buffer.paths.size()) @@ -4088,6 +4097,7 @@ void GCodeViewer::render_all_plates_stats(const std::vector support_used_filaments_g_all_plates; float total_time_all_plates = 0.0f; float total_cost_all_plates = 0.0f; + bool show_detailed_statistics_page = false; struct ColumnData { enum { Model = 1, @@ -4389,6 +4399,7 @@ void GCodeViewer::render_legend(float &legend_height, int canvas_width, int canv const float icon_size = ImGui::GetTextLineHeight() * 0.7; //BBS GUI refactor //const float percent_bar_size = 2.0f * ImGui::GetTextLineHeight(); + const float percent_bar_size = 0; bool imperial_units = wxGetApp().app_config->get("use_inches") == "1"; ImDrawList* draw_list = ImGui::GetWindowDrawList(); @@ -4500,6 +4511,7 @@ void GCodeViewer::render_legend(float &legend_height, int canvas_width, int canv append_range_item(0, range.min, decimals); } else { + const float step_size = range.step_size(); for (int i = static_cast(Range_Colors.size()) - 1; i >= 0; --i) { append_range_item(i, range.get_value_at_step(i), decimals); } @@ -4548,7 +4560,7 @@ void GCodeViewer::render_legend(float &legend_height, int canvas_width, int canv return ret; }; - /*auto color_print_ranges = [this](unsigned char extruder_id, const std::vector& custom_gcode_per_print_z) { + auto color_print_ranges = [this](unsigned char extruder_id, const std::vector& custom_gcode_per_print_z) { std::vector>> ret; ret.reserve(custom_gcode_per_print_z.size()); @@ -4577,7 +4589,27 @@ void GCodeViewer::render_legend(float &legend_height, int canvas_width, int canv } return ret; - };*/ + }; + + auto upto_label = [](double z) { + char buf[64]; + ::sprintf(buf, "%.2f", z); + return _u8L("up to") + " " + std::string(buf) + " " + _u8L("mm"); + }; + + auto above_label = [](double z) { + char buf[64]; + ::sprintf(buf, "%.2f", z); + return _u8L("above") + " " + std::string(buf) + " " + _u8L("mm"); + }; + + auto fromto_label = [](double z1, double z2) { + char buf1[64]; + ::sprintf(buf1, "%.2f", z1); + char buf2[64]; + ::sprintf(buf2, "%.2f", z2); + return _u8L("from") + " " + std::string(buf1) + " " + _u8L("to") + " " + std::string(buf2) + " " + _u8L("mm"); + }; auto role_time_and_percent = [time_mode](ExtrusionRole role) { auto it = std::find_if(time_mode.roles_times.begin(), time_mode.roles_times.end(), [role](const std::pair& item) { return role == item.first; }); @@ -5074,7 +5106,7 @@ void GCodeViewer::render_legend(float &legend_height, int canvas_width, int canv ImGuiWindow* window = ImGui::GetCurrentWindow(); const ImRect separator(ImVec2(window->Pos.x + window_padding * 3, window->DC.CursorPos.y), ImVec2(window->Pos.x + window->Size.x - window_padding * 3, window->DC.CursorPos.y + 1.0f)); ImGui::ItemSize(ImVec2(0.0f, 0.0f)); - ImGui::ItemAdd(separator, 0); + const bool item_visible = ImGui::ItemAdd(separator, 0); window->DrawList->AddLine(separator.Min, ImVec2(separator.Max.x, separator.Min.y), ImGui::GetColorU32(ImGuiCol_Separator)); std::vector> columns_offsets; @@ -5196,7 +5228,7 @@ void GCodeViewer::render_legend(float &legend_height, int canvas_width, int canv return items; }; - /*auto append_color_change = [&imgui](const ColorRGBA& color1, const ColorRGBA& color2, const std::array& offsets, const Times& times) { + auto append_color_change = [&imgui](const ColorRGBA& color1, const ColorRGBA& color2, const std::array& offsets, const Times& times) { imgui.text(_u8L("Color change")); ImGui::SameLine(); @@ -5213,9 +5245,9 @@ void GCodeViewer::render_legend(float &legend_height, int canvas_width, int canv ImGui::SameLine(offsets[0]); imgui.text(short_time(get_time_dhms(times.second - times.first))); - };*/ + }; - /*auto append_print = [&imgui, imperial_units](const ColorRGBA& color, const std::array& offsets, const Times& times, std::pair used_filament) { + auto append_print = [&imgui, imperial_units](const ColorRGBA& color, const std::array& offsets, const Times& times, std::pair used_filament) { imgui.text(_u8L("Print")); ImGui::SameLine(); @@ -5241,7 +5273,7 @@ void GCodeViewer::render_legend(float &legend_height, int canvas_width, int canv ::sprintf(buffer, "%.2f g", used_filament.second); imgui.text(buffer); } - };*/ + }; PartialTimes partial_times = generate_partial_times(time_mode.custom_gcode_times, m_print_statistics.volumes_per_color_change); if (!partial_times.empty()) { @@ -5348,7 +5380,7 @@ void GCodeViewer::render_legend(float &legend_height, int canvas_width, int canv // } //} -/* auto any_option_available = [this]() { + auto any_option_available = [this]() { auto available = [this](EMoveType type) { const TBuffer& buffer = m_buffers[buffer_id(type)]; return buffer.visible && buffer.has_data(); @@ -5361,7 +5393,7 @@ void GCodeViewer::render_legend(float &legend_height, int canvas_width, int canv available(EMoveType::Tool_change) || available(EMoveType::Unretract) || available(EMoveType::Seam); - };*/ + }; //auto add_option = [this, append_item](EMoveType move_type, EOptionsColors color, const std::string& text) { // const TBuffer& buffer = m_buffers[buffer_id(move_type)]; diff --git a/src/slic3r/GUI/GLCanvas3D.cpp b/src/slic3r/GUI/GLCanvas3D.cpp index bf791cdec66..6365b88a26f 100644 --- a/src/slic3r/GUI/GLCanvas3D.cpp +++ b/src/slic3r/GUI/GLCanvas3D.cpp @@ -2773,7 +2773,7 @@ void GLCanvas3D::reload_scene(bool refresh_immediately, bool force_full_scene_re ModelInstanceEPrintVolumeState state; const bool contained_min_one = m_volumes.check_outside_state(m_bed.build_volume(), &state); const bool partlyOut = (state == ModelInstanceEPrintVolumeState::ModelInstancePVS_Partly_Outside); - // const bool fullyOut = (state == ModelInstanceEPrintVolumeState::ModelInstancePVS_Fully_Outside); + const bool fullyOut = (state == ModelInstanceEPrintVolumeState::ModelInstancePVS_Fully_Outside); _set_warning_notification(EWarning::ObjectClashed, partlyOut); //BBS: turn off the warning when fully outside @@ -4080,12 +4080,12 @@ void GLCanvas3D::on_mouse(wxMouseEvent& evt) // Set focus in order to remove it from sidebar fields if (m_canvas != nullptr) { // Only set focus, if the top level window of this canvas is active. -// auto p = dynamic_cast(evt.GetEventObject()); -// while (p->GetParent()) -// p = p->GetParent(); -// auto *top_level_wnd = dynamic_cast(p); -// if (top_level_wnd && top_level_wnd->IsActive() && !wxGetApp().get_side_menu_popup_status()) - // m_canvas->SetFocus(); + auto p = dynamic_cast(evt.GetEventObject()); + while (p->GetParent()) + p = p->GetParent(); + auto *top_level_wnd = dynamic_cast(p); + if (top_level_wnd && top_level_wnd->IsActive() && !wxGetApp().get_side_menu_popup_status()) + ;// m_canvas->SetFocus(); m_mouse.position = pos.cast(); m_tooltip_enabled = false; // 1) forces a frame render to ensure that m_hover_volume_idxs is updated even when the user right clicks while @@ -4875,6 +4875,14 @@ void GLCanvas3D::do_center() m_selection.center(); } +void GLCanvas3D::do_drop() +{ + if (m_model == nullptr) + return; + + m_selection.drop(); +} + void GLCanvas3D::do_center_plate(const int plate_idx) { if (m_model == nullptr) return; @@ -5085,6 +5093,7 @@ std::vector GLCanvas3D::get_empty_cells(const Vec2f start_point, const Ve } for (size_t i = 0; i < m_model->objects.size(); ++i) { ModelObject* model_object = m_model->objects[i]; + auto id = model_object->id().id; ModelInstance* model_instance0 = model_object->instances.front(); Polygon hull_2d = model_object->convex_hull_2d(Geometry::assemble_transform({ 0.0, 0.0, model_instance0->get_offset().z() }, model_instance0->get_rotation(), model_instance0->get_scaling_factor(), model_instance0->get_mirror())); @@ -5355,6 +5364,7 @@ void GLCanvas3D::update_sequential_clearance() for (int i = k+1; i < bounding_box_count; i++) { + Polygon& next_convex = convex_and_bounding_boxes[i].hull_polygon; BoundingBox& next_bbox = convex_and_bounding_boxes[i].bounding_box; auto py1 = next_bbox.min.y(); auto py2 = next_bbox.max.y(); @@ -5415,6 +5425,7 @@ bool GLCanvas3D::_render_orient_menu(float left, float right, float bottom, floa ImGuiWrapper* imgui = wxGetApp().imgui(); auto canvas_w = float(get_canvas_size().get_width()); + auto canvas_h = float(get_canvas_size().get_height()); //BBS: GUI refactor: move main toolbar to the right //original use center as {0.0}, and top is (canvas_h/2), bottom is (-canvas_h/2), also plus inv_camera //now change to left_up as {0,0}, and top is 0, bottom is canvas_h @@ -5423,7 +5434,6 @@ bool GLCanvas3D::_render_orient_menu(float left, float right, float bottom, floa ImGuiWrapper::push_toolbar_style(get_scale()); imgui->set_next_window_pos(x, m_main_toolbar.get_height(), ImGuiCond_Always, 0.5f, 0.0f); #else - auto canvas_h = float(get_canvas_size().get_height()); const float x = canvas_w - m_main_toolbar.get_width(); const float y = 0.5f * canvas_h - top * float(wxGetApp().plater()->get_camera().get_zoom()); imgui->set_next_window_pos(x, y, ImGuiCond_Always, 1.0f, 0.0f); @@ -5438,13 +5448,13 @@ bool GLCanvas3D::_render_orient_menu(float left, float right, float bottom, floa PrinterTechnology ptech = current_printer_technology(); bool settings_changed = false; - // float angle_min = 45.f; + float angle_min = 45.f; std::string angle_key = "overhang_angle", rot_key = "enable_rotation"; std::string key_min_area = "min_area"; std::string postfix = "_fff"; if (ptech == ptSLA) { - // angle_min = 45.f; + angle_min = 45.f; postfix = "_sla"; } @@ -5500,6 +5510,7 @@ bool GLCanvas3D::_render_arrange_menu(float left, float right, float bottom, flo ImGuiWrapper *imgui = wxGetApp().imgui(); auto canvas_w = float(get_canvas_size().get_width()); + auto canvas_h = float(get_canvas_size().get_height()); //BBS: GUI refactor: move main toolbar to the right //original use center as {0.0}, and top is (canvas_h/2), bottom is (-canvas_h/2), also plus inv_camera //now change to left_up as {0,0}, and top is 0, bottom is canvas_h @@ -5507,8 +5518,8 @@ bool GLCanvas3D::_render_arrange_menu(float left, float right, float bottom, flo float left_pos = m_main_toolbar.get_item("arrange")->render_left_pos; const float x = (1 + left_pos) * canvas_w / 2; imgui->set_next_window_pos(x, m_main_toolbar.get_height(), ImGuiCond_Always, 0.0f, 0.0f); + #else - auto canvas_h = float(get_canvas_size().get_height()); const float x = canvas_w - m_main_toolbar.get_width(); const float y = 0.5f * canvas_h - top * float(wxGetApp().plater()->get_camera().get_zoom()); imgui->set_next_window_pos(x, y, ImGuiCond_Always, 1.0f, 0.0f); @@ -7470,7 +7481,7 @@ void GLCanvas3D::_check_and_update_toolbar_icon_scale() #if ENABLE_RETINA_GL new_scale /= m_retina_helper->get_scale_factor(); #endif - if (fabs(new_scale - scale) > 0.01) // scale is changed by 1% and more + if (fabs(new_scale - scale) > 0.05) // scale is changed by 5% and more wxGetApp().set_auto_toolbar_icon_scale(new_scale); } @@ -8088,13 +8099,16 @@ void GLCanvas3D::_render_return_toolbar() const ImVec2 button_icon_size = ImVec2(font_size * 1.3, font_size * 1.3); ImGuiWrapper& imgui = *wxGetApp().imgui(); + Size cnv_size = get_canvas_size(); + auto canvas_w = float(cnv_size.get_width()); + auto canvas_h = float(cnv_size.get_height()); + float window_width = real_size.x + button_icon_size.x + imgui.scaled(2.0f); + float window_height = button_icon_size.y + imgui.scaled(2.0f); float window_pos_x = 30.0f + (is_collapse_toolbar_on_left() ? (get_collapse_toolbar_width() + 5.f) : 0); float window_pos_y = 14.0f; imgui.set_next_window_pos(window_pos_x, window_pos_y, ImGuiCond_Always, 0, 0); #ifdef __WINDOWS__ - float window_width = real_size.x + button_icon_size.x + imgui.scaled(2.0f); - float window_height = button_icon_size.y + imgui.scaled(2.0f); imgui.set_next_window_size(window_width, window_height, ImGuiCond_Always); #endif @@ -8108,6 +8122,9 @@ void GLCanvas3D::_render_return_toolbar() const imgui.begin(_L("Assembly Return"), ImGuiWindowFlags_NoResize | ImGuiWindowFlags_NoScrollbar | ImGuiWindowFlags_NoBackground | ImGuiWindowFlags_NoMove | ImGuiWindowFlags_NoTitleBar | ImGuiWindowFlags_NoCollapse); + float button_width = 20; + float button_height = 20; + ImVec2 size = ImVec2(button_width, button_height); // Size of the image we want to make visible ImVec2 uv0 = ImVec2(0.0f, 0.0f); ImVec2 uv1 = ImVec2(1.0f, 1.0f); @@ -8383,11 +8400,11 @@ void GLCanvas3D::_render_assemble_control() const ImGui::SameLine(window_padding.x + 2 * text_size_x + slider_width + item_spacing * 7 + value_size); ImGui::PushItemWidth(slider_width); - imgui->bbl_slider_float_style("##ratio_slider", &m_explosion_ratio, 1.0f, 3.0f, "%1.2f"); + bool explosion_slider_changed = imgui->bbl_slider_float_style("##ratio_slider", &m_explosion_ratio, 1.0f, 3.0f, "%1.2f"); ImGui::SameLine(window_padding.x + 2 * text_size_x + 2 * slider_width + item_spacing * 8 + value_size); ImGui::PushItemWidth(value_size); - ImGui::BBLDragFloat("##ratio_input", &m_explosion_ratio, 0.1f, 1.0f, 3.0f, "%1.2f"); + bool explosion_input_changed = ImGui::BBLDragFloat("##ratio_input", &m_explosion_ratio, 0.1f, 1.0f, 3.0f, "%1.2f"); } imgui->end(); @@ -8417,6 +8434,7 @@ void GLCanvas3D::_render_assemble_info() const auto canvas_h = float(get_canvas_size().get_height()); float space_size = imgui->get_style_scaling() * 8.0f; float caption_max = imgui->calc_text_size(_L("Total Volume:")).x + 3 * space_size; + char buf[3][64]; ImGuiIO& io = ImGui::GetIO(); ImFont* font = io.Fonts->Fonts[0]; diff --git a/src/slic3r/GUI/GLCanvas3D.hpp b/src/slic3r/GUI/GLCanvas3D.hpp index ad4d21cf3ab..023e95a9767 100644 --- a/src/slic3r/GUI/GLCanvas3D.hpp +++ b/src/slic3r/GUI/GLCanvas3D.hpp @@ -978,6 +978,7 @@ class GLCanvas3D void do_rotate(const std::string& snapshot_type); void do_scale(const std::string& snapshot_type); void do_center(); + void do_drop(); void do_center_plate(const int plate_idx); void do_mirror(const std::string& snapshot_type); diff --git a/src/slic3r/GUI/GLTexture.cpp b/src/slic3r/GUI/GLTexture.cpp index be0b4026538..79cbb773708 100644 --- a/src/slic3r/GUI/GLTexture.cpp +++ b/src/slic3r/GUI/GLTexture.cpp @@ -470,6 +470,7 @@ void GLTexture::reset() bool GLTexture::generate_from_text_string(const std::string& text_str, wxFont &font, wxColor background, wxColor foreground) { + int w,h,hl; return generate_from_text(text_str, font, background, foreground); } diff --git a/src/slic3r/GUI/GLToolbar.cpp b/src/slic3r/GUI/GLToolbar.cpp index 6b14f3cf2f5..be97e52e84a 100644 --- a/src/slic3r/GUI/GLToolbar.cpp +++ b/src/slic3r/GUI/GLToolbar.cpp @@ -1466,6 +1466,7 @@ void GLToolbar::render_vertical(const GLCanvas3D& parent) int tex_width, tex_height; if (item->is_action_with_text_image()) { float scaled_text_size = m_layout.text_size * m_layout.scale * inv_cnv_w; + float scaled_text_width = item->get_extra_size_ratio() * icons_size_x; float scaled_text_border = 2.5 * m_layout.scale * inv_cnv_h; float scaled_text_height = icons_size_y / 2.0f; item->render_text(left, left + scaled_text_size, top - scaled_text_border - scaled_text_height, top - scaled_text_border); diff --git a/src/slic3r/GUI/GUI_App.cpp b/src/slic3r/GUI/GUI_App.cpp index 7dc8f102713..eb5ae0c38ae 100644 --- a/src/slic3r/GUI/GUI_App.cpp +++ b/src/slic3r/GUI/GUI_App.cpp @@ -301,6 +301,7 @@ class SplashScreen : public wxSplashScreen memDC.SetTextForeground(StateColor::darkModeColorFor(wxColour(144, 144, 144))); int width = bitmap.GetWidth(); int text_height = memDC.GetTextExtent(text).GetHeight(); + int text_width = memDC.GetTextExtent(text).GetWidth(); wxRect text_rect(wxPoint(0, m_action_line_y_position), wxPoint(width, m_action_line_y_position + text_height)); memDC.DrawLabel(text, text_rect, wxALIGN_CENTER); @@ -962,7 +963,7 @@ void GUI_App::post_init() // Neither wxShowEvent nor wxWindowCreateEvent work reliably. if (this->preset_updater) { // G-Code Viewer does not initialize preset_updater. CallAfter([this] { - this->config_wizard_startup(); + bool cw_showed = this->config_wizard_startup(); std::string http_url = get_http_url(app_config->get_country_code()); std::string language = GUI::into_u8(current_language_code()); @@ -1025,7 +1026,8 @@ void GUI_App::post_init() try { std::time_t lw_t = boost::filesystem::last_write_time(temp_path) ; files_vec.push_back({ lw_t, temp_path.filename().string() }); - } catch (std::exception&) {} + } catch (const std::exception &ex) { + } } std::sort(files_vec.begin(), files_vec.end(), []( std::pair &a, std::pair &b) { @@ -1315,6 +1317,7 @@ int GUI_App::download_plugin(std::string name, std::string package_name, Install .on_complete([&pro_fn, tmp_path, target_file_path](std::string body, unsigned status) { BOOST_LOG_TRIVIAL(info) << "[download_plugin 2] completed"; bool cancel = false; + int percent = 0; fs::fstream file(tmp_path, std::ios::out | std::ios::binary | std::ios::trunc); file.write(body.c_str(), body.size()); file.close(); @@ -1924,13 +1927,8 @@ void GUI_App::init_app_config() boost::filesystem::create_directory(data_dir_path); } - // Change current directory of application - auto path = encode_path((Slic3r::data_dir() + "/log").c_str()); -#ifdef _WIN32 - _chdir(path.c_str()); -#else - chdir(path.c_str()); -#endif + // Change current dirtory of application + chdir(encode_path((Slic3r::data_dir() + "/log").c_str()).c_str()); } else { m_datadir_redefined = true; } @@ -3367,7 +3365,7 @@ if (res) { mainframe->refresh_plugin_tips(); // BBS: remove SLA related message } - } catch (std::exception&) { + } catch (std::exception &e) { // wxMessageBox(e.what(), "", MB_OK); } } @@ -3381,7 +3379,9 @@ void GUI_App::ShowDownNetPluginDlg() { return; DownloadProgressDialog dlg(_L("Downloading Bambu Network Plug-in")); dlg.ShowModal(); - } catch (std::exception&) {} + } catch (std::exception &e) { + ; + } } void GUI_App::ShowUserLogin(bool show) @@ -3396,7 +3396,9 @@ void GUI_App::ShowUserLogin(bool show) login_dlg = new ZUserLogin(); } login_dlg->ShowModal(); - } catch (std::exception&) {} + } catch (std::exception &e) { + ; + } } else { if (login_dlg) login_dlg->EndModal(wxID_OK); @@ -3416,7 +3418,7 @@ void GUI_App::ShowOnlyFilament() { // BBS: remove SLA related message } - } catch (std::exception&) { + } catch (std::exception &e) { // wxMessageBox(e.what(), "", MB_OK); } } @@ -3828,10 +3830,10 @@ std::string GUI_App::handle_web_request(std::string cmd) auto keyCode = key_event_node.get("key"); auto ctrlKey = key_event_node.get("ctrl"); auto shiftKey = key_event_node.get("shift"); + auto cmdKey = key_event_node.get("cmd"); wxKeyEvent e(wxEVT_CHAR_HOOK); #ifdef __APPLE__ - auto cmdKey = key_event_node.get("cmd"); e.SetControlDown(cmdKey); e.SetRawControlDown(ctrlKey); #else @@ -4787,6 +4789,8 @@ void GUI_App::start_sync_user_preset(bool with_progress_dlg) }); } + unsigned int http_code = 200; + /* get list witch need to be deleted*/ std::vector delete_cache_presets = get_delete_cache_presets_lock(); for (auto it = delete_cache_presets.begin(); it != delete_cache_presets.end();) { @@ -5470,7 +5474,7 @@ void GUI_App::show_ip_address_enter_dialog_handler(wxCommandEvent& evt) void GUI_App::open_preferences(size_t open_on_tab, const std::string& highlight_option) { - // bool app_layout_changed = false; + bool app_layout_changed = false; { // the dialog needs to be destroyed before the call to recreate_GUI() // or sometimes the application crashes into wxDialogBase() destructor @@ -6503,6 +6507,8 @@ static bool del_win_registry(HKEY hkeyHive, const wchar_t *pszVar, const wchar_t return false; if (!bDidntExist) { + DWORD dwDisposition; + HKEY hkey; iRC = ::RegDeleteKeyExW(hkeyHive, pszVar, KEY_ALL_ACCESS, 0); if (iRC == ERROR_SUCCESS) { return true; diff --git a/src/slic3r/GUI/GUI_AuxiliaryList.cpp b/src/slic3r/GUI/GUI_AuxiliaryList.cpp index 5e0d0dcd217..1fa5b194ec6 100644 --- a/src/slic3r/GUI/GUI_AuxiliaryList.cpp +++ b/src/slic3r/GUI/GUI_AuxiliaryList.cpp @@ -3,6 +3,8 @@ #include "I18N.hpp" #include "wxExtensions.hpp" +#include + #include "GUI_App.hpp" #include "Plater.hpp" #include "libslic3r/Model.hpp" diff --git a/src/slic3r/GUI/GUI_Factories.cpp b/src/slic3r/GUI/GUI_Factories.cpp index 334705618ed..ee19b25497f 100644 --- a/src/slic3r/GUI/GUI_Factories.cpp +++ b/src/slic3r/GUI/GUI_Factories.cpp @@ -711,9 +711,9 @@ wxMenuItem* MenuFactory::append_menu_item_settings(wxMenu* menu_) // Create new items for settings popupmenu -// if (printer_technology() == ptFFF || -// (menu->GetMenuItems().size() > 0 && !menu->GetMenuItems().back()->IsSeparator())) - // menu->SetFirstSeparator(); + if (printer_technology() == ptFFF || + (menu->GetMenuItems().size() > 0 && !menu->GetMenuItems().back()->IsSeparator())) + ;// menu->SetFirstSeparator(); // detect itemm for adding of the setting ObjectList* object_list = obj_list(); @@ -1314,6 +1314,8 @@ void MenuFactory::create_extra_object_menu() append_menu_item_merge_parts_to_single_part(&m_object_menu); // Object Center append_menu_item_center(&m_object_menu); + // Object Drop + append_menu_item_drop(&m_object_menu); // Object Split wxMenu* split_menu = new wxMenu(); if (!split_menu) @@ -1339,7 +1341,7 @@ void MenuFactory::create_extra_object_menu() m_object_menu.AppendSeparator(); // Set filament insert menu item here // Set Printable - append_menu_item_printable(&m_object_menu); + wxMenuItem* menu_item_printable = append_menu_item_printable(&m_object_menu); append_menu_item_per_object_process(&m_object_menu); // Enter per object parameters append_menu_item_per_object_settings(&m_object_menu); @@ -1436,6 +1438,7 @@ void MenuFactory::create_bbl_part_menu() append_menu_item_fix_through_netfabb(menu); append_menu_item_simplify(menu); append_menu_item_center(menu); + append_menu_item_drop(menu); append_menu_items_mirror(menu); wxMenu* split_menu = new wxMenu(); if (!split_menu) @@ -1493,6 +1496,8 @@ void MenuFactory::create_plate_menu() // arrange objects on current plate append_menu_item(menu, wxID_ANY, _L("Arrange"), _L("arrange current plate"), [](wxCommandEvent&) { + PartPlate* plate = plater()->get_partplate_list().get_selected_plate(); + assert(plate); plater()->set_prepare_state(Job::PREPARE_STATE_MENU); plater()->arrange(); }, "", nullptr, @@ -1505,6 +1510,8 @@ void MenuFactory::create_plate_menu() append_menu_item( menu, wxID_ANY, _L("Reload All"), _L("reload all from disk"), [](wxCommandEvent&) { + PartPlate* plate = plater()->get_partplate_list().get_selected_plate(); + assert(plate); plater()->set_prepare_state(Job::PREPARE_STATE_MENU); plater()->reload_all_from_disk(); }, @@ -1513,6 +1520,8 @@ void MenuFactory::create_plate_menu() // orient objects on current plate append_menu_item(menu, wxID_ANY, _L("Auto Rotate"), _L("auto rotate current plate"), [](wxCommandEvent&) { + PartPlate* plate = plater()->get_partplate_list().get_selected_plate(); + assert(plate); //BBS TODO call auto rotate for current plate plater()->set_prepare_state(Job::PREPARE_STATE_MENU); plater()->orient(); @@ -1675,6 +1684,7 @@ wxMenu* MenuFactory::multi_selection_menu() index++; } append_menu_item_center(menu); + append_menu_item_drop(menu); append_menu_item_fix_through_netfabb(menu); //append_menu_item_simplify(menu); append_menu_item_delete(menu); @@ -1691,6 +1701,7 @@ wxMenu* MenuFactory::multi_selection_menu() } else { append_menu_item_center(menu); + append_menu_item_drop(menu); append_menu_item_fix_through_netfabb(menu); //append_menu_item_simplify(menu); append_menu_item_delete(menu); @@ -1795,7 +1806,7 @@ void MenuFactory::append_menu_item_clone(wxMenu* menu) void MenuFactory::append_menu_item_simplify(wxMenu* menu) { - append_menu_item(menu, wxID_ANY, _L("Simplify Model"), "", + wxMenuItem* menu_item = append_menu_item(menu, wxID_ANY, _L("Simplify Model"), "", [](wxCommandEvent&) { obj_list()->simplify(); }, "", menu, []() {return plater()->can_simplify(); }, m_parent); } @@ -1819,6 +1830,21 @@ void MenuFactory::append_menu_item_center(wxMenu* menu) }, m_parent); } +void MenuFactory::append_menu_item_drop(wxMenu* menu) +{ + append_menu_item(menu, wxID_ANY, _L("Drop") , "", + [this](wxCommandEvent&) { + plater()->drop_selection(); + }, "", nullptr, + []() { + if (plater()->canvas3D()->get_canvas_type() != GLCanvas3D::ECanvasType::CanvasView3D) + return false; + else { + return (plater()->get_view3D_canvas3D()->get_selection().get_bounding_box().min.z() != 0); + } //disable if model is on the bed / not in View3D + }, m_parent); +} + void MenuFactory::append_menu_item_per_object_process(wxMenu* menu) { const std::vector names = { _L("Edit Process Settings"), _L("Edit Process Settings") }; @@ -1893,16 +1919,16 @@ void MenuFactory::append_menu_item_change_filament(wxMenu* menu) wxMenu* extruder_selection_menu = new wxMenu(); const wxString& name = sels.Count() == 1 ? names[0] : names[1]; - // int initial_extruder = -1; // negative value for multiple object/part selection - // if (sels.Count() == 1) { - // const ModelConfig& config = obj_list()->get_item_config(sels[0]); - // // BBS - // const auto sel_vol = obj_list()->get_selected_model_volume(); - // if (sel_vol && sel_vol->type() == ModelVolumeType::PARAMETER_MODIFIER) - // initial_extruder = config.has("extruder") ? config.extruder() : 0; - // else - // initial_extruder = config.has("extruder") ? config.extruder() : 1; - // } + int initial_extruder = -1; // negative value for multiple object/part selection + if (sels.Count() == 1) { + const ModelConfig& config = obj_list()->get_item_config(sels[0]); + // BBS + const auto sel_vol = obj_list()->get_selected_model_volume(); + if (sel_vol && sel_vol->type() == ModelVolumeType::PARAMETER_MODIFIER) + initial_extruder = config.has("extruder") ? config.extruder() : 0; + else + initial_extruder = config.has("extruder") ? config.extruder() : 1; + } // BBS bool has_modifier = false; @@ -1943,6 +1969,7 @@ void MenuFactory::append_menu_item_change_filament(wxMenu* menu) void MenuFactory::append_menu_item_set_printable(wxMenu* menu) { + const Selection& selection = plater()->canvas3D()->get_selection(); bool all_printable = true; ObjectList* list = obj_list(); wxDataViewItemArray sels; @@ -1950,6 +1977,7 @@ void MenuFactory::append_menu_item_set_printable(wxMenu* menu) for (wxDataViewItem item : sels) { ItemType type = list->GetModel()->GetItemType(item); + bool check; if (type != itInstance && type != itObject) continue; else { @@ -1992,8 +2020,8 @@ void MenuFactory::append_menu_item_locked(wxMenu* menu) }, "", nullptr, []() { return true; }, m_parent); m_parent->Bind(wxEVT_UPDATE_UI, [](wxUpdateUIEvent& evt) { - // PartPlate* plate = plater()->get_partplate_list().get_selected_plate(); - // assert(plate); + PartPlate* plate = plater()->get_partplate_list().get_selected_plate(); + assert(plate); //bool check = plate->is_locked(); //evt.Check(check); plater()->set_current_canvas_as_dirty(); @@ -2029,6 +2057,8 @@ void MenuFactory::append_menu_item_plate_name(wxMenu *menu) m_parent->Bind( wxEVT_UPDATE_UI, [](wxUpdateUIEvent &evt) { + PartPlate *plate = plater()->get_partplate_list().get_selected_plate(); + assert(plate); plater()->set_current_canvas_as_dirty(); }, item->GetId()); diff --git a/src/slic3r/GUI/GUI_Factories.hpp b/src/slic3r/GUI/GUI_Factories.hpp index f0e503c4500..7c73e0facf0 100644 --- a/src/slic3r/GUI/GUI_Factories.hpp +++ b/src/slic3r/GUI/GUI_Factories.hpp @@ -157,6 +157,7 @@ class MenuFactory void append_menu_item_clone(wxMenu* menu); void append_menu_item_simplify(wxMenu* menu); void append_menu_item_center(wxMenu* menu); + void append_menu_item_drop(wxMenu* menu); void append_menu_item_per_object_process(wxMenu* menu); void append_menu_item_per_object_settings(wxMenu* menu); void append_menu_item_change_filament(wxMenu* menu); diff --git a/src/slic3r/GUI/GUI_ObjectList.cpp b/src/slic3r/GUI/GUI_ObjectList.cpp index d7d083f35fd..30846abf51b 100644 --- a/src/slic3r/GUI/GUI_ObjectList.cpp +++ b/src/slic3r/GUI/GUI_ObjectList.cpp @@ -713,6 +713,7 @@ void ObjectList::update_plate_values_for_items() Unselect(item); bool is_old_parent_expanded = IsExpanded(old_parent); + bool is_expanded = IsExpanded(item); m_objects_model->OnPlateChange(plate_idx, item); if (is_old_parent_expanded) Expand(old_parent); @@ -738,6 +739,7 @@ void ObjectList::object_config_options_changed(const ObjectVolumeID& ov_id) if (ov_id.object == nullptr) return; + ModelObjectPtrs& objects = wxGetApp().model().objects; ModelObject* mo = ov_id.object; ModelVolume* mv = ov_id.volume; @@ -844,6 +846,8 @@ void ObjectList::update_filament_colors() void ObjectList::update_name_column_width() const { wxSize client_size = this->GetClientSize(); + bool p_vbar = this->GetParent()->HasScrollbar(wxVERTICAL); + bool p_hbar = this->GetParent()->HasScrollbar(wxHORIZONTAL); auto em = em_unit(const_cast(this)); // BBS: walkaround for wxDataViewCtrl::HasScrollbar() does not return correct status @@ -932,6 +936,7 @@ void ObjectList::update_name_in_model(const wxDataViewItem& item) const if (m_objects_model->GetItemType(item) & itPlate) { std::string name = m_objects_model->GetName(item).ToUTF8().data(); int plate_idx = -1; + const ItemType type0 = m_objects_model->GetItemType(item, plate_idx); if (plate_idx >= 0) { auto plate = wxGetApp().plater()->get_partplate_list().get_plate(plate_idx); if (plate->get_plate_name() != name) { @@ -1346,7 +1351,8 @@ void ObjectList::show_context_menu(const bool evt_context_menu) plater->SetPlateIndexByRightMenuInLeftUI(-1); if (type & itPlate) { int plate_idx = -1; - if (plate_idx >= 0) { + const ItemType type0 = m_objects_model->GetItemType(item, plate_idx); + if (plate_idx >= 0) { plater->SetPlateIndexByRightMenuInLeftUI(plate_idx); } } @@ -2000,7 +2006,7 @@ void ObjectList::load_modifier(const wxArrayString& input_files, ModelObject& mo try { model = Model::read_from_file(input_file, nullptr, nullptr, LoadStrategy::LoadModel); } - catch (std::exception&) { + catch (std::exception& e) { // auto msg = _L("Error!") + " " + input_file + " : " + e.what() + "."; auto msg = _L("Error!") + " " + _L("Failed to get the model data in the current file."); show_error(parent, msg); @@ -2899,7 +2905,7 @@ void ObjectList::boolean() new_object->config.assign_config(object->config); if (new_object->instances.empty()) new_object->add_instance(); - new_object->add_volume(mesh); + ModelVolume* new_volume = new_object->add_volume(mesh); // BBS: ensure on bed but no need to ensure locate in the center around origin new_object->ensure_on_bed(); @@ -2946,9 +2952,9 @@ DynamicPrintConfig ObjectList::get_default_layer_config(const int obj_idx) wxGetApp().preset_bundle->prints.get_edited_preset().config.opt_float("layer_height"); config.set_key_value("layer_height",new ConfigOptionFloat(layer_height)); // BBS - // int extruder = object(obj_idx)->config.has("extruder") ? - // object(obj_idx)->config.opt_int("extruder") : - // wxGetApp().preset_bundle->prints.get_edited_preset().config.opt_float("extruder"); + int extruder = object(obj_idx)->config.has("extruder") ? + object(obj_idx)->config.opt_int("extruder") : + wxGetApp().preset_bundle->prints.get_edited_preset().config.opt_float("extruder"); config.set_key_value("extruder", new ConfigOptionInt(0)); return config; @@ -3170,8 +3176,8 @@ void ObjectList::part_selection_changed() bool update_and_show_settings = false; bool update_and_show_layers = false; - // bool enable_manipulation{true}; Orca: Removed because not used - // bool disable_ss_manipulation{false}; Orca: Removed because not used + bool enable_manipulation{true}; + bool disable_ss_manipulation{false}; bool disable_ununiform_scale{false}; const auto item = GetSelection(); @@ -3179,7 +3185,7 @@ void ObjectList::part_selection_changed() og_name = _L("Cut Connectors information"); update_and_show_manipulations = true; - // enable_manipulation = false; + enable_manipulation = false; disable_ununiform_scale = true; } else if (item && (m_objects_model->GetItemType(item) & itPlate)) { @@ -3196,7 +3202,7 @@ void ObjectList::part_selection_changed() obj_idx = selection.get_object_idx(); ModelObject *object = (*m_objects)[obj_idx]; m_config = &object->config; - // disable_ss_manipulation = object->is_cut(); + disable_ss_manipulation = object->is_cut(); } else { og_name = _L("Group manipulation"); @@ -3205,17 +3211,17 @@ void ObjectList::part_selection_changed() update_and_show_manipulations = !selection.is_single_full_instance(); if (int obj_idx = selection.get_object_idx(); obj_idx >= 0) { - // if (selection.is_any_volume() || selection.is_any_modifier()) - // enable_manipulation = !(*m_objects)[obj_idx]->is_cut(); - // else // if (item && m_objects_model->GetItemType(item) == itInstanceRoot) - // disable_ss_manipulation = (*m_objects)[obj_idx]->is_cut(); + if (selection.is_any_volume() || selection.is_any_modifier()) + enable_manipulation = !(*m_objects)[obj_idx]->is_cut(); + else // if (item && m_objects_model->GetItemType(item) == itInstanceRoot) + disable_ss_manipulation = (*m_objects)[obj_idx]->is_cut(); } else { wxDataViewItemArray sels; GetSelections(sels); if (selection.is_single_full_object() || selection.is_multiple_full_instance()) { - // int obj_idx = m_objects_model->GetObjectIdByItem(sels.front()); - // disable_ss_manipulation = (*m_objects)[obj_idx]->is_cut(); + int obj_idx = m_objects_model->GetObjectIdByItem(sels.front()); + disable_ss_manipulation = (*m_objects)[obj_idx]->is_cut(); } else if (selection.is_mixed() || selection.is_multiple_full_object()) { std::map> cut_objects; @@ -3234,7 +3240,7 @@ void ObjectList::part_selection_changed() // check if selected cut objects are "full selected" for (auto cut_object : cut_objects) if (cut_object.first.check_sum() != cut_object.second.size()) { - // disable_ss_manipulation = true; + disable_ss_manipulation = true; break; } disable_ununiform_scale = !cut_objects.empty(); @@ -3282,7 +3288,7 @@ void ObjectList::part_selection_changed() // BBS: select object to edit config m_config = &(*m_objects)[obj_idx]->config; update_and_show_settings = true; - // disable_ss_manipulation = (*m_objects)[obj_idx]->is_cut(); + disable_ss_manipulation = (*m_objects)[obj_idx]->is_cut(); } } else { @@ -3310,8 +3316,8 @@ void ObjectList::part_selection_changed() m_config = &(*m_objects)[obj_idx]->volumes[volume_id]->config; update_and_show_settings = true; - // const ModelVolume *volume = (*m_objects)[obj_idx]->volumes[volume_id]; - // enable_manipulation = !((*m_objects)[obj_idx]->is_cut() && (volume->is_cut_connector() || volume->is_model_part())); + const ModelVolume *volume = (*m_objects)[obj_idx]->volumes[volume_id]; + enable_manipulation = !((*m_objects)[obj_idx]->is_cut() && (volume->is_cut_connector() || volume->is_model_part())); } else if (type & itInstance) { og_name = _L("Instance manipulation"); @@ -3319,7 +3325,7 @@ void ObjectList::part_selection_changed() // fill m_config by object's values m_config = &(*m_objects)[obj_idx]->config; - // disable_ss_manipulation = (*m_objects)[obj_idx]->is_cut(); + disable_ss_manipulation = (*m_objects)[obj_idx]->is_cut(); } else if (type & (itLayerRoot | itLayer)) { og_name = type & itLayerRoot ? _L("Height ranges") : _L("Settings for height range"); @@ -3362,7 +3368,7 @@ void ObjectList::part_selection_changed() if (printer_technology() == ptSLA) update_and_show_layers = false; else if (update_and_show_layers) { - //wxGetApp().obj_layers()->get_og()->set_name(" " + og_name + " "); + ;//wxGetApp().obj_layers()->get_og()->set_name(" " + og_name + " "); } update_min_height(); @@ -3394,6 +3400,7 @@ wxDataViewItem ObjectList::add_settings_item(wxDataViewItem parent_item, const D return ret; const bool is_object_settings = m_objects_model->GetItemType(parent_item) == itObject; + const bool is_volume_settings = m_objects_model->GetItemType(parent_item) == itVolume; const bool is_layer_settings = m_objects_model->GetItemType(parent_item) == itLayer; if (!is_object_settings) { ModelVolumeType volume_type = m_objects_model->GetVolumeType(parent_item); @@ -4682,6 +4689,8 @@ void ObjectList::select_item(const ObjectVolumeID& ov_id) void ObjectList::select_items(const std::vector& ov_ids) { + ModelObjectPtrs& objects = wxGetApp().model().objects; + wxDataViewItemArray sel_items; for (auto ov_id : ov_ids) { if (ov_id.object == nullptr) @@ -5686,7 +5695,7 @@ void ObjectList::set_extruder_for_selected_items(const int extruder) void ObjectList::on_plate_added(PartPlate* part_plate) { - m_objects_model->AddPlate(part_plate); + wxDataViewItem plate_item = m_objects_model->AddPlate(part_plate); } void ObjectList::on_plate_deleted(int plate_idx) diff --git a/src/slic3r/GUI/GUI_ObjectSettings.cpp b/src/slic3r/GUI/GUI_ObjectSettings.cpp index a0e0da3ea50..09ca8c64a87 100644 --- a/src/slic3r/GUI/GUI_ObjectSettings.cpp +++ b/src/slic3r/GUI/GUI_ObjectSettings.cpp @@ -205,7 +205,7 @@ bool ObjectSettings::update_settings_list() bool is_object_settings = false; bool is_volume_settings = false; bool is_layer_range_settings = false; - // bool is_layer_root = false; + bool is_layer_root = false; ModelObject * parent_object = nullptr; for (auto item : items) { auto type = objects_model->GetItemType(item); @@ -255,9 +255,9 @@ bool ObjectSettings::update_settings_list() t_layer_height_range height_range = objects_model->GetLayerRangeByItem(item); object_configs.emplace( (ObjectBase*)(&object->layer_config_ranges.at(height_range)), &object->layer_config_ranges.at(height_range) ); } - // else if (type == itLayerRoot) { - // is_layer_root = true; - // } + else if (type == itLayerRoot) { + is_layer_root = true; + } } auto tab_plate = dynamic_cast(wxGetApp().get_plate_tab()); diff --git a/src/slic3r/GUI/GUI_ObjectTable.cpp b/src/slic3r/GUI/GUI_ObjectTable.cpp index 7bc925e2844..56c1550c46c 100644 --- a/src/slic3r/GUI/GUI_ObjectTable.cpp +++ b/src/slic3r/GUI/GUI_ObjectTable.cpp @@ -280,6 +280,7 @@ wxGridActivationResult GridCellFilamentsEditor::TryActivate(int row, int col, wx { ObjectGridTable *table = dynamic_cast(grid->GetTable()); ObjectGridTable::ObjectGridCol* grid_col = table->get_grid_col(col); + ObjectGridTable::ObjectGridRow* grid_row = table->get_grid_row(row - 1); if ( actSource.GetOrigin() == wxGridActivationSource::Key ) { const wxKeyEvent& key_event = actSource.GetKeyEvent(); @@ -315,6 +316,7 @@ void GridCellFilamentsEditor::DoActivate(int row, int col, wxGrid* grid) if (m_cached_value != -1) { ObjectGridTable *table = dynamic_cast(grid->GetTable()); ObjectGridTable::ObjectGridCol* grid_col = table->get_grid_col(col); + ObjectGridTable::ObjectGridRow* grid_row = table->get_grid_row(row - 1); if (m_cached_value <= grid_col->choice_count) { wxString choice = grid_col->choices[m_cached_value-1]; table->SetValue(row, col, choice); @@ -330,6 +332,7 @@ void GridCellFilamentsRenderer::Draw(wxGrid &grid, wxGridCellAttr &attr, wxDC &d wxRect text_rect = rect; if (table) { + ObjectGridTable::ObjectGridCol *grid_col = table->get_grid_col(col); ObjectGridTable::ObjectGridRow *grid_row = table->get_grid_row(row - 1); ConfigOptionInt & cur_option = dynamic_cast((*grid_row)[(ObjectGridTable::GridColType) col]); @@ -469,6 +472,7 @@ wxGridActivationResult GridCellChoiceEditor::TryActivate(int row, int col, wxGri { ObjectGridTable * table = dynamic_cast(grid->GetTable()); ObjectGridTable::ObjectGridCol *grid_col = table->get_grid_col(col); + ObjectGridTable::ObjectGridRow *grid_row = table->get_grid_row(row - 1); if (actSource.GetOrigin() == wxGridActivationSource::Key) { const wxKeyEvent &key_event = actSource.GetKeyEvent(); @@ -501,6 +505,7 @@ void GridCellChoiceEditor::DoActivate(int row, int col, wxGrid *grid) if (m_cached_value != -1) { ObjectGridTable * table = dynamic_cast(grid->GetTable()); ObjectGridTable::ObjectGridCol *grid_col = table->get_grid_col(col); + ObjectGridTable::ObjectGridRow *grid_row = table->get_grid_row(row - 1); if (m_cached_value <= grid_col->choice_count) { wxString choice = grid_col->choices[m_cached_value - 1]; table->SetValue(row, col, choice); @@ -516,6 +521,7 @@ void GridCellComboBoxRenderer::Draw(wxGrid &grid, wxGridCellAttr &attr, wxDC &dc wxRect text_rect = rect; if (table) { + ObjectGridTable::ObjectGridCol *grid_col = table->get_grid_col(col); ObjectGridTable::ObjectGridRow *grid_row = table->get_grid_row(row - 1); ConfigOptionInt & cur_option = dynamic_cast((*grid_row)[(ObjectGridTable::GridColType) col]); @@ -555,6 +561,7 @@ wxString GridCellSupportEditor::ms_stringValues[2] = { wxT(""), wxT("") }; void GridCellSupportEditor::DoActivate(int row, int col, wxGrid* grid) { + ObjectGrid* local_table = dynamic_cast(grid); wxGridBlocks cell_array = grid->GetSelectedBlocks(); auto left_col = cell_array.begin()->GetLeftCol(); @@ -684,6 +691,7 @@ void GridCellSupportRenderer::Draw(wxGrid& grid, //wxGridCellBoolRenderer::Draw(grid, attr, dc, rect, row, col, isSelected); ObjectGridTable * table = dynamic_cast(grid.GetTable()); + ObjectGridTable::ObjectGridCol *grid_col = table->get_grid_col(col); ObjectGridTable::ObjectGridRow *grid_row = table->get_grid_row(row - 1); ConfigOptionBool & cur_option = dynamic_cast((*grid_row)[(ObjectGridTable::GridColType) col]); @@ -883,6 +891,7 @@ void ObjectGrid::OnKeyDown( wxKeyEvent& event ) // see include/wx/defs.h enum wxKeyCode int keyCode = event.GetKeyCode(); int ctrlMask = wxMOD_CONTROL; + int shiftMask = wxMOD_SHIFT; // Coordinates of the selected block to copy to clipboard. wxGridBlockCoords selection; wxTextDataObject text_data; @@ -1535,6 +1544,7 @@ void ObjectGridTable::SetValue( int row, int col, const wxString& value ) return; ObjectGridRow* grid_row = m_grid_data[row - 1]; ObjectGridCol* grid_col = m_col_data[col]; + ObjectList* obj_list = wxGetApp().obj_list(); if (grid_col->type == coEnum) { int enum_value = 0; for (int i = 0; i < grid_col->choice_count; i++) @@ -1802,6 +1812,9 @@ wxString ObjectGridTable::convert_filament_string(int index, wxString& filament_ void ObjectGridTable::init_cols(ObjectGrid *object_grid) { + const float font_size = 1.5f * wxGetApp().em_unit(); + + // printable for object ObjectGridCol *col = new ObjectGridCol(coBool, "printable", ObjectGridTable::category_all, true, false, true, false, wxALIGN_CENTRE); col->size = object_grid->GetTextExtent(L("Printable")).x; @@ -1897,6 +1910,7 @@ void ObjectGridTable::init_cols(ObjectGrid *object_grid) col = new ObjectGridCol(coFloat, "inner_wall_speed_reset", L("Speed"), false, true, false, false, wxALIGN_LEFT); m_col_data.push_back(col); + return; } void ObjectGridTable::construct_object_configs(ObjectGrid *object_grid) @@ -1915,8 +1929,8 @@ void ObjectGridTable::construct_object_configs(ObjectGrid *object_grid) int object_count = m_panel->m_model->objects.size(); PartPlateList& partplate_list = m_panel->m_plater->get_partplate_list(); DynamicPrintConfig& global_config = wxGetApp().preset_bundle->prints.get_edited_preset().config; - // const DynamicPrintConfig* plater_config = m_panel->m_plater->config(); - // const DynamicPrintConfig& filament_config = *plater_config; + const DynamicPrintConfig* plater_config = m_panel->m_plater->config(); + const DynamicPrintConfig& filament_config = *plater_config; for (int i = 0; i < object_count; i++) { @@ -2812,7 +2826,7 @@ int ObjectTablePanel::init_filaments_and_colors() BOOST_LOG_TRIVIAL(warning) << __FUNCTION__ << boost::format(", invalid color count:%1%, extruder count: %2%") %color_count %m_filaments_count; } - int i = 0; + unsigned int i = 0; ColorRGB rgb; while (i < m_filaments_count) { const std::string& txt_color = global_config->opt_string("filament_colour", i); @@ -3018,6 +3032,7 @@ void ObjectTablePanel::load_data() { ObjectGridTable::ObjectGridCol *grid_col = m_object_grid_table->get_grid_col(i); if (grid_col->size > 0) { + int fit_size1 = m_object_grid->GetColSize(i); m_object_grid->SetColSize(i, grid_col->size); } } @@ -3158,7 +3173,7 @@ void ObjectTablePanel::OnRowSize( wxGridSizeEvent& ev) g_dialog_max_height =(panel_size.GetHeight() > g_max_size_from_parent.GetHeight())?g_max_size_from_parent.GetHeight():panel_size.GetHeight(); this->SetMaxSize(wxSize(g_dialog_max_width, g_dialog_max_height)); - // wxSize current_size = GetParent()->GetSize(); + wxSize current_size = GetParent()->GetSize(); //if (current_size.GetHeight() < g_dialog_max_height) GetParent()->SetMaxSize(wxSize(g_dialog_max_width, g_dialog_max_height)); GetParent()->SetSize(wxSize(g_dialog_max_width, g_dialog_max_height)); @@ -3172,7 +3187,7 @@ void ObjectTablePanel::OnColSize( wxGridSizeEvent& ev) g_dialog_max_height =(panel_size.GetHeight() > g_max_size_from_parent.GetHeight())?g_max_size_from_parent.GetHeight():panel_size.GetHeight(); this->SetMaxSize(wxSize(g_dialog_max_width, g_dialog_max_height)); - // wxSize current_size = GetParent()->GetSize(); + wxSize current_size = GetParent()->GetSize(); //if (current_size.GetWidth() < g_dialog_max_width) GetParent()->SetMaxSize(wxSize(g_dialog_max_width, g_dialog_max_height)); GetParent()->SetSize(wxSize(g_dialog_max_width, g_dialog_max_height)); @@ -3456,6 +3471,8 @@ void GridCellTextEditor::SetSize(const wxRect &rect) { wxGridCellTextEditor::Set void GridCellTextEditor::BeginEdit(int row, int col, wxGrid *grid) { ObjectGridTable * table = dynamic_cast(grid->GetTable()); + ObjectGridTable::ObjectGridCol *grid_col = table->get_grid_col(col); + ObjectGridTable::ObjectGridRow *grid_row = table->get_grid_row(row - 1); auto val = table->GetValue(row, col); @@ -3489,6 +3506,10 @@ void GridCellTextEditor::BeginEdit(int row, int col, wxGrid *grid) bool GridCellTextEditor::EndEdit(int row, int col, const wxGrid *grid, const wxString &WXUNUSED(oldval), wxString *newval) { + ObjectGridTable * table = dynamic_cast(grid->GetTable()); + ObjectGridTable::ObjectGridCol *grid_col = table->get_grid_col(col); + ObjectGridTable::ObjectGridRow *grid_row = table->get_grid_row(row - 1); + wxCHECK_MSG(m_control, false, "wxGridCellTextEditor must be created first!"); const wxString value = Text()->GetTextCtrl()->GetValue(); diff --git a/src/slic3r/GUI/GUI_ObjectTableSettings.cpp b/src/slic3r/GUI/GUI_ObjectTableSettings.cpp index 5e9dfd0f64c..10578be691b 100644 --- a/src/slic3r/GUI/GUI_ObjectTableSettings.cpp +++ b/src/slic3r/GUI/GUI_ObjectTableSettings.cpp @@ -108,6 +108,7 @@ bool ObjectTableSettings::update_settings_list(bool is_object, bool is_multiple_ //SettingsFactory::Bundle cat_options = SettingsFactory::get_bundle(&config->get(), is_object); std::map> cat_options; std::vector category_settings = SettingsFactory::get_visible_options(category, !is_object); + bool display_multiple = false; auto is_option_modified = [this](std::string key) { ConfigOption* config_option1 = m_origin_config.option(key); ConfigOption* config_option2 = m_current_config.option(key); @@ -146,6 +147,7 @@ bool ObjectTableSettings::update_settings_list(bool is_object, bool is_multiple_ else it1 = cat_options.erase(it1); } + display_multiple = true; } else { cat_options.emplace(category, category_settings); diff --git a/src/slic3r/GUI/GUI_Preview.cpp b/src/slic3r/GUI/GUI_Preview.cpp index 13e67556e68..25b333e281d 100644 --- a/src/slic3r/GUI/GUI_Preview.cpp +++ b/src/slic3r/GUI/GUI_Preview.cpp @@ -6,6 +6,7 @@ #include "GUI_App.hpp" #include "GUI.hpp" #include "I18N.hpp" +#include "3DScene.hpp" #include "BackgroundSlicingProcess.hpp" #include "OpenGLManager.hpp" #include "GLCanvas3D.hpp" @@ -14,11 +15,19 @@ #include "MainFrame.hpp" #include "format.hpp" +#include +#include #include #include +#include +#include +#include +#include +#include // this include must follow the wxWidgets ones or it won't compile on Windows -> see http://trac.wxwidgets.org/ticket/2421 #include "libslic3r/Print.hpp" +#include "libslic3r/SLAPrint.hpp" #include "NotificationManager.hpp" #ifdef _WIN32 @@ -157,6 +166,12 @@ void View3D::center_selected() m_canvas->do_center(); } +void View3D::drop_selected() +{ + if (m_canvas != nullptr) + m_canvas->do_drop(); +} + void View3D::center_selected_plate(const int plate_idx) { if (m_canvas != nullptr) m_canvas->do_center_plate(plate_idx); @@ -527,6 +542,7 @@ void Preview::update_layers_slider_from_canvas(wxKeyEvent &event) const auto key = event.GetKeyCode(); IMSlider *m_layers_slider = m_canvas->get_gcode_viewer().get_layers_slider(); + IMSlider *m_moves_slider = m_canvas->get_gcode_viewer().get_moves_slider(); if (key == 'L') { if(!m_layers_slider->switch_one_layer_mode()) event.Skip(); diff --git a/src/slic3r/GUI/GUI_Preview.hpp b/src/slic3r/GUI/GUI_Preview.hpp index 7d6a332bc04..0478cc98189 100644 --- a/src/slic3r/GUI/GUI_Preview.hpp +++ b/src/slic3r/GUI/GUI_Preview.hpp @@ -66,6 +66,7 @@ class View3D : public wxPanel void exit_gizmo(); void delete_selected(); void center_selected(); + void drop_selected(); void center_selected_plate(const int plate_idx); void mirror_selection(Axis axis); diff --git a/src/slic3r/GUI/Gizmos/GLGizmoEmboss.cpp b/src/slic3r/GUI/Gizmos/GLGizmoEmboss.cpp index c9c324222db..bee454af284 100644 --- a/src/slic3r/GUI/Gizmos/GLGizmoEmboss.cpp +++ b/src/slic3r/GUI/Gizmos/GLGizmoEmboss.cpp @@ -3057,7 +3057,7 @@ bool GLGizmoEmboss::choose_font_by_wxdialog() } #endif // ALLOW_ADD_FONT_BY_OS_SELECTOR -#if defined(ALLOW_ADD_FONT_BY_FILE) || defined(ALLOW_DEBUG_MODE) +#if defined ALLOW_ADD_FONT_BY_FILE or defined ALLOW_DEBUG_MODE namespace priv { static std::string get_file_name(const std::string &file_path) { @@ -3693,6 +3693,7 @@ GuiCfg create_gui_configuration() cfg.height_of_volume_type_selector = separator_height + line_height_with_spacing + input_height; int max_style_image_width = static_cast(std::round(cfg.max_style_name_width/2 - 2 * style.FramePadding.x)); + int max_style_image_height = static_cast(std::round(input_height)); cfg.max_style_image_size = Vec2i32(max_style_image_width, line_height); cfg.face_name_size = Vec2i32(cfg.input_width, line_height_with_spacing); cfg.face_name_texture_offset_x = cfg.face_name_size.x() + space; diff --git a/src/slic3r/GUI/Gizmos/GLGizmoFdmSupports.cpp b/src/slic3r/GUI/Gizmos/GLGizmoFdmSupports.cpp index 220032826a1..338a5d8161a 100644 --- a/src/slic3r/GUI/Gizmos/GLGizmoFdmSupports.cpp +++ b/src/slic3r/GUI/Gizmos/GLGizmoFdmSupports.cpp @@ -245,10 +245,17 @@ void GLGizmoFdmSupports::on_render_input_window(float x, float y, float bottom_l const float gap_fill_slider_left = m_imgui->calc_text_size(m_desc.at("gap_fill")).x + m_imgui->scaled(1.5f); const float highlight_slider_left = m_imgui->calc_text_size(m_desc.at("highlight_by_angle")).x + m_imgui->scaled(1.5f); const float reset_button_slider_left = m_imgui->calc_text_size(m_desc.at("reset_direction")).x + m_imgui->scaled(1.5f) + ImGui::GetStyle().FramePadding.x * 2; + const float on_overhangs_only_width = m_imgui->calc_text_size(m_desc["on_overhangs_only"]).x + m_imgui->scaled(1.5f); + const float remove_btn_width = m_imgui->calc_text_size(m_desc.at("remove_all")).x + m_imgui->scaled(1.5f); + const float filter_btn_width = m_imgui->calc_text_size(m_desc.at("perform")).x + m_imgui->scaled(1.5f); const float gap_area_txt_width = m_imgui->calc_text_size(m_desc.at("gap_area")).x + m_imgui->scaled(1.5f); const float smart_fill_angle_txt_width = m_imgui->calc_text_size(m_desc.at("smart_fill_angle")).x + m_imgui->scaled(1.5f); + const float buttons_width = remove_btn_width + filter_btn_width + m_imgui->scaled(1.5f); const float empty_button_width = m_imgui->calc_button_size("").x; + const float tips_width = m_imgui->calc_text_size(_L("Auto support threshold angle: ") + " 90 ").x + m_imgui->scaled(1.5f); + const float minimal_slider_width = m_imgui->scaled(4.f); + float caption_max = 0.f; float total_text_max = 0.f; for (const auto &t : std::array{"enforce", "block", "remove", "cursor_size", "clipping_of_view"}) { @@ -265,6 +272,8 @@ void GLGizmoFdmSupports::on_render_input_window(float x, float y, float bottom_l const float sliders_width = m_imgui->scaled(7.0f); const float drag_left_width = ImGui::GetStyle().WindowPadding.x + sliders_left_width + sliders_width - space_size; + float drag_pos_times = 0.7; + ImGui::AlignTextToFramePadding(); m_imgui->text(m_desc.at("tool_type")); std::array tool_ids = { ImGui::CircleButtonIcon, ImGui::SphereButtonIcon, ImGui::FillButtonIcon, ImGui::GapFillIcon }; @@ -688,6 +697,7 @@ wxString GLGizmoFdmSupports::handle_snapshot_action_name(bool shift_down, GLGizm void GLGizmoFdmSupports::init_print_instance() { const PrintObject* print_object = NULL; + PrintInstance print_instance = { 0 }; const Print *print = m_parent.fff_print(); if (!m_c->selection_info() || (m_print_instance.print_object)) diff --git a/src/slic3r/GUI/Gizmos/GLGizmoMeshBoolean.cpp b/src/slic3r/GUI/Gizmos/GLGizmoMeshBoolean.cpp index cb791597e68..ee9c7794645 100644 --- a/src/slic3r/GUI/Gizmos/GLGizmoMeshBoolean.cpp +++ b/src/slic3r/GUI/Gizmos/GLGizmoMeshBoolean.cpp @@ -138,6 +138,8 @@ void GLGizmoMeshBoolean::on_render() BoundingBoxf3 src_bb; BoundingBoxf3 tool_bb; + const ModelObject* mo = m_c->selection_info()->model_object(); + const ModelInstance* mi = mo->instances[m_parent.get_selection().get_instance_idx()]; const Selection& selection = m_parent.get_selection(); const Selection::IndicesList& idxs = selection.get_volume_idxs(); for (unsigned int i : idxs) { @@ -161,12 +163,16 @@ void GLGizmoMeshBoolean::on_set_state() if (m_state == EState::On) { m_src.reset(); m_tool.reset(); + bool m_diff_delete_input = false; + bool m_inter_delete_input = false; m_operation_mode = MeshBooleanOperation::Union; m_selecting_state = MeshBooleanSelectingState::SelectSource; } else if (m_state == EState::Off) { m_src.reset(); m_tool.reset(); + bool m_diff_delete_input = false; + bool m_inter_delete_input = false; m_operation_mode = MeshBooleanOperation::Undef; m_selecting_state = MeshBooleanSelectingState::Undef; wxGetApp().notification_manager()->close_plater_warning_notification(warning_text); diff --git a/src/slic3r/GUI/Gizmos/GLGizmoMmuSegmentation.cpp b/src/slic3r/GUI/Gizmos/GLGizmoMmuSegmentation.cpp index 4193ba885f1..3167266a5ea 100644 --- a/src/slic3r/GUI/Gizmos/GLGizmoMmuSegmentation.cpp +++ b/src/slic3r/GUI/Gizmos/GLGizmoMmuSegmentation.cpp @@ -403,6 +403,7 @@ void GLGizmoMmuSegmentation::on_render_input_window(float x, float y, float bott const float filter_btn_width = m_imgui->calc_text_size(m_desc.at("perform")).x + m_imgui->scaled(1.f); const float buttons_width = remove_btn_width + filter_btn_width + m_imgui->scaled(1.f); const float minimal_slider_width = m_imgui->scaled(4.f); + const float color_button_width = m_imgui->calc_text_size(std::string_view{""}).x + m_imgui->scaled(1.75f); float caption_max = 0.f; float total_text_max = 0.f; @@ -443,6 +444,7 @@ void GLGizmoMmuSegmentation::on_render_input_window(float x, float y, float bott float start_pos_x = ImGui::GetCursorPos().x; const ImVec2 max_label_size = ImGui::CalcTextSize("99", NULL, true); + const float item_spacing = m_imgui->scaled(0.8f); size_t n_extruder_colors = std::min((size_t)EnforcerBlockerType::ExtruderMax, m_extruders_colors.size()); for (int extruder_idx = 0; extruder_idx < n_extruder_colors; extruder_idx++) { const ColorRGBA &extruder_color = m_extruders_colors[extruder_idx]; diff --git a/src/slic3r/GUI/Gizmos/GLGizmoPainterBase.cpp b/src/slic3r/GUI/Gizmos/GLGizmoPainterBase.cpp index cf512cd88e9..2dbf7778e0a 100644 --- a/src/slic3r/GUI/Gizmos/GLGizmoPainterBase.cpp +++ b/src/slic3r/GUI/Gizmos/GLGizmoPainterBase.cpp @@ -527,10 +527,21 @@ std::vector GLGizmoPainterBase::get_pr if (m_rr.mesh_id == -1) return hit_triangles_by_mesh; + ProjectedMousePosition mesh_hit_point = { m_rr.hit, m_rr.mesh_id, m_rr.facet }; float z_bot_world= (trafo_matrices[m_rr.mesh_id] * Vec3d(m_rr.hit(0), m_rr.hit(1), m_rr.hit(2))).z(); float z_top_world = z_bot_world+ m_cursor_height; hit_triangles_by_mesh.push_back({ z_bot_world, m_rr.mesh_id, size_t(m_rr.facet) }); + const Selection& selection = m_parent.get_selection(); + const ModelObject* mo = m_c->selection_info()->model_object(); + const ModelInstance* mi = mo->instances[selection.get_instance_idx()]; + const Transform3d instance_trafo = m_parent.get_canvas_type() == GLCanvas3D::CanvasAssembleView ? + mi->get_assemble_transformation().get_matrix() : + mi->get_transformation().get_matrix(); + const Transform3d instance_trafo_not_translate = m_parent.get_canvas_type() == GLCanvas3D::CanvasAssembleView ? + mi->get_assemble_transformation().get_matrix_no_offset() : + mi->get_transformation().get_matrix_no_offset(); + for (int mesh_idx = 0; mesh_idx < part_volumes.size(); mesh_idx++) { if (mesh_idx == m_rr.mesh_id) continue; @@ -701,6 +712,7 @@ bool GLGizmoPainterBase::gizmo_event(SLAGizmoEventType action, const Vec2d& mous // The mouse button click detection is enabled when there is a valid hit. // Missing the object entirely // shall not capture the mouse. + const bool dragging_while_painting = (action == SLAGizmoEventType::Dragging && m_button_down != Button::None); if (mesh_idx != -1 && m_button_down == Button::None) m_button_down = ((action == SLAGizmoEventType::LeftDown) ? Button::Left : Button::Right); @@ -1051,7 +1063,7 @@ void GLGizmoPainterBase::on_set_state() if (m_state == On && m_old_state != On) { // the gizmo was just turned on on_opening(); - // const Selection& selection = m_parent.get_selection(); + const Selection& selection = m_parent.get_selection(); //Camera& camera = wxGetApp().plater()->get_camera(); //Vec3d rotate_target = selection.get_bounding_box().center(); //rotate_target(2) = 0.f; diff --git a/src/slic3r/GUI/Gizmos/GLGizmosManager.cpp b/src/slic3r/GUI/Gizmos/GLGizmosManager.cpp index cf8b5601983..319c5c75f28 100644 --- a/src/slic3r/GUI/Gizmos/GLGizmosManager.cpp +++ b/src/slic3r/GUI/Gizmos/GLGizmosManager.cpp @@ -186,7 +186,7 @@ bool GLGizmosManager::init() // Order of gizmos in the vector must match order in EType! //BBS: GUI refactor: add obj manipulation m_gizmos.clear(); - // unsigned int sprite_id = 0; + unsigned int sprite_id = 0; m_gizmos.emplace_back(new GLGizmoMove3D(m_parent, m_is_dark ? "toolbar_move_dark.svg" : "toolbar_move.svg", EType::Move, &m_object_manipulation)); m_gizmos.emplace_back(new GLGizmoRotate3D(m_parent, m_is_dark ? "toolbar_rotate_dark.svg" : "toolbar_rotate.svg", EType::Rotate, &m_object_manipulation)); m_gizmos.emplace_back(new GLGizmoScale3D(m_parent, m_is_dark ? "toolbar_scale_dark.svg" : "toolbar_scale.svg", EType::Scale, &m_object_manipulation)); @@ -1042,7 +1042,11 @@ void GLGizmosManager::render_arrow(const GLCanvas3D& parent, EType highlighted_t for (size_t idx : selectable_idxs) { if (idx == highlighted_type) { + int tex_width = m_icons_texture.get_width(); + int tex_height = m_icons_texture.get_height(); unsigned int tex_id = m_arrow_texture.get_id(); + float inv_tex_width = (tex_width != 0.0f) ? 1.0f / tex_width : 0.0f; + float inv_tex_height = (tex_height != 0.0f) ? 1.0f / tex_height : 0.0f; const float left_uv = 0.0f; const float right_uv = 1.0f; diff --git a/src/slic3r/GUI/Gizmos/GizmoObjectManipulation.cpp b/src/slic3r/GUI/Gizmos/GizmoObjectManipulation.cpp index 57934b149d0..a1490ebc70c 100644 --- a/src/slic3r/GUI/Gizmos/GizmoObjectManipulation.cpp +++ b/src/slic3r/GUI/Gizmos/GizmoObjectManipulation.cpp @@ -591,6 +591,7 @@ void GizmoObjectManipulation::do_render_move_window(ImGuiWrapper *imgui_wrapper, float World_size = imgui_wrapper->calc_text_size(position_title).x + space_size; float caption_max = std::max(position_size, World_size) + 2 * space_size; + float end_text_size = imgui_wrapper->calc_text_size(this->m_new_unit_string).x; // position Vec3d original_position; @@ -600,6 +601,8 @@ void GizmoObjectManipulation::do_render_move_window(ImGuiWrapper *imgui_wrapper, original_position = this->m_new_position; Vec3d display_position = m_buffered_position; + // Rotation + Vec3d rotation = this->m_buffered_rotation; float unit_size = imgui_wrapper->calc_text_size(MAX_SIZE).x + space_size; int index = 1; int index_unit = 1; @@ -705,6 +708,13 @@ void GizmoObjectManipulation::do_render_rotate_window(ImGuiWrapper *imgui_wrappe float caption_max = std::max(position_size, World_size) + 2 * space_size; float end_text_size = imgui_wrapper->calc_text_size(this->m_new_unit_string).x; + // position + Vec3d original_position; + if (this->m_imperial_units) + original_position = this->m_new_position * this->mm_to_in; + else + original_position = this->m_new_position; + Vec3d display_position = m_buffered_position; // Rotation Vec3d rotation = this->m_buffered_rotation; @@ -825,7 +835,10 @@ void GizmoObjectManipulation::do_render_scale_input_window(ImGuiWrapper* imgui_w Vec3d scale = m_buffered_scale; Vec3d display_size = m_buffered_size; + Vec3d display_position = m_buffered_position; + float unit_size = imgui_wrapper->calc_text_size(MAX_SIZE).x + space_size; + bool imperial_units = this->m_imperial_units; int index = 2; int index_unit = 1; diff --git a/src/slic3r/GUI/HintNotification.cpp b/src/slic3r/GUI/HintNotification.cpp index a102f400e27..c431e0fafb1 100644 --- a/src/slic3r/GUI/HintNotification.cpp +++ b/src/slic3r/GUI/HintNotification.cpp @@ -499,7 +499,8 @@ HintData* HintDatabase::get_hint(HintDataNavigation nav) m_hint_id = get_next_hint_id(); if(nav == HintDataNavigation::Prev) m_hint_id = get_prev_hint_id(); -// if (nav == HintDataNavigation::Curr) + if (nav == HintDataNavigation::Curr) + ; if (nav == HintDataNavigation::Random) init_random_hint_id(); } diff --git a/src/slic3r/GUI/IMSlider.cpp b/src/slic3r/GUI/IMSlider.cpp index 538166f1d8e..a0f15066b11 100644 --- a/src/slic3r/GUI/IMSlider.cpp +++ b/src/slic3r/GUI/IMSlider.cpp @@ -231,7 +231,7 @@ void IMSlider::SetTicksValues(const Info &custom_gcode_per_print_z) static bool last_spiral_vase_status = false; - // const bool was_empty = m_ticks.empty(); + const bool was_empty = m_ticks.empty(); m_ticks.ticks.clear(); const std::vector &heights = custom_gcode_per_print_z.gcodes; @@ -240,9 +240,9 @@ void IMSlider::SetTicksValues(const Info &custom_gcode_per_print_z) if (tick >= 0) m_ticks.ticks.emplace(TickCode{tick, h.type, h.extruder, h.color, h.extra}); } -// if (!was_empty && m_ticks.empty()) + if (!was_empty && m_ticks.empty()) // Switch to the "Feature type"/"Tool" from the very beginning of a new object slicing after deleting of the old one - // post_ticks_changed_event(); + ;// post_ticks_changed_event(); if (m_ticks.has_tick_with_code(ToolChange) && !m_can_change_color) { if (!wxGetApp().plater()->only_gcode_mode() && !wxGetApp().plater()->using_exported_file()) @@ -1034,6 +1034,8 @@ bool IMSlider::vertical_slider(const char* str_id, int* higher_value, int* lower context.IO.MouseClicked[0]) m_show_menu = false; + ImVec2 bar_center = higher_handle.GetCenter(); + // draw ticks draw_ticks(one_slideable_region); // draw colored band diff --git a/src/slic3r/GUI/ImGuiWrapper.cpp b/src/slic3r/GUI/ImGuiWrapper.cpp index f6ba5270b6f..2595d3804d5 100644 --- a/src/slic3r/GUI/ImGuiWrapper.cpp +++ b/src/slic3r/GUI/ImGuiWrapper.cpp @@ -182,6 +182,8 @@ int ImGuiWrapper::TOOLBAR_WINDOW_FLAGS = ImGuiWindowFlags_AlwaysAutoResize bool get_data_from_svg(const std::string &filename, unsigned int max_size_px, ThumbnailData &thumbnail_data) { + bool compression_enabled = false; + NSVGimage *image = nsvgParseFromFile(filename.c_str(), "px", 96.0f); if (image == nullptr) { return false; } @@ -234,6 +236,7 @@ bool get_data_from_svg(const std::string &filename, unsigned int max_size_px, Th bool slider_behavior(ImGuiID id, const ImRect& region, const ImS32 v_min, const ImS32 v_max, ImS32* out_value, ImRect* out_handle, ImGuiSliderFlags flags/* = 0*/, const int fixed_value/* = -1*/, const ImVec4& fixed_rect/* = ImRect()*/) { ImGuiContext& context = *GImGui; + ImGuiIO& io = ImGui::GetIO(); const ImGuiAxis axis = (flags & ImGuiSliderFlags_Vertical) ? ImGuiAxis_Y : ImGuiAxis_X; @@ -1790,7 +1793,7 @@ void ImGuiWrapper::search_list(const ImVec2& size_, bool (*items_getter)(int, co ImGui::ListBoxFooter(); - /*auto check_box = [&edited, this](const wxString& label, bool& check) { + auto check_box = [&edited, this](const wxString& label, bool& check) { ImGui::SameLine(); bool ch = check; checkbox(label, ch); @@ -1798,7 +1801,7 @@ void ImGuiWrapper::search_list(const ImVec2& size_, bool (*items_getter)(int, co check = !check; edited = true; } - };*/ + }; ImGui::AlignTextToFramePadding(); @@ -3146,6 +3149,7 @@ bool IMTexture::load_from_svg_file(const std::string& filename, unsigned width, std::vector data(n_pixels * 4, 0); nsvgRasterize(rast, image, 0, 0, scale, data.data(), width, height, width * 4); + bool compress = false; GLint last_texture; unsigned m_image_texture{ 0 }; unsigned char* pixels = (unsigned char*)(&data[0]); diff --git a/src/slic3r/GUI/Jobs/ArrangeJob.cpp b/src/slic3r/GUI/Jobs/ArrangeJob.cpp index f0d82e3d30b..6648b0e6328 100644 --- a/src/slic3r/GUI/Jobs/ArrangeJob.cpp +++ b/src/slic3r/GUI/Jobs/ArrangeJob.cpp @@ -136,6 +136,7 @@ void ArrangeJob::prepare_selected() { inst_sel[size_t(inst_id)] = true; for (size_t i = 0; i < inst_sel.size(); ++i) { + ModelInstance* mi = mo->instances[i]; ArrangePolygon&& ap = prepare_arrange_polygon(mo->instances[i]); //BBS: partplate_list preprocess //remove the locked plate's instances, neither in selected, nor in un-selected @@ -207,6 +208,7 @@ void ArrangeJob::prepare_all() { ModelObject *mo = model.objects[oidx]; for (size_t i = 0; i < mo->instances.size(); ++i) { + ModelInstance * mi = mo->instances[i]; ArrangePolygon&& ap = prepare_arrange_polygon(mo->instances[i]); //BBS: partplate_list preprocess //remove the locked plate's instances, neither in selected, nor in un-selected @@ -322,6 +324,7 @@ void ArrangeJob::prepare_wipe_tower() wipe_tower_ap.name = "WipeTower"; wipe_tower_ap.is_virt_object = true; wipe_tower_ap.is_wipe_tower = true; + const GLCanvas3D* canvas3D = static_cast(m_plater->canvas3D()); std::set extruder_ids; PartPlateList& ppl = wxGetApp().plater()->get_partplate_list(); @@ -527,6 +530,7 @@ void ArrangeJob::process(Ctl &ctl) auto & partplate_list = m_plater->get_partplate_list(); const Slic3r::DynamicPrintConfig& global_config = wxGetApp().preset_bundle->full_config(); + PresetBundle* preset_bundle = wxGetApp().preset_bundle; const bool is_bbl = wxGetApp().preset_bundle->is_bbl_vendor(); if (is_bbl && params.avoid_extrusion_cali_region && global_config.opt_bool("scan_first_layer")) partplate_list.preprocess_nonprefered_areas(m_unselected, MAX_NUM_PLATES); diff --git a/src/slic3r/GUI/Jobs/FillBedJob.cpp b/src/slic3r/GUI/Jobs/FillBedJob.cpp index d9af3631c78..e594f98ae1e 100644 --- a/src/slic3r/GUI/Jobs/FillBedJob.cpp +++ b/src/slic3r/GUI/Jobs/FillBedJob.cpp @@ -127,8 +127,8 @@ void FillBedJob::prepare() m_bedpts = get_bed_shape(*m_plater->config()); - /*auto &objects = m_plater->model().objects; - BoundingBox bedbb = get_extents(m_bedpts); + auto &objects = m_plater->model().objects; + /*BoundingBox bedbb = get_extents(m_bedpts); for (size_t idx = 0; idx < objects.size(); ++idx) if (int(idx) != m_object_idx) @@ -209,7 +209,9 @@ void FillBedJob::process(Ctl &ctl) m_bedpts = get_shrink_bedpts(m_plater->config(), params); auto &partplate_list = m_plater->get_partplate_list(); + auto &print = wxGetApp().plater()->get_partplate_list().get_current_fff_print(); const Slic3r::DynamicPrintConfig& global_config = wxGetApp().preset_bundle->full_config(); + PresetBundle* preset_bundle = wxGetApp().preset_bundle; const bool is_bbl = wxGetApp().preset_bundle->is_bbl_vendor(); if (is_bbl && params.avoid_extrusion_cali_region && global_config.opt_bool("scan_first_layer")) partplate_list.preprocess_nonprefered_areas(m_unselected, MAX_NUM_PLATES); @@ -273,6 +275,8 @@ void FillBedJob::finalize(bool canceled, std::exception_ptr &eptr) int plate_cols = plate_list.get_plate_cols(); int cur_plate = plate_list.get_curr_plate_index(); + size_t inst_cnt = model_object->instances.size(); + 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); }); diff --git a/src/slic3r/GUI/Jobs/OrientJob.cpp b/src/slic3r/GUI/Jobs/OrientJob.cpp index 27dac69b565..be59225d8d5 100644 --- a/src/slic3r/GUI/Jobs/OrientJob.cpp +++ b/src/slic3r/GUI/Jobs/OrientJob.cpp @@ -46,6 +46,7 @@ void OrientJob::prepare_selection(std::vector obj_sel, bool only_one_plate ModelInstance* mi = mo->instances[inst_idx]; OrientMesh&& om = get_orient_mesh(mi); + bool locked = false; if (!only_one_plate) { int plate_index = plate_list.find_instance(oidx, inst_idx); if ((plate_index >= 0)&&(plate_index < plate_list.get_plate_count())) { diff --git a/src/slic3r/GUI/Jobs/PrintJob.cpp b/src/slic3r/GUI/Jobs/PrintJob.cpp index 53fad3dbdd9..a54310c2346 100644 --- a/src/slic3r/GUI/Jobs/PrintJob.cpp +++ b/src/slic3r/GUI/Jobs/PrintJob.cpp @@ -103,6 +103,9 @@ wxString PrintJob::get_http_error_msg(unsigned int status, std::string body) if (!j["message"].is_null()) message = j["message"].get(); } + switch (status) { + ; + } } catch (...) { ; @@ -134,6 +137,7 @@ void PrintJob::process(Ctl &ctl) wxString error_str; int curr_percent = 10; NetworkAgent* m_agent = wxGetApp().getAgent(); + AppConfig* config = wxGetApp().app_config; if (this->connection_type == "lan") { msg = _u8L("Sending print job over LAN"); @@ -146,9 +150,12 @@ void PrintJob::process(Ctl &ctl) ctl.call_on_main_thread([this] { prepare(); }).wait(); int result = -1; + unsigned int http_code; std::string http_body; + int total_plate_num = plate_data.plate_count; if (!plate_data.is_valid) { + total_plate_num = m_plater->get_partplate_list().get_plate_count(); PartPlate *plate = m_plater->get_partplate_list().get_plate(job_data.plate_idx); if (plate == nullptr) { plate = m_plater->get_partplate_list().get_curr_plate(); @@ -305,7 +312,7 @@ void PrintJob::process(Ctl &ctl) try { stl_design_id = std::stoi(wxGetApp().model().stl_design_id); } - catch (std::exception&) { + catch (const std::exception& e) { stl_design_id = 0; } params.stl_design_id = stl_design_id; @@ -440,7 +447,7 @@ void PrintJob::process(Ctl &ctl) std::string curr_job_id; json job_info_j; try { - job_info_j = json::parse(job_info); + job_info_j.parse(job_info); if (job_info_j.contains("job_id")) { curr_job_id = job_info_j["job_id"].get(); } diff --git a/src/slic3r/GUI/Jobs/RotoptimizeJob.cpp b/src/slic3r/GUI/Jobs/RotoptimizeJob.cpp index 3fd2b375bf2..263273984b7 100644 --- a/src/slic3r/GUI/Jobs/RotoptimizeJob.cpp +++ b/src/slic3r/GUI/Jobs/RotoptimizeJob.cpp @@ -57,7 +57,8 @@ void RotoptimizeJob::process(Ctl &ctl) .print_config(&m_default_print_cfg) .statucb([this, &prev_status, &ctl/*, &statustxt*/](int s) { -// if (s > 0 && s < 100) + if (s > 0 && s < 100) + ; // ctl.update_status(prev_status + s / m_selected_object_ids.size(), // statustxt); diff --git a/src/slic3r/GUI/Jobs/SendJob.cpp b/src/slic3r/GUI/Jobs/SendJob.cpp index cb9f87e95a1..65660605460 100644 --- a/src/slic3r/GUI/Jobs/SendJob.cpp +++ b/src/slic3r/GUI/Jobs/SendJob.cpp @@ -67,6 +67,9 @@ wxString SendJob::get_http_error_msg(unsigned int status, std::string body) if (!j["message"].is_null()) message = j["message"].get(); } + switch (status) { + ; + } } catch (...) { ; @@ -106,7 +109,9 @@ void SendJob::process(Ctl &ctl) std::string msg; int curr_percent = 10; NetworkAgent* m_agent = wxGetApp().getAgent(); + AppConfig* config = wxGetApp().app_config; int result = -1; + unsigned int http_code; std::string http_body; if (this->connection_type == "lan") { diff --git a/src/slic3r/GUI/KBShortcutsDialog.cpp b/src/slic3r/GUI/KBShortcutsDialog.cpp index 56a575a3503..9d368f9e860 100644 --- a/src/slic3r/GUI/KBShortcutsDialog.cpp +++ b/src/slic3r/GUI/KBShortcutsDialog.cpp @@ -183,7 +183,11 @@ void KBShortcutsDialog::fill_shortcuts() // Slice plate { ctrl + "R", L("Slice plate")}, // Send to Print - { ctrl + L("Shift+G"), L("Print plate")}, +#ifdef __APPLE__ + { L("⌘+Shift+G"), L("Print plate")}, +#else + { L("Ctrl+Shift+G"), L("Print plate")}, +#endif // __APPLE // Edit { ctrl + "X", L("Cut") }, @@ -222,9 +226,16 @@ void KBShortcutsDialog::fill_shortcuts() {L("Shift+R"), L("Auto orientates selected objects or all objects.If there are selected objects, it just orientates the selected ones.Otherwise, it will orientates all objects in the current disk.")}, {L("Shift+Tab"), L("Collapse/Expand the sidebar")}, - { ctrl + L("Any arrow"), L("Movement in camera space")}, - { alt + L("Left mouse button"), L("Select a part")}, - { ctrl + L("Left mouse button"), L("Select multiple objects")}, + #ifdef __APPLE__ + {L("⌘+Any arrow"), L("Movement in camera space")}, + {L("⌥+Left mouse button"), L("Select a part")}, + {L("⌘+Left mouse button"), L("Select multiple objects")}, + #else + {L("Ctrl+Any arrow"), L("Movement in camera space")}, + {L("Alt+Left mouse button"), L("Select a part")}, + {L("Ctrl+Left mouse button"), L("Select multiple objects")}, + + #endif {L("Shift+Left mouse button"), L("Select objects by rectangle")}, {L("Arrow Up"), L("Move selection 10 mm in positive Y direction")}, {L("Arrow Down"), L("Move selection 10 mm in negative Y direction")}, @@ -263,8 +274,13 @@ void KBShortcutsDialog::fill_shortcuts() Shortcuts gizmos_shortcuts = { {L("Esc"), L("Deselect all")}, {L("Shift+"), L("Move: press to snap by 1mm")}, - { ctrl + L("Mouse wheel"), L("Support/Color Painting: adjust pen radius")}, - { alt + L("Mouse wheel"), L("Support/Color Painting: adjust section position")}, + #ifdef __APPLE__ + {L("⌘+Mouse wheel"), L("Support/Color Painting: adjust pen radius")}, + {L("⌥+Mouse wheel"), L("Support/Color Painting: adjust section position")}, + #else + {L("Ctrl+Mouse wheel"), L("Support/Color Painting: adjust pen radius")}, + {L("Alt+Mouse wheel"), L("Support/Color Painting: adjust section position")}, + #endif }; m_full_shortcuts.push_back({{_L("Gizmo"), ""}, gizmos_shortcuts}); @@ -295,8 +311,13 @@ void KBShortcutsDialog::fill_shortcuts() { "Tab", L("Switch between Prepare/Preview") }, {L("Shift+Any arrow"), L("Move slider 5x faster")}, {L("Shift+Mouse wheel"), L("Move slider 5x faster")}, - { ctrl + L("Any arrow"), L("Move slider 5x faster")}, - { ctrl + L("Mouse wheel"), L("Move slider 5x faster")}, + #ifdef __APPLE__ + {L("⌘+Any arrow"), L("Move slider 5x faster")}, + {L("⌘+Mouse wheel"), L("Move slider 5x faster")}, + #else + {L("Ctrl+Any arrow"), L("Move slider 5x faster")}, + {L("Ctrl+Mouse wheel"), L("Move slider 5x faster")}, + #endif { L("Home"), L("Horizontal slider - Move to start position")}, { L("End"), L("Horizontal slider - Move to last position")}, }; diff --git a/src/slic3r/GUI/MainFrame.cpp b/src/slic3r/GUI/MainFrame.cpp index 9a48e320d1b..2f59daffbb3 100644 --- a/src/slic3r/GUI/MainFrame.cpp +++ b/src/slic3r/GUI/MainFrame.cpp @@ -743,6 +743,7 @@ void MainFrame::update_layout() if (m_layout != ESettingsLayout::Unknown) restore_to_creation(); + ESettingsLayout old_layout = m_layout; m_layout = layout; // From the very beginning the Print settings should be selected @@ -1487,6 +1488,7 @@ bool MainFrame::can_reslice() const wxBoxSizer* MainFrame::create_side_tools() { enable_multi_machine = wxGetApp().is_enable_multi_machine(); + int em = em_unit(); wxBoxSizer* sizer = new wxBoxSizer(wxHORIZONTAL); m_slice_select = eSlicePlate; @@ -1777,7 +1779,7 @@ wxBoxSizer* MainFrame::create_side_tools() aux_btn->Bind(wxEVT_BUTTON, [](auto e) { wxGetApp().sidebar().show_auxiliary_dialog(); }); - sizer->Add(aux_btn, 0, wxLEFT | wxALIGN_CENTER_VERTICAL, 1 * em_unit() / 10); + sizer->Add(aux_btn, 0, wxLEFT | wxALIGN_CENTER_VERTICAL, 1 * em / 10); */ sizer->Add(FromDIP(19), 0, 0, 0, 0); @@ -1922,6 +1924,9 @@ bool MainFrame::get_enable_print_status() void MainFrame::update_side_button_style() { + // BBS + int em = em_unit(); + /*m_slice_btn->SetLayoutStyle(1); m_slice_btn->SetTextLayout(SideButton::EHorizontalOrientation::HO_Center, FromDIP(15)); m_slice_btn->SetMinSize(wxSize(-1, FromDIP(24))); @@ -2183,6 +2188,9 @@ static void add_common_publish_menu_items(wxMenu* publish_menu, MainFrame* mainF return; } + json j; + NetworkAgent* agent = GUI::wxGetApp().getAgent(); + //if (GUI::wxGetApp().plater()->model().objects.empty()) return; wxGetApp().open_publish_page_dialog(); }); @@ -2580,13 +2588,13 @@ void MainFrame::init_menubar_as_editor() //BBS perspective view wxWindowID camera_id_base = wxWindow::NewControlId(int(wxID_CAMERA_COUNT)); - append_menu_radio_item(viewMenu, wxID_CAMERA_PERSPECTIVE + camera_id_base, _L("Use Perspective View"), _L("Use Perspective View"), + auto perspective_item = append_menu_radio_item(viewMenu, wxID_CAMERA_PERSPECTIVE + camera_id_base, _L("Use Perspective View"), _L("Use Perspective View"), [this](wxCommandEvent&) { wxGetApp().app_config->set_bool("use_perspective_camera", true); wxGetApp().update_ui_from_settings(); }, nullptr); //BBS orthogonal view - append_menu_radio_item(viewMenu, wxID_CAMERA_ORTHOGONAL + camera_id_base, _L("Use Orthogonal View"), _L("Use Orthogonal View"), + auto orthogonal_item = append_menu_radio_item(viewMenu, wxID_CAMERA_ORTHOGONAL + camera_id_base, _L("Use Orthogonal View"), _L("Use Orthogonal View"), [this](wxCommandEvent&) { wxGetApp().app_config->set_bool("use_perspective_camera", false); wxGetApp().update_ui_from_settings(); @@ -2661,8 +2669,7 @@ void MainFrame::init_menubar_as_editor() //auto preference_item = new wxMenuItem(parent_menu, OrcaSlicerMenuPreferences + bambu_studio_id_base, _L("Preferences") + "\tCtrl+,", ""); #else wxMenu* parent_menu = m_topbar->GetTopMenu(); - // auto preference_item = - new wxMenuItem(parent_menu, ConfigMenuPreferences + config_id_base, _L("Preferences") + "\t" + ctrl + "P", ""); + auto preference_item = new wxMenuItem(parent_menu, ConfigMenuPreferences + config_id_base, _L("Preferences") + "\t" + ctrl + "P", ""); #endif //auto printer_item = new wxMenuItem(parent_menu, ConfigMenuPrinter + config_id_base, _L("Printer"), ""); @@ -3093,6 +3100,10 @@ void MainFrame::init_menubar_as_gcodeviewer() void MainFrame::update_menubar() { + if (wxGetApp().is_gcode_viewer()) + return; + + const bool is_fff = plater()->printer_technology() == ptFFF; } void MainFrame::reslice_now() @@ -3168,6 +3179,7 @@ void MainFrame::load_config_file() cfiles.push_back(into_u8(file)); m_last_config = file; } + bool update = false; wxGetApp().preset_bundle->import_presets(cfiles, [this](std::string const & name) { ConfigsOverwriteConfirmDialog dlg(this, from_u8(name), false); int res = dlg.ShowModal(); @@ -3737,6 +3749,7 @@ void MainFrame::on_select_default_preset(SimpleEvent& evt) wxICON_INFORMATION); /* get setting list */ + NetworkAgent* agent = wxGetApp().getAgent(); switch ( dialog.ShowModal() ) { case wxID_YES: { diff --git a/src/slic3r/GUI/MediaFilePanel.cpp b/src/slic3r/GUI/MediaFilePanel.cpp index faa694090b1..b2032b09adc 100644 --- a/src/slic3r/GUI/MediaFilePanel.cpp +++ b/src/slic3r/GUI/MediaFilePanel.cpp @@ -328,6 +328,7 @@ void MediaFilePanel::SetMachineObject(MachineObject* obj) MessageDialog(this, m, _L("Download failed"), wxOK | wxICON_ERROR).ShowModal(); }); + NetworkAgent* agent = wxGetApp().getAgent(); if (result > 1 || result == 0) { json j; j["code"] = result; @@ -575,7 +576,7 @@ void MediaFilePanel::doAction(size_t index, int action) } else { MessageDialog dlg(this, _L("The .gcode.3mf file contains no G-code data.Please slice it with Orca Slicer and export a new .gcode.3mf file."), wxEmptyString, wxICON_WARNING | wxOK); - dlg.ShowModal(); + auto res = dlg.ShowModal(); } }); diff --git a/src/slic3r/GUI/MediaPlayCtrl.cpp b/src/slic3r/GUI/MediaPlayCtrl.cpp index da70eeff654..36500f69fa0 100644 --- a/src/slic3r/GUI/MediaPlayCtrl.cpp +++ b/src/slic3r/GUI/MediaPlayCtrl.cpp @@ -67,7 +67,7 @@ MediaPlayCtrl::MediaPlayCtrl(wxWindow *parent, wxMediaCtrl2 *media_ctrl, const w auto ip = str.find(' ', ik); if (ip == wxString::npos) ip = str.Length(); auto v = str.Mid(ik, ip - ik); - if (strcmp(k, "T:") == 0 && v.Length() == 8) { + if (k == "T:" && v.Length() == 8) { long h = 0,m = 0,s = 0; v.Left(2).ToLong(&h); v.Mid(3, 2).ToLong(&m); @@ -389,7 +389,7 @@ void MediaPlayCtrl::Stop(wxString const &msg) } auto tunnel = m_url.empty() ? "" : into_u8(wxURI(m_url).GetPath()).substr(1); - if (auto n = tunnel.find_first_of("/_"); n != std::string::npos) + if (auto n = tunnel.find_first_of('/_'); n != std::string::npos) tunnel = tunnel.substr(0, n); if (last_state != wxMEDIASTATE_PLAYING && m_failed_code != 0 && m_last_failed_codes.find(m_failed_code) == m_last_failed_codes.end() @@ -734,7 +734,7 @@ bool MediaPlayCtrl::start_stream_service(bool *need_install) auto file_dll = tools_dir + dll; auto file_dll2 = plugins_dir + dll; if (!boost::filesystem::exists(file_dll) || boost::filesystem::last_write_time(file_dll) != boost::filesystem::last_write_time(file_dll2)) - boost::filesystem::copy_file(file_dll2, file_dll, boost::filesystem::copy_options::overwrite_existing); + boost::filesystem::copy_file(file_dll2, file_dll, boost::filesystem::copy_option::overwrite_if_exists); } boost::process::child process_source(file_source, file_url2.ToStdWstring(), boost::process::start_dir(tools_dir), boost::process::windows::create_no_window, diff --git a/src/slic3r/GUI/ModelMall.cpp b/src/slic3r/GUI/ModelMall.cpp index 45833ba80c0..f14de1ebf0b 100644 --- a/src/slic3r/GUI/ModelMall.cpp +++ b/src/slic3r/GUI/ModelMall.cpp @@ -133,7 +133,7 @@ namespace GUI { } } - catch (std::exception&) { + catch (std::exception& e) { // wxMessageBox(e.what(), "json Exception", MB_OK); } } diff --git a/src/slic3r/GUI/Monitor.cpp b/src/slic3r/GUI/Monitor.cpp index 3bcc0ce224a..333f4d3de00 100644 --- a/src/slic3r/GUI/Monitor.cpp +++ b/src/slic3r/GUI/Monitor.cpp @@ -114,7 +114,7 @@ AddMachinePanel::~AddMachinePanel() { m_side_tools->get_panel()->Connect(wxEVT_LEFT_DOWN, wxMouseEventHandler(MonitorPanel::on_printer_clicked), NULL, this); - Bind(wxEVT_TIMER, [this](wxTimerEvent&) { on_timer(); }); + Bind(wxEVT_TIMER, &MonitorPanel::on_timer, this); Bind(wxEVT_SIZE, &MonitorPanel::on_size, this); Bind(wxEVT_COMMAND_CHOICE_SELECTED, &MonitorPanel::on_select_printer, this); @@ -160,7 +160,7 @@ MonitorPanel::~MonitorPanel() m_refresh_timer = new wxTimer(); m_refresh_timer->SetOwner(this); m_refresh_timer->Start(REFRESH_INTERVAL); - on_timer(); + wxPostEvent(this, wxTimerEvent()); Slic3r::DeviceManager* dev = Slic3r::GUI::wxGetApp().getDeviceManager(); if (!dev) return; @@ -272,7 +272,7 @@ void MonitorPanel::on_update_all(wxMouseEvent &event) } } -void MonitorPanel::on_timer() + void MonitorPanel::on_timer(wxTimerEvent& event) { if (update_flag) { update_all(); @@ -306,6 +306,9 @@ void MonitorPanel::on_timer() void MonitorPanel::on_printer_clicked(wxMouseEvent &event) { + auto mouse_pos = ClientToScreen(event.GetPosition()); + wxPoint rect = m_side_tools->ClientToScreen(wxPoint(0, 0)); + if (!m_side_tools->is_in_interval()) { wxPoint pos = m_side_tools->ClientToScreen(wxPoint(0, 0)); pos.y += m_side_tools->GetRect().height; @@ -431,6 +434,7 @@ bool MonitorPanel::Show(bool show) wxGetApp().mainframe->SetMinSize(wxGetApp().plater()->GetMinSize()); #endif + NetworkAgent* m_agent = wxGetApp().getAgent(); DeviceManager* dev = Slic3r::GUI::wxGetApp().getDeviceManager(); if (show) { start_update(); @@ -438,7 +442,7 @@ bool MonitorPanel::Show(bool show) m_refresh_timer->Stop(); m_refresh_timer->SetOwner(this); m_refresh_timer->Start(REFRESH_INTERVAL); - on_timer(); + wxPostEvent(this, wxTimerEvent()); if (dev) { //set a default machine when obj is null @@ -481,6 +485,7 @@ void MonitorPanel::show_status(int status) if (!m_initialized) return; if (last_status == status)return; if ((last_status & (int)MonitorStatus::MONITOR_CONNECTING) != 0) { + NetworkAgent* agent = wxGetApp().getAgent(); json j; j["dev_id"] = obj ? obj->dev_id : "obj_nullptr"; if ((status & (int)MonitorStatus::MONITOR_DISCONNECTED) != 0) { diff --git a/src/slic3r/GUI/Monitor.hpp b/src/slic3r/GUI/Monitor.hpp index 761b059a0a5..8da56ddc3b8 100644 --- a/src/slic3r/GUI/Monitor.hpp +++ b/src/slic3r/GUI/Monitor.hpp @@ -133,7 +133,7 @@ class MonitorPanel : public wxPanel StatusPanel* get_status_panel() {return m_status_info_panel;}; void select_machine(std::string machine_sn); void on_update_all(wxMouseEvent &event); - void on_timer(); + void on_timer(wxTimerEvent& event); void on_select_printer(wxCommandEvent& event); void on_printer_clicked(wxMouseEvent &event); void on_size(wxSizeEvent &event); diff --git a/src/slic3r/GUI/MonitorBasePanel.cpp b/src/slic3r/GUI/MonitorBasePanel.cpp index 24760577a6b..553b8f0993f 100644 --- a/src/slic3r/GUI/MonitorBasePanel.cpp +++ b/src/slic3r/GUI/MonitorBasePanel.cpp @@ -6,6 +6,7 @@ /////////////////////////////////////////////////////////////////////////// #include "MonitorBasePanel.h" +#include "Printer/PrinterFileSystem.h" #include "Widgets/Label.hpp" /////////////////////////////////////////////////////////////////////////// @@ -20,7 +21,7 @@ MonitorBasePanel::MonitorBasePanel(wxWindow* parent, wxWindowID id, const wxPoin m_splitter = new wxSplitterWindow(this, wxID_ANY, wxDefaultPosition, wxDefaultSize, wxSP_3D | wxSP_BORDER); m_splitter->SetSashGravity(0); - m_splitter->SetSashInvisible(); + m_splitter->SetSashSize(0); m_splitter->Connect(wxEVT_IDLE, wxIdleEventHandler(MonitorBasePanel::m_splitterOnIdle), NULL, this); m_splitter->SetMinimumPaneSize(182); @@ -280,7 +281,7 @@ VideoMonitoringBasePanel::~VideoMonitoringBasePanel() // PLEASE DO *NOT* EDIT THIS FILE! /////////////////////////////////////////////////////////////////////////// -//#include "MonitorBasePanel.h" +#include "MonitorBasePanel.h" /////////////////////////////////////////////////////////////////////////// using namespace Slic3r::GUI; diff --git a/src/slic3r/GUI/MultiMachine.hpp b/src/slic3r/GUI/MultiMachine.hpp index 04ff304bca7..48a6ed41806 100644 --- a/src/slic3r/GUI/MultiMachine.hpp +++ b/src/slic3r/GUI/MultiMachine.hpp @@ -9,16 +9,16 @@ namespace Slic3r { namespace GUI { -#define DEVICE_ITEM_MAX_WIDTH 900 -#define SEND_ITEM_MAX_HEIGHT 30 -#define DEVICE_ITEM_MAX_HEIGHT 50 +#define DEVICE_ITEM_MAX_WIDTH 900 +#define SEND_ITEM_MAX_HEIGHT 30 +#define DEVICE_ITEM_MAX_HEIGHT 50 #define TABLE_HEAR_NORMAL_COLOUR wxColour(238, 238, 238) #define TABLE_HEAD_PRESSED_COLOUR wxColour(150, 150, 150) #define CTRL_BUTTON_NORMAL_COLOUR wxColour(255, 255, 255) #define CTRL_BUTTON_PRESSEN_COLOUR wxColour(150, 150, 150) #define TABLE_HEAD_FONT Label::Body_13 -#define MM_ICON_SIZE FromDIP(16) +#define ICON_SIZE FromDIP(16) class DeviceItem : public wxWindow { diff --git a/src/slic3r/GUI/MultiMachineManagerPage.cpp b/src/slic3r/GUI/MultiMachineManagerPage.cpp index 9a112d32c35..b37810f07f4 100644 --- a/src/slic3r/GUI/MultiMachineManagerPage.cpp +++ b/src/slic3r/GUI/MultiMachineManagerPage.cpp @@ -320,7 +320,7 @@ MultiMachineManagerPage::MultiMachineManagerPage(wxWindow* parent) m_table_head_panel->SetBackgroundColour(TABLE_HEAR_NORMAL_COLOUR); m_table_head_sizer = new wxBoxSizer(wxHORIZONTAL); - m_printer_name = new Button(m_table_head_panel, _L("Device Name"), "toolbar_double_directional_arrow", wxNO_BORDER, MM_ICON_SIZE); + m_printer_name = new Button(m_table_head_panel, _L("Device Name"), "toolbar_double_directional_arrow", wxNO_BORDER, ICON_SIZE); m_printer_name->SetBackgroundColor(head_bg); m_printer_name->SetFont(TABLE_HEAD_FONT); m_printer_name->SetCornerRadius(0); @@ -343,7 +343,7 @@ MultiMachineManagerPage::MultiMachineManagerPage(wxWindow* parent) }); - m_task_name = new Button(m_table_head_panel, _L("Task Name"), "", wxNO_BORDER, MM_ICON_SIZE); + m_task_name = new Button(m_table_head_panel, _L("Task Name"), "", wxNO_BORDER, ICON_SIZE); m_task_name->SetBackgroundColor(TABLE_HEAR_NORMAL_COLOUR); m_task_name->SetFont(TABLE_HEAD_FONT); m_task_name->SetCornerRadius(0); @@ -353,7 +353,7 @@ MultiMachineManagerPage::MultiMachineManagerPage(wxWindow* parent) - m_status = new Button(m_table_head_panel, _L("Device Status"), "toolbar_double_directional_arrow", wxNO_BORDER, MM_ICON_SIZE); + m_status = new Button(m_table_head_panel, _L("Device Status"), "toolbar_double_directional_arrow", wxNO_BORDER, ICON_SIZE); m_status->SetBackgroundColor(head_bg); m_status->SetFont(TABLE_HEAD_FONT); m_status->SetCornerRadius(0); @@ -376,7 +376,7 @@ MultiMachineManagerPage::MultiMachineManagerPage(wxWindow* parent) }); - m_action = new Button(m_table_head_panel, _L("Actions"), "", wxNO_BORDER, MM_ICON_SIZE, false); + m_action = new Button(m_table_head_panel, _L("Actions"), "", wxNO_BORDER, ICON_SIZE, false); m_action->SetBackgroundColor(TABLE_HEAR_NORMAL_COLOUR); m_action->SetFont(TABLE_HEAD_FONT); m_action->SetCornerRadius(0); @@ -523,7 +523,7 @@ MultiMachineManagerPage::MultiMachineManagerPage(wxWindow* parent) Layout(); Fit(); - Bind(wxEVT_TIMER, [this](wxTimerEvent&) { on_timer(); }); + Bind(wxEVT_TIMER, &MultiMachineManagerPage::on_timer, this); } void MultiMachineManagerPage::update_page() @@ -676,7 +676,7 @@ void MultiMachineManagerPage::start_timer() m_flipping_timer->SetOwner(this); m_flipping_timer->Start(1000); - on_timer(); + wxPostEvent(this, wxTimerEvent()); } void MultiMachineManagerPage::update_page_number() @@ -688,7 +688,7 @@ void MultiMachineManagerPage::update_page_number() st_page_number->SetLabel(number); } -void MultiMachineManagerPage::on_timer() +void MultiMachineManagerPage::on_timer(wxTimerEvent& event) { m_flipping_timer->Stop(); if (btn_last_page) diff --git a/src/slic3r/GUI/MultiMachineManagerPage.hpp b/src/slic3r/GUI/MultiMachineManagerPage.hpp index 55eb500540d..c1086b47211 100644 --- a/src/slic3r/GUI/MultiMachineManagerPage.hpp +++ b/src/slic3r/GUI/MultiMachineManagerPage.hpp @@ -55,7 +55,7 @@ class MultiMachineManagerPage : public wxPanel void start_timer(); void update_page_number(); - void on_timer(); + void on_timer(wxTimerEvent& event); void clear_page(); void page_num_enter_evt(); diff --git a/src/slic3r/GUI/MultiMachinePage.cpp b/src/slic3r/GUI/MultiMachinePage.cpp index cb1fea926d6..9aed022ba33 100644 --- a/src/slic3r/GUI/MultiMachinePage.cpp +++ b/src/slic3r/GUI/MultiMachinePage.cpp @@ -19,7 +19,7 @@ MultiMachinePage::MultiMachinePage(wxWindow* parent, wxWindowID id, const wxPoin wxGetApp().UpdateDarkUIWin(this); init_timer(); - Bind(wxEVT_TIMER, [this](wxTimerEvent&) { on_timer(); }); + Bind(wxEVT_TIMER, &MultiMachinePage::on_timer, this); } MultiMachinePage::~MultiMachinePage() @@ -59,7 +59,7 @@ bool MultiMachinePage::Show(bool show) m_refresh_timer->Stop(); m_refresh_timer->SetOwner(this); m_refresh_timer->Start(2000); - on_timer(); + wxPostEvent(this, wxTimerEvent()); } else { m_refresh_timer->Stop(); @@ -97,7 +97,7 @@ void MultiMachinePage::init_timer() //wxPostEvent(this, wxTimerEvent()); } -void MultiMachinePage::on_timer() +void MultiMachinePage::on_timer(wxTimerEvent& event) { m_local_task_manager->update_page(); m_cloud_task_manager->update_page(); diff --git a/src/slic3r/GUI/MultiMachinePage.hpp b/src/slic3r/GUI/MultiMachinePage.hpp index 7e948fa4790..0572c30d1be 100644 --- a/src/slic3r/GUI/MultiMachinePage.hpp +++ b/src/slic3r/GUI/MultiMachinePage.hpp @@ -41,7 +41,7 @@ class MultiMachinePage : public wxPanel void init_tabpanel(); void init_timer(); - void on_timer(); + void on_timer(wxTimerEvent& event); void clear_page(); }; diff --git a/src/slic3r/GUI/MultiTaskManagerPage.cpp b/src/slic3r/GUI/MultiTaskManagerPage.cpp index 3d295eb97c0..f2d159a7dea 100644 --- a/src/slic3r/GUI/MultiTaskManagerPage.cpp +++ b/src/slic3r/GUI/MultiTaskManagerPage.cpp @@ -4,6 +4,7 @@ #include "GUI_App.hpp" #include "MainFrame.hpp" #include "Widgets/RadioBox.hpp" +#include #include namespace Slic3r { @@ -573,7 +574,7 @@ LocalTaskManagerPage::LocalTaskManagerPage(wxWindow* parent) }); - m_task_name = new Button(m_table_head_panel, _L("Task Name"), "", wxNO_BORDER, MM_ICON_SIZE); + m_task_name = new Button(m_table_head_panel, _L("Task Name"), "", wxNO_BORDER, ICON_SIZE); m_task_name->SetBackgroundColor(TABLE_HEAR_NORMAL_COLOUR); m_task_name->SetFont(TABLE_HEAD_FONT); m_task_name->SetCornerRadius(0); @@ -582,7 +583,7 @@ LocalTaskManagerPage::LocalTaskManagerPage(wxWindow* parent) m_task_name->SetCenter(false); m_table_head_sizer->Add(m_task_name, 0, wxALIGN_CENTER_VERTICAL, 0); - m_printer_name = new Button(m_table_head_panel, _L("Device Name"), "toolbar_double_directional_arrow", wxNO_BORDER, MM_ICON_SIZE); + m_printer_name = new Button(m_table_head_panel, _L("Device Name"), "toolbar_double_directional_arrow", wxNO_BORDER, ICON_SIZE); m_printer_name->SetBackgroundColor(head_bg); m_printer_name->SetFont(TABLE_HEAD_FONT); m_printer_name->SetCornerRadius(0); @@ -602,7 +603,7 @@ LocalTaskManagerPage::LocalTaskManagerPage(wxWindow* parent) }); m_table_head_sizer->Add(m_printer_name, 0, wxALIGN_CENTER_VERTICAL, 0); - m_status = new Button(m_table_head_panel, _L("Task Status"), "toolbar_double_directional_arrow", wxNO_BORDER, MM_ICON_SIZE); + m_status = new Button(m_table_head_panel, _L("Task Status"), "toolbar_double_directional_arrow", wxNO_BORDER, ICON_SIZE); m_status->SetBackgroundColor(head_bg); m_status->SetFont(TABLE_HEAD_FONT); m_status->SetCornerRadius(0); @@ -622,7 +623,7 @@ LocalTaskManagerPage::LocalTaskManagerPage(wxWindow* parent) }); m_table_head_sizer->Add(m_status, 0, wxALIGN_CENTER_VERTICAL, 0); - m_info = new Button(m_table_head_panel, _L("Info"), "", wxNO_BORDER, MM_ICON_SIZE); + m_info = new Button(m_table_head_panel, _L("Info"), "", wxNO_BORDER, ICON_SIZE); m_info->SetBackgroundColor(TABLE_HEAR_NORMAL_COLOUR); m_info->SetFont(TABLE_HEAD_FONT); m_info->SetCornerRadius(0); @@ -631,7 +632,7 @@ LocalTaskManagerPage::LocalTaskManagerPage(wxWindow* parent) m_info->SetCenter(false); m_table_head_sizer->Add(m_info, 0, wxALIGN_CENTER_VERTICAL, 0); - m_send_time = new Button(m_table_head_panel, _L("Sent Time"), "toolbar_double_directional_arrow", wxNO_BORDER, MM_ICON_SIZE, false); + m_send_time = new Button(m_table_head_panel, _L("Sent Time"), "toolbar_double_directional_arrow", wxNO_BORDER, ICON_SIZE, false); m_send_time->SetBackgroundColor(head_bg); m_send_time->SetFont(TABLE_HEAD_FONT); m_send_time->SetCornerRadius(0); @@ -651,7 +652,7 @@ LocalTaskManagerPage::LocalTaskManagerPage(wxWindow* parent) }); m_table_head_sizer->Add(m_send_time, 0, wxALIGN_CENTER_VERTICAL, 0); - m_action = new Button(m_table_head_panel, _L("Actions"), "", wxNO_BORDER, MM_ICON_SIZE, false); + m_action = new Button(m_table_head_panel, _L("Actions"), "", wxNO_BORDER, ICON_SIZE, false); m_action->SetBackgroundColor(TABLE_HEAR_NORMAL_COLOUR); m_action->SetFont(TABLE_HEAD_FONT); m_action->SetCornerRadius(0); @@ -945,7 +946,7 @@ CloudTaskManagerPage::CloudTaskManagerPage(wxWindow* parent) - m_task_name = new Button(m_table_head_panel, _L("Task Name"), "", wxNO_BORDER, MM_ICON_SIZE); + m_task_name = new Button(m_table_head_panel, _L("Task Name"), "", wxNO_BORDER, ICON_SIZE); m_task_name->SetBackgroundColor(TABLE_HEAR_NORMAL_COLOUR); m_task_name->SetFont(TABLE_HEAD_FONT); m_task_name->SetCornerRadius(0); @@ -954,7 +955,7 @@ CloudTaskManagerPage::CloudTaskManagerPage(wxWindow* parent) m_task_name->SetCenter(false); m_table_head_sizer->Add(m_task_name, 0, wxALIGN_CENTER_VERTICAL, 0); - m_printer_name = new Button(m_table_head_panel, _L("Device Name"), "toolbar_double_directional_arrow", wxNO_BORDER, MM_ICON_SIZE); + m_printer_name = new Button(m_table_head_panel, _L("Device Name"), "toolbar_double_directional_arrow", wxNO_BORDER, ICON_SIZE); m_printer_name->SetBackgroundColor(head_bg); m_printer_name->SetFont(TABLE_HEAD_FONT); m_printer_name->SetCornerRadius(0); @@ -974,7 +975,7 @@ CloudTaskManagerPage::CloudTaskManagerPage(wxWindow* parent) }); m_table_head_sizer->Add(m_printer_name, 0, wxALIGN_CENTER_VERTICAL, 0); - m_status = new Button(m_table_head_panel, _L("Task Status"), "toolbar_double_directional_arrow", wxNO_BORDER, MM_ICON_SIZE); + m_status = new Button(m_table_head_panel, _L("Task Status"), "toolbar_double_directional_arrow", wxNO_BORDER, ICON_SIZE); m_status->SetBackgroundColor(head_bg); m_status->SetFont(TABLE_HEAD_FONT); m_status->SetCornerRadius(0); @@ -994,7 +995,7 @@ CloudTaskManagerPage::CloudTaskManagerPage(wxWindow* parent) }); m_table_head_sizer->Add(m_status, 0, wxALIGN_CENTER_VERTICAL, 0); - m_info = new Button(m_table_head_panel, _L("Info"), "", wxNO_BORDER, MM_ICON_SIZE); + m_info = new Button(m_table_head_panel, _L("Info"), "", wxNO_BORDER, ICON_SIZE); m_info->SetBackgroundColor(TABLE_HEAR_NORMAL_COLOUR); m_info->SetFont(TABLE_HEAD_FONT); m_info->SetCornerRadius(0); @@ -1003,7 +1004,7 @@ CloudTaskManagerPage::CloudTaskManagerPage(wxWindow* parent) m_info->SetCenter(false); m_table_head_sizer->Add(m_info, 0, wxALIGN_CENTER_VERTICAL, 0); - m_send_time = new Button(m_table_head_panel, _L("Sent Time"), "toolbar_double_directional_arrow", wxNO_BORDER, MM_ICON_SIZE, false); + m_send_time = new Button(m_table_head_panel, _L("Sent Time"), "toolbar_double_directional_arrow", wxNO_BORDER, ICON_SIZE, false); m_send_time->SetBackgroundColor(head_bg); m_send_time->SetFont(TABLE_HEAD_FONT); m_send_time->SetCornerRadius(0); @@ -1023,7 +1024,7 @@ CloudTaskManagerPage::CloudTaskManagerPage(wxWindow* parent) }); m_table_head_sizer->Add(m_send_time, 0, wxALIGN_CENTER_VERTICAL, 0); - m_action = new Button(m_table_head_panel, _L("Actions"), "", wxNO_BORDER, MM_ICON_SIZE, false); + m_action = new Button(m_table_head_panel, _L("Actions"), "", wxNO_BORDER, ICON_SIZE, false); m_action->SetBackgroundColor(TABLE_HEAR_NORMAL_COLOUR); m_action->SetFont(TABLE_HEAD_FONT); m_action->SetCornerRadius(0); @@ -1182,7 +1183,7 @@ CloudTaskManagerPage::CloudTaskManagerPage(wxWindow* parent) page_sizer = new wxBoxSizer(wxVERTICAL); page_sizer->Add(m_main_panel, 1, wxALL | wxEXPAND, FromDIP(25)); - Bind(wxEVT_TIMER, [this](wxTimerEvent&) { on_timer(); }); + Bind(wxEVT_TIMER, &CloudTaskManagerPage::on_timer, this); wxGetApp().UpdateDarkUIWin(this); @@ -1399,10 +1400,10 @@ void CloudTaskManagerPage::start_timer() m_flipping_timer->SetOwner(this); m_flipping_timer->Start(1000); - on_timer(); + wxPostEvent(this, wxTimerEvent()); } -void CloudTaskManagerPage::on_timer() +void CloudTaskManagerPage::on_timer(wxTimerEvent& event) { m_flipping_timer->Stop(); enable_buttons(true); diff --git a/src/slic3r/GUI/MultiTaskManagerPage.hpp b/src/slic3r/GUI/MultiTaskManagerPage.hpp index b32c670d5e1..0f676d06b3f 100644 --- a/src/slic3r/GUI/MultiTaskManagerPage.hpp +++ b/src/slic3r/GUI/MultiTaskManagerPage.hpp @@ -135,7 +135,7 @@ class CloudTaskManagerPage : public wxPanel bool Show(bool show); void update_page_number(); void start_timer(); - void on_timer(); + void on_timer(wxTimerEvent& event); void pause_all(wxCommandEvent& evt); void resume_all(wxCommandEvent& evt); diff --git a/src/slic3r/GUI/Notebook.hpp b/src/slic3r/GUI/Notebook.hpp index 5ef90a97021..7e6e94da3a2 100644 --- a/src/slic3r/GUI/Notebook.hpp +++ b/src/slic3r/GUI/Notebook.hpp @@ -194,6 +194,8 @@ class Notebook: public wxBookCtrlBase // check that only the selected page is visible and others are hidden: for (size_t page = 0; page < m_pages.size(); page++) { + wxWindow* win_a = GetPage(page); + wxWindow* win_b = GetPage(n); if (page != n && GetPage(page) != GetPage(n)) { m_pages[page]->Hide(); } diff --git a/src/slic3r/GUI/NotificationManager.cpp b/src/slic3r/GUI/NotificationManager.cpp index 685058bbb33..08ef8c7493b 100644 --- a/src/slic3r/GUI/NotificationManager.cpp +++ b/src/slic3r/GUI/NotificationManager.cpp @@ -857,7 +857,7 @@ void NotificationManager::PopNotification::bbl_render_block_notif_buttons(ImGuiW void NotificationManager::PopNotification::bbl_render_block_notif_left_sign(ImGuiWrapper& imgui, const float win_size_x, const float win_size_y, const float win_pos_x, const float win_pos_y) { - // auto window = ImGui::GetCurrentWindow(); + auto window = ImGui::GetCurrentWindow(); //window->DrawList->AddImage(user_texture_id, bb.Min + padding + margin, bb.Max - padding - margin, uv0, uv1, ImGui::GetColorU32(tint_col)); std::wstring text; diff --git a/src/slic3r/GUI/OG_CustomCtrl.cpp b/src/slic3r/GUI/OG_CustomCtrl.cpp index 6fa75d7895f..dadde84ebcf 100644 --- a/src/slic3r/GUI/OG_CustomCtrl.cpp +++ b/src/slic3r/GUI/OG_CustomCtrl.cpp @@ -405,6 +405,7 @@ void OG_CustomCtrl::OnMotion(wxMouseEvent& event) // Set tooltips with information for each icon // BBS: markdown tip if (!markdowntip.empty()) { + wxWindow* window = GetGrandParent(); assert(focusedLine); wxPoint pos2 = { 250, focusedLine->rect_label.y }; pos2 = ClientToScreen(pos2); diff --git a/src/slic3r/GUI/ObjColorDialog.cpp b/src/slic3r/GUI/ObjColorDialog.cpp index 7ac8d20bd32..648faffbf9c 100644 --- a/src/slic3r/GUI/ObjColorDialog.cpp +++ b/src/slic3r/GUI/ObjColorDialog.cpp @@ -1,6 +1,9 @@ #include +#include +//#include "libslic3r/FlushVolCalc.hpp" #include "ObjColorDialog.hpp" #include "BitmapCache.hpp" +#include "GUI.hpp" #include "I18N.hpp" #include "GUI_App.hpp" #include "MsgDialog.hpp" @@ -241,6 +244,7 @@ ObjColorPanel::ObjColorPanel(wxWindow * parent, } //end first cluster //draw ui + auto sizer_width = FromDIP(300); // Create two switched panels with their own sizers m_sizer_simple = new wxBoxSizer(wxVERTICAL); m_page_simple = new wxPanel(this, wxID_ANY, wxDefaultPosition, wxDefaultSize, wxTAB_TRAVERSAL); @@ -670,6 +674,7 @@ void ObjColorPanel::draw_table() m_scrolledWindow->SetSizer(m_gridsizer); int totalHeight = row_height *(row+1) * 2; m_scrolledWindow->SetVirtualSize(MIN_OBJCOLOR_DIALOG_WIDTH, totalHeight); + auto look = FIX_SCROLL_HEIGTH; if (totalHeight > FIX_SCROLL_HEIGTH) { m_scrolledWindow->SetMinSize(wxSize(MIN_OBJCOLOR_DIALOG_WIDTH, FIX_SCROLL_HEIGTH)); m_scrolledWindow->SetMaxSize(wxSize(MIN_OBJCOLOR_DIALOG_WIDTH, FIX_SCROLL_HEIGTH)); diff --git a/src/slic3r/GUI/OptionsGroup.cpp b/src/slic3r/GUI/OptionsGroup.cpp index febc326dff8..936afcacb94 100644 --- a/src/slic3r/GUI/OptionsGroup.cpp +++ b/src/slic3r/GUI/OptionsGroup.cpp @@ -9,8 +9,12 @@ #include "Widgets/StaticLine.hpp" #include +#include #include +#include +#include #include "libslic3r/Exception.hpp" +#include "libslic3r/Utils.hpp" #include "libslic3r/AppConfig.hpp" #include "I18N.hpp" #include diff --git a/src/slic3r/GUI/PartPlate.cpp b/src/slic3r/GUI/PartPlate.cpp index 99ec73a42a9..7f2353a3046 100644 --- a/src/slic3r/GUI/PartPlate.cpp +++ b/src/slic3r/GUI/PartPlate.cpp @@ -1359,6 +1359,9 @@ std::vector PartPlate::get_extruders(bool conside_custom_gcode) const const DynamicPrintConfig& glb_config = wxGetApp().preset_bundle->prints.get_edited_preset().config; int glb_support_intf_extr = glb_config.opt_int("support_interface_filament"); int glb_support_extr = glb_config.opt_int("support_filament"); + int glb_wall_extr = glb_config.opt_int("wall_filament"); + int glb_sparse_infill_extr = glb_config.opt_int("sparse_infill_filament"); + int glb_solid_infill_extr = glb_config.opt_int("solid_infill_filament"); bool glb_support = glb_config.opt_bool("enable_support"); glb_support |= glb_config.opt_int("raft_layers") > 0; @@ -1392,26 +1395,53 @@ std::vector PartPlate::get_extruders(bool conside_custom_gcode) const else obj_support = glb_support; - if (!obj_support) - continue; + if (obj_support) { + int obj_support_intf_extr = 0; + const ConfigOption* support_intf_extr_opt = mo->config.option("support_interface_filament"); + if (support_intf_extr_opt != nullptr) + obj_support_intf_extr = support_intf_extr_opt->getInt(); + if (obj_support_intf_extr != 0) + plate_extruders.push_back(obj_support_intf_extr); + else if (glb_support_intf_extr != 0) + plate_extruders.push_back(glb_support_intf_extr); + + int obj_support_extr = 0; + const ConfigOption* support_extr_opt = mo->config.option("support_filament"); + if (support_extr_opt != nullptr) + obj_support_extr = support_extr_opt->getInt(); + if (obj_support_extr != 0) + plate_extruders.push_back(obj_support_extr); + else if (glb_support_extr != 0) + plate_extruders.push_back(glb_support_extr); + } + + int obj_wall_extr = 1; + const ConfigOption* wall_opt = mo->config.option("wall_filament"); + if (wall_opt != nullptr) + obj_wall_extr = wall_opt->getInt(); + if (obj_wall_extr != 1) + plate_extruders.push_back(obj_wall_extr); + else if (glb_wall_extr != 1) + plate_extruders.push_back(glb_wall_extr); + + int obj_sparse_infill_extr = 1; + const ConfigOption* sparse_infill_opt = mo->config.option("sparse_infill_filament"); + if (sparse_infill_opt != nullptr) + obj_sparse_infill_extr = sparse_infill_opt->getInt(); + if (obj_sparse_infill_extr != 1) + plate_extruders.push_back(obj_sparse_infill_extr); + else if (glb_sparse_infill_extr != 1) + plate_extruders.push_back(glb_sparse_infill_extr); + + int obj_solid_infill_extr = 1; + const ConfigOption* solid_infill_opt = mo->config.option("solid_infill_filament"); + if (solid_infill_opt != nullptr) + obj_solid_infill_extr = solid_infill_opt->getInt(); + if (obj_solid_infill_extr != 1) + plate_extruders.push_back(obj_solid_infill_extr); + else if (glb_solid_infill_extr != 1) + plate_extruders.push_back(glb_solid_infill_extr); - int obj_support_intf_extr = 0; - const ConfigOption* support_intf_extr_opt = mo->config.option("support_interface_filament"); - if (support_intf_extr_opt != nullptr) - obj_support_intf_extr = support_intf_extr_opt->getInt(); - if (obj_support_intf_extr != 0) - plate_extruders.push_back(obj_support_intf_extr); - else if (glb_support_intf_extr != 0) - plate_extruders.push_back(glb_support_intf_extr); - - int obj_support_extr = 0; - const ConfigOption* support_extr_opt = mo->config.option("support_filament"); - if (support_extr_opt != nullptr) - obj_support_extr = support_extr_opt->getInt(); - if (obj_support_extr != 0) - plate_extruders.push_back(obj_support_extr); - else if (glb_support_extr != 0) - plate_extruders.push_back(glb_support_extr); } if (conside_custom_gcode) { @@ -1441,6 +1471,10 @@ std::vector PartPlate::get_extruders_under_cli(bool conside_custom_gcode, D // if 3mf file int glb_support_intf_extr = full_config.opt_int("support_interface_filament"); int glb_support_extr = full_config.opt_int("support_filament"); + int glb_wall_extr = full_config.opt_int("wall_filament"); + int glb_sparse_infill_extr = full_config.opt_int("sparse_infill_filament"); + int glb_solid_infill_extr = full_config.opt_int("solid_infill_filament"); + bool glb_support = full_config.opt_bool("enable_support"); glb_support |= full_config.opt_int("raft_layers") > 0; @@ -1502,6 +1536,33 @@ std::vector PartPlate::get_extruders_under_cli(bool conside_custom_gcode, D plate_extruders.push_back(obj_support_extr); else if (glb_support_extr != 0) plate_extruders.push_back(glb_support_extr); + + int obj_wall_extr = 1; + const ConfigOption* wall_opt = object->config.option("wall_filament"); + if (wall_opt != nullptr) + obj_wall_extr = wall_opt->getInt(); + if (obj_wall_extr != 1) + plate_extruders.push_back(obj_wall_extr); + else if (glb_wall_extr != 1) + plate_extruders.push_back(glb_wall_extr); + + int obj_sparse_infill_extr = 1; + const ConfigOption* sparse_infill_opt = object->config.option("sparse_infill_filament"); + if (sparse_infill_opt != nullptr) + obj_sparse_infill_extr = sparse_infill_opt->getInt(); + if (obj_sparse_infill_extr != 1) + plate_extruders.push_back(obj_sparse_infill_extr); + else if (glb_sparse_infill_extr != 1) + plate_extruders.push_back(glb_sparse_infill_extr); + + int obj_solid_infill_extr = 1; + const ConfigOption* solid_infill_opt = object->config.option("solid_infill_filament"); + if (solid_infill_opt != nullptr) + obj_solid_infill_extr = solid_infill_opt->getInt(); + if (obj_solid_infill_extr != 1) + plate_extruders.push_back(obj_solid_infill_extr); + else if (glb_solid_infill_extr != 1) + plate_extruders.push_back(glb_solid_infill_extr); } } @@ -1536,6 +1597,9 @@ std::vector PartPlate::get_extruders_without_support(bool conside_custom_gc return plate_extruders; } + // if 3mf file + const DynamicPrintConfig& glb_config = wxGetApp().preset_bundle->prints.get_edited_preset().config; + for (int obj_idx = 0; obj_idx < m_model->objects.size(); obj_idx++) { if (!contain_instance_totally(obj_idx, 0)) continue; @@ -1594,14 +1658,14 @@ Vec3d PartPlate::estimate_wipe_tower_size(const DynamicPrintConfig & config, con { Vec3d wipe_tower_size; - // double layer_height = 0.08f; // hard code layer height + double layer_height = 0.08f; // hard code layer height double max_height = 0.f; wipe_tower_size.setZero(); wipe_tower_size(0) = w; - // const ConfigOption* layer_height_opt = config.option("layer_height"); - // if (layer_height_opt) - // layer_height = layer_height_opt->getFloat(); + const ConfigOption* layer_height_opt = config.option("layer_height"); + if (layer_height_opt) + layer_height = layer_height_opt->getFloat(); // empty plate if (plate_extruder_size == 0) @@ -1649,6 +1713,7 @@ Vec3d PartPlate::estimate_wipe_tower_size(const DynamicPrintConfig & config, con // If wipe tower height is between the current and next member, set the min_depth as linear interpolation between them auto next_height_to_depth = *iter; if (next_height_to_depth.first > max_height) { + float height_base = curr_height_to_depth.first; float height_diff = next_height_to_depth.first - curr_height_to_depth.first; float min_depth_base = curr_height_to_depth.second; float depth_diff = next_height_to_depth.second - curr_height_to_depth.second; @@ -2037,6 +2102,7 @@ bool PartPlate::intersect_instance(int obj_id, int instance_id, BoundingBoxf3* b if (m_printable) { ModelObject* object = m_model->objects[obj_id]; + ModelInstance* instance = object->instances[instance_id]; BoundingBoxf3 instance_box = bounding_box? *bounding_box: object->instance_convex_hull_bounding_box(instance_id); result = get_plate_box().intersects(instance_box); } @@ -2060,6 +2126,7 @@ bool PartPlate::is_left_top_of(int obj_id, int instance_id) } ModelObject* object = m_model->objects[obj_id]; + ModelInstance* instance = object->instances[instance_id]; std::pair pair(obj_id, instance_id); BoundingBoxf3 instance_box = object->instance_convex_hull_bounding_box(instance_id); @@ -2455,7 +2522,7 @@ void PartPlate::generate_print_polygon(ExPolygon &print_polygon) { auto compute_points = [&print_polygon](Vec2d& center, double radius, double start_angle, double stop_angle, int count) { - double angle_steps; + double angle, angle_steps; angle_steps = (stop_angle - start_angle) / (count - 1); for(int j = 0; j < count; j++ ) { @@ -2474,7 +2541,7 @@ void PartPlate::generate_print_polygon(ExPolygon &print_polygon) { const Vec2d& p = m_shape[i]; Vec2d center; - double start_angle, stop_angle, radius_x, radius_y, radius; + double start_angle, stop_angle, angle_steps, radius_x, radius_y, radius; switch (i) { case 0: radius = 5.f; @@ -2525,7 +2592,7 @@ void PartPlate::generate_exclude_polygon(ExPolygon &exclude_polygon) { auto compute_exclude_points = [&exclude_polygon](Vec2d& center, double radius, double start_angle, double stop_angle, int count) { - double angle_steps; + double angle, angle_steps; angle_steps = (stop_angle - start_angle) / (count - 1); for(int j = 0; j < count; j++ ) { @@ -2544,7 +2611,7 @@ void PartPlate::generate_exclude_polygon(ExPolygon &exclude_polygon) { const Vec2d& p = m_exclude_area[i]; Vec2d center; - double start_angle, stop_angle, radius; + double start_angle, stop_angle, angle_steps, radius_x, radius_y, radius; switch (i) { case 0: radius = 5.f; @@ -3059,7 +3126,7 @@ void PartPlate::update_first_layer_print_sequence(size_t filament_nums) void PartPlate::print() const { - // unsigned int count=0; + unsigned int count=0; BOOST_LOG_TRIVIAL(trace) << __FUNCTION__ << boost::format(": plate index %1%, pointer %2%, print_index %3% print pointer %4%") % m_plate_index % this % m_print_index % m_print; BOOST_LOG_TRIVIAL(trace) << boost::format("\t origin {%1%,%2%,%3%}, width %4%, depth %5%, height %6%") % m_origin.x() % m_origin.y() % m_origin.z() % m_width % m_depth % m_height; @@ -4086,7 +4153,8 @@ int PartPlateList::find_instance_belongs(int obj_id, int instance_id) //newly added or modified int PartPlateList::notify_instance_update(int obj_id, int instance_id, bool is_new) { - int index; + int ret = 0, index; + PartPlate* plate = NULL; ModelObject* object = NULL; if ((obj_id >= 0) && (obj_id < m_model->objects.size())) @@ -4115,7 +4183,7 @@ int PartPlateList::notify_instance_update(int obj_id, int instance_id, bool is_n { //found it added before BOOST_LOG_TRIVIAL(debug) << __FUNCTION__ << boost::format(": found it in previous plate %1%") % index; - PartPlate* plate = m_plate_list[index]; + plate = m_plate_list[index]; if (!plate->intersect_instance(obj_id, instance_id, &boundingbox)) { //not include anymore, remove it from original plate @@ -4220,7 +4288,7 @@ int PartPlateList::notify_instance_update(int obj_id, int instance_id, bool is_n //notify instance is removed int PartPlateList::notify_instance_removed(int obj_id, int instance_id) { - int index, instance_to_delete = instance_id; + int ret = 0, index, instance_to_delete = instance_id; PartPlate* plate = NULL; BOOST_LOG_TRIVIAL(debug) << __FUNCTION__ << boost::format(": obj_id %1%, instance_id %2%") % obj_id % instance_id; @@ -4318,6 +4386,7 @@ int PartPlateList::reload_all_objects(bool except_locked, int plate_index) ModelObject* object = m_model->objects[i]; for (j = 0; j < (unsigned int)object->instances.size(); ++j) { + ModelInstance* instance = object->instances[j]; BoundingBoxf3 boundingbox = object->instance_convex_hull_bounding_box(j); for (k = 0; k < (unsigned int)m_plate_list.size(); ++k) { @@ -4368,7 +4437,9 @@ int PartPlateList::construct_objects_list_for_new_plate(int plate_index) ModelObject* object = m_model->objects[i]; for (j = 0; j < (unsigned int)object->instances.size(); ++j) { + ModelInstance* instance = object->instances[j]; already_included = false; + for (k = 0; k < (unsigned int)plate_index; ++k) { PartPlate* plate = m_plate_list[k]; @@ -4542,6 +4613,7 @@ bool PartPlateList::preprocess_nonprefered_areas(arrangement::ArrangePolygons& r nonprefered_regions.emplace_back(Vec2d{ 18,0 }, Vec2d{ 240,15 }); // new extrusion & hand-eye calibration region //has exclude areas + PartPlate* plate = m_plate_list[0]; for (int index = 0; index < nonprefered_regions.size(); index++) { Polygon ap = scaled(nonprefered_regions[index]).polygon(); @@ -4768,8 +4840,11 @@ void PartPlateList::set_render_option(bool bedtype_texture, bool plate_settings) int PartPlateList::select_plate_by_obj(int obj_index, int instance_index) { + int ret = 0, index; + PartPlate* plate = NULL; + BOOST_LOG_TRIVIAL(debug) << __FUNCTION__ << boost::format(": obj_id %1%, instance_id %2%") % obj_index % instance_index; - int index = find_instance(obj_index, instance_index); + index = find_instance(obj_index, instance_index); if (index != -1) { //found it in plate @@ -4807,6 +4882,8 @@ bool PartPlateList::set_shapes(const Pointfs& shape, const Pointfs& exclude_area m_height_to_lid = height_to_lid; m_height_to_rod = height_to_rod; + double stride_x = plate_stride_x(); + double stride_y = plate_stride_y(); for (unsigned int i = 0; i < (unsigned int)m_plate_list.size(); ++i) { PartPlate* plate = m_plate_list[i]; @@ -5368,12 +5445,14 @@ void PartPlateList::BedTextureInfo::TexturePart::update_buffer() rectangle.push_back(Vec2d(x, y+h)); ExPolygon poly; - for (const auto& p : rectangle) { - Vec2d pp = Vec2d(p.x() + offset.x(), p.y() + offset.y()); - poly.contour.append({ scale_(pp(0)), scale_(pp(1)) }); + for (int i = 0; i < 4; i++) { + const Vec2d & p = rectangle[i]; + for (auto& p : rectangle) { + Vec2d pp = Vec2d(p.x() + offset.x(), p.y() + offset.y()); + poly.contour.append({ scale_(pp(0)), scale_(pp(1)) }); + } } - if (!buffer) buffer = new GLModel(); diff --git a/src/slic3r/GUI/Plater.cpp b/src/slic3r/GUI/Plater.cpp index 7de59dee2af..80f61932817 100644 --- a/src/slic3r/GUI/Plater.cpp +++ b/src/slic3r/GUI/Plater.cpp @@ -396,9 +396,10 @@ Sidebar::priv::~priv() void Sidebar::priv::show_preset_comboboxes() { + const bool showSLA = wxGetApp().preset_bundle->printers.get_edited_preset().printer_technology() == ptSLA; + //BBS #if 0 - const bool showSLA = wxGetApp().preset_bundle->printers.get_edited_preset().printer_technology() == ptSLA; for (size_t i = 0; i < 4; ++i) sizer_presets->Show(i, !showSLA); @@ -1157,7 +1158,7 @@ void Sidebar::init_filament_combo(PlaterPresetComboBox **combo, const int filame auto combo_and_btn_sizer = new wxBoxSizer(wxHORIZONTAL); // BBS: filament double columns - // int em = wxGetApp().em_unit(); + int em = wxGetApp().em_unit(); combo_and_btn_sizer->Add(FromDIP(8), 0, 0, 0, 0 ); (*combo)->clr_picker->SetLabel(wxString::Format("%d", filament_idx + 1)); combo_and_btn_sizer->Add((*combo)->clr_picker, 0, wxALIGN_CENTER_VERTICAL | wxRIGHT, FromDIP(3)); @@ -1325,6 +1326,7 @@ void Sidebar::update_all_preset_comboboxes() void Sidebar::update_presets(Preset::Type preset_type) { PresetBundle &preset_bundle = *wxGetApp().preset_bundle; + const auto print_tech = preset_bundle.printers.get_edited_preset().printer_technology(); BOOST_LOG_TRIVIAL(debug) << __FUNCTION__ << boost::format(": enter, preset_type %1%")%preset_type; switch (preset_type) { @@ -1332,7 +1334,6 @@ void Sidebar::update_presets(Preset::Type preset_type) { // BBS #if 0 - const auto print_tech = preset_bundle.printers.get_edited_preset().printer_technology(); const size_t extruder_cnt = print_tech != ptFFF ? 1 : dynamic_cast(preset_bundle.printers.get_edited_preset().config.option("nozzle_diameter"))->values.size(); const size_t filament_cnt = p->combos_filament.size() > extruder_cnt ? extruder_cnt : p->combos_filament.size(); @@ -1354,7 +1355,7 @@ void Sidebar::update_presets(Preset::Type preset_type) for (size_t i = 0; i < filament_cnt; i++) p->combos_filament[i]->update(); - dynamic_filament_list.update(); + update_dynamic_filament_list(); break; } @@ -1637,7 +1638,7 @@ void Sidebar::on_filaments_change(size_t num_filaments) Layout(); p->m_panel_filament_title->Refresh(); update_ui_from_settings(); - dynamic_filament_list.update(); + update_dynamic_filament_list(); } void Sidebar::add_filament() { @@ -1788,7 +1789,7 @@ void Sidebar::sync_ams_list() // BBS:Record consumables information before synchronization std::vector color_before_sync; - std::vector is_support_before; + std::vector is_support_before; DynamicPrintConfig& project_config = wxGetApp().preset_bundle->project_config; ConfigOptionStrings* color_opt = project_config.option("filament_colour"); for (int i = 0; i < p->combos_filament.size(); ++i) { @@ -1818,7 +1819,7 @@ void Sidebar::sync_ams_list() c->update(); wxGetApp().get_tab(Preset::TYPE_FILAMENT)->select_preset(wxGetApp().preset_bundle->filament_presets[0]); wxGetApp().preset_bundle->export_selections(*wxGetApp().app_config); - dynamic_filament_list.update(); + update_dynamic_filament_list(); // Expand filament list p->m_panel_filament_content->SetMaxSize({-1, -1}); // BBS:Synchronized consumables information @@ -1854,6 +1855,12 @@ void Sidebar::show_SEMM_buttons(bool bshow) Layout(); } +void Sidebar::update_dynamic_filament_list() +{ + dynamic_filament_list.update(); + dynamic_filament_list_1_based.update(); +} + ObjectList* Sidebar::obj_list() { // BBS @@ -2021,13 +2028,18 @@ void Sidebar::auto_calc_flushing_volumes(const int modify_id) { auto& preset_bundle = wxGetApp().preset_bundle; auto& project_config = preset_bundle->project_config; + auto& printer_config = preset_bundle->printers.get_edited_preset().config; const auto& full_config = wxGetApp().preset_bundle->full_config(); auto& ams_multi_color_filament = preset_bundle->ams_multi_color_filment; + auto& ams_filament_list = preset_bundle->filament_ams_list; const std::vector& init_matrix = (project_config.option("flush_volumes_matrix"))->values; + const std::vector& init_extruders = (project_config.option("flush_volumes_vector"))->values; const std::vector& min_flush_volumes= get_min_flush_volumes(full_config); + ConfigOptionFloat* flush_multi_opt = project_config.option("flush_multiplier"); + float flush_multiplier = flush_multi_opt ? flush_multi_opt->getFloat() : 1.f; std::vector matrix = init_matrix; int m_max_flush_volume = Slic3r::g_max_flush_volume; unsigned int m_number_of_extruders = (int)(sqrt(init_matrix.size()) + 0.001); @@ -2436,6 +2448,7 @@ struct Plater::priv void delete_all_objects_from_model(); void reset(bool apply_presets_change = false); void center_selection(); + void drop_selection(); void mirror(Axis axis); void split_object(); void split_volume(); @@ -2924,7 +2937,7 @@ Plater::priv::priv(Plater *q, MainFrame *main_frame) wxGLCanvas* view3D_canvas = view3D->get_wxglcanvas(); //BBS: GUI refactor - // wxGLCanvas* preview_canvas = preview->get_wxglcanvas(); + wxGLCanvas* preview_canvas = preview->get_wxglcanvas(); if (wxGetApp().is_editor()) { // 3DScene events: @@ -3642,8 +3655,11 @@ std::vector Plater::priv::load_files(const std::vector& input_ std::string designer_model_id; std::string designer_country_code; + int answer_convert_from_meters = wxOK_DEFAULT; + int answer_convert_from_imperial_units = wxOK_DEFAULT; int tolal_model_count = 0; + int progress_percent = 0; int total_files = input_files.size(); const int stage_percent[IMPORT_STAGE_MAX+1] = { 5, // IMPORT_STAGE_RESTORE @@ -3810,7 +3826,7 @@ std::vector Plater::priv::load_files(const std::vector& input_ wxString text = wxString::Format(_L("The 3mf's version %s is newer than %s's version %s, Found following keys unrecognized:"), file_version.to_string(), std::string(SLIC3R_APP_FULL_NAME), app_version.to_string()); text += "\n"; - // bool first = true; + bool first = true; // std::string context = into_u8(text); wxString context = text; // if (wxGetApp().app_config->get("user_mode") == "develop") { @@ -3916,7 +3932,7 @@ std::vector Plater::priv::load_files(const std::vector& input_ } // Based on the printer technology field found in the loaded config, select the base for the config, - // PrinterTechnology printer_technology = Preset::printer_technology(config_loaded); + PrinterTechnology printer_technology = Preset::printer_technology(config_loaded); config.apply(static_cast(FullPrintConfig::defaults())); // and place the loaded config over the base. @@ -3971,7 +3987,7 @@ std::vector Plater::priv::load_files(const std::vector& input_ MessageDialog dlg(q, _L("The 3mf has following modified G-codes in filament or printer presets:") + warning_message+ _L("Please confirm that these modified G-codes are safe to prevent any damage to the machine!"), _L("Modified G-codes")); dlg.show_dsa_button(); - dlg.ShowModal(); + auto res = dlg.ShowModal(); if (dlg.get_checkbox_state()) wxGetApp().app_config->set("no_warn_when_modified_gcodes", "true"); } @@ -3984,7 +4000,7 @@ std::vector Plater::priv::load_files(const std::vector& input_ //show_info(q, _L("The 3mf has following customized filament or printer presets:") + warning_message + _L("Please confirm that the G-codes within these presets are safe to prevent any damage to the machine!"), _L("Customized Preset")); MessageDialog dlg(q, _L("The 3mf has following customized filament or printer presets:") + from_u8(warning_message)+ _L("Please confirm that the G-codes within these presets are safe to prevent any damage to the machine!"), _L("Customized Preset")); dlg.show_dsa_button(); - dlg.ShowModal(); + auto res = dlg.ShowModal(); if (dlg.get_checkbox_state()) wxGetApp().app_config->set("no_warn_when_modified_gcodes", "true"); } @@ -4487,7 +4503,7 @@ std::vector Plater::priv::load_model_objects(const ModelObjectPtrs& mode #ifndef AUTOPLACEMENT_ON_LOAD // bool need_arrange = false; #endif /* AUTOPLACEMENT_ON_LOAD */ - // bool scaled_down = false; + bool scaled_down = false; std::vector obj_idxs; unsigned int obj_count = model.objects.size(); @@ -4524,15 +4540,15 @@ std::vector Plater::priv::load_model_objects(const ModelObjectPtrs& mode const Vec3d ratio = size.cwiseQuotient(bed_size); const double max_ratio = std::max(ratio(0), ratio(1)); if (max_ratio > 10000) { - MessageDialog dlg(q, _L("Your object appears to be too large. It will be scaled down to fit the heat bed automatically."), _L("Object too large"), - wxICON_QUESTION | wxOK); - dlg.ShowModal(); + MessageDialog dlg(q, _L("Your object appears to be too large, Do you want to scale it down to fit the heat bed automatically?"), _L("Object too large"), + wxICON_QUESTION | wxYES); + int answer = dlg.ShowModal(); // the size of the object is too big -> this could lead to overflow when moving to clipper coordinates, // so scale down the mesh object->scale_mesh_after_creation(1. / max_ratio); object->origin_translation = Vec3d::Zero(); object->center_around_origin(); - // scaled_down = true; + scaled_down = true; break; } else if (max_ratio > 10) { @@ -4541,7 +4557,7 @@ std::vector Plater::priv::load_model_objects(const ModelObjectPtrs& mode int answer = dlg.ShowModal(); if (answer == wxID_YES) { instance->set_scaling_factor(instance->get_scaling_factor() / max_ratio); - // scaled_down = true; + scaled_down = true; } } } @@ -5022,6 +5038,11 @@ void Plater::priv::center_selection() view3D->center_selected(); } +void Plater::priv::drop_selection() +{ + view3D->drop_selected(); +} + void Plater::priv::mirror(Axis axis) { view3D->mirror_selection(axis); @@ -5290,7 +5311,7 @@ unsigned int Plater::priv::update_background_process(bool force_validation, bool process_validation_warning(warning); return_state |= UPDATE_BACKGROUND_PROCESS_INVALID; if (printer_technology == ptFFF) { - // const Print* print = background_process.fff_print(); + const Print* print = background_process.fff_print(); //Polygons polygons; //if (print->config().print_sequence == PrintSequence::ByObject) // Print::sequential_print_clearance_valid(*print, &polygons); @@ -6434,6 +6455,7 @@ void Plater::priv::on_select_bed_type(wxCommandEvent &evt) int selection = combo->GetSelection(); std::string bed_type_name = print_config_def.get("curr_bed_type")->enum_values[selection]; + PresetBundle& preset_bundle = *wxGetApp().preset_bundle; DynamicPrintConfig& proj_config = wxGetApp().preset_bundle->project_config; const t_config_enum_values* keys_map = print_config_def.get("curr_bed_type")->enum_keys_map; @@ -6529,7 +6551,7 @@ void Plater::priv::on_select_preset(wxCommandEvent &evt) wxGetApp().preset_bundle->set_filament_preset(idx, preset_name); wxGetApp().plater()->update_project_dirty_from_presets(); wxGetApp().preset_bundle->export_selections(*wxGetApp().app_config); - dynamic_filament_list.update(); + sidebar->update_dynamic_filament_list(); bool flag_is_change = is_support_filament(idx); if (flag != flag_is_change) { sidebar->auto_calc_flushing_volumes(idx); @@ -8272,7 +8294,7 @@ void Plater::priv::on_create_filament(SimpleEvent &) update_ui_from_settings(); sidebar->update_all_preset_comboboxes(); CreatePresetSuccessfulDialog success_dlg(wxGetApp().mainframe, SuccessType::FILAMENT); - success_dlg.ShowModal(); + int res = success_dlg.ShowModal(); } } @@ -8384,7 +8406,7 @@ void Plater::priv::take_snapshot(const std::string& snapshot_name, const UndoRed // This is a workaround until we refactor the Wipe Tower position / orientation to live solely inside the Model, not in the Print config. // BBS: add partplate logic if (this->printer_technology == ptFFF) { - // const DynamicPrintConfig& config = wxGetApp().preset_bundle->prints.get_edited_preset().config; + const DynamicPrintConfig& config = wxGetApp().preset_bundle->prints.get_edited_preset().config; const DynamicPrintConfig& proj_cfg = wxGetApp().preset_bundle->project_config; const ConfigOptionFloats* tower_x_opt = proj_cfg.option("wipe_tower_x"); const ConfigOptionFloats* tower_y_opt = proj_cfg.option("wipe_tower_y"); @@ -8494,7 +8516,7 @@ void Plater::priv::undo_redo_to(std::vector::const_iterator // This is a workaround until we refactor the Wipe Tower position / orientation to live solely inside the Model, not in the Print config. // BBS: add partplate logic if (this->printer_technology == ptFFF) { - // const DynamicPrintConfig& config = wxGetApp().preset_bundle->prints.get_edited_preset().config; + const DynamicPrintConfig& config = wxGetApp().preset_bundle->prints.get_edited_preset().config; const DynamicPrintConfig& proj_cfg = wxGetApp().preset_bundle->project_config; const ConfigOptionFloats* tower_x_opt = proj_cfg.option("wipe_tower_x"); const ConfigOptionFloats* tower_y_opt = proj_cfg.option("wipe_tower_y"); @@ -8561,7 +8583,7 @@ void Plater::priv::undo_redo_to(std::vector::const_iterator // This is a workaround until we refactor the Wipe Tower position / orientation to live solely inside the Model, not in the Print config. // BBS: add partplate logic if (this->printer_technology == ptFFF) { - // const DynamicPrintConfig& config = wxGetApp().preset_bundle->prints.get_edited_preset().config; + const DynamicPrintConfig& config = wxGetApp().preset_bundle->prints.get_edited_preset().config; const DynamicPrintConfig& proj_cfg = wxGetApp().preset_bundle->project_config; ConfigOptionFloats* tower_x_opt = const_cast(proj_cfg.option("wipe_tower_x")); ConfigOptionFloats* tower_y_opt = const_cast(proj_cfg.option("wipe_tower_y")); @@ -8742,6 +8764,7 @@ void Plater::priv::record_start_print_preset(std::string action) { } j["record_event"] = action; + NetworkAgent* agent = wxGetApp().getAgent(); } catch (...) { return; @@ -8944,7 +8967,7 @@ void Plater::load_project(wxString const& filename2, // if res is empty no data has been loaded if (!res.empty() && (load_restore || !(strategy & LoadStrategy::Silence))) { - BOOST_LOG_TRIVIAL(info) << __FUNCTION__ << __LINE__ << " call set_project_filename: " << (load_restore ? originfile : filename); + BOOST_LOG_TRIVIAL(info) << __FUNCTION__ << __LINE__ << " call set_project_filename: " << load_restore ? originfile : filename; p->set_project_filename(load_restore ? originfile : filename); if (load_restore && originfile.IsEmpty()) { p->set_project_name(_L("Untitled")); @@ -9026,6 +9049,8 @@ int Plater::save_project(bool saveAs) boost::uintmax_t size = boost::filesystem::file_size(into_path(filename)); j["file_size"] = size; j["file_name"] = std::string(filename.mb_str()); + + NetworkAgent* agent = wxGetApp().getAgent(); } catch (...) {} @@ -9058,7 +9083,7 @@ void Plater::import_model_id(wxString download_info) } } - catch (std::exception&) + catch (const std::exception& error) { //wxString sError = error.what(); } @@ -9099,6 +9124,8 @@ void Plater::import_model_id(wxString download_info) // NetworkAgent* m_agent = Slic3r::GUI::wxGetApp().getAgent(); // if (!m_agent) return; + int res = 0; + unsigned int http_code; std::string http_body; msg = _L("prepare 3mf file..."); @@ -9137,7 +9164,7 @@ void Plater::import_model_id(wxString download_info) if (sFile == filename) is_already_exist = true; } } - catch (std::exception&) + catch (const std::exception& error) { //wxString sError = error.what(); } @@ -9850,6 +9877,7 @@ void Plater::calib_retraction(const Calib_Params& params) add_model(false, Slic3r::resources_dir() + "/calib/retraction/retraction_tower.stl"); auto print_config = &wxGetApp().preset_bundle->prints.get_edited_preset().config; + auto filament_config = &wxGetApp().preset_bundle->filaments.get_edited_preset().config; auto printer_config = &wxGetApp().preset_bundle->printers.get_edited_preset().config; auto obj = model().objects[0]; @@ -10180,7 +10208,7 @@ bool Plater::preview_zip_archive(const boost::filesystem::path& archive_path) std::replace(name.begin(), name.end(), '\\', '/'); // rename if file exists std::string filename = path.filename().string(); - std::string extension = path.extension().string(); + std::string extension = boost::filesystem::extension(path); std::string just_filename = filename.substr(0, filename.size() - extension.size()); std::string final_filename = just_filename; @@ -10486,6 +10514,7 @@ ProjectDropDialog::ProjectDropDialog(const std::string &filename) auto limit_width = m_fname_f->GetSize().GetWidth() - 2; auto current_width = 0; + auto cut_index = 0; auto fstring = wxString(""); auto bstring = wxString(""); @@ -10493,6 +10522,7 @@ ProjectDropDialog::ProjectDropDialog(const std::string &filename) auto file_name = wxString(filename); for (int x = 0; x < file_name.length(); x++) { current_width += m_fname_s->GetTextExtent(file_name[x]).GetWidth(); + cut_index = x; if (current_width > limit_width) { bstring += file_name[x]; @@ -11395,6 +11425,7 @@ void Plater::export_gcode(bool prefer_removable) if (preset_bundle) { j["gcode_printer_model"] = preset_bundle->printers.get_edited_preset().get_printer_type(preset_bundle); } + NetworkAgent *agent = wxGetApp().getAgent(); } catch (...) {} } @@ -11504,7 +11535,7 @@ TriangleMesh Plater::combine_mesh_fff(const ModelObject& mo, int instance_id, st std::vector csgmesh; csgmesh.reserve(2 * mo.volumes.size()); - csg::model_to_csgmesh(mo, Transform3d::Identity(), std::back_inserter(csgmesh), + bool has_splitable_volume = csg::model_to_csgmesh(mo, Transform3d::Identity(), std::back_inserter(csgmesh), csg::mpartsPositive | csg::mpartsNegative); std::string fail_msg = _u8L("Unable to perform boolean operation on model meshes. " @@ -11584,9 +11615,9 @@ void Plater::export_stl(bool extended, bool selection_only, bool multi_stls) wxBusyCursor wait; const auto& selection = p->get_selection(); + const auto obj_idx = selection.get_object_idx(); #if EXPORT_WITH_BOOLEAN - const auto obj_idx = selection.get_object_idx(); if (selection_only && (obj_idx == -1 || selection.is_wipe_tower())) return; #else @@ -12349,6 +12380,7 @@ void Plater::record_slice_preset(std::string action) } j["record_event"] = action; + NetworkAgent* agent = wxGetApp().getAgent(); } catch (...) { @@ -12531,7 +12563,7 @@ int Plater::send_gcode(int plate_idx, Export3mfProgressFn proFn) p->m_print_job_data._3mf_path = fs::path(plate->get_tmp_gcode_path()); p->m_print_job_data._3mf_path.replace_extension("3mf"); } - catch (std::exception&) { + catch (std::exception& e) { BOOST_LOG_TRIVIAL(error) << "generate 3mf path failed"; return -1; } @@ -12564,7 +12596,7 @@ int Plater::export_config_3mf(int plate_idx, Export3mfProgressFn proFn) try { p->m_print_job_data._3mf_config_path = fs::path(plate->get_temp_config_3mf_path()); } - catch (std::exception&) { + catch (std::exception& e) { BOOST_LOG_TRIVIAL(error) << "generate 3mf path failed"; return -1; } @@ -12788,7 +12820,7 @@ void Plater::on_config_change(const DynamicPrintConfig &config) if (update_filament_colors_in_full_config()) { p->sidebar->obj_list()->update_filament_colors(); - dynamic_filament_list.update(); + p->sidebar->update_dynamic_filament_list(); continue; } } @@ -12845,9 +12877,9 @@ void Plater::on_config_change(const DynamicPrintConfig &config) bed_shape_changed = true; update_scheduled = true; } - // BBS - else if (opt_key == "support_interface_filament" || - opt_key == "support_filament") { + // Orca: update when *_filament changed + else if (opt_key == "support_interface_filament" || opt_key == "support_filament" || opt_key == "wall_filament" || + opt_key == "sparse_infill_filament" || opt_key == "solid_infill_filament") { update_scheduled = true; } } @@ -13239,6 +13271,7 @@ void Plater::suppress_background_process(const bool stop_background_process) } void Plater::center_selection() { p->center_selection(); } +void Plater::drop_selection() { p->drop_selection(); } void Plater::mirror(Axis axis) { p->mirror(axis); } void Plater::split_object() { p->split_object(); } void Plater::split_volume() { p->split_volume(); } diff --git a/src/slic3r/GUI/Plater.hpp b/src/slic3r/GUI/Plater.hpp index 52f0706e897..16396631a85 100644 --- a/src/slic3r/GUI/Plater.hpp +++ b/src/slic3r/GUI/Plater.hpp @@ -150,6 +150,7 @@ class Sidebar : public wxPanel void sync_ams_list(); // Orca void show_SEMM_buttons(bool bshow); + void update_dynamic_filament_list(); ObjectList* obj_list(); ObjectSettings* obj_settings(); @@ -529,6 +530,7 @@ class Plater: public wxPanel //BBS: add clone logic void clone_selection(); void center_selection(); + void drop_selection(); void search(bool plater_is_active, Preset::Type type, wxWindow *tag, TextInput *etag, wxWindow *stag); void mirror(Axis axis); void split_object(); diff --git a/src/slic3r/GUI/Preferences.cpp b/src/slic3r/GUI/Preferences.cpp index 2dad186e464..612fb86b7e9 100644 --- a/src/slic3r/GUI/Preferences.cpp +++ b/src/slic3r/GUI/Preferences.cpp @@ -16,6 +16,7 @@ #include "Widgets/RadioBox.hpp" #include "Widgets/TextInput.hpp" #include +#include #include #ifdef __WINDOWS__ @@ -228,13 +229,13 @@ wxBoxSizer *PreferencesDialog::create_item_language_combobox( } } - /*auto check = [this](bool yes_or_no) { + auto check = [this](bool yes_or_no) { // if (yes_or_no) // return true; int act_btns = ActionButtons::SAVE; return wxGetApp().check_and_keep_current_preset_changes(_L("Switching application language"), _L("Switching application language while some presets are modified."), act_btns); - };*/ + }; m_current_language_selected = combobox->GetSelection(); if (m_current_language_selected >= 0 && m_current_language_selected < vlist.size()) { diff --git a/src/slic3r/GUI/PresetComboBoxes.cpp b/src/slic3r/GUI/PresetComboBoxes.cpp index a710668d713..e634c4fe1a3 100644 --- a/src/slic3r/GUI/PresetComboBoxes.cpp +++ b/src/slic3r/GUI/PresetComboBoxes.cpp @@ -401,7 +401,7 @@ void PresetComboBox::add_ams_filaments(std::string selected, bool alias_name) auto color = tray.opt_string("filament_colour", 0u); auto name = tray.opt_string("tray_name", 0u); wxBitmap bmp(*get_extruder_color_icon(color, name, 24, 16)); - Append(get_preset_name(*iter), bmp.ConvertToImage(), &m_first_ams_filament + entry.first); + int item_id = Append(get_preset_name(*iter), bmp.ConvertToImage(), &m_first_ams_filament + entry.first); //validate_selection(id->value == selected); // can not select } m_last_ams_filament = GetCount(); @@ -668,6 +668,7 @@ PlaterPresetComboBox::PlaterPresetComboBox(wxWindow *parent, Preset::Type preset // BBS if (m_type == Preset::TYPE_FILAMENT) { + int em = wxGetApp().em_unit(); clr_picker = new wxBitmapButton(parent, wxID_ANY, {}, wxDefaultPosition, wxSize(FromDIP(20), FromDIP(20)), wxBU_EXACTFIT | wxBU_AUTODRAW | wxBORDER_NONE); clr_picker->SetToolTip(_L("Click to pick filament color")); clr_picker->Bind(wxEVT_BUTTON, [this](wxCommandEvent& e) { @@ -802,6 +803,7 @@ bool PlaterPresetComboBox::switch_to_tab() wxGetApp().params_dialog()->Popup(); tab->restore_last_select_item(); + const Preset* selected_filament_preset = nullptr; if (m_type == Preset::TYPE_FILAMENT) { const std::string& selected_preset = GetString(GetSelection()).ToUTF8().data(); @@ -981,6 +983,7 @@ void PlaterPresetComboBox::update() if (!preset.is_visible || (!preset.is_compatible && !is_selected)) continue; + bool single_bar = false; if (m_type == Preset::TYPE_FILAMENT) { #if 0 @@ -988,7 +991,7 @@ void PlaterPresetComboBox::update() filament_rgb = is_selected ? selected_filament_preset->config.opt_string("filament_colour", 0) : preset.config.opt_string("filament_colour", 0); extruder_rgb = (is_selected && !filament_color.empty()) ? filament_color : filament_rgb; - bool single_bar = filament_rgb == extruder_rgb; + single_bar = filament_rgb == extruder_rgb; bitmap_key += single_bar ? filament_rgb : filament_rgb + extruder_rgb; #endif @@ -1476,6 +1479,8 @@ void GUI::CalibrateFilamentComboBox::update() this->Clear(); invalidate_selection(); + const Preset* selected_filament_preset = nullptr; + m_nonsys_presets.clear(); m_system_presets.clear(); diff --git a/src/slic3r/GUI/Printer/PrinterFileSystem.cpp b/src/slic3r/GUI/Printer/PrinterFileSystem.cpp index f406553b0c2..8d272057f8d 100644 --- a/src/slic3r/GUI/Printer/PrinterFileSystem.cpp +++ b/src/slic3r/GUI/Printer/PrinterFileSystem.cpp @@ -548,6 +548,7 @@ void PrinterFileSystem::BuildGroups() void PrinterFileSystem::UpdateGroupSelect() { m_group_flags.clear(); + int beg = 0; if (m_group_mode != G_NONE) { auto group = m_group_mode == G_YEAR ? m_group_year : m_group_month; if (m_group_mode == G_YEAR) diff --git a/src/slic3r/GUI/PrinterWebView.cpp b/src/slic3r/GUI/PrinterWebView.cpp index 952cf892de1..35870df65b5 100644 --- a/src/slic3r/GUI/PrinterWebView.cpp +++ b/src/slic3r/GUI/PrinterWebView.cpp @@ -1,9 +1,11 @@ #include "PrinterWebView.hpp" #include "I18N.hpp" +#include "slic3r/GUI/PrinterWebView.hpp" #include "slic3r/GUI/wxExtensions.hpp" #include "slic3r/GUI/GUI_App.hpp" #include "slic3r/GUI/MainFrame.hpp" +#include "libslic3r_version.h" #include #include diff --git a/src/slic3r/GUI/Project.cpp b/src/slic3r/GUI/Project.cpp index e69ba143db9..003d0e4cdde 100644 --- a/src/slic3r/GUI/Project.cpp +++ b/src/slic3r/GUI/Project.cpp @@ -266,7 +266,7 @@ void ProjectPanel::OnScriptMessage(wxWebViewEvent& evt) } } - catch (std::exception&) { + catch (std::exception& e) { // wxMessageBox(e.what(), "json Exception", MB_OK); } } diff --git a/src/slic3r/GUI/RecenterDialog.cpp b/src/slic3r/GUI/RecenterDialog.cpp index 2a923fb1812..69477638904 100644 --- a/src/slic3r/GUI/RecenterDialog.cpp +++ b/src/slic3r/GUI/RecenterDialog.cpp @@ -86,6 +86,8 @@ void RecenterDialog::OnPaint(wxPaintEvent& event){ } void RecenterDialog::render(wxDC& dc) { + wxSize size = GetSize(); + dc.SetFont(Label::Body_14); dc.SetTextForeground(text_color); wxPoint pos_start = wxPoint(BORDER, BORDER); diff --git a/src/slic3r/GUI/ReleaseNote.cpp b/src/slic3r/GUI/ReleaseNote.cpp index 5937ff9d375..617397f32f1 100644 --- a/src/slic3r/GUI/ReleaseNote.cpp +++ b/src/slic3r/GUI/ReleaseNote.cpp @@ -1375,6 +1375,7 @@ wxString ConfirmBeforeSendDialog::format_text(wxString str, int warp) Label st (this, str); wxString out_txt = str; wxString count_txt = ""; + int new_line_pos = 0; for (int i = 0; i < str.length(); i++) { auto text_size = st.GetTextExtent(count_txt); diff --git a/src/slic3r/GUI/RemovableDriveManager.cpp b/src/slic3r/GUI/RemovableDriveManager.cpp index a0a68eb05bd..a26e13448da 100644 --- a/src/slic3r/GUI/RemovableDriveManager.cpp +++ b/src/slic3r/GUI/RemovableDriveManager.cpp @@ -6,9 +6,13 @@ #include #if _WIN32 +#include #include #include #include + +#include + #else // unix, linux & OSX includes #include diff --git a/src/slic3r/GUI/Search.cpp b/src/slic3r/GUI/Search.cpp index 05958f7ac81..186124a2c13 100644 --- a/src/slic3r/GUI/Search.cpp +++ b/src/slic3r/GUI/Search.cpp @@ -435,6 +435,8 @@ void SearchItem::OnPaint(wxPaintEvent &event) auto bold_pair = std::vector>(); + auto index = 0; + auto b_first_list = std::vector(); auto b_second_list = std::vector(); @@ -813,9 +815,9 @@ void SearchDialog::OnCheck(wxCommandEvent &event) void SearchDialog::OnMotion(wxMouseEvent &event) { - // wxDataViewItem item; - // wxDataViewColumn *col; - // wxWindow * win = this; + wxDataViewItem item; + wxDataViewColumn *col; + wxWindow * win = this; // search_list->HitTest(wxGetMousePosition() - win->GetScreenPosition(), item, col); // search_list->Select(item); diff --git a/src/slic3r/GUI/SelectMachine.cpp b/src/slic3r/GUI/SelectMachine.cpp index f641769b45a..e6b2ac81c57 100644 --- a/src/slic3r/GUI/SelectMachine.cpp +++ b/src/slic3r/GUI/SelectMachine.cpp @@ -421,7 +421,7 @@ SelectMachinePopup::SelectMachinePopup(wxWindow *parent) m_refresh_timer = new wxTimer(); m_refresh_timer->SetOwner(this); Bind(EVT_UPDATE_USER_MACHINE_LIST, &SelectMachinePopup::update_machine_list, this); - Bind(wxEVT_TIMER, [this](wxTimerEvent&) { on_timer(); }); + Bind(wxEVT_TIMER, &SelectMachinePopup::on_timer, this); Bind(EVT_DISSMISS_MACHINE_LIST, &SelectMachinePopup::on_dissmiss_win, this); } @@ -459,7 +459,7 @@ void SelectMachinePopup::Popup(wxWindow *WXUNUSED(focus)) } } - on_timer(); + wxPostEvent(this, wxTimerEvent()); PopupWindow::Popup(); } @@ -529,7 +529,7 @@ wxWindow *SelectMachinePopup::create_title_panel(wxString text) return m_panel_title_own; } -void SelectMachinePopup::on_timer() +void SelectMachinePopup::on_timer(wxTimerEvent &event) { BOOST_LOG_TRIVIAL(trace) << "SelectMachinePopup on_timer"; wxGetApp().reset_to_active(); @@ -933,6 +933,7 @@ wxString SelectMachineDialog::format_text(wxString &m_msg) wxString out_txt = m_msg; wxString count_txt = ""; + int new_line_pos = 0; for (int i = 0; i < m_msg.length(); i++) { auto text_size = m_statictext_ams_msg->GetTextExtent(count_txt); @@ -2460,6 +2461,9 @@ void SelectMachineDialog::on_ok_btn(wxCommandEvent &event) //check blacklist for (auto i = 0; i < m_ams_mapping_result.size(); i++) { + + auto tid = m_ams_mapping_result[i].tray_id; + std::string filament_type = boost::to_upper_copy(m_ams_mapping_result[i].type); std::string filament_brand; @@ -3315,7 +3319,7 @@ void SelectMachineDialog::on_selection_changed(wxCommandEvent &event) if (m_list[i]->is_lan_mode_printer() && !m_list[i]->has_access_right()) { ConnectPrinterDialog dlg(wxGetApp().mainframe, wxID_ANY, _L("Input access code")); dlg.set_machine_object(m_list[i]); - dlg.ShowModal(); + auto res = dlg.ShowModal(); m_printer_last_select = ""; m_comboBox_printer->SetSelection(-1); m_comboBox_printer->Refresh(); @@ -3365,6 +3369,7 @@ void SelectMachineDialog::on_selection_changed(wxCommandEvent &event) void SelectMachineDialog::update_flow_cali_check(MachineObject* obj) { + auto bed_type = m_plater->get_partplate_list().get_curr_plate()->get_bed_type(true); auto show_cali_tips = true; if (obj && obj->get_printer_arch() == PrinterArch::ARCH_I3) { show_cali_tips = false; } @@ -3701,6 +3706,7 @@ void SelectMachineDialog::reset_ams_material() { MaterialHash::iterator iter = m_materialList.begin(); while (iter != m_materialList.end()) { + int id = iter->first; Material* item = iter->second; MaterialItem* m = item->item; wxString ams_id = "-"; @@ -3982,6 +3988,7 @@ void SelectMachineDialog::reset_and_sync_ams_list() BitmapCache bmcache; MaterialHash::iterator iter = m_materialList.begin(); while (iter != m_materialList.end()) { + int id = iter->first; Material *item = iter->second; item->item->Destroy(); delete item; @@ -4008,6 +4015,7 @@ void SelectMachineDialog::reset_and_sync_ams_list() item->Bind(wxEVT_LEFT_DOWN, [this, item, materials, extruder](wxMouseEvent &e) { MaterialHash::iterator iter = m_materialList.begin(); while (iter != m_materialList.end()) { + int id = iter->first; Material * item = iter->second; MaterialItem *m = item->item; m->on_normal(); @@ -4017,6 +4025,9 @@ void SelectMachineDialog::reset_and_sync_ams_list() m_current_filament_id = extruder; item->on_selected(); + auto mouse_pos = ClientToScreen(e.GetPosition()); + wxPoint rect = item->ClientToScreen(wxPoint(0, 0)); + // update ams data DeviceManager *dev_manager = Slic3r::GUI::wxGetApp().getDeviceManager(); if (!dev_manager) return; @@ -4236,6 +4247,7 @@ void SelectMachineDialog::unify_deal_thumbnail_data(ThumbnailData &input_data, T MaterialHash::iterator iter = m_materialList.begin(); bool is_connect_printer = true; while (iter != m_materialList.end()) { + int id = iter->first; Material * item = iter->second; MaterialItem *m = item->item; if (m->m_ams_name == "-") { @@ -4347,10 +4359,10 @@ void SelectMachineDialog::set_default_normal(const ThumbnailData &data) MachineObject* obj_ = dev_manager->get_selected_machine(); update_flow_cali_check(obj_); -#ifdef __WINDOWS__ wxSize screenSize = wxGetDisplaySize(); auto dialogSize = this->GetSize(); +#ifdef __WINDOWS__ if (screenSize.GetHeight() < dialogSize.GetHeight()) { m_need_adaptation_screen = true; m_scrollable_view->SetScrollRate(0, 5); @@ -4411,6 +4423,7 @@ void SelectMachineDialog::set_default_from_sdcard() //init MaterialItem MaterialHash::iterator iter = m_materialList.begin(); while (iter != m_materialList.end()) { + int id = iter->first; Material* item = iter->second; item->item->Destroy(); delete item; @@ -4433,6 +4446,7 @@ void SelectMachineDialog::set_default_from_sdcard() item->Bind(wxEVT_LEFT_DOWN, [this, item, materials, fo](wxMouseEvent& e) { MaterialHash::iterator iter = m_materialList.begin(); while (iter != m_materialList.end()) { + int id = iter->first; Material* item = iter->second; MaterialItem* m = item->item; m->on_normal(); @@ -4445,6 +4459,9 @@ void SelectMachineDialog::set_default_from_sdcard() catch (...) {} item->on_selected(); + + auto mouse_pos = ClientToScreen(e.GetPosition()); + wxPoint rect = item->ClientToScreen(wxPoint(0, 0)); // update ams data DeviceManager* dev_manager = Slic3r::GUI::wxGetApp().getDeviceManager(); if (!dev_manager) return; @@ -4468,7 +4485,7 @@ void SelectMachineDialog::set_default_from_sdcard() m_mapping_popup.Popup(); } } - }); + }); Material* material_item = new Material(); material_item->id = fo.id; @@ -4495,9 +4512,10 @@ void SelectMachineDialog::set_default_from_sdcard() set_flow_calibration_state(true); -#ifdef __WINDOWS__ wxSize screenSize = wxGetDisplaySize(); auto dialogSize = this->GetSize(); + +#ifdef __WINDOWS__ if (screenSize.GetHeight() < dialogSize.GetHeight()) { m_need_adaptation_screen = true; m_scrollable_view->SetScrollRate(0, 5); diff --git a/src/slic3r/GUI/SelectMachine.hpp b/src/slic3r/GUI/SelectMachine.hpp index dadc3be6132..16da5e05d57 100644 --- a/src/slic3r/GUI/SelectMachine.hpp +++ b/src/slic3r/GUI/SelectMachine.hpp @@ -278,7 +278,7 @@ class SelectMachinePopup : public PopupWindow private: void OnLeftUp(wxMouseEvent &event); - void on_timer(); + void on_timer(wxTimerEvent &event); void update_other_devices(); void update_user_devices(); diff --git a/src/slic3r/GUI/Selection.cpp b/src/slic3r/GUI/Selection.cpp index baf0773ce7e..187ec03eb72 100644 --- a/src/slic3r/GUI/Selection.cpp +++ b/src/slic3r/GUI/Selection.cpp @@ -490,6 +490,12 @@ void Selection::center() return; } +void Selection::drop() +{ + this->move_to_center(Vec3d(0, 0, -this->get_bounding_box().min.z())); + wxGetApp().plater()->get_view3D_canvas3D()->do_move(L("Move Object")); +} + void Selection::center_plate(const int plate_idx) { PartPlate* plate = wxGetApp().plater()->get_partplate_list().get_plate(plate_idx); @@ -1104,6 +1110,7 @@ void Selection::move_to_center(const Vec3d& displacement, bool local) if (!m_valid) return; + EMode translation_type = m_mode; //BOOST_LOG_TRIVIAL(debug) << __FUNCTION__ << boost::format(": %1%, displacement {%2%, %3%, %4%}") % __LINE__ % displacement(X) % displacement(Y) % displacement(Z); set_caches(); @@ -1124,6 +1131,7 @@ void Selection::move_to_center(const Vec3d& displacement, bool local) else { const Vec3d local_displacement = (m_cache.volumes_data[i].get_instance_rotation_matrix() * m_cache.volumes_data[i].get_instance_scale_matrix() * m_cache.volumes_data[i].get_instance_mirror_matrix()).inverse() * displacement; v.set_volume_offset(m_cache.volumes_data[i].get_volume_position() + local_displacement); + translation_type = Volume; } } } @@ -2177,8 +2185,7 @@ void Selection::update_type() obj_it->second.insert(inst_idx); } - // BBL removed functionality below - // bool requires_disable = false; + bool requires_disable = false; if (!m_valid) m_type = Invalid; @@ -2194,7 +2201,7 @@ void Selection::update_type() else if (first->is_modifier) { m_type = SingleModifier; - // requires_disable = true; + requires_disable = true; } else { @@ -2216,7 +2223,7 @@ void Selection::update_type() else { m_type = SingleVolume; - // requires_disable = true; + requires_disable = true; } } } @@ -2264,7 +2271,7 @@ void Selection::update_type() else if (modifiers_count == (unsigned int)m_list.size()) m_type = MultipleModifier; - // requires_disable = true; + requires_disable = true; } } else if ((selected_instances_count > 1) && (selected_instances_count * model_volumes_count + sla_volumes_count == (unsigned int)m_list.size())) diff --git a/src/slic3r/GUI/Selection.hpp b/src/slic3r/GUI/Selection.hpp index 52b1a818517..8fc0f8bc66c 100644 --- a/src/slic3r/GUI/Selection.hpp +++ b/src/slic3r/GUI/Selection.hpp @@ -230,6 +230,7 @@ class Selection void remove_curr_plate(); void clone(int numbers = 1); void center(); + void drop(); void center_plate(const int plate_idx); void set_printable(bool printable); diff --git a/src/slic3r/GUI/SendMultiMachinePage.cpp b/src/slic3r/GUI/SendMultiMachinePage.cpp index 036409f4d9d..bf766d78d02 100644 --- a/src/slic3r/GUI/SendMultiMachinePage.cpp +++ b/src/slic3r/GUI/SendMultiMachinePage.cpp @@ -300,7 +300,7 @@ SendMultiMachinePage::SendMultiMachinePage(Plater* plater) m_main_scroll->Bind(wxEVT_LEFT_DOWN, [this](auto& e) {check_fcous_state(this); e.Skip(); }); init_timer(); - Bind(wxEVT_TIMER, [this](wxTimerEvent&) { on_timer(); }); + Bind(wxEVT_TIMER, &SendMultiMachinePage::on_timer, this); wxGetApp().UpdateDlgDarkUI(this); } @@ -451,6 +451,8 @@ BBL::PrintParams SendMultiMachinePage::request_params(MachineObject* obj) auto use_ams = false; AmsRadioSelectorList::Node* node = m_radio_group.GetFirst(); + auto groupid = 0; + while (node) { AmsRadioSelector* rs = node->GetData(); @@ -470,11 +472,13 @@ BBL::PrintParams SendMultiMachinePage::request_params(MachineObject* obj) PrintPrepareData job_data; m_plater->get_print_job_data(&job_data); - - std::string temp_file = Slic3r::resources_dir() + "/check_access_code.txt"; - auto check_access_code_path = temp_file.c_str(); - BOOST_LOG_TRIVIAL(trace) << "sned_job: check_access_code_path = " << check_access_code_path; - job_data._temp_path = fs::path(check_access_code_path); + + if (&job_data) { + std::string temp_file = Slic3r::resources_dir() + "/check_access_code.txt"; + auto check_access_code_path = temp_file.c_str(); + BOOST_LOG_TRIVIAL(trace) << "sned_job: check_access_code_path = " << check_access_code_path; + job_data._temp_path = fs::path(check_access_code_path); + } int curr_plate_idx; if (job_data.plate_idx >= 0) @@ -635,7 +639,7 @@ void SendMultiMachinePage::on_send(wxCommandEvent& event) int result = m_plater->send_gcode(m_print_plate_idx, [this](int export_stage, int current, int total, bool& cancel) { if (m_is_canceled) return; - // bool cancelled = false; + bool cancelled = false; wxString msg = _L("Preparing print job"); //m_status_bar->update_status(msg, cancelled, 10, true); //m_export_3mf_cancel = cancel = cancelled; @@ -734,7 +738,7 @@ bool SendMultiMachinePage::Show(bool show) m_refresh_timer->Stop(); m_refresh_timer->SetOwner(this); m_refresh_timer->Start(4000); - on_timer(); + wxPostEvent(this, wxTimerEvent()); } else { m_refresh_timer->Stop(); @@ -931,6 +935,7 @@ void SendMultiMachinePage::on_set_finish_mapping(wxCommandEvent& evt) if (selection_data_arr.size() == 6) { auto ams_colour = wxColour(wxAtoi(selection_data_arr[0]), wxAtoi(selection_data_arr[1]), wxAtoi(selection_data_arr[2]), wxAtoi(selection_data_arr[3])); + int old_filament_id = (int)wxAtoi(selection_data_arr[5]); int ctype = 0; std::vector material_cols; @@ -1142,7 +1147,7 @@ wxPanel* SendMultiMachinePage::create_page() e.Skip(); }); - m_printer_name = new Button(m_table_head_panel, _L("Device Name"), "toolbar_double_directional_arrow", wxNO_BORDER, MM_ICON_SIZE); + m_printer_name = new Button(m_table_head_panel, _L("Device Name"), "toolbar_double_directional_arrow", wxNO_BORDER, ICON_SIZE); m_printer_name->SetBackgroundColor(head_bg); m_printer_name->SetCornerRadius(0); m_printer_name->SetFont(TABLE_HEAD_FONT); @@ -1164,7 +1169,7 @@ wxPanel* SendMultiMachinePage::create_page() m_table_head_sizer->Add( 0, 0, 0, wxLEFT, FromDIP(10) ); m_table_head_sizer->Add(m_printer_name, 0, wxALIGN_CENTER_VERTICAL, 0); - m_device_status = new Button(m_table_head_panel, _L("Device Status"), "toolbar_double_directional_arrow", wxNO_BORDER, MM_ICON_SIZE); + m_device_status = new Button(m_table_head_panel, _L("Device Status"), "toolbar_double_directional_arrow", wxNO_BORDER, ICON_SIZE); m_device_status->SetBackgroundColor(head_bg); m_device_status->SetFont(TABLE_HEAD_FONT); m_device_status->SetCornerRadius(0); @@ -1207,7 +1212,7 @@ wxPanel* SendMultiMachinePage::create_page() //m_table_head_sizer->Add(m_task_status, 0, wxALIGN_CENTER_VERTICAL, 0); - m_ams = new Button(m_table_head_panel, _L("Ams Status"), "toolbar_double_directional_arrow", wxNO_BORDER, MM_ICON_SIZE, false); + m_ams = new Button(m_table_head_panel, _L("Ams Status"), "toolbar_double_directional_arrow", wxNO_BORDER, ICON_SIZE, false); m_ams->SetBackgroundColor(head_bg); m_ams->SetCornerRadius(0); m_ams->SetFont(TABLE_HEAD_FONT); @@ -1228,7 +1233,7 @@ wxPanel* SendMultiMachinePage::create_page() }); m_table_head_sizer->Add(m_ams, 0, wxALIGN_CENTER_VERTICAL, 0); - m_refresh_button = new Button(m_table_head_panel, "", "mall_control_refresh", wxNO_BORDER, MM_ICON_SIZE, false); + m_refresh_button = new Button(m_table_head_panel, "", "mall_control_refresh", wxNO_BORDER, ICON_SIZE, false); m_refresh_button->SetBackgroundColor(head_bg); m_refresh_button->SetCornerRadius(0); m_refresh_button->SetFont(TABLE_HEAD_FONT); @@ -1380,6 +1385,7 @@ void SendMultiMachinePage::sync_ams_list() BitmapCache bmcache; MaterialHash::iterator iter = m_material_list.begin(); while (iter != m_material_list.end()) { + int id = iter->first; Material* item = iter->second; item->item->Destroy(); delete item; @@ -1408,6 +1414,7 @@ void SendMultiMachinePage::sync_ams_list() item->Bind(wxEVT_LEFT_DOWN, [this, item, materials, extruder](wxMouseEvent& e) { MaterialHash::iterator iter = m_material_list.begin(); while (iter != m_material_list.end()) { + int id = iter->first; Material* item = iter->second; MaterialItem* m = item->item; m->on_normal(); @@ -1417,6 +1424,9 @@ void SendMultiMachinePage::sync_ams_list() m_current_filament_id = extruder; item->on_selected(); + auto mouse_pos = ClientToScreen(e.GetPosition()); + wxPoint rect = item->ClientToScreen(wxPoint(0, 0)); + // update ams data if (get_value_radio("use_ams")) { if (m_mapping_popup->IsShown()) return; @@ -1646,7 +1656,7 @@ void SendMultiMachinePage::init_timer() m_refresh_timer = new wxTimer(); } -void SendMultiMachinePage::on_timer() +void SendMultiMachinePage::on_timer(wxTimerEvent& event) { for (auto it = m_device_items.begin(); it != m_device_items.end(); it++) { it->second->sync_state(); diff --git a/src/slic3r/GUI/SendMultiMachinePage.hpp b/src/slic3r/GUI/SendMultiMachinePage.hpp index c6935f2d644..58014f065c8 100644 --- a/src/slic3r/GUI/SendMultiMachinePage.hpp +++ b/src/slic3r/GUI/SendMultiMachinePage.hpp @@ -194,7 +194,7 @@ class SendMultiMachinePage : public DPIDialog void on_set_finish_mapping(wxCommandEvent& evt); void on_rename_click(wxCommandEvent& event); - void on_timer(); + void on_timer(wxTimerEvent& event); void init_timer(); private: diff --git a/src/slic3r/GUI/SendSystemInfoDialog.cpp b/src/slic3r/GUI/SendSystemInfoDialog.cpp index 3740cbb6903..73de9101c42 100644 --- a/src/slic3r/GUI/SendSystemInfoDialog.cpp +++ b/src/slic3r/GUI/SendSystemInfoDialog.cpp @@ -443,7 +443,7 @@ static std::string generate_system_info_json() pt::ptree hw_node; { - hw_node.put("ArchName", wxPlatformInfo::Get().GetBitnessName()); + hw_node.put("ArchName", wxPlatformInfo::Get().GetArchName()); size_t num = std::round(Slic3r::total_physical_memory()/107374100.); hw_node.put("RAM_GiB", std::to_string(num / 10) + "." + std::to_string(num % 10)); } diff --git a/src/slic3r/GUI/SendToPrinter.cpp b/src/slic3r/GUI/SendToPrinter.cpp index 51b6797a5f6..7d0fb5663cd 100644 --- a/src/slic3r/GUI/SendToPrinter.cpp +++ b/src/slic3r/GUI/SendToPrinter.cpp @@ -59,6 +59,7 @@ wxString SendToPrinterDialog::format_text(wxString &m_msg) wxString out_txt = m_msg; wxString count_txt = ""; + int new_line_pos = 0; for (int i = 0; i < m_msg.length(); i++) { auto text_size = m_statictext_printer_msg->GetTextExtent(count_txt); @@ -1337,6 +1338,11 @@ void SendToPrinterDialog::set_default() Layout(); Fit(); + + wxSize screenSize = wxGetDisplaySize(); + auto dialogSize = this->GetSize(); + + // basic info auto aprint_stats = m_plater->get_partplate_list().get_current_fff_print().print_statistics(); wxString time; diff --git a/src/slic3r/GUI/SlicingProgressNotification.cpp b/src/slic3r/GUI/SlicingProgressNotification.cpp index 219950ceff2..bedcbc2eb7c 100644 --- a/src/slic3r/GUI/SlicingProgressNotification.cpp +++ b/src/slic3r/GUI/SlicingProgressNotification.cpp @@ -224,8 +224,8 @@ void NotificationManager::SlicingProgressNotification::render(GLCanvas3D& canvas const float progress_panel_width = (m_window_width - 2 * progress_child_window_padding.x); const float progress_panel_height = (58.0f * scale); const float dailytips_panel_width = (m_window_width - 2 * dailytips_child_window_padding.x); - // const float gcodeviewer_height = wxGetApp().plater()->get_preview_canvas3D()->get_gcode_viewer().get_legend_height(); - // const float dailytips_panel_height = std::min(380.0f * scale, std::max(90.0f, (cnv_size.get_height() - gcodeviewer_height - progress_panel_height - dailytips_child_window_padding.y - initial_y - m_line_height * 4))); + const float gcodeviewer_height = wxGetApp().plater()->get_preview_canvas3D()->get_gcode_viewer().get_legend_height(); + //const float dailytips_panel_height = std::min(380.0f * scale, std::max(90.0f, (cnv_size.get_height() - gcodeviewer_height - progress_panel_height - dailytips_child_window_padding.y - initial_y - m_line_height * 4))); const float dailytips_panel_height = 125.0f * scale; float right_gap = right_margin + (move_from_overlay ? overlay_width + m_line_height * 5 : 0); diff --git a/src/slic3r/GUI/StatusPanel.cpp b/src/slic3r/GUI/StatusPanel.cpp index d4b1148df34..2a7ff21b767 100644 --- a/src/slic3r/GUI/StatusPanel.cpp +++ b/src/slic3r/GUI/StatusPanel.cpp @@ -291,6 +291,7 @@ void PrintingTaskPanel::create_panel(wxWindow* parent) }); m_button_pause_resume->Bind(wxEVT_LEAVE_WINDOW, [this](auto &e) { + auto buf = m_button_pause_resume->GetClientData(); if (m_button_pause_resume->GetToolTipText() == _L("Pause")) { m_button_pause_resume->SetBitmap_("print_control_pause"); } @@ -2527,7 +2528,7 @@ void StatusPanel::update_misc_ctrl(MachineObject *obj) } bool light_on = obj->chamber_light != MachineObject::LIGHT_EFFECT::LIGHT_EFFECT_OFF; - BOOST_LOG_TRIVIAL(trace) << "light: " << (light_on ? "on" : "off"); + BOOST_LOG_TRIVIAL(trace) << "light: " << light_on ? "on" : "off"; if (m_switch_lamp_timeout > 0) m_switch_lamp_timeout--; else { @@ -2591,6 +2592,7 @@ void StatusPanel::update_ams(MachineObject *obj) } bool is_support_virtual_tray = obj->ams_support_virtual_tray; + bool is_support_filament_backup = obj->is_support_filament_backup; AMSModel ams_mode = AMSModel::GENERIC_AMS; if (obj) { @@ -2661,6 +2663,9 @@ void StatusPanel::update_ams(MachineObject *obj) std::string curr_ams_id = m_ams_control->GetCurentAms(); std::string curr_can_id = m_ams_control->GetCurrentCan(curr_ams_id); + bool is_vt_tray = false; + if (obj->m_tray_tar == std::to_string(VIRTUAL_TRAY_ID)) + is_vt_tray = true; // set segment 1, 2 if (obj->m_tray_now == std::to_string(VIRTUAL_TRAY_ID) ) { @@ -4902,6 +4907,7 @@ wxBoxSizer *ScoreDialog::get_button_sizer() if (m_upload_status_code == StatusCode::UPLOAD_PROGRESS) { int need_upload_nums = need_upload_images.size(); int upload_nums = 0; + int upload_failed_nums = 0; ProgressDialog *progress_dialog = new ProgressDialog(_L("Upload Pictrues"), _L("Number of images successfully uploaded") + ": " + std::to_string(upload_nums) + "/" + std::to_string(need_upload_nums), need_upload_nums, this); for (std::set>::iterator it = need_upload_images.begin(); it != need_upload_images.end();) { std::pair need_upload = *it; diff --git a/src/slic3r/GUI/Tab.cpp b/src/slic3r/GUI/Tab.cpp index 3bcb4eda28e..1360ccd7d15 100644 --- a/src/slic3r/GUI/Tab.cpp +++ b/src/slic3r/GUI/Tab.cpp @@ -1222,7 +1222,7 @@ void Tab::msw_rescale() // recreate and set new ImageList for tree_ctrl m_icons->RemoveAll(); m_icons = new wxImageList(m_scaled_icons_list.front().bmp().GetWidth(), m_scaled_icons_list.front().bmp().GetHeight(), false); - // for (ScalableBitmap& bmp : m_scaled_icons_list) + for (ScalableBitmap& bmp : m_scaled_icons_list) //m_icons->Add(bmp.bmp()); m_tabctrl->AssignImageList(m_icons); @@ -1256,7 +1256,7 @@ void Tab::sys_color_changed() // recreate and set new ImageList for tree_ctrl m_icons->RemoveAll(); m_icons = new wxImageList(m_scaled_icons_list.front().bmp().GetWidth(), m_scaled_icons_list.front().bmp().GetHeight(), false); - // for (ScalableBitmap& bmp : m_scaled_icons_list) + for (ScalableBitmap& bmp : m_scaled_icons_list) //m_icons->Add(bmp.bmp()); m_tabctrl->AssignImageList(m_icons); @@ -1617,6 +1617,19 @@ void Tab::on_value_change(const std::string& opt_key, const boost::any& value) } } + + // -1 means caculate all + auto update_flush_volume = [](int idx = -1) { + if (idx < 0) { + size_t filament_size = wxGetApp().plater()->get_extruder_colors_from_plater_config().size(); + for (size_t i = 0; i < filament_size; ++i) + wxGetApp().plater()->sidebar().auto_calc_flushing_volumes(i); + } + else + wxGetApp().plater()->sidebar().auto_calc_flushing_volumes(idx); + }; + + string opt_key_without_idx = opt_key.substr(0, opt_key.find('#')); if (opt_key_without_idx == "long_retractions_when_cut") { @@ -2601,6 +2614,8 @@ void TabPrintModel::update_model_config() // Reset m_config manually because there's no corresponding config in m_parent_tab->m_config for (auto plate_item : m_object_configs) { const DynamicPrintConfig& plate_config = plate_item.second->get(); + BedType plate_bed_type = (BedType)0; + PrintSequence plate_print_seq = (PrintSequence)0; if (!plate_config.has("curr_bed_type")) { // same as global DynamicConfig& global_cfg = wxGetApp().preset_bundle->project_config; @@ -2911,6 +2926,7 @@ void TabPrintPlate::on_value_change(const std::string& opt_key, const boost::any void TabPrintPlate::notify_changed(ObjectBase* object) { + auto plate = dynamic_cast(object); auto objects_list = wxGetApp().obj_list(); wxDataViewItemArray items; objects_list->GetSelections(items); @@ -3437,8 +3453,6 @@ void TabFilament::build() optgroup->append_single_option_line("filament_loading_speed", "semm"); optgroup->append_single_option_line("filament_unloading_speed_start", "semm"); optgroup->append_single_option_line("filament_unloading_speed", "semm"); - optgroup->append_single_option_line("filament_load_time", "semm"); - optgroup->append_single_option_line("filament_unload_time", "semm"); optgroup->append_single_option_line("filament_toolchange_delay", "semm"); optgroup->append_single_option_line("filament_cooling_moves", "semm"); optgroup->append_single_option_line("filament_cooling_initial_speed", "semm"); @@ -3581,10 +3595,9 @@ void TabFilament::toggle_options() if (m_active_page->title() == L("Multimaterial")) { // Orca: hide specific settings for BBL printers - for (auto el : - {"filament_minimal_purge_on_wipe_tower", "filament_loading_speed_start", "filament_loading_speed", - "filament_unloading_speed_start", "filament_unloading_speed", "filament_load_time", "filament_unload_time", - "filament_toolchange_delay", "filament_cooling_moves", "filament_cooling_initial_speed", "filament_cooling_final_speed"}) + for (auto el : {"filament_minimal_purge_on_wipe_tower", "filament_loading_speed_start", "filament_loading_speed", + "filament_unloading_speed_start", "filament_unloading_speed", "filament_toolchange_delay", "filament_cooling_moves", + "filament_cooling_initial_speed", "filament_cooling_final_speed"}) toggle_option(el, !is_BBL_printer); } } @@ -3741,8 +3754,6 @@ void TabPrinter::build_fff() optgroup->append_single_option_line("use_relative_e_distances"); optgroup->append_single_option_line("use_firmware_retraction"); // optgroup->append_single_option_line("spaghetti_detector"); - optgroup->append_single_option_line("machine_load_filament_time"); - optgroup->append_single_option_line("machine_unload_filament_time"); optgroup->append_single_option_line("time_cost"); optgroup = page->new_optgroup(L("Cooling Fan"), "param_cooling_fan"); @@ -4197,6 +4208,11 @@ if (is_marlin_flavor) optgroup->append_single_option_line("parking_pos_retraction", "semm"); optgroup->append_single_option_line("extra_loading_move", "semm"); optgroup->append_single_option_line("high_current_on_filament_swap", "semm"); + + optgroup = page->new_optgroup(L("Advanced"), L"param_advanced"); + optgroup->append_single_option_line("machine_load_filament_time"); + optgroup->append_single_option_line("machine_unload_filament_time"); + optgroup->append_single_option_line("machine_tool_change_time"); m_pages.insert(m_pages.end() - n_after_single_extruder_MM, page); } @@ -4443,9 +4459,8 @@ void TabPrinter::toggle_options() if (m_active_page->title() == L("Basic information")) { // SoftFever: hide BBL specific settings - for (auto el : - {"scan_first_layer", "machine_load_filament_time", "machine_unload_filament_time", "bbl_calib_mark_logo", "bbl_use_printhost"}) - toggle_line(el, is_BBL_printer); + for (auto el : {"scan_first_layer", "bbl_calib_mark_logo", "bbl_use_printhost"}) + toggle_line(el, is_BBL_printer); // SoftFever: hide non-BBL settings for (auto el : {"use_firmware_retraction", "use_relative_e_distances", "support_multi_bed_types", "pellet_modded_printer"}) @@ -4755,14 +4770,14 @@ void Tab::rebuild_page_tree() if (sel_item == m_last_select_item) m_last_select_item = item; else - m_last_select_item = 0; + m_last_select_item = NULL; // allow activate page before selection of a page_tree item m_disable_tree_sel_changed_event = false; //BBS: GUI refactor if (item >= 0) { - update_current_page_in_background(item); + bool ret = update_current_page_in_background(item); //if m_active_page is changed in update_current_page_in_background //will just update the selected item of the treectrl if (m_parent->is_active_and_shown_tab(this)) // FIX: modify state not update @@ -5582,6 +5597,7 @@ void Tab::delete_preset() if (m_presets->get_preset_base(current_preset) == ¤t_preset) { //root preset is_base_preset = true; if (current_preset.type == Preset::Type::TYPE_PRINTER && !current_preset.is_system) { //Customize third-party printers + Preset ¤t_preset = m_presets->get_selected_preset(); int filament_preset_num = 0; int process_preset_num = 0; for (const Preset &preset : m_preset_bundle->filaments.get_presets()) { @@ -5845,6 +5861,7 @@ wxSizer* TabPrinter::create_bed_shape_widget(wxWindow* parent) sizer->Add(btn, 0, wxALIGN_CENTER_VERTICAL); btn->Bind(wxEVT_BUTTON, ([this](wxCommandEvent e) { + bool is_configed_by_BBL = PresetUtils::system_printer_bed_model(m_preset_bundle->printers.get_edited_preset()).size() > 0; BedShapeDialog dlg(this); dlg.build_dialog(*m_config->option("printable_area"), *m_config->option("bed_custom_texture"), diff --git a/src/slic3r/GUI/Tabbook.hpp b/src/slic3r/GUI/Tabbook.hpp index 61eee685b8a..7dd19389def 100644 --- a/src/slic3r/GUI/Tabbook.hpp +++ b/src/slic3r/GUI/Tabbook.hpp @@ -198,6 +198,8 @@ class Tabbook: public wxBookCtrlBase // check that only the selected page is visible and others are hidden: for (size_t page = 0; page < m_pages.size(); page++) { + wxWindow* win_a = GetPage(page); + wxWindow* win_b = GetPage(n); if (page != n && GetPage(page) != GetPage(n)) { m_pages[page]->Hide(); } diff --git a/src/slic3r/GUI/UnsavedChangesDialog.cpp b/src/slic3r/GUI/UnsavedChangesDialog.cpp index 1b46e2b7dd1..b47f3c0389c 100644 --- a/src/slic3r/GUI/UnsavedChangesDialog.cpp +++ b/src/slic3r/GUI/UnsavedChangesDialog.cpp @@ -1654,7 +1654,7 @@ void UnsavedChangesDialog::update_tree(Preset::Type type, PresetCollection* pres const DynamicPrintConfig& new_config = presets->get_edited_preset().config; type = presets->type(); - // const std::map& category_icon_map = wxGetApp().get_tab(type)->get_category_icon_map(); + const std::map& category_icon_map = wxGetApp().get_tab(type)->get_category_icon_map(); //m_tree->model->AddPreset(type, from_u8(presets->get_edited_preset().name), old_pt); diff --git a/src/slic3r/GUI/UpdateDialogs.cpp b/src/slic3r/GUI/UpdateDialogs.cpp index deba5a7a97e..d78136a0940 100644 --- a/src/slic3r/GUI/UpdateDialogs.cpp +++ b/src/slic3r/GUI/UpdateDialogs.cpp @@ -24,11 +24,12 @@ namespace Slic3r { namespace GUI { -// Orca: Replace static char* with macro defs -// currently disabled until needed -// #define URL_CHANGELOG "%1%" -// #define URL_DOWNLOAD "%1%" -// #define URL_DEV "%1%" + +static const char* URL_CHANGELOG = "%1%"; +static const char* URL_DOWNLOAD = "%1%"; +static const char* URL_DEV = "%1%"; + +static const std::string CONFIG_UPDATE_WIKI_URL(""); // MsgUpdateSlic3r diff --git a/src/slic3r/GUI/UpgradePanel.cpp b/src/slic3r/GUI/UpgradePanel.cpp index e2376326e4c..e9384c385be 100644 --- a/src/slic3r/GUI/UpgradePanel.cpp +++ b/src/slic3r/GUI/UpgradePanel.cpp @@ -670,6 +670,8 @@ void MachineInfoPanel::update_ams_ext(MachineObject *obj) show_ams(true); std::map ver_list = obj->get_ams_version(); + AmsPanelHash::iterator iter = m_amspanel_list.begin(); + for (auto i = 0; i < m_amspanel_list.GetCount(); i++) { AmsPanel* amspanel = m_amspanel_list[i]; amspanel->Hide(); diff --git a/src/slic3r/GUI/UserManager.cpp b/src/slic3r/GUI/UserManager.cpp index 0fd8dfce258..29f5f2d137d 100644 --- a/src/slic3r/GUI/UserManager.cpp +++ b/src/slic3r/GUI/UserManager.cpp @@ -25,6 +25,7 @@ void UserManager::set_agent(NetworkAgent* agent) int UserManager::parse_json(std::string payload) { + bool restored_json = false; json j; json j_pre = json::parse(payload); if (j_pre.empty()) { @@ -40,7 +41,7 @@ int UserManager::parse_json(std::string payload) //bind if (j_pre["bind"]["command"].get() == "bind") { std::string dev_id; - std::string result; + std:; string result; if (j_pre["bind"].contains("dev_id")) { dev_id = j_pre["bind"]["dev_id"].get(); diff --git a/src/slic3r/GUI/WebDownPluginDlg.cpp b/src/slic3r/GUI/WebDownPluginDlg.cpp index 49fc439887b..82d2816f2e6 100644 --- a/src/slic3r/GUI/WebDownPluginDlg.cpp +++ b/src/slic3r/GUI/WebDownPluginDlg.cpp @@ -1,17 +1,27 @@ #include "WebDownPluginDlg.hpp" +#include "ConfigWizard.hpp" + +#include #include "I18N.hpp" #include "libslic3r/AppConfig.hpp" +#include "slic3r/GUI/wxExtensions.hpp" #include "slic3r/GUI/GUI_App.hpp" +#include "libslic3r_version.h" #include +#include #include + #include #include +#include #include #include +#include #include "MainFrame.hpp" +#include #include #include #include @@ -217,7 +227,7 @@ void DownPluginFrame::OnScriptMessage(wxWebViewEvent &evt) auto plugin_folder = (boost::filesystem::path(wxStandardPaths::Get().GetUserDataDir().ToUTF8().data()) / "plugins").make_preferred().string(); desktop_open_any_folder(plugin_folder); } - } catch (std::exception&) { + } catch (std::exception &e) { // wxMessageBox(e.what(), "json Exception", MB_OK); } } diff --git a/src/slic3r/GUI/WebGuideDialog.cpp b/src/slic3r/GUI/WebGuideDialog.cpp index 94913348e18..201e2a8db9a 100644 --- a/src/slic3r/GUI/WebGuideDialog.cpp +++ b/src/slic3r/GUI/WebGuideDialog.cpp @@ -893,13 +893,13 @@ bool GuideFrame::apply_config(AppConfig *app_config, PresetBundle *preset_bundle } std::string first_added_filament; - /*auto get_first_added_material_preset = [this, app_config](const std::string& section_name, std::string& first_added_preset) { + auto get_first_added_material_preset = [this, app_config](const std::string& section_name, std::string& first_added_preset) { if (m_appconfig_new.has_section(section_name)) { // get first of new added preset names const std::map& old_presets = app_config->has_section(section_name) ? app_config->get_section(section_name) : std::map(); first_added_preset = get_first_added_preset(old_presets, m_appconfig_new.get_section(section_name)); } - };*/ + }; // Not switch filament //get_first_added_material_preset(AppConfig::SECTION_FILAMENTS, first_added_filament); @@ -960,6 +960,7 @@ bool GuideFrame::run() BOOST_LOG_TRIVIAL(info) << "GuideFrame cancelled"; if (app.preset_bundle->printers.only_default_printers()) { //we install the default here + bool apply_keeped_changes = false; //clear filament section and use default materials app.app_config->set_variant(PresetBundle::BBL_BUNDLE, PresetBundle::BBL_DEFAULT_PRINTER_MODEL, PresetBundle::BBL_DEFAULT_PRINTER_VARIANT, "true"); @@ -1139,7 +1140,7 @@ int GuideFrame::LoadProfile() wxString strVendor = from_u8(iter->path().string()).BeforeLast('.'); strVendor = strVendor.AfterLast( '\\'); - strVendor = strVendor.AfterLast('/'); + strVendor = strVendor.AfterLast('\/'); wxString strExtension = from_u8(iter->path().string()).AfterLast('.').Lower(); if (w2s(strVendor) == PresetBundle::BBL_BUNDLE && strExtension.CmpNoCase("json") == 0) @@ -1158,7 +1159,7 @@ int GuideFrame::LoadProfile() //cout << iter->path().string() << endl; wxString strVendor = from_u8(iter->path().string()).BeforeLast('.'); strVendor = strVendor.AfterLast( '\\'); - strVendor = strVendor.AfterLast('/'); + strVendor = strVendor.AfterLast('\/'); wxString strExtension = from_u8(iter->path().string()).AfterLast('.').Lower(); if (w2s(strVendor) != PresetBundle::BBL_BUNDLE && strExtension.CmpNoCase("json")==0) @@ -1543,6 +1544,9 @@ int GuideFrame::LoadProfileFamily(std::string strVendor, std::string strFilePath BOOST_LOG_TRIVIAL(info) << __FUNCTION__ << "Vendor: " << strVendor <<", tFilaList Add: " << s1; } + int nFalse = 0; + int nModel = 0; + int nFinish = 0; BOOST_LOG_TRIVIAL(info) << __FUNCTION__ << boost::format(", got %1% filaments") % nsize; for (int n = 0; n < nsize; n++) { json OneFF = pFilament.at(n); @@ -1652,7 +1656,7 @@ std::string GuideFrame::w2s(wxString sSrc) void GuideFrame::GetStardardFilePath(std::string &FilePath) { StrReplace(FilePath, "\\", w2s(wxString::Format("%c", boost::filesystem::path::preferred_separator))); - StrReplace(FilePath, "/", w2s(wxString::Format("%c", boost::filesystem::path::preferred_separator))); + StrReplace(FilePath, "\/", w2s(wxString::Format("%c", boost::filesystem::path::preferred_separator))); } bool GuideFrame::LoadFile(std::string jPath, std::string &sContent) diff --git a/src/slic3r/GUI/WebUserLoginDialog.cpp b/src/slic3r/GUI/WebUserLoginDialog.cpp index 4385f43dae4..b95aa50b5f0 100644 --- a/src/slic3r/GUI/WebUserLoginDialog.cpp +++ b/src/slic3r/GUI/WebUserLoginDialog.cpp @@ -3,6 +3,7 @@ #include #include "I18N.hpp" #include "libslic3r/AppConfig.hpp" +#include "slic3r/GUI/wxExtensions.hpp" #include "slic3r/GUI/GUI_App.hpp" #include "libslic3r_version.h" @@ -12,9 +13,11 @@ #include #include +#include #include #include +#include #include #include "MainFrame.hpp" diff --git a/src/slic3r/GUI/WebViewDialog.cpp b/src/slic3r/GUI/WebViewDialog.cpp index a5e17afab43..fab48fa6793 100644 --- a/src/slic3r/GUI/WebViewDialog.cpp +++ b/src/slic3r/GUI/WebViewDialog.cpp @@ -5,6 +5,7 @@ #include "slic3r/GUI/GUI_App.hpp" #include "slic3r/GUI/MainFrame.hpp" #include "libslic3r_version.h" +#include "../Utils/Http.hpp" #include #include diff --git a/src/slic3r/GUI/Widgets/AMSControl.cpp b/src/slic3r/GUI/Widgets/AMSControl.cpp index c9a7e5c6e15..ea2fea852c7 100644 --- a/src/slic3r/GUI/Widgets/AMSControl.cpp +++ b/src/slic3r/GUI/Widgets/AMSControl.cpp @@ -137,7 +137,7 @@ void AMSrefresh::create(wxWindow *parent, wxWindowID id, const wxPoint &pos, con wxWindow::Create(parent, id, pos, size, wxBORDER_NONE); SetBackgroundColour(AMS_CONTROL_DEF_BLOCK_BK_COLOUR); - Bind(wxEVT_TIMER, [this](wxTimerEvent&) { on_timer(); }); + Bind(wxEVT_TIMER, &AMSrefresh::on_timer, this); Bind(wxEVT_PAINT, &AMSrefresh::paintEvent, this); Bind(wxEVT_ENTER_WINDOW, &AMSrefresh::OnEnterWindow, this); Bind(wxEVT_LEAVE_WINDOW, &AMSrefresh::OnLeaveWindow, this); @@ -166,14 +166,14 @@ void AMSrefresh::create(wxWindow *parent, wxWindowID id, const wxPoint &pos, con m_playing_timer = new wxTimer(); m_playing_timer->SetOwner(this); - on_timer(); + wxPostEvent(this, wxTimerEvent()); SetSize(AMS_REFRESH_SIZE); SetMinSize(AMS_REFRESH_SIZE); SetMaxSize(AMS_REFRESH_SIZE); } -void AMSrefresh::on_timer() +void AMSrefresh::on_timer(wxTimerEvent &event) { //if (m_rotation_angle >= m_rfid_bitmap_list.size()) { // m_rotation_angle = 0; @@ -472,7 +472,7 @@ void AMSextruder::doRender(wxDC& dc) { //m_current_colur = wxSize size = GetSize(); - dc.SetPen(wxPen(AMS_CONTROL_GRAY500, 2, wxPENSTYLE_SOLID)); + dc.SetPen(wxPen(AMS_CONTROL_GRAY500, 2, wxSOLID)); dc.SetBrush(wxBrush(*wxTRANSPARENT_BRUSH)); if (!m_none_ams_mode) { @@ -484,24 +484,24 @@ void AMSextruder::doRender(wxDC& dc) if (m_vams_loading) { - if (m_current_colur.Alpha() == 0) { dc.SetPen(wxPen(*wxWHITE, 6, wxPENSTYLE_SOLID)); } - else { dc.SetPen(wxPen(m_current_colur, 6, wxPENSTYLE_SOLID)); } + if (m_current_colur.Alpha() == 0) { dc.SetPen(wxPen(*wxWHITE, 6, wxSOLID)); } + else { dc.SetPen(wxPen(m_current_colur, 6, wxSOLID)); } dc.DrawRoundedRectangle(-size.x / 2, size.y * 0.1, size.x, size.y, 4); if ((m_current_colur == *wxWHITE || m_current_colur.Alpha() == 0) && !wxGetApp().dark_mode()) { - dc.SetPen(wxPen(AMS_CONTROL_DEF_BLOCK_BK_COLOUR, 1, wxPENSTYLE_SOLID)); + dc.SetPen(wxPen(AMS_CONTROL_DEF_BLOCK_BK_COLOUR, 1, wxSOLID)); dc.DrawRoundedRectangle(-size.x / 2 - FromDIP(3), size.y * 0.1 + FromDIP(3), size.x, size.y, 3); dc.DrawRoundedRectangle(-size.x / 2 + FromDIP(3), size.y * 0.1 - FromDIP(3), size.x, size.y, 5); } } if (m_ams_loading && !m_none_ams_mode) { - if (m_current_colur.Alpha() == 0) {dc.SetPen(wxPen(*wxWHITE, 6, wxPENSTYLE_SOLID));} - else {dc.SetPen(wxPen(m_current_colur, 6, wxPENSTYLE_SOLID));} + if (m_current_colur.Alpha() == 0) {dc.SetPen(wxPen(*wxWHITE, 6, wxSOLID));} + else {dc.SetPen(wxPen(m_current_colur, 6, wxSOLID));} dc.DrawLine(size.x / 2, -1, size.x / 2, size.y * 0.6 - 1); if ((m_current_colur == *wxWHITE || m_current_colur.Alpha() == 0) && !wxGetApp().dark_mode()) { - dc.SetPen(wxPen(AMS_CONTROL_DEF_BLOCK_BK_COLOUR, 1, wxPENSTYLE_SOLID)); + dc.SetPen(wxPen(AMS_CONTROL_DEF_BLOCK_BK_COLOUR, 1, wxSOLID)); dc.DrawLine(size.x / 2 - FromDIP(4), -1, size.x / 2 - FromDIP(3), size.y * 0.6 - 1); dc.DrawLine(size.x / 2 + FromDIP(3), -1, size.x / 2 + FromDIP(3), size.y * 0.6 - 1); } @@ -509,12 +509,12 @@ void AMSextruder::doRender(wxDC& dc) } else { if (m_ams_loading) { - if (m_current_colur.Alpha() == 0) { dc.SetPen(wxPen(*wxWHITE, 6, wxPENSTYLE_SOLID)); } - else { dc.SetPen(wxPen(m_current_colur, 6, wxPENSTYLE_SOLID)); } + if (m_current_colur.Alpha() == 0) { dc.SetPen(wxPen(*wxWHITE, 6, wxSOLID)); } + else { dc.SetPen(wxPen(m_current_colur, 6, wxSOLID)); } dc.DrawLine(size.x / 2, -1, size.x / 2, size.y * 0.6 - 1); if ((m_current_colur == *wxWHITE || m_current_colur.Alpha() == 0) && !wxGetApp().dark_mode()) { - dc.SetPen(wxPen(AMS_CONTROL_DEF_BLOCK_BK_COLOUR, 1, wxPENSTYLE_SOLID)); + dc.SetPen(wxPen(AMS_CONTROL_DEF_BLOCK_BK_COLOUR, 1, wxSOLID)); dc.DrawLine(size.x / 2 - FromDIP(4), -1, size.x / 2 - FromDIP(3), size.y * 0.6 - 1); dc.DrawLine(size.x / 2 + FromDIP(3), -1, size.x / 2 + FromDIP(3), size.y * 0.6 - 1); } @@ -587,18 +587,18 @@ void AMSVirtualRoad::doRender(wxDC& dc) wxSize size = GetSize(); if (m_vams_loading) { - if (m_current_color.Alpha() == 0) { dc.SetPen(wxPen(*wxWHITE, 6, wxPENSTYLE_SOLID)); } - else { dc.SetPen(wxPen(m_current_color, 6, wxPENSTYLE_SOLID)); } + if (m_current_color.Alpha() == 0) { dc.SetPen(wxPen(*wxWHITE, 6, wxSOLID)); } + else { dc.SetPen(wxPen(m_current_color, 6, wxSOLID)); } } else { - dc.SetPen(wxPen(AMS_CONTROL_GRAY500, 2, wxPENSTYLE_SOLID)); + dc.SetPen(wxPen(AMS_CONTROL_GRAY500, 2, wxSOLID)); } dc.SetBrush(wxBrush(*wxTRANSPARENT_BRUSH)); dc.DrawRoundedRectangle(size.x / 2, -size.y / 1.1 + FromDIP(1), size.x, size.y, 4); if ((m_current_color == *wxWHITE || m_current_color.Alpha() == 0) && !wxGetApp().dark_mode()) { - dc.SetPen(wxPen(AMS_CONTROL_DEF_BLOCK_BK_COLOUR, 1, wxPENSTYLE_SOLID)); + dc.SetPen(wxPen(AMS_CONTROL_DEF_BLOCK_BK_COLOUR, 1, wxSOLID)); dc.DrawRoundedRectangle(size.x / 2 - FromDIP(3), -size.y / 1.1 + FromDIP(4), size.x, size.y, 5); dc.DrawRoundedRectangle(size.x / 2 + FromDIP(3), -size.y / 1.1 - FromDIP(2), size.x, size.y, 3); } @@ -988,11 +988,11 @@ void AMSLib::render_extra_lib(wxDC& dc) //draw road - dc.SetPen(wxPen(AMS_CONTROL_GRAY500, 2, wxPENSTYLE_SOLID)); + dc.SetPen(wxPen(AMS_CONTROL_GRAY500, 2, wxSOLID)); dc.SetBrush(wxBrush(*wxTRANSPARENT_BRUSH)); if (m_pass_road) { - dc.SetPen(wxPen(m_info.material_colour, 6, wxPENSTYLE_SOLID)); + dc.SetPen(wxPen(m_info.material_colour, 6, wxSOLID)); } if (m_can_index == 0 || m_can_index == 3) { @@ -1114,9 +1114,9 @@ void AMSLib::render_generic_lib(wxDC &dc) // selected if (m_selected) { - dc.SetPen(wxPen(tmp_lib_colour, 2, wxPENSTYLE_SOLID)); + dc.SetPen(wxPen(tmp_lib_colour, 2, wxSOLID)); if (tmp_lib_colour.Alpha() == 0) { - dc.SetPen(wxPen(wxColour(tmp_lib_colour.Red(), tmp_lib_colour.Green(),tmp_lib_colour.Blue(),128), 2, wxPENSTYLE_SOLID)); + dc.SetPen(wxPen(wxColour(tmp_lib_colour.Red(), tmp_lib_colour.Green(),tmp_lib_colour.Blue(),128), 2, wxSOLID)); } dc.SetBrush(wxBrush(*wxTRANSPARENT_BRUSH)); if (m_radius == 0) { @@ -1131,7 +1131,7 @@ void AMSLib::render_generic_lib(wxDC &dc) } if (!m_selected && m_hover) { - dc.SetPen(wxPen(AMS_CONTROL_BRAND_COLOUR, 2, wxPENSTYLE_SOLID)); + dc.SetPen(wxPen(AMS_CONTROL_BRAND_COLOUR, 2, wxSOLID)); dc.SetBrush(wxBrush(*wxTRANSPARENT_BRUSH)); if (m_radius == 0) { dc.DrawRectangle(0, 0, size.x, size.y); @@ -1144,7 +1144,7 @@ void AMSLib::render_generic_lib(wxDC &dc) dc.SetBrush(wxBrush(tmp_lib_colour)); } else { - dc.SetPen(wxPen(tmp_lib_colour, 1, wxPENSTYLE_SOLID)); + dc.SetPen(wxPen(tmp_lib_colour, 1, wxSOLID)); dc.SetBrush(wxBrush(tmp_lib_colour)); } @@ -1230,7 +1230,7 @@ void AMSLib::render_generic_lib(wxDC &dc) dc.SetBrush(wxBrush(tmp_lib_colour)); } else { - dc.SetPen(wxPen(tmp_lib_colour, 1, wxPENSTYLE_SOLID)); + dc.SetPen(wxPen(tmp_lib_colour, 1, wxSOLID)); dc.SetBrush(wxBrush(tmp_lib_colour)); } } @@ -1260,7 +1260,7 @@ void AMSLib::render_generic_lib(wxDC &dc) #endif } if (tmp_lib_colour.Red() > 238 && tmp_lib_colour.Green() > 238 && tmp_lib_colour.Blue() > 238) { - dc.SetPen(wxPen(wxColour(130, 129, 128), 1, wxPENSTYLE_SOLID)); + dc.SetPen(wxPen(wxColour(130, 129, 128), 1, wxSOLID)); dc.SetBrush(wxBrush(*wxTRANSPARENT_BRUSH)); dc.DrawLine(FromDIP(4), FromDIP(4) + top, size.x - FromDIP(4), FromDIP(4) + top); } @@ -1268,10 +1268,10 @@ void AMSLib::render_generic_lib(wxDC &dc) else { dc.SetBrush(wxBrush(*wxTRANSPARENT_BRUSH)); if (tmp_lib_colour.Red() > 238 && tmp_lib_colour.Green() > 238 && tmp_lib_colour.Blue() > 238) { - dc.SetPen(wxPen(wxColour(130, 129, 128), 2, wxPENSTYLE_SOLID)); + dc.SetPen(wxPen(wxColour(130, 129, 128), 2, wxSOLID)); } else { - dc.SetPen(wxPen(tmp_lib_colour, 2, wxPENSTYLE_SOLID)); + dc.SetPen(wxPen(tmp_lib_colour, 2, wxSOLID)); } #ifdef __APPLE__ @@ -1285,7 +1285,7 @@ void AMSLib::render_generic_lib(wxDC &dc) } //border - dc.SetPen(wxPen(wxColour(130, 130, 128), 1, wxPENSTYLE_SOLID)); + dc.SetPen(wxPen(wxColour(130, 130, 128), 1, wxSOLID)); dc.SetBrush(wxBrush(*wxTRANSPARENT_BRUSH)); #ifdef __APPLE__ dc.DrawRoundedRectangle(FromDIP(4), FromDIP(4), size.x - FromDIP(7), size.y - FromDIP(7), m_radius); @@ -1371,6 +1371,7 @@ AMSRoad::AMSRoad(wxWindow *parent, wxWindowID id, Caninfo info, int canindex, in m_info = info; m_canindex = canindex; // road type + auto mode = AMSRoadMode::AMS_ROAD_MODE_END; if (m_canindex == 0 && maxcan == 1) { m_rode_mode = AMSRoadMode::AMS_ROAD_MODE_NONE; } else if (m_canindex == 0 && maxcan > 1) { @@ -1491,7 +1492,7 @@ void AMSRoad::doRender(wxDC &dc) { wxSize size = GetSize(); - dc.SetPen(wxPen(m_road_def_color, 2, wxPENSTYLE_SOLID)); + dc.SetPen(wxPen(m_road_def_color, 2, wxSOLID)); dc.SetBrush(wxBrush(*wxTRANSPARENT_BRUSH)); // left mode if (m_rode_mode == AMSRoadMode::AMS_ROAD_MODE_LEFT) { dc.DrawRoundedRectangle(-10, -10, size.x / 2 + 10, size.y * 0.6 + 10, 4); } @@ -1534,8 +1535,8 @@ void AMSRoad::doRender(wxDC &dc) // mode none // if (m_pass_rode_mode.size() == 1 && m_pass_rode_mode[0] == AMSPassRoadMode::AMS_ROAD_MODE_NONE) return; - if (m_road_color.Alpha() == 0) {dc.SetPen(wxPen(*wxWHITE, m_passroad_width, wxPENSTYLE_SOLID));} - else {dc.SetPen(wxPen(m_road_color, m_passroad_width, wxPENSTYLE_SOLID));} + if (m_road_color.Alpha() == 0) {dc.SetPen(wxPen(*wxWHITE, m_passroad_width, wxSOLID));} + else {dc.SetPen(wxPen(m_road_color, m_passroad_width, wxSOLID));} dc.SetBrush(wxBrush(*wxTRANSPARENT_BRUSH)); @@ -1562,7 +1563,7 @@ void AMSRoad::doRender(wxDC &dc) // end mode if (m_rode_mode == AMSRoadMode::AMS_ROAD_MODE_END || m_rode_mode == AMSRoadMode::AMS_ROAD_MODE_END_ONLY) { - dc.SetPen(wxPen(m_road_def_color, 2, wxPENSTYLE_SOLID)); + dc.SetPen(wxPen(m_road_def_color, 2, wxSOLID)); dc.SetBrush(wxBrush(m_road_def_color)); dc.DrawRoundedRectangle(size.x * 0.37 / 2, size.y * 0.6 - size.y / 6, size.x * 0.63, size.y / 3, m_radius); } @@ -2243,7 +2244,7 @@ void AmsCans::doRender(wxDC& dc) // A1 - dc.SetPen(wxPen(AMS_CONTROL_GRAY500, 2, wxPENSTYLE_SOLID)); + dc.SetPen(wxPen(AMS_CONTROL_GRAY500, 2, wxSOLID)); dc.SetBrush(wxBrush(*wxTRANSPARENT_BRUSH)); try @@ -2284,32 +2285,32 @@ void AmsCans::doRender(wxDC& dc) if (!m_road_canid.empty()) { if (m_road_canid == "0") { - dc.SetPen(wxPen(m_road_colour, passroad_width, wxPENSTYLE_SOLID)); + dc.SetPen(wxPen(m_road_colour, passroad_width, wxSOLID)); dc.DrawLine(a1_left, FromDIP(30), a1_left, a1_top); dc.DrawLine(a1_left, a1_top, end_top, a1_top); } if (m_road_canid == "1") { - dc.SetPen(wxPen(m_road_colour, passroad_width, wxPENSTYLE_SOLID)); + dc.SetPen(wxPen(m_road_colour, passroad_width, wxSOLID)); dc.DrawLine(a2_left, FromDIP(160), a2_left, a2_top); dc.DrawLine(a2_left, a2_top, end_top, a2_top); } if (m_road_canid == "2") { - dc.SetPen(wxPen(m_road_colour, passroad_width, wxPENSTYLE_SOLID)); + dc.SetPen(wxPen(m_road_colour, passroad_width, wxSOLID)); dc.DrawLine(a3_left, FromDIP(160), a3_left, a3_top); dc.DrawLine(a3_left, a3_top, end_top, a3_top); } if (m_road_canid == "3") { - dc.SetPen(wxPen(m_road_colour, passroad_width, wxPENSTYLE_SOLID)); + dc.SetPen(wxPen(m_road_colour, passroad_width, wxSOLID)); dc.DrawLine(a4_left, FromDIP(30), a4_left, a4_top); dc.DrawLine(a4_left, a4_top, end_top, a4_top); } } //to Extruder - dc.SetPen(wxPen(AMS_CONTROL_GRAY500, 2, wxPENSTYLE_SOLID)); + dc.SetPen(wxPen(AMS_CONTROL_GRAY500, 2, wxSOLID)); dc.SetBrush(wxBrush(*wxTRANSPARENT_BRUSH)); dc.DrawLine(end_top, a1_top, end_top, size.y); @@ -2317,19 +2318,19 @@ void AmsCans::doRender(wxDC& dc) if (!m_road_canid.empty()) { if (!m_road_canid.empty()) { if (m_road_canid == "0") { - dc.SetPen(wxPen(m_road_colour, passroad_width, wxPENSTYLE_SOLID)); + dc.SetPen(wxPen(m_road_colour, passroad_width, wxSOLID)); dc.DrawLine(end_top, a1_top, end_top, size.y); } else if (m_road_canid == "1") { - dc.SetPen(wxPen(m_road_colour, passroad_width, wxPENSTYLE_SOLID)); + dc.SetPen(wxPen(m_road_colour, passroad_width, wxSOLID)); dc.DrawLine(end_top, a2_top, end_top, size.y); } else if (m_road_canid == "2") { - dc.SetPen(wxPen(m_road_colour, passroad_width, wxPENSTYLE_SOLID)); + dc.SetPen(wxPen(m_road_colour, passroad_width, wxSOLID)); dc.DrawLine(end_top, a3_top, end_top, size.y); } else if (m_road_canid == "3") { - dc.SetPen(wxPen(m_road_colour, passroad_width, wxPENSTYLE_SOLID)); + dc.SetPen(wxPen(m_road_colour, passroad_width, wxSOLID)); dc.DrawLine(end_top, a4_top, end_top, size.y); } } @@ -3099,6 +3100,7 @@ void AMSControl::SetClibrationLink(wxString link) void AMSControl::PlayRridLoading(wxString amsid, wxString canid) { AmsCansHash::iterator iter = m_ams_cans_list.begin(); + auto count_item_index = 0; for (auto i = 0; i < m_ams_cans_list.GetCount(); i++) { AmsCansWindow *cans = m_ams_cans_list[i]; @@ -3110,6 +3112,7 @@ void AMSControl::PlayRridLoading(wxString amsid, wxString canid) void AMSControl::StopRridLoading(wxString amsid, wxString canid) { AmsCansHash::iterator iter = m_ams_cans_list.begin(); + auto count_item_index = 0; for (auto i = 0; i < m_ams_cans_list.GetCount(); i++) { AmsCansWindow *cans = m_ams_cans_list[i]; diff --git a/src/slic3r/GUI/Widgets/AMSControl.hpp b/src/slic3r/GUI/Widgets/AMSControl.hpp index 701be1bf34f..afcee66365d 100644 --- a/src/slic3r/GUI/Widgets/AMSControl.hpp +++ b/src/slic3r/GUI/Widgets/AMSControl.hpp @@ -175,7 +175,7 @@ class AMSrefresh : public wxWindow void PlayLoading(); void StopLoading(); void create(wxWindow *parent, wxWindowID id, const wxPoint &pos, const wxSize &size); - void on_timer(); + void on_timer(wxTimerEvent &event); void OnEnterWindow(wxMouseEvent &evt); void OnLeaveWindow(wxMouseEvent &evt); void OnClick(wxMouseEvent &evt); diff --git a/src/slic3r/GUI/Widgets/ComboBox.cpp b/src/slic3r/GUI/Widgets/ComboBox.cpp index fc66d524a54..55b8e12bcba 100644 --- a/src/slic3r/GUI/Widgets/ComboBox.cpp +++ b/src/slic3r/GUI/Widgets/ComboBox.cpp @@ -24,7 +24,7 @@ static wxWindow *GetScrollParent(wxWindow *pWindow) wxWindow *pWin = pWindow; while (pWin->GetParent()) { auto pWin2 = pWin->GetParent(); - if (dynamic_cast(pWin2)) + if (auto top = dynamic_cast(pWin2)) return dynamic_cast(pWin); pWin = pWin2; } diff --git a/src/slic3r/GUI/Widgets/FanControl.cpp b/src/slic3r/GUI/Widgets/FanControl.cpp index e7430037d41..222362e9171 100644 --- a/src/slic3r/GUI/Widgets/FanControl.cpp +++ b/src/slic3r/GUI/Widgets/FanControl.cpp @@ -112,7 +112,7 @@ void Fan::render(wxDC& dc) void Fan::doRender(wxDC& dc) { - // auto rpm = wxT("rpm"); + auto rpm = wxT("rpm"); wxSize size = GetSize(); dc.DrawBitmap(m_bitmap_bk.bmp(), wxPoint(0,0)); diff --git a/src/slic3r/GUI/Widgets/ImageSwitchButton.cpp b/src/slic3r/GUI/Widgets/ImageSwitchButton.cpp index d30f94976d6..af48b6d27ad 100644 --- a/src/slic3r/GUI/Widgets/ImageSwitchButton.cpp +++ b/src/slic3r/GUI/Widgets/ImageSwitchButton.cpp @@ -108,6 +108,7 @@ void ImageSwitchButton::render(wxDC& dc) wxSize size = GetSize(); wxSize szIcon; + wxSize szContent = textSize; ScalableBitmap &icon = GetValue() ? m_on : m_off; int content_height = icon.GetBmpHeight() + textSize.y + m_padding; @@ -267,6 +268,7 @@ void FanSwitchButton::render(wxDC& dc) wxSize size = GetSize(); wxSize szIcon; + wxSize szContent = textSize; ScalableBitmap& icon = GetValue() ? m_on : m_off; //int content_height = icon.GetBmpHeight() + textSize.y + m_padding; diff --git a/src/slic3r/GUI/Widgets/RoundedRectangle.cpp b/src/slic3r/GUI/Widgets/RoundedRectangle.cpp index f86f144ddc8..07f2aa0b305 100644 --- a/src/slic3r/GUI/Widgets/RoundedRectangle.cpp +++ b/src/slic3r/GUI/Widgets/RoundedRectangle.cpp @@ -1,4 +1,5 @@ #include "RoundedRectangle.hpp" +#include "../wxExtensions.hpp" #include #include diff --git a/src/slic3r/GUI/Widgets/SpinInput.cpp b/src/slic3r/GUI/Widgets/SpinInput.cpp index cee447769ec..5c8b91a0c79 100644 --- a/src/slic3r/GUI/Widgets/SpinInput.cpp +++ b/src/slic3r/GUI/Widgets/SpinInput.cpp @@ -205,6 +205,8 @@ void SpinInput::messureSize() if (size.y < h) { size.y = h; } + wxSize minSize = size; + minSize.x = GetMinWidth(); StaticBox::SetSize(size); SetMinSize(size); wxSize btnSize = {14, (size.y - 4) / 2}; diff --git a/src/slic3r/GUI/Widgets/StepCtrl.cpp b/src/slic3r/GUI/Widgets/StepCtrl.cpp index cdd25ea1f07..73a3e80dd31 100644 --- a/src/slic3r/GUI/Widgets/StepCtrl.cpp +++ b/src/slic3r/GUI/Widgets/StepCtrl.cpp @@ -322,6 +322,7 @@ void StepIndicator::doRender(wxDC &dc) dc.DrawEllipse(circleX - radius, circleY - radius, radius * 2, radius * 2); // Draw content ( icon or text ) in circle if (disabled) { + wxSize sz = bmp_ok.GetBmpSize(); dc.DrawBitmap(bmp_ok.bmp(), circleX - radius, circleY - radius); } else { dc.SetFont(font_tip); diff --git a/src/slic3r/GUI/Widgets/TempInput.cpp b/src/slic3r/GUI/Widgets/TempInput.cpp index 6ae82776dea..f581f73bf18 100644 --- a/src/slic3r/GUI/Widgets/TempInput.cpp +++ b/src/slic3r/GUI/Widgets/TempInput.cpp @@ -412,6 +412,7 @@ void TempInput::render(wxDC &dc) /*if (!text.IsEmpty()) { }*/ + wxSize textSize = text_ctrl->GetSize(); if (align_right) { if (pt.x + labelSize.x > size.x) text = wxControl::Ellipsize(text, dc, wxELLIPSIZE_END, size.x - pt.x); pt.y = (size.y - labelSize.y) / 2; diff --git a/src/slic3r/GUI/Widgets/WebView.cpp b/src/slic3r/GUI/Widgets/WebView.cpp index 2bbe519c463..11f431c308a 100644 --- a/src/slic3r/GUI/Widgets/WebView.cpp +++ b/src/slic3r/GUI/Widgets/WebView.cpp @@ -373,7 +373,7 @@ bool WebView::RunScript(wxWebView *webView, wxString const &javascript) }, NULL); return true; #endif - } catch (std::exception&) { + } catch (std::exception &e) { return false; } } diff --git a/src/slic3r/GUI/WipeTowerDialog.cpp b/src/slic3r/GUI/WipeTowerDialog.cpp index e965c803ffc..78662c1f3a9 100644 --- a/src/slic3r/GUI/WipeTowerDialog.cpp +++ b/src/slic3r/GUI/WipeTowerDialog.cpp @@ -3,6 +3,7 @@ #include "libslic3r/FlushVolCalc.hpp" #include "WipeTowerDialog.hpp" #include "BitmapCache.hpp" +#include "GUI.hpp" #include "I18N.hpp" #include "GUI_App.hpp" #include "MsgDialog.hpp" @@ -734,6 +735,9 @@ void WipingPanel::update_warning_texts() static const wxColour g_warning_color = *wxRED; static const wxColour g_normal_color = *wxBLACK; + wxString multi_str = m_flush_multiplier_ebox->GetValue(); + float multiplier = wxAtof(multi_str); + bool has_exception_flush = false; for (int i = 0; i < edit_boxes.size(); i++) { auto& box_vec = edit_boxes[i]; diff --git a/src/slic3r/GUI/wxExtensions.cpp b/src/slic3r/GUI/wxExtensions.cpp index 65ed46ba423..b542723e158 100644 --- a/src/slic3r/GUI/wxExtensions.cpp +++ b/src/slic3r/GUI/wxExtensions.cpp @@ -491,6 +491,7 @@ wxBitmap* get_default_extruder_color_icon(bool thin_icon/* = false*/) const double em = Slic3r::GUI::wxGetApp().em_unit(); const int icon_width = lround((thin_icon ? 2 : 4.5) * em); const int icon_height = lround(2 * em); + bool dark_mode = Slic3r::GUI::wxGetApp().dark_mode(); wxClientDC cdc((wxWindow*)Slic3r::GUI::wxGetApp().mainframe); wxMemoryDC dc(&cdc); diff --git a/src/slic3r/Utils/ASCIIFolding.cpp b/src/slic3r/Utils/ASCIIFolding.cpp index 7e474480675..0eb02a5f8cd 100644 --- a/src/slic3r/Utils/ASCIIFolding.cpp +++ b/src/slic3r/Utils/ASCIIFolding.cpp @@ -1953,7 +1953,8 @@ std::string fold_utf8_to_ascii(const std::string &src, bool is_convert_for_filen for (wchar_t c : wstr) fold_to_ascii(c, out); if (is_convert_for_filename) { - auto dstStr = boost::locale::conv::utf_to_utf(dst); + std::wstring_convert> converter; + auto dstStr = converter.to_bytes(dst); std::size_t found = dstStr.find_last_of("/\\"); if (found != std::string::npos) { @@ -1963,7 +1964,7 @@ std::string fold_utf8_to_ascii(const std::string &src, bool is_convert_for_filen std::string newFileName = regex_replace(filename, reg, ""); dstStr = dir + "\\" + newFileName; } - return dstStr; + dst = converter.from_bytes(dstStr); } return boost::locale::conv::utf_to_utf(dst.c_str(), dst.c_str() + dst.size()); diff --git a/src/slic3r/Utils/CalibUtils.cpp b/src/slic3r/Utils/CalibUtils.cpp index 88c59075ea7..b5f9aaf0edd 100644 --- a/src/slic3r/Utils/CalibUtils.cpp +++ b/src/slic3r/Utils/CalibUtils.cpp @@ -519,7 +519,7 @@ bool CalibUtils::calib_flowrate(int pass, const CalibInfo &calib_info, wxString const ConfigOptionFloats *nozzle_diameter_config = printer_config.option("nozzle_diameter"); assert(nozzle_diameter_config->values.size() > 0); float nozzle_diameter = nozzle_diameter_config->values[0]; - // float xyScale = nozzle_diameter / 0.6; + float xyScale = nozzle_diameter / 0.6; // scale z to have 7 layers double first_layer_height = print_config.option("initial_layer_print_height")->value; double layer_height = nozzle_diameter / 2.0; // prefer 0.2 layer height for 0.4 nozzle @@ -1067,6 +1067,7 @@ bool CalibUtils::process_and_store_3mf(Model *model, const DynamicPrintConfig &f { GLVolumeCollection glvolume_collection; std::vector colors_out(1); + unsigned char rgb_color[4] = {255, 255, 255, 255}; ColorRGBA new_color {1.0f, 1.0f, 1.0f, 1.0f}; colors_out.push_back(new_color); @@ -1079,9 +1080,9 @@ bool CalibUtils::process_and_store_3mf(Model *model, const DynamicPrintConfig &f const ModelObject &model_object = *model->objects[obj_idx]; for (int volume_idx = 0; volume_idx < (int)model_object.volumes.size(); ++ volume_idx) { - // const ModelVolume &model_volume = *model_object.volumes[volume_idx]; + const ModelVolume &model_volume = *model_object.volumes[volume_idx]; for (int instance_idx = 0; instance_idx < (int)model_object.instances.size(); ++ instance_idx) { - // const ModelInstance &model_instance = *model_object.instances[instance_idx]; + const ModelInstance &model_instance = *model_object.instances[instance_idx]; glvolume_collection.load_object_volume(&model_object, obj_idx, volume_idx, instance_idx, "volume", true, false, true); glvolume_collection.volumes.back()->set_render_color(new_color); glvolume_collection.volumes.back()->set_color(new_color); @@ -1127,11 +1128,11 @@ bool CalibUtils::process_and_store_3mf(Model *model, const DynamicPrintConfig &f store_params.strategy = SaveStrategy::Silence | SaveStrategy::WithGcode | SaveStrategy::SplitModel | SaveStrategy::SkipModel; - Slic3r::store_bbs_3mf(store_params); + bool success = Slic3r::store_bbs_3mf(store_params); store_params.strategy = SaveStrategy::Silence | SaveStrategy::SplitModel | SaveStrategy::WithSliceInfo | SaveStrategy::SkipAuxiliary; store_params.path = config_3mf_path.c_str(); - Slic3r::store_bbs_3mf(store_params); + success = Slic3r::store_bbs_3mf(store_params); release_PlateData_list(plate_data_list); return true; diff --git a/src/slic3r/Utils/ESP3D.cpp b/src/slic3r/Utils/ESP3D.cpp index c95d292afe7..531e9d08e90 100644 --- a/src/slic3r/Utils/ESP3D.cpp +++ b/src/slic3r/Utils/ESP3D.cpp @@ -1,6 +1,8 @@ #include "ESP3D.hpp" #include +#include +#include #include #include #include @@ -10,7 +12,13 @@ #include #include +#include #include +#include +#include +#include +#include +#include #include "libslic3r/PrintConfig.hpp" #include "slic3r/GUI/GUI.hpp" @@ -18,6 +26,7 @@ #include "slic3r/GUI/MsgDialog.hpp" #include "Http.hpp" #include "SerialMessage.hpp" +#include "SerialMessageType.hpp" namespace fs = boost::filesystem; namespace pt = boost::property_tree; diff --git a/src/slic3r/Utils/Obico.cpp b/src/slic3r/Utils/Obico.cpp index 6486e43114d..5541d1c6830 100644 --- a/src/slic3r/Utils/Obico.cpp +++ b/src/slic3r/Utils/Obico.cpp @@ -10,8 +10,10 @@ #include #include #include +#include #include +#include #include #include "slic3r/GUI/GUI.hpp" @@ -20,6 +22,8 @@ #include "slic3r/GUI/format.hpp" #include "Http.hpp" #include "libslic3r/AppConfig.hpp" +#include "Bonjour.hpp" +#include "slic3r/GUI/BonjourDialog.hpp" namespace fs = boost::filesystem; namespace pt = boost::property_tree; diff --git a/src/slic3r/Utils/PresetUpdater.cpp b/src/slic3r/Utils/PresetUpdater.cpp index 55bb4264636..cdd91eb22ec 100644 --- a/src/slic3r/Utils/PresetUpdater.cpp +++ b/src/slic3r/Utils/PresetUpdater.cpp @@ -52,6 +52,7 @@ using Slic3r::GUI::Config::SnapshotDB; namespace Slic3r { +static const char *INDEX_FILENAME = "index.idx"; static const char *TMP_EXTENSION = ".data"; diff --git a/src/slic3r/Utils/UndoRedo.cpp b/src/slic3r/Utils/UndoRedo.cpp index 8e7bd703c34..eaf90c73490 100644 --- a/src/slic3r/Utils/UndoRedo.cpp +++ b/src/slic3r/Utils/UndoRedo.cpp @@ -1071,7 +1071,7 @@ bool StackImpl::has_redo_snapshot() const // BBS: undo-redo until modify record auto it = std::lower_bound(m_snapshots.begin(), m_snapshots.end(), Snapshot(m_active_snapshot_time)); - for (; it != m_snapshots.end(); ++it) { + for (it; it != m_snapshots.end(); ++it) { if (snapshot_modifies_project(*it)) return true; } @@ -1340,12 +1340,12 @@ bool StackImpl::has_real_change_from(size_t time) const Snapshot(m_active_snapshot_time)); if (it_active == m_snapshots.end()) return true; if (it_active > it_time) { - for (; it_time < it_active; ++it_time) { + for (it_time; it_time < it_active; ++it_time) { if (snapshot_modifies_project(*it_time)) return true; } } else { - for (; it_active < it_time; ++it_active) { + for (it_active; it_active < it_time; ++it_active) { if (snapshot_modifies_project(*it_active)) return true; } diff --git a/src/spline/spline.h b/src/spline/spline.h index c8f08418fb6..4b1ddd61341 100644 --- a/src/spline/spline.h +++ b/src/spline/spline.h @@ -46,11 +46,6 @@ #pragma GCC diagnostic ignored "-Wunused-function" #endif -// unnamed namespace only because the implementation is in this -// header file and we don't want to export symbols to the obj files -namespace -{ - namespace tk { @@ -942,8 +937,6 @@ std::vector solve_cubic(double a, double b, double c, double d, } // namespace tk -} // namespace - #if !defined(_MSC_VER) #pragma GCC diagnostic pop #endif