diff --git a/localization/i18n/de/OrcaSlicer_de.po b/localization/i18n/de/OrcaSlicer_de.po index 2dd0c93dbc7..7547eaeee66 100644 --- a/localization/i18n/de/OrcaSlicer_de.po +++ b/localization/i18n/de/OrcaSlicer_de.po @@ -6236,6 +6236,8 @@ 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ß" @@ -6825,10 +6827,10 @@ msgstr "" "mehrere Geräte senden und mehrere Geräte verwalten." msgid "Auto arrange plate after cloning" -msgstr "" +msgstr "Druckplatte nach dem Klonen automatisch anordnen" msgid "Auto arrange plate after object cloning" -msgstr "" +msgstr "Druckplatte nach dem Klonen von Objekten automatisch anordnen" msgid "Network" msgstr "Netzwerk" @@ -7860,10 +7862,10 @@ msgid "Prime tower" msgstr "Reinigungsturm" msgid "Filament for Features" -msgstr "" +msgstr "Filament für Funktionen" msgid "Ooze prevention" -msgstr "" +msgstr "Ooze-Prävention" msgid "Skirt" msgstr "Saum" @@ -7922,7 +7924,7 @@ msgstr "" "gesetzt" msgid "Flow ratio and Pressure Advance" -msgstr "" +msgstr "Flussverhältnis und Pressure Advance" msgid "Print chamber temperature" msgstr "Druckkammertemperatur" @@ -8125,7 +8127,7 @@ msgid "Single extruder multimaterial setup" msgstr "Single-Extruder-Multimaterial-Einstellung" msgid "Number of extruders of the printer." -msgstr "" +msgstr "Anzahl der Extruder des Druckers." msgid "" "Single Extruder Multi Material is selected, \n" @@ -8133,6 +8135,10 @@ msgid "" "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" @@ -8147,6 +8153,8 @@ 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" @@ -8667,7 +8675,7 @@ 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 "" +msgstr "Umschalt+G" msgid "Paste from clipboard" msgstr "Aus Zwischenablage einfügen" @@ -8719,7 +8727,7 @@ msgid "Collapse/Expand the sidebar" msgstr "Seitenleiste zu-/aufklappen" msgid "Any arrow" -msgstr "" +msgstr "Beliebiger Pfeil" msgid "Movement in camera space" msgstr "Bewegung im Kameraraum" @@ -9159,6 +9167,8 @@ 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" @@ -9412,6 +9422,9 @@ msgid "" "well when the prime tower is enabled. It's very experimental, so please " "proceed with caution." msgstr "" +"Unterschiedliche Düsendurchmesser und unterschiedliche Filamentdurchmesser " +"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 " @@ -9424,6 +9437,8 @@ msgid "" "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, " @@ -10946,9 +10961,30 @@ msgid "" "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 "" +msgstr "Adaptive Pressure Advance Messung (experimentell)" msgid "" "Add sets of pressure advance (PA) values, the volumetric flow speeds and " @@ -10979,9 +11015,38 @@ msgid "" "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 "" +msgstr "Adaptives PA für Überhänge aktivieren (experimentell)" msgid "" "Enable adaptive PA for overhangs as well as when flow changes within the " @@ -10989,9 +11054,13 @@ msgid "" "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 "" +msgstr "Pressure Advance für Brücken" msgid "" "Pressure advance value for bridges. Set to 0 to disable. \n" @@ -11001,6 +11070,12 @@ msgid "" "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 %, " @@ -11211,19 +11286,23 @@ msgstr "" "wird. Geben Sie die gewünschte Anzahl dieser Bewegungen an." msgid "Stamping loading speed" -msgstr "" +msgstr "Lade-Geschwindigkeit für das Stamping" msgid "Speed used for stamping." -msgstr "" +msgstr "Geschwindigkeit, die für das Stamping verwendet wird." msgid "Stamping distance measured from the center of the cooling tube" -msgstr "" +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" @@ -12086,6 +12165,7 @@ msgid "" "\"mmu_segmented_region_max_width\". Zero disables this feature." msgstr "" + msgid "Use beam interlocking" msgstr "Verwende Interlock-Strukturen" @@ -12603,6 +12683,8 @@ 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" @@ -12656,7 +12738,7 @@ msgstr "" "100%% Überhang wird die Brückengeschwindigkeit verwendet." msgid "Filament to print walls" -msgstr "" +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 " @@ -12709,10 +12791,10 @@ msgstr "" "Konfigurationseinstellungen durch Lesen von Umgebungsvariablen abrufen." msgid "Printer type" -msgstr "" +msgstr "Druckertyp" msgid "Type of the printer" -msgstr "" +msgstr "Typ des Druckers" msgid "Printer notes" msgstr "Druckernotizen" @@ -12721,7 +12803,7 @@ msgid "You can put your notes regarding the printer here." msgstr "Sie können hier Ihre Notizen zum Drucker eintragen." msgid "Printer variant" -msgstr "" +msgstr "Druckervariante" msgid "Raft contact Z distance" msgstr "Z Abstand Objekt Druckbasis " @@ -13308,10 +13390,10 @@ msgstr "" "Füllungen ersetzt." msgid "Solid infill" -msgstr "" +msgstr "Massive Füllung" msgid "Filament to print solid infill" -msgstr "" +msgstr "Filament für den Druck der massiven Füllung" msgid "" "Line width of internal solid infill. If expressed as a %, it will be " @@ -13389,9 +13471,12 @@ msgid "" "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 "" +msgstr "Vorheizzeit" msgid "" "To reduce the waiting time after tool change, Orca can preheat the next tool " @@ -13399,14 +13484,21 @@ msgid "" "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 "" +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" @@ -14209,22 +14301,28 @@ msgid "Spacing of purge lines on the wipe tower." msgstr "Abstand der Reinigungsturmpurges." msgid "Extra flow for purging" -msgstr "" +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 "" +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" @@ -14582,12 +14680,13 @@ msgid "Currently planned extra extruder priming after deretraction." msgstr "Derzeit geplantes zusätzliches Extruder-Priming nach dem Rückzug." msgid "Absolute E position" -msgstr "" +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" @@ -14640,10 +14739,10 @@ msgstr "" "Druck verwendet wird." msgid "Has single extruder MM priming" -msgstr "" +msgstr "Hat einzelnes Extruder-MM-Priming" msgid "Are the extra multi-material priming regions used in this print?" -msgstr "" +msgstr "Werden die zusätzlichen Multi-Material-Priming-Regionen in diesem Druck verwendet?" msgid "Volume per extruder" msgstr "Volumen pro Extruder" @@ -14807,12 +14906,14 @@ msgid "Name of the physical printer used for slicing." msgstr "Name des physischen Druckers, der zum Slicen verwendet wird." msgid "Number of extruders" -msgstr "" +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" diff --git a/localization/i18n/fr/OrcaSlicer_fr.po b/localization/i18n/fr/OrcaSlicer_fr.po index c495ac4ca6f..1f2edeab23e 100644 --- a/localization/i18n/fr/OrcaSlicer_fr.po +++ b/localization/i18n/fr/OrcaSlicer_fr.po @@ -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" @@ -4452,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)." @@ -5915,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)" @@ -5994,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." @@ -6218,6 +6218,8 @@ 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" @@ -6638,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" @@ -6825,10 +6827,10 @@ msgstr "" "appareils en même temps et gérer plusieurs appareils." msgid "Auto arrange plate after cloning" -msgstr "" +msgstr "Arrangement automatique de la plaque après le clonage" msgid "Auto arrange plate after object cloning" -msgstr "" +msgstr "Arrangement automatique de la plaque après le clonage de l’objet" msgid "Network" msgstr "Réseau" @@ -7790,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" @@ -7875,10 +7877,10 @@ msgid "Prime tower" msgstr "Tour de purge" msgid "Filament for Features" -msgstr "" +msgstr "Filament pour les caractéristiques" msgid "Ooze prevention" -msgstr "" +msgstr "Prévention des suintements" msgid "Skirt" msgstr "Jupe" @@ -7937,7 +7939,7 @@ msgstr "" "d'ensemble" msgid "Flow ratio and Pressure Advance" -msgstr "" +msgstr "Rapport de débit et avance de pression" msgid "Print chamber temperature" msgstr "Température du caisson d’impression" @@ -7958,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" @@ -8145,7 +8147,7 @@ msgid "Single extruder multimaterial setup" msgstr "Configuration multi-matériaux pour extrudeur unique" msgid "Number of extruders of the printer." -msgstr "" +msgstr "Nombre d’extrudeurs de l’imprimante." msgid "" "Single Extruder Multi Material is selected, \n" @@ -8153,6 +8155,10 @@ msgid "" "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" @@ -8167,6 +8173,9 @@ 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" @@ -8697,7 +8706,7 @@ msgstr "" "Importez des données de géométrie à partir de fichiers STL/STEP/3MF/OBJ/AMF." msgid "Shift+G" -msgstr "" +msgstr "Shift+G" msgid "Paste from clipboard" msgstr "Coller depuis le presse-papier" @@ -8750,7 +8759,7 @@ msgid "Collapse/Expand the sidebar" msgstr "Réduire/développer la barre latérale" msgid "Any arrow" -msgstr "" +msgstr "Toutes les flèches" msgid "Movement in camera space" msgstr "Mouvement dans l'espace de la caméra" @@ -8873,7 +8882,7 @@ 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 " @@ -9193,6 +9202,8 @@ 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" @@ -9394,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." @@ -9450,6 +9461,9 @@ msgid "" "well when the prime tower is enabled. It's very experimental, so please " "proceed with caution." msgstr "" +"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 " @@ -9462,6 +9476,8 @@ msgid "" "Ooze prevention is only supported with the wipe tower when " "'single_extruder_multi_material' is off." msgstr "" +"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, " @@ -10867,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" @@ -10985,14 +11001,14 @@ msgid "Pressure advance(Klipper) AKA Linear advance factor(Marlin)" msgstr "Pressure Advance (Klipper) AKA Linear Advance (Marlin)" msgid "Enable adaptive pressure advance (beta)" -msgstr "" +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 " +"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" @@ -11008,9 +11024,30 @@ msgid "" "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 "" +msgstr "Mesures adaptatives de l’avance de pression (beta)" msgid "" "Add sets of pressure advance (PA) values, the volumetric flow speeds and " @@ -11041,9 +11078,38 @@ msgid "" "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 " @@ -11051,9 +11117,13 @@ msgid "" "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 "" +msgstr "Avance de pression pour les ponts" msgid "" "Pressure advance value for bridges. Set to 0 to disable. \n" @@ -11063,6 +11133,12 @@ msgid "" "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 %, " @@ -11180,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 " @@ -11191,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" @@ -11264,19 +11347,24 @@ msgstr "" "de refroidissement. Précisez le nombre souhaité de ces mouvements." msgid "Stamping loading speed" -msgstr "" +msgstr "Vitesse de chargement du marquage" msgid "Speed used for stamping." -msgstr "" +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" @@ -11714,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 " @@ -12009,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" @@ -12141,51 +12231,67 @@ msgid "" "\"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. 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" @@ -12430,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" @@ -12544,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" @@ -12670,6 +12776,8 @@ 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" @@ -12725,7 +12833,7 @@ msgstr "" "vitesse du pont est utilisée." msgid "Filament to print walls" -msgstr "" +msgstr "Filament pour imprimer les parois" msgid "" "Line width of inner wall. If expressed as a %, it will be computed over the " @@ -12778,10 +12886,10 @@ msgstr "" "configuration Orca Slicer en lisant les variables d’environnement." msgid "Printer type" -msgstr "" +msgstr "Type d’imprimante" msgid "Type of the printer" -msgstr "" +msgstr "Type de l’imprimante" msgid "Printer notes" msgstr "Notes de l’mprimante" @@ -12790,7 +12898,7 @@ msgid "You can put your notes regarding the printer here." msgstr "Vous pouvez mettre vos notes concernant l’imprimante ici." msgid "Printer variant" -msgstr "" +msgstr "Variante de l’imprimante" msgid "Raft contact Z distance" msgstr "Distance Z de contact du radeau" @@ -12870,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" @@ -12942,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" @@ -13022,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" @@ -13377,10 +13487,10 @@ msgstr "" "remplissage plein interne" msgid "Solid infill" -msgstr "" +msgstr "Remplissage solide" msgid "Filament to print solid infill" -msgstr "" +msgstr "Filament pour l’impression de remplissage solide" msgid "" "Line width of internal solid infill. If expressed as a %, it will be " @@ -13456,9 +13566,12 @@ msgid "" "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 "" +msgstr "Durée du préchauffage" msgid "" "To reduce the waiting time after tool change, Orca can preheat the next tool " @@ -13466,14 +13579,22 @@ msgid "" "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 "" +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" @@ -13560,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" @@ -14144,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." @@ -14275,22 +14396,29 @@ 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 "" +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 "" +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" @@ -14385,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" @@ -14651,12 +14779,14 @@ msgstr "" "actuellement prévu." msgid "Absolute E position" -msgstr "" +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" @@ -14709,17 +14839,19 @@ msgstr "" "l’impression." msgid "Has single extruder MM priming" -msgstr "" +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" @@ -14867,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" @@ -14882,12 +15014,14 @@ 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 "" +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" @@ -16039,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 " @@ -16984,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" @@ -17016,512 +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 ?" - -#: 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 ?" - -#: 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 ?" - -#: 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." - -#: 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 ?" - -#: 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 ?" - -#: 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." - -#: 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." - -#: 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." - -#: 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 ?" - -#: 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 ?" - -#: 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 ?" - -#: 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 ?" - -#: 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 ?" - -#: 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 ?" - -#: 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." - -#: 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 ?" - -#: 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 ?" - -#: 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." - -#: 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 ?" - -#: 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 "Current association: " +#~ msgstr "Association actuelle : " -#: 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 "Associate prusaslicer://" +#~ msgstr "Associer prusaslicer://" -#: 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 "Not associated to any application" +#~ msgstr "N’est associé à aucune application" -#: 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 "" +#~ "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: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 "Associate bambustudio://" +#~ msgstr "Associer bambustudio://" -#: 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 "" +#~ "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: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 "Associate cura://" +#~ msgstr "Associer cura://" -#: 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 "" +#~ "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: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 "Internel error" +#~ msgstr "Erreur interne" -#: 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 "" +#~ "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: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 "" +#~ "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: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 "" +#~ "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: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 "" +#~ "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: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 "" +#~ "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: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 "" +#~ "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: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 "" +#~ "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: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 "" +#~ "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 "up to" -#~ msgstr "jusqu'à" +#~ 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 "above" -#~ msgstr "au-dessus" +#~ 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 "from" -#~ msgstr "de" +#~ 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 "Switching application language while some presets are modified." +#~ 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 "" -#~ "Changer la langue de l'application pendant que certains préréglages sont " -#~ "modifiés." +#~ "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 "⌘+Shift+G" -#~ msgstr "⌘+Maj+G" +#~ 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 "Ctrl+Shift+G" -#~ msgstr "Ctrl+Maj+G" +#~ 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 "⌘+Any arrow" -#~ msgstr "⌘+n'importe quelle flèche" +#~ 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 "⌥+Left mouse button" -#~ msgstr "⌥+Bouton gauche de la souris" +#~ 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 "⌘+Left mouse button" -#~ msgstr "⌘+Bouton gauche de la souris" +#~ 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 "Ctrl+Any arrow" -#~ msgstr "Ctrl+n'importe quelle flèche" +#~ 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 "Alt+Left mouse button" -#~ msgstr "Alt+Bouton gauche de la souris" +#~ 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 "Ctrl+Left mouse button" -#~ msgstr "Ctrl+Bouton gauche de la souris" +#~ 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 "⌘+Mouse wheel" -#~ msgstr "⌘+Molette de la souris" +#~ 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 "⌥+Mouse wheel" -#~ msgstr "⌥+Molette de la souris" +#~ 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 "Ctrl+Mouse wheel" -#~ msgstr "Ctrl+Molette de la souris" +#~ 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 "Alt+Mouse wheel" -#~ msgstr "Alt+Molette de la souris" +#~ 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 "" -#~ "Different nozzle diameters and different filament diameters is not " -#~ "allowed when prime tower is enabled." +#~ "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 "" -#~ "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." +#~ "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 "" -#~ "Ooze prevention is currently not supported with the prime tower enabled." +#~ "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 "" -#~ "La prévention des dépôts de boue n’est actuellement pas prise en charge " -#~ "lorsque la tour principale est activée." +#~ "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 "" -#~ "Interlocking depth of a segmented region. Zero disables this feature." +#~ "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 "" -#~ "Profondeur d’imbrication d’une région segmentée. Zéro désactive cette " -#~ "fonction." +#~ "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 "Wipe tower extruder" -#~ msgstr "Extrudeur de tour d’essuyage" +#~ 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 " @@ -18071,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/tr/OrcaSlicer_tr.po b/localization/i18n/tr/OrcaSlicer_tr.po index 1aec931ee72..37922c257d0 100644 --- a/localization/i18n/tr/OrcaSlicer_tr.po +++ b/localization/i18n/tr/OrcaSlicer_tr.po @@ -4,7 +4,7 @@ msgstr "" "Project-Id-Version: Orca Slicer\n" "Report-Msgid-Bugs-To: \n" "POT-Creation-Date: 2024-08-03 18:54+0200\n" -"PO-Revision-Date: 2024-07-11 00:22+0300\n" +"PO-Revision-Date: 2024-08-04 11:24+0300\n" "Last-Translator: Olcay ÖREN\n" "Language-Team: \n" "Language: tr\n" @@ -728,8 +728,8 @@ msgid "" "The text cannot be written using the selected font. Please try choosing a " "different font." msgstr "" -"Metin seçilen yazı tipi kullanılarak yazılamıyor. Lütfen farklı bir yazı " -"tipi seçmeyi deneyin." +"Metin seçilen yazı tipi kullanılarak yazılamıyor. Lütfen farklı bir yazı tipi " +"seçmeyi deneyin." msgid "Embossed text cannot contain only white spaces." msgstr "Kabartmalı metin yalnızca beyaz boşluklardan oluşamaz." @@ -1013,9 +1013,9 @@ msgid "" "Can't load exactly same font(\"%1%\"). Application selected a similar " "one(\"%2%\"). You have to specify font for enable edit text." msgstr "" -"Tam olarak aynı yazı tipi yüklenemiyor(\"%1%\"). Uygulama benzer bir " -"uygulama seçti(\"%2%\"). Metni düzenlemeyi etkinleştirmek için yazı tipini " -"belirtmeniz gerekir." +"Tam olarak aynı yazı tipi yüklenemiyor(\"%1%\"). Uygulama benzer bir uygulama " +"seçti(\"%2%\"). Metni düzenlemeyi etkinleştirmek için yazı tipini belirtmeniz " +"gerekir." msgid "No symbol" msgstr "Sembol yok" @@ -1467,8 +1467,8 @@ msgstr "Bilgi" msgid "" "The OrcaSlicer configuration file may be corrupted and cannot be parsed.\n" "OrcaSlicer has attempted to recreate the configuration file.\n" -"Please note, application settings will be lost, but printer profiles will " -"not be affected." +"Please note, application settings will be lost, but printer profiles will not " +"be affected." msgstr "" "OrcaSlicer konfigürasyon dosyası bozulmuş olabilir ve ayrıştırılamayabilir.\n" "OrcaSlicer, konfigürasyon dosyasını yeniden oluşturmayı denedi.\n" @@ -2091,8 +2091,8 @@ msgid "" "This action will break a cut correspondence.\n" "After that model consistency can't be guaranteed .\n" "\n" -"To manipulate with solid parts or negative volumes you have to invalidate " -"cut infornation first." +"To manipulate with solid parts or negative volumes you have to invalidate cut " +"infornation first." msgstr "" "Bu eylem kesilmiş bir yazışmayı bozacaktır.\n" "Bundan sonra model tutarlılığı garanti edilemez.\n" @@ -2155,8 +2155,7 @@ msgstr "İlk seçilen öğe bir nesne ise ikincisi de nesne olmalıdır." msgid "" "If first selected item is a part, the second one should be part in the same " "object." -msgstr "" -"İlk seçilen öğe bir parça ise ikincisi aynı nesnenin parçası olmalıdır." +msgstr "İlk seçilen öğe bir parça ise ikincisi aynı nesnenin parçası olmalıdır." msgid "The type of the last solid object part is not to be changed." msgstr "Son katı nesne parçasının tipi değiştirilNozullidir." @@ -2513,16 +2512,14 @@ msgstr "" msgid "Arranging done." msgstr "Hizalama tamamlandı." -msgid "" -"Arrange failed. Found some exceptions when processing object geometries." +msgid "Arrange failed. Found some exceptions when processing object geometries." msgstr "" "Hizalama başarısız oldu. Nesne geometrilerini işlerken bazı istisnalar " "bulundu." #, c-format, boost-format msgid "" -"Arrangement ignored the following objects which can't fit into a single " -"bed:\n" +"Arrangement ignored the following objects which can't fit into a single bed:\n" "%s" msgstr "" "Hizalama tek tablaya sığmayan aşağıdaki nesneler göz ardı edildi:\n" @@ -2622,8 +2619,7 @@ msgstr "" "deneyin." msgid "Print file not found, Please slice it again and send it for printing." -msgstr "" -"Yazdırma dosyası bulunamadı. Lütfen tekrar dilimleyip baskıya gönderin." +msgstr "Yazdırma dosyası bulunamadı. Lütfen tekrar dilimleyip baskıya gönderin." msgid "" "Failed to upload print file to FTP. Please check the network status and try " @@ -2679,8 +2675,8 @@ msgid "Importing SLA archive" msgstr "SLA arşivi içe aktarılıyor" msgid "" -"The SLA archive doesn't contain any presets. Please activate some SLA " -"printer preset first before importing that SLA archive." +"The SLA archive doesn't contain any presets. Please activate some SLA printer " +"preset first before importing that SLA archive." msgstr "" "SLA arşivi herhangi bir ön ayar içermez. Lütfen SLA arşivini içe aktarmadan " "önce bazı SLA yazıcı ön ayarlarını etkinleştirin." @@ -2692,8 +2688,8 @@ msgid "Importing done." msgstr "İçe aktarma tamamlandı." msgid "" -"The imported SLA archive did not contain any presets. The current SLA " -"presets were used as fallback." +"The imported SLA archive did not contain any presets. The current SLA presets " +"were used as fallback." msgstr "" "İçe aktarılan SLA arşivi herhangi bir ön ayar içermiyordu. Geçerli SLA ön " "ayarları geri dönüş olarak kullanıldı." @@ -2750,8 +2746,8 @@ msgid "" "This software uses open source components whose copyright and other " "proprietary rights belong to their respective owners" msgstr "" -"Bu yazılım, telif hakkı ve diğer mülkiyet hakları ilgili sahiplerine ait " -"olan açık kaynaklı bileşenleri kullanır" +"Bu yazılım, telif hakkı ve diğer mülkiyet hakları ilgili sahiplerine ait olan " +"açık kaynaklı bileşenleri kullanır" #, c-format, boost-format msgid "About %s" @@ -2765,8 +2761,7 @@ msgstr "OrcaSlicer, BambuStudio, PrusaSlicer ve SuperSlicer'ı temel alır." msgid "BambuStudio is originally based on PrusaSlicer by PrusaResearch." msgstr "" -"BambuStudio orijinal olarak PrusaResearch'ün PrusaSlicer'ını temel " -"almaktadır." +"BambuStudio orijinal olarak PrusaResearch'ün PrusaSlicer'ını temel almaktadır." msgid "PrusaSlicer is originally based on Slic3r by Alessandro Ranellucci." msgstr "" @@ -2845,8 +2840,7 @@ msgstr "Lütfen geçerli bir değer girin (K %.1f~%.1f içinde)" #, c-format, boost-format msgid "Please input a valid value (K in %.1f~%.1f, N in %.1f~%.1f)" -msgstr "" -"Lütfen geçerli bir değer girin (K %.1f~%.1f içinde, N %.1f~%.1f içinde)" +msgstr "Lütfen geçerli bir değer girin (K %.1f~%.1f içinde, N %.1f~%.1f içinde)" msgid "Other Color" msgstr "Diğer renk" @@ -2858,9 +2852,9 @@ msgid "Dynamic flow calibration" msgstr "Dinamik akış kalibrasyonu" msgid "" -"The nozzle temp and max volumetric speed will affect the calibration " -"results. Please fill in the same values as the actual printing. They can be " -"auto-filled by selecting a filament preset." +"The nozzle temp and max volumetric speed will affect the calibration results. " +"Please fill in the same values as the actual printing. They can be auto-" +"filled by selecting a filament preset." msgstr "" "Nozul sıcaklığı ve maksimum hacimsel hız kalibrasyon sonuçlarını " "etkileyecektir. Lütfen gerçek yazdırmayla aynı değerleri girin. Bir filament " @@ -2995,8 +2989,7 @@ msgid "" "When the current material run out, the printer will continue to print in the " "following order." msgstr "" -"Mevcut malzeme bittiğinde yazıcı aşağıdaki sırayla yazdırmaya devam " -"edecektir." +"Mevcut malzeme bittiğinde yazıcı aşağıdaki sırayla yazdırmaya devam edecektir." msgid "Group" msgstr "Grup" @@ -3034,8 +3027,8 @@ msgid "Insertion update" msgstr "Ekleme güncellemesi" msgid "" -"The AMS will automatically read the filament information when inserting a " -"new Bambu Lab filament. This takes about 20 seconds." +"The AMS will automatically read the filament information when inserting a new " +"Bambu Lab filament. This takes about 20 seconds." msgstr "" "AMS, yeni bir Bambu Lab filamenti takıldığında filament bilgilerini otomatik " "olarak okuyacaktır. Bu yaklaşık 20 saniye sürer." @@ -3058,17 +3051,16 @@ msgid "Power on update" msgstr "Güncellemeyi aç" msgid "" -"The AMS will automatically read the information of inserted filament on " -"start-up. It will take about 1 minute.The reading process will roll filament " -"spools." +"The AMS will automatically read the information of inserted filament on start-" +"up. It will take about 1 minute.The reading process will roll filament spools." msgstr "" "AMS, başlangıçta takılan filamentin bilgilerini otomatik olarak okuyacaktır. " "Yaklaşık 1 dakika sürecektir. Okuma işlemi filament makaralarını saracaktır." msgid "" -"The AMS will not automatically read information from inserted filament " -"during startup and will continue to use the information recorded before the " -"last shutdown." +"The AMS will not automatically read information from inserted filament during " +"startup and will continue to use the information recorded before the last " +"shutdown." msgstr "" "AMS, başlatma sırasında takılan filamentden bilgileri otomatik olarak okumaz " "ve son kapatmadan önce kaydedilen bilgileri kullanmaya devam eder." @@ -3082,8 +3074,8 @@ msgid "" "automatically." msgstr "" "AMS, filament bilgisi güncellendikten sonra Bambu filamentin kalan " -"kapasitesini tahmin edecek. Yazdırma sırasında kalan kapasite otomatik " -"olarak güncellenecektir." +"kapasitesini tahmin edecek. Yazdırma sırasında kalan kapasite otomatik olarak " +"güncellenecektir." msgid "AMS filament backup" msgstr "AMS filament yedeklemesi" @@ -3115,8 +3107,8 @@ msgid "" "Failed to download the plug-in. Please check your firewall settings and vpn " "software, check and retry." msgstr "" -"Eklenti indirilemedi. Lütfen güvenlik duvarı ayarlarınızı ve vpn " -"yazılımınızı kontrol edin, kontrol edip yeniden deneyin." +"Eklenti indirilemedi. Lütfen güvenlik duvarı ayarlarınızı ve vpn yazılımınızı " +"kontrol edin, kontrol edip yeniden deneyin." msgid "" "Failed to install the plug-in. Please check whether it is blocked or deleted " @@ -3204,8 +3196,8 @@ msgid "" "device. The corrupted output G-code is at %1%.tmp." msgstr "" "Geçici G kodunun çıkış G koduna kopyalanması başarısız oldu. Hedef cihazda " -"sorun olabilir, lütfen tekrar dışa aktarmayı veya farklı bir cihaz " -"kullanmayı deneyin. Bozuk çıktı G kodu %1%.tmp konumunda." +"sorun olabilir, lütfen tekrar dışa aktarmayı veya farklı bir cihaz kullanmayı " +"deneyin. Bozuk çıktı G kodu %1%.tmp konumunda." #, boost-format msgid "" @@ -3438,8 +3430,8 @@ msgid "Send to" msgstr "Gönderildi" msgid "" -"printers at the same time.(It depends on how many devices can undergo " -"heating at the same time.)" +"printers at the same time.(It depends on how many devices can undergo heating " +"at the same time.)" msgstr "" "aynı anda kaç yazıcının ısıtma işleminden geçebileceği, aynı anda " "ısıtılabilecek cihaz sayısına bağlıdır." @@ -3546,8 +3538,8 @@ msgid "" "The recommended minimum temperature is less than 190 degree or the " "recommended maximum temperature is greater than 300 degree.\n" msgstr "" -"Önerilen minimum sıcaklık 190 dereceden azdır veya önerilen maksimum " -"sıcaklık 300 dereceden yüksektir.\n" +"Önerilen minimum sıcaklık 190 dereceden azdır veya önerilen maksimum sıcaklık " +"300 dereceden yüksektir.\n" msgid "" "The recommended minimum temperature cannot be higher than the recommended " @@ -3584,13 +3576,13 @@ msgstr "" #, c-format, boost-format msgid "" -"Current chamber temperature is higher than the material's safe temperature," -"it may result in material softening and clogging.The maximum safe " -"temperature for the material is %d" +"Current chamber temperature is higher than the material's safe temperature,it " +"may result in material softening and clogging.The maximum safe temperature " +"for the material is %d" msgstr "" -"Mevcut hazne sıcaklığı malzemenin güvenli sıcaklığından yüksektir, " -"malzemenin yumuşamasına ve tıkanmasına neden olabilir Malzeme için maksimum " -"güvenli sıcaklık %d'dir" +"Mevcut hazne sıcaklığı malzemenin güvenli sıcaklığından yüksektir, malzemenin " +"yumuşamasına ve tıkanmasına neden olabilir Malzeme için maksimum güvenli " +"sıcaklık %d'dir" msgid "" "Too small layer height.\n" @@ -3644,16 +3636,16 @@ msgstr "" "Değer 0'a sıfırlanacaktır." msgid "" -"Alternate extra wall does't work well when ensure vertical shell thickness " -"is set to All. " +"Alternate extra wall does't work well when ensure vertical shell thickness is " +"set to All. " msgstr "" -"Alternatif ekstra duvar, dikey kabuk kalınlığının Tümü olarak " -"ayarlandığından emin olunduğunda iyi çalışmaz. " +"Alternatif ekstra duvar, dikey kabuk kalınlığının Tümü olarak ayarlandığından " +"emin olunduğunda iyi çalışmaz. " msgid "" "Change these settings automatically? \n" -"Yes - Change ensure vertical shell thickness to Moderate and enable " -"alternate extra wall\n" +"Yes - Change ensure vertical shell thickness to Moderate and enable alternate " +"extra wall\n" "No - Dont use alternate extra wall" msgstr "" "Bu ayarlar otomatik olarak değiştirilsin mi? \n" @@ -3730,8 +3722,7 @@ msgid "" "No - Give up using spiral mode this time" msgstr "" "Bu ayarlar otomatik olarak değiştirilsin mi?\n" -"Evet - Bu ayarları değiştirin ve spiral modunu otomatik olarak " -"etkinleştirin\n" +"Evet - Bu ayarları değiştirin ve spiral modunu otomatik olarak etkinleştirin\n" "Hayır - Bu sefer spiral modunu kullanmaktan vazgeçin" msgid "Auto bed leveling" @@ -3864,9 +3855,9 @@ msgid "Update failed." msgstr "Güncelleme başarısız." msgid "" -"The current chamber temperature or the target chamber temperature exceeds " -"45℃.In order to avoid extruder clogging,low temperature filament(PLA/PETG/" -"TPU) is not allowed to be loaded." +"The current chamber temperature or the target chamber temperature exceeds 45℃." +"In order to avoid extruder clogging,low temperature filament(PLA/PETG/TPU) is " +"not allowed to be loaded." msgstr "" "Mevcut hazne sıcaklığı veya hedef hazne sıcaklığı 45 ° C'yi aşıyor Ekstruder " "tıkanmasını önlemek için düşük sıcaklıkta filament (PLA / PETG / TPU) " @@ -3893,8 +3884,7 @@ msgstr "" msgid "Failed to start printing job" msgstr "Yazdırma işi başlatılamadı" -msgid "" -"This calibration does not support the currently selected nozzle diameter" +msgid "This calibration does not support the currently selected nozzle diameter" msgstr "Bu kalibrasyon, şu anda seçilen nozzle çapını desteklememektedir" msgid "Current flowrate cali param is invalid" @@ -3919,12 +3909,12 @@ msgid "" "Damp PVA will become flexible and get stuck inside AMS,please take care to " "dry it before use." msgstr "" -"Nemli PVA esnekleşecek ve AMS'nin içine sıkışacaktır, lütfen kullanmadan " -"önce kurutmaya dikkat edin." +"Nemli PVA esnekleşecek ve AMS'nin içine sıkışacaktır, lütfen kullanmadan önce " +"kurutmaya dikkat edin." msgid "" -"CF/GF filaments are hard and brittle, It's easy to break or get stuck in " -"AMS, please use with caution." +"CF/GF filaments are hard and brittle, It's easy to break or get stuck in AMS, " +"please use with caution." msgstr "" "CF/GF filamentleri sert ve kırılgandır. AMS'de kırılması veya sıkışması " "kolaydır, lütfen dikkatli kullanın." @@ -4930,8 +4920,8 @@ msgstr[1] "" msgid "" "\n" -"Hint: Make sure you have added the corresponding printer before importing " -"the configs." +"Hint: Make sure you have added the corresponding printer before importing the " +"configs." msgstr "" "\n" "İpucu: Yapılandırmaları içe aktarmadan önce ilgili yazıcıyı eklediğinizden " @@ -4980,8 +4970,7 @@ msgid "Please confirm if the printer is connected." msgstr "Lütfen yazıcının bağlı olup olmadığını onaylayın." msgid "" -"The printer is currently busy downloading. Please try again after it " -"finishes." +"The printer is currently busy downloading. Please try again after it finishes." msgstr "" "Yazıcı şu anda indirmeyle meşgul. Lütfen bittikten sonra tekrar deneyin." @@ -4992,8 +4981,7 @@ msgid "Problem occured. Please update the printer firmware and try again." msgstr "" "Sorun oluştu. Lütfen yazıcının ürün yazılımını güncelleyin ve tekrar deneyin." -msgid "" -"LAN Only Liveview is off. Please turn on the liveview on printer screen." +msgid "LAN Only Liveview is off. Please turn on the liveview on printer screen." msgstr "" "Yalnızca LAN Canlı İzleme kapalı. Lütfen yazıcı ekranındaki canlı " "görüntülemeyi açın." @@ -5008,8 +4996,8 @@ msgid "Connection Failed. Please check the network and try again" msgstr "Bağlantı Başarısız. Lütfen ağı kontrol edip tekrar deneyin" msgid "" -"Please check the network and try again, You can restart or update the " -"printer if the issue persists." +"Please check the network and try again, You can restart or update the printer " +"if the issue persists." msgstr "" "Lütfen ağı kontrol edip tekrar deneyin. Sorun devam ederse yazıcıyı yeniden " "başlatabilir veya güncelleyebilirsiniz." @@ -5152,8 +5140,7 @@ msgid_plural "" "You are going to delete %u files from printer. Are you sure to continue?" msgstr[0] "" "%u dosyasını yazıcıdan sileceksiniz. Devam edeceğinizden emin misiniz?" -msgstr[1] "" -"%u dosyayı yazıcıdan sileceksiniz. Devam edeceğinizden emin misiniz?" +msgstr[1] "%u dosyayı yazıcıdan sileceksiniz. Devam edeceğinizden emin misiniz?" msgid "Delete files" msgstr "Dosyaları sil" @@ -5213,8 +5200,8 @@ msgid "" "Reconnecting the printer, the operation cannot be completed immediately, " "please try again later." msgstr "" -"Yazıcıyı yeniden bağladığınızda işlem hemen tamamlanamıyor, lütfen daha " -"sonra tekrar deneyin." +"Yazıcıyı yeniden bağladığınızda işlem hemen tamamlanamıyor, lütfen daha sonra " +"tekrar deneyin." msgid "File does not exist." msgstr "Dosya bulunmuyor." @@ -5297,8 +5284,8 @@ msgid "" "(The model has already been rated. Your rating will overwrite the previous " "rating.)" msgstr "" -"(Model zaten derecelendirilmiştir. Derecelendirmeniz önceki " -"derecelendirmenin üzerine yazılacaktır)" +"(Model zaten derecelendirilmiştir. Derecelendirmeniz önceki derecelendirmenin " +"üzerine yazılacaktır)" msgid "Rate" msgstr "Derecelendir" @@ -5894,8 +5881,8 @@ msgstr "Peletler" msgid "" "No AMS filaments. Please select a printer in 'Device' page to load AMS info." msgstr "" -"AMS filamentleri yok. AMS bilgilerini yüklemek için lütfen 'Cihaz' " -"sayfasında bir yazıcı seçin." +"AMS filamentleri yok. AMS bilgilerini yüklemek için lütfen 'Cihaz' sayfasında " +"bir yazıcı seçin." msgid "Sync filaments with AMS" msgstr "Filamentleri AMS ile senkronize et" @@ -5908,8 +5895,7 @@ msgstr "" "ayarlarını ve renklerini kaldıracaktır. Devam etmek istiyor musun?" msgid "" -"Already did a synchronization, do you want to sync only changes or resync " -"all?" +"Already did a synchronization, do you want to sync only changes or resync all?" msgstr "" "Zaten bir senkronizasyon yaptınız. Yalnızca değişiklikleri senkronize etmek " "mi yoksa tümünü yeniden senkronize etmek mi istiyorsunuz?" @@ -5924,13 +5910,13 @@ msgid "There are no compatible filaments, and sync is not performed." msgstr "Uyumlu filament yok ve senkronizasyon gerçekleştirilmiyor." msgid "" -"There are some unknown filaments mapped to generic preset. Please update " -"Orca Slicer or restart Orca Slicer to check if there is an update to system " +"There are some unknown filaments mapped to generic preset. Please update Orca " +"Slicer or restart Orca Slicer to check if there is an update to system " "presets." msgstr "" -"Genel ön ayara eşlenen bazı bilinmeyen filamentler var. Sistem ön " -"ayarlarında bir güncelleme olup olmadığını kontrol etmek için lütfen Orca " -"Slicer'ı güncelleyin veya Orca Slicer'ı yeniden başlatın." +"Genel ön ayara eşlenen bazı bilinmeyen filamentler var. Sistem ön ayarlarında " +"bir güncelleme olup olmadığını kontrol etmek için lütfen Orca Slicer'ı " +"güncelleyin veya Orca Slicer'ı yeniden başlatın." #, boost-format msgid "Do you want to save changes to \"%1%\"?" @@ -5955,13 +5941,13 @@ msgid "Restore" msgstr "Geri Yükleme" msgid "" -"The current hot bed temperature is relatively high. The nozzle may be " -"clogged when printing this filament in a closed enclosure. Please open the " -"front door and/or remove the upper glass." +"The current hot bed temperature is relatively high. The nozzle may be clogged " +"when printing this filament in a closed enclosure. Please open the front door " +"and/or remove the upper glass." msgstr "" -"Mevcut sıcak yatak sıcaklığı oldukça yüksek. Bu filamenti kapalı bir " -"muhafaza içinde bastırırken nozzle tıkanabilir. Lütfen ön kapağı açın ve/" -"veya üst camı çıkarın." +"Mevcut sıcak yatak sıcaklığı oldukça yüksek. Bu filamenti kapalı bir muhafaza " +"içinde bastırırken nozzle tıkanabilir. Lütfen ön kapağı açın ve/veya üst camı " +"çıkarın." msgid "" "The nozzle hardness required by the filament is higher than the default " @@ -6024,8 +6010,8 @@ msgstr "Lütfen bunları parametre sekmelerinde düzeltin" msgid "The 3mf has following modified G-codes in filament or printer presets:" msgstr "" -"3mf dosyasında filament veya yazıcı ön ayarlarında şu değiştirilmiş G-" -"kodları bulunmaktadır:" +"3mf dosyasında filament veya yazıcı ön ayarlarında şu değiştirilmiş G-kodları " +"bulunmaktadır:" msgid "" "Please confirm that these modified G-codes are safe to prevent any damage to " @@ -6106,6 +6092,8 @@ msgid "" "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. Plakaya otomatik olarak uyacak şekilde " +"küçültülecektir." msgid "Object too large" msgstr "Nesne çok büyük" @@ -6114,7 +6102,7 @@ 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. Isı yatağına sığacak şekilde otomatik olarak " +"Nesneniz çok büyük görünüyor. Plakaya sığacak şekilde otomatik olarak " "küçültmek istiyor musunuz?" msgid "Export STL file:" @@ -6264,8 +6252,8 @@ msgstr "" "dosyayı indirin ve manuel olarak içe aktarın." msgid "" -"Importing to Orca Slicer failed. Please download the file and manually " -"import it." +"Importing to Orca Slicer failed. Please download the file and manually import " +"it." msgstr "" "Orca Slicer'ya aktarma başarısız oldu. Lütfen dosyayı indirin ve manuel " "olarak İçe aktarın." @@ -6353,15 +6341,15 @@ msgstr "Dilimlenmiş dosyayı şu şekilde kaydedin:" #, c-format, boost-format msgid "" -"The file %s has been sent to the printer's storage space and can be viewed " -"on the printer." +"The file %s has been sent to the printer's storage space and can be viewed on " +"the printer." msgstr "" "%s dosyası yazıcının depolama alanına gönderildi ve yazıcıda " "görüntülenebiliyor." msgid "" -"Unable to perform boolean operation on model meshes. Only positive parts " -"will be kept. You may fix the meshes and try again." +"Unable to perform boolean operation on model meshes. Only positive parts will " +"be kept. You may fix the meshes and try again." msgstr "" "Model ağlarında boole işlemi gerçekleştirilemiyor. Yalnızca olumlu kısımlar " "tutulacaktır. Kafesleri düzeltip tekrar deneyebilirsiniz." @@ -6475,8 +6463,8 @@ msgstr "" #, c-format, boost-format msgid "" "Plate% d: %s is not suggested to be used to print filament %s(%s). If you " -"still want to do this printing, please set this filament's bed temperature " -"to non zero." +"still want to do this printing, please set this filament's bed temperature to " +"non zero." msgstr "" "Plaka% d: %s'nin %s(%s) filamentinı yazdırmak için kullanılması önerilmez. " "Eğer yine de bu baskıyı yapmak istiyorsanız, lütfen bu filamentin yatak " @@ -6576,8 +6564,8 @@ msgstr "Yalnızca bir OrcaSlicer örneğine izin ver" msgid "" "On OSX there is always only one instance of app running by default. However " -"it is allowed to run multiple instances of same app from the command line. " -"In such case this settings will allow only one instance." +"it is allowed to run multiple instances of same app from the command line. In " +"such case this settings will allow only one instance." msgstr "" "OSX’te her zaman varsayılan olarak çalışan tek bir uygulama örneği vardır. " "Ancak aynı uygulamanın birden fazla örneğinin komut satırından " @@ -6585,9 +6573,8 @@ msgstr "" "örneğe izin verecektir." msgid "" -"If this is enabled, when starting OrcaSlicer and another instance of the " -"same OrcaSlicer is already running, that instance will be reactivated " -"instead." +"If this is enabled, when starting OrcaSlicer and another instance of the same " +"OrcaSlicer is already running, that instance will be reactivated instead." msgstr "" "Bu etkinleştirilirse, OrcaSlicer başlatıldığında ve aynı OrcaSlicer’ın başka " "bir örneği zaten çalışıyorken, bunun yerine bu örnek yeniden " @@ -6679,21 +6666,20 @@ msgstr "" "hatırlayacak ve otomatik olarak değiştirecektir." msgid "Multi-device Management(Take effect after restarting Orca)." -msgstr "" -"Çoklu Cihaz Yönetimi(Studio yeniden başlatıldıktan sonra geçerli olur)." +msgstr "Çoklu Cihaz Yönetimi(Studio yeniden başlatıldıktan sonra geçerli olur)." msgid "" -"With this option enabled, you can send a task to multiple devices at the " -"same time and manage multiple devices." +"With this option enabled, you can send a task to multiple devices at the same " +"time and manage multiple devices." 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 "" +msgstr "Klonlamadan sonra plakayı otomatik düzenle" msgid "Auto arrange plate after object cloning" -msgstr "" +msgstr "Nesne klonlamadan sonra plakayı otomatik düzenleme" msgid "Network" msgstr "Ağ" @@ -6764,8 +6750,8 @@ msgstr "Otomatik yedekleme" msgid "" "Backup your project periodically for restoring from the occasional crash." msgstr "" -"Ara sıra meydana gelen çökmelerden sonra geri yüklemek için projenizi " -"düzenli aralıklarla yedekleyin." +"Ara sıra meydana gelen çökmelerden sonra geri yüklemek için projenizi düzenli " +"aralıklarla yedekleyin." msgid "every" msgstr "her" @@ -7122,8 +7108,7 @@ msgid "Error code" msgstr "Hata kodu" msgid "No login account, only printers in LAN mode are displayed" -msgstr "" -"Oturum açma hesabı yok, yalnızca LAN modundaki yazıcılar görüntüleniyor" +msgstr "Oturum açma hesabı yok, yalnızca LAN modundaki yazıcılar görüntüleniyor" msgid "Connecting to server" msgstr "Sunucuya baglanıyor" @@ -7191,8 +7176,7 @@ msgstr "" "desteklemek için lütfen yazıcının ürün yazılımını güncelleyin." msgid "" -"The printer firmware only supports sequential mapping of filament => AMS " -"slot." +"The printer firmware only supports sequential mapping of filament => AMS slot." msgstr "" "Yazıcı ürün yazılımı yalnızca filament => AMS yuvasının sıralı eşlemesini " "destekler." @@ -7253,8 +7237,8 @@ msgstr "" msgid "" "There are some unknown filaments in the AMS mappings. Please check whether " -"they are the required filaments. If they are okay, press \"Confirm\" to " -"start printing." +"they are the required filaments. If they are okay, press \"Confirm\" to start " +"printing." msgstr "" "AMS eşlemelerinde bazı bilinmeyen filamentler var. Lütfen bunların gerekli " "filamentler olup olmadığını kontrol edin. Sorun yoksa, yazdırmayı başlatmak " @@ -7286,8 +7270,7 @@ msgstr "" "hasarına neden olabilir" msgid "Please fix the error above, otherwise printing cannot continue." -msgstr "" -"Lütfen yukarıdaki hatayı düzeltin, aksi takdirde yazdırma devam edemez." +msgstr "Lütfen yukarıdaki hatayı düzeltin, aksi takdirde yazdırma devam edemez." msgid "" "Please click the confirm button if you still want to proceed with printing." @@ -7438,11 +7421,11 @@ msgid "" "successes and failures of the vast number of prints by our users. We are " "training %s to be smarter by feeding them the real-world data. If you are " "willing, this service will access information from your error logs and usage " -"logs, which may include information described in Privacy Policy. We will " -"not collect any Personal Data by which an individual can be identified " -"directly or indirectly, including without limitation names, addresses, " -"payment information, or phone numbers. By enabling this service, you agree " -"to these terms and the statement about Privacy Policy." +"logs, which may include information described in Privacy Policy. We will not " +"collect any Personal Data by which an individual can be identified directly " +"or indirectly, including without limitation names, addresses, payment " +"information, or phone numbers. By enabling this service, you agree to these " +"terms and the statement about Privacy Policy." msgstr "" "3D Baskı topluluğunda, kendi dilimleme parametrelerimizi ve ayarlarımızı " "düzenlerken birbirimizin başarılarından ve başarısızlıklarından öğreniyoruz. " @@ -7493,16 +7476,16 @@ msgid "Click to reset all settings to the last saved preset." msgstr "Tüm ayarları en son kaydedilen ön ayara sıfırlamak için tıklayın." msgid "" -"Prime tower is required for smooth timeplase. There may be flaws on the " -"model without prime tower. Are you sure you want to disable prime tower?" +"Prime tower is required for smooth timeplase. There may be flaws on the model " +"without prime tower. Are you sure you want to disable prime tower?" msgstr "" "Sorunsuz timeplace için Prime Tower gereklidir. Prime tower olmayan modelde " "kusurlar olabilir. Prime tower'ı devre dışı bırakmak istediğinizden emin " "misiniz?" msgid "" -"Prime tower is required for smooth timelapse. There may be flaws on the " -"model without prime tower. Do you want to enable prime tower?" +"Prime tower is required for smooth timelapse. There may be flaws on the model " +"without prime tower. Do you want to enable prime tower?" msgstr "" "Sorunsuz hızlandırılmış çekim için Prime Tower gereklidir. Prime tower " "olmayan modelde kusurlar olabilir. Prime tower'ı etkinleştirmek istiyor " @@ -7531,11 +7514,11 @@ msgstr "" msgid "" "For \"Tree Strong\" and \"Tree Hybrid\" styles, we recommend the following " -"settings: at least 2 interface layers, at least 0.1mm top z distance or " -"using support materials on interface." +"settings: at least 2 interface layers, at least 0.1mm top z distance or using " +"support materials on interface." msgstr "" -"\"Güçlü Ağaç\" ve \"Ağaç Hibrit\" stilleri için şu ayarları öneriyoruz: en " -"az 2 arayüz katmanı, en az 0,1 mm üst z mesafesi veya arayüzde destek " +"\"Güçlü Ağaç\" ve \"Ağaç Hibrit\" stilleri için şu ayarları öneriyoruz: en az " +"2 arayüz katmanı, en az 0,1 mm üst z mesafesi veya arayüzde destek " "malzemeleri kullanılması." msgid "" @@ -7574,8 +7557,8 @@ msgid "" "height limits ,this may cause printing quality issues." msgstr "" "Katman yüksekliği, Yazıcı Ayarları -> Ekstruder -> Katman yüksekliği " -"sınırları bölümündeki sınırı aşıyor bu durum baskı kalitesi sorunlarına " -"neden olabilir." +"sınırları bölümündeki sınırı aşıyor bu durum baskı kalitesi sorunlarına neden " +"olabilir." msgid "Adjust to the set range automatically? \n" msgstr "Ayarlanan aralığa otomatik olarak ayarlansın mı? \n" @@ -7589,8 +7572,8 @@ msgstr "Atla" msgid "" "Experimental feature: Retracting and cutting off the filament at a greater " "distance during filament changes to minimize flush.Although it can notably " -"reduce flush, it may also elevate the risk of nozzle clogs or other " -"printing complications." +"reduce flush, it may also elevate the risk of nozzle clogs or other printing " +"complications." msgstr "" "Deneysel özellik: Filament değişiklikleri sırasında, floşu en aza indirmek " "için filamanı daha büyük bir mesafeden geri çekmek ve kesmek. Flush’u önemli " @@ -7612,8 +7595,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 "" "Araç başlığı olmadan timelapse kaydederken, bir \"Timelapse Wipe Tower\" " "eklenmesi önerilir.\n" @@ -7662,8 +7645,8 @@ msgid "" "the overhang degree range and wall speed is used" msgstr "" "Bu, çeşitli sarkma dereceleri için hızdır. Çıkıntı dereceleri çizgi " -"genişliğinin yüzdesi olarak ifade edilir. 0 hız, sarkma derecesi aralığı " -"için yavaşlamanın olmadığı anlamına gelir ve duvar hızı kullanılır" +"genişliğinin yüzdesi olarak ifade edilir. 0 hız, sarkma derecesi aralığı için " +"yavaşlamanın olmadığı anlamına gelir ve duvar hızı kullanılır" msgid "Bridge" msgstr "Köprü" @@ -7696,10 +7679,10 @@ msgid "Prime tower" msgstr "Prime Kulesi" msgid "Filament for Features" -msgstr "" +msgstr "Özellikler İçin Filament" msgid "Ooze prevention" -msgstr "" +msgstr "Sızıntı önleme" msgid "Skirt" msgstr "Etek" @@ -7757,7 +7740,7 @@ msgstr "" "Bu filamentin önerilen Nozul sıcaklığı aralığı. 0 ayar yok anlamına gelir" msgid "Flow ratio and Pressure Advance" -msgstr "" +msgstr "Akış Oranı Ve Basınç İlerlemesi" msgid "Print chamber temperature" msgstr "Baskı Odası Sıcaklığı" @@ -7775,11 +7758,11 @@ msgid "Cool plate" msgstr "Soğuk plaka" msgid "" -"Bed temperature when cool plate is installed. Value 0 means the filament " -"does not support to print on the Cool Plate" +"Bed temperature when cool plate is installed. Value 0 means the filament does " +"not support to print on the Cool Plate" msgstr "" -"Soğutma plakası takıldığında yatak sıcaklığı. 0 değeri, filamentin Cool " -"Plate üzerine yazdırmayı desteklemediği anlamına gelir" +"Soğutma plakası takıldığında yatak sıcaklığı. 0 değeri, filamentin Cool Plate " +"üzerine yazdırmayı desteklemediği anlamına gelir" msgid "Engineering plate" msgstr "Mühendislik plakası" @@ -7850,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ı" @@ -7957,14 +7940,18 @@ msgid "Single extruder multimaterial setup" msgstr "Tek Ekstruder Çoklu Malzeme Kurulumu" msgid "Number of extruders of the printer." -msgstr "" +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?" +"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ı" @@ -7979,6 +7966,8 @@ 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ı" @@ -8123,16 +8112,16 @@ msgstr "\"%1%\" ön ayarı aşağıdaki kaydedilmemiş değişiklikleri içeriyo #, boost-format msgid "" -"Preset \"%1%\" is not compatible with the new printer profile and it " -"contains the following unsaved changes:" +"Preset \"%1%\" is not compatible with the new printer profile and it contains " +"the following unsaved changes:" msgstr "" "Ön ayar \"%1%\", yeni yazıcı profiliyle uyumlu değil ve aşağıdaki " "kaydedilmemiş değişiklikleri içeriyor:" #, boost-format msgid "" -"Preset \"%1%\" is not compatible with the new process profile and it " -"contains the following unsaved changes:" +"Preset \"%1%\" is not compatible with the new process profile and it contains " +"the following unsaved changes:" msgstr "" "Ön ayar \"%1%\", yeni işlem profiliyle uyumlu değil ve aşağıdaki " "kaydedilmemiş değişiklikleri içeriyor:" @@ -8166,8 +8155,8 @@ msgid "" "the modified values to the new project" msgstr "" "\n" -"Değiştirdiğiniz ön ayar değerlerini atabilir veya değiştirilen değerleri " -"yeni projeye aktarmayı seçebilirsiniz." +"Değiştirdiğiniz ön ayar değerlerini atabilir veya değiştirilen değerleri yeni " +"projeye aktarmayı seçebilirsiniz." msgid "Extruders count" msgstr "Ekstruder sayısı" @@ -8191,19 +8180,19 @@ msgstr "" msgid "" "Transfer the selected options from left preset to the right.\n" -"Note: New modified presets will be selected in settings tabs after close " -"this dialog." +"Note: New modified presets will be selected in settings tabs after close this " +"dialog." msgstr "" "Seçilen seçenekleri sol ön ayardan sağa aktarın.\n" -"Not: Bu iletişim kutusunu kapattıktan sonra ayarlar sekmelerinde " -"değiştirilen yeni ön ayarlar seçilecektir." +"Not: Bu iletişim kutusunu kapattıktan sonra ayarlar sekmelerinde değiştirilen " +"yeni ön ayarlar seçilecektir." msgid "Transfer values from left to right" msgstr "Değerleri soldan sağa aktarın" msgid "" -"If enabled, this dialog can be used for transfer selected values from left " -"to right preset." +"If enabled, this dialog can be used for transfer selected values from left to " +"right preset." msgstr "" "Etkinleştirilirse, bu iletişim kutusu seçilen değerleri soldan sağa ön ayara " "aktarmak için kullanılabilir." @@ -8344,11 +8333,11 @@ msgstr "Sıkıştırma özelleştirme" msgid "" "Ramming denotes the rapid extrusion just before a tool change in a single-" -"extruder MM printer. Its purpose is to properly shape the end of the " -"unloaded filament so it does not prevent insertion of the new filament and " -"can itself be reinserted later. This phase is important and different " -"materials can require different extrusion speeds to get the good shape. For " -"this reason, the extrusion rates during ramming are adjustable.\n" +"extruder MM printer. Its purpose is to properly shape the end of the unloaded " +"filament so it does not prevent insertion of the new filament and can itself " +"be reinserted later. This phase is important and different materials can " +"require different extrusion speeds to get the good shape. For this reason, " +"the extrusion rates during ramming are adjustable.\n" "\n" "This is an expert-level setting, incorrect adjustment will likely lead to " "jams, extruder wheel grinding into filament etc." @@ -8433,15 +8422,15 @@ msgstr "" "‘Windows Media Player’ı etkinleştirmek istiyor musunuz?" msgid "" -"BambuSource has not correctly been registered for media playing! Press Yes " -"to re-register it. You will be promoted twice" +"BambuSource has not correctly been registered for media playing! Press Yes to " +"re-register it. You will be promoted twice" msgstr "" "BambuSource medya oynatımı için doğru şekilde kaydedilmemiş! Yeniden " "kaydetmek için Evet’e basın." msgid "" -"Missing BambuSource component registered for media playing! Please re-" -"install BambuStutio or seek after-sales help." +"Missing BambuSource component registered for media playing! Please re-install " +"BambuStutio or seek after-sales help." msgstr "" "Medya oynatma için kayıtlı BambuSource bileşeni eksik! Lütfen BambuStutio’yu " "yeniden yükleyin veya satış sonrası yardım isteyin." @@ -8454,9 +8443,9 @@ msgstr "" "çalışmayabilir! Düzeltmek için Evet’e basın." msgid "" -"Your system is missing H.264 codecs for GStreamer, which are required to " -"play video. (Try installing the gstreamer1.0-plugins-bad or gstreamer1.0-" -"libav packages, then restart Orca Slicer?)" +"Your system is missing H.264 codecs for GStreamer, which are required to play " +"video. (Try installing the gstreamer1.0-plugins-bad or gstreamer1.0-libav " +"packages, then restart Orca Slicer?)" msgstr "" "Sisteminizde video oynatmak için gerekli olan GStreamer H.264 codec " "bileşenleri eksik. (gstreamer1.0-plugins-bad veya gstreamer1.0-libav " @@ -8487,7 +8476,7 @@ 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 "" +msgstr "Shift+G" msgid "Paste from clipboard" msgstr "Panodan yapıştır" @@ -8538,7 +8527,7 @@ msgid "Collapse/Expand the sidebar" msgstr "Kenar çubuğunu daralt/genişlet" msgid "Any arrow" -msgstr "" +msgstr "Herhangi bir ok" msgid "Movement in camera space" msgstr "Kamera alanında hareket" @@ -8721,8 +8710,8 @@ msgstr "Ağ eklentisi güncellemesi" msgid "" "Click OK to update the Network plug-in when Orca Slicer launches next time." msgstr "" -"Orca Slicer bir sonraki sefer başlatıldığında Ağ eklentisini güncellemek " -"için Tamam'a tıklayın." +"Orca Slicer bir sonraki sefer başlatıldığında Ağ eklentisini güncellemek için " +"Tamam'a tıklayın." #, c-format, boost-format msgid "A new Network plug-in(%s) available, Do you want to install it?" @@ -8779,8 +8768,7 @@ msgstr "Nozulu Onaylayın ve Güncelleyin" msgid "LAN Connection Failed (Sending print file)" msgstr "LAN Bağlantısı Başarısız (Yazdırma dosyası gönderiliyor)" -msgid "" -"Step 1, please confirm Orca Slicer and your printer are in the same LAN." +msgid "Step 1, please confirm Orca Slicer and your printer are in the same LAN." msgstr "" "Adım 1, lütfen Orca Slicer ile yazıcınızın aynı LAN'da olduğunu doğrulayın." @@ -8849,8 +8837,8 @@ msgid "Updating successful" msgstr "Güncelleme başarılı" msgid "" -"Are you sure you want to update? This will take about 10 minutes. Do not " -"turn off the power while the printer is updating." +"Are you sure you want to update? This will take about 10 minutes. Do not turn " +"off the power while the printer is updating." msgstr "" "Güncellemek istediğinizden emin misiniz? Bu yaklaşık 10 dakika sürecektir. " "Yazıcı güncellenirken gücü kapatmayın." @@ -8869,10 +8857,9 @@ msgid "" "printing. Do you want to update now? You can also update later on printer or " "update next time starting Orca." msgstr "" -"Ürün yazılımı sürümü anormal. Yazdırmadan önce onarım ve güncelleme " -"yapılması gerekir. Şimdi güncellemek istiyor musunuz? Ayrıca daha sonra " -"yazıcıda güncelleyebilir veya stüdyoyu bir sonraki başlatışınızda " -"güncelleyebilirsiniz." +"Ürün yazılımı sürümü anormal. Yazdırmadan önce onarım ve güncelleme yapılması " +"gerekir. Şimdi güncellemek istiyor musunuz? Ayrıca daha sonra yazıcıda " +"güncelleyebilir veya stüdyoyu bir sonraki başlatışınızda güncelleyebilirsiniz." msgid "Extension Board" msgstr "Uzatma Kartı" @@ -8972,6 +8959,7 @@ 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" @@ -9029,8 +9017,8 @@ msgid "Failed to calculate line width of %1%. Can not get value of \"%2%\" " msgstr "%1% çizgi genişliği hesaplanamadı. \"%2%\" değeri alınamıyor " msgid "" -"Invalid spacing supplied to Flow::with_spacing(), check your layer height " -"and extrusion width" +"Invalid spacing supplied to Flow::with_spacing(), check your layer height and " +"extrusion width" msgstr "" "Flow::with_spacing()'e sağlanan geçersiz boşluk, kat yüksekliğinizi ve " "ekstrüzyon genişliğinizi kontrol edin" @@ -9163,8 +9151,8 @@ msgstr " dışlama alanına çok yakın ve çarpışmalara neden olacak.\n" msgid "" "Can not print multiple filaments which have large difference of temperature " -"together. Otherwise, the extruder and nozzle may be blocked or damaged " -"during printing" +"together. Otherwise, the extruder and nozzle may be blocked or damaged during " +"printing" msgstr "" "Birlikte büyük sıcaklık farkına sahip birden fazla filament basılamaz. Aksi " "takdirde baskı sırasında ekstruder ve nozul tıkanabilir veya hasar görebilir" @@ -9183,8 +9171,8 @@ msgid "" "Please select \"By object\" print sequence to print multiple objects in " "spiral vase mode." msgstr "" -"Birden fazla nesneyi spiral vazo modunda yazdırmak için lütfen \"Nesneye göre" -"\" yazdırma sırasını seçin." +"Birden fazla nesneyi spiral vazo modunda yazdırmak için lütfen \"Nesneye " +"göre\" yazdırma sırasını seçin." msgid "" "The spiral vase mode does not work when an object contains more than one " @@ -9197,8 +9185,8 @@ msgstr "%1% nesnesi maksimum yapı hacmi yüksekliğini aşıyor." #, boost-format msgid "" -"While the object %1% itself fits the build volume, its last layer exceeds " -"the maximum build volume height." +"While the object %1% itself fits the build volume, its last layer exceeds the " +"maximum build volume height." msgstr "" "%1% nesnesinin kendisi yapı hacmine uysa da, son katmanı maksimum yapı hacmi " "yüksekliğini aşıyor." @@ -9214,10 +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 may not work " -"well when the prime tower is enabled. It's very experimental, so please " -"proceed with caution." +"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 "" +"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 " @@ -9230,6 +9221,8 @@ 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, " @@ -9245,8 +9238,8 @@ msgid "" "The prime tower is not supported when adaptive layer height is on. It " "requires that all objects have the same layer height." msgstr "" -"Uyarlanabilir katman yüksekliği açıkken ana kule desteklenmez. Tüm " -"nesnelerin aynı katman yüksekliğine sahip olmasını gerektirir." +"Uyarlanabilir katman yüksekliği açıkken ana kule desteklenmez. Tüm nesnelerin " +"aynı katman yüksekliğine sahip olmasını gerektirir." msgid "The prime tower requires \"support gap\" to be multiple of layer height" msgstr "" @@ -9254,12 +9247,11 @@ msgstr "" msgid "The prime tower requires that all objects have the same layer heights" msgstr "" -"Prime tower, tüm nesnelerin aynı katman yüksekliğine sahip olmasını " -"gerektirir" +"Prime tower, tüm nesnelerin aynı katman yüksekliğine sahip olmasını gerektirir" msgid "" -"The prime tower requires that all objects are printed over the same number " -"of raft layers" +"The prime tower requires that all objects are printed over the same number of " +"raft layers" msgstr "" "Ana kule, tüm nesnelerin aynı sayıda sal katmanı üzerine yazdırılmasını " "gerektirir" @@ -9272,8 +9264,8 @@ msgstr "" "gerektirir." msgid "" -"The prime tower is only supported if all objects have the same variable " -"layer height" +"The prime tower is only supported if all objects have the same variable layer " +"height" msgstr "" "Prime tower yalnızca tüm nesnelerin aynı değişken katman yüksekliğine sahip " "olması durumunda desteklenir" @@ -9287,8 +9279,7 @@ msgstr "Çok büyük çizgi genişliği" msgid "" "The prime tower requires that support has the same layer height with object." msgstr "" -"Prime kulesi için, destek, nesne ile aynı katman yüksekliğine sahip " -"olmalıdır." +"Prime kulesi için, destek, nesne ile aynı katman yüksekliğine sahip olmalıdır." msgid "" "Organic support tree tip diameter must not be smaller than support material " @@ -9301,8 +9292,8 @@ msgid "" "Organic support branch diameter must not be smaller than 2x support material " "extrusion width." msgstr "" -"Organik destek dalı çapı, destek malzemesi ekstrüzyon genişliğinin 2 " -"katından daha küçük olamaz." +"Organik destek dalı çapı, destek malzemesi ekstrüzyon genişliğinin 2 katından " +"daha küçük olamaz." msgid "" "Organic support branch diameter must not be smaller than support tree tip " @@ -9319,20 +9310,20 @@ msgid "Layer height cannot exceed nozzle diameter" msgstr "Katman yüksekliği nozul çapını aşamaz" msgid "" -"Relative extruder addressing requires resetting the extruder position at " -"each layer to prevent loss of floating point accuracy. Add \"G92 E0\" to " +"Relative extruder addressing requires resetting the extruder position at each " +"layer to prevent loss of floating point accuracy. Add \"G92 E0\" to " "layer_gcode." msgstr "" -"Göreceli ekstruder adreslemesi, kayan nokta doğruluğunun kaybını önlemek " -"için her katmandaki ekstruder konumunun sıfırlanmasını gerektirir. " -"Layer_gcode'a \"G92 E0\" ekleyin." +"Göreceli ekstruder adreslemesi, kayan nokta doğruluğunun kaybını önlemek için " +"her katmandaki ekstruder konumunun sıfırlanmasını gerektirir. Layer_gcode'a " +"\"G92 E0\" ekleyin." msgid "" "\"G92 E0\" was found in before_layer_gcode, which is incompatible with " "absolute extruder addressing." msgstr "" -"Before_layer_gcode'da \"G92 E0\" bulundu ve bu, mutlak ekstruder " -"adreslemeyle uyumsuzdu." +"Before_layer_gcode'da \"G92 E0\" bulundu ve bu, mutlak ekstruder adreslemeyle " +"uyumsuzdu." msgid "" "\"G92 E0\" was found in layer_gcode, which is incompatible with absolute " @@ -9371,8 +9362,8 @@ msgid "" "(machine_max_acceleration_extruding).\n" "Orca will automatically cap the acceleration speed to ensure it doesn't " "surpass the printer's capabilities.\n" -"You can adjust the machine_max_acceleration_extruding value in your " -"printer's configuration to get higher speeds." +"You can adjust the machine_max_acceleration_extruding value in your printer's " +"configuration to get higher speeds." msgstr "" "Hızlanma ayarı yazıcının maksimum hızlanmasını aşıyor " "(machine_max_acceleration_extruding).\n" @@ -9433,8 +9424,7 @@ msgid "Elephant foot compensation" msgstr "Fil ayağı telafi oranı" msgid "" -"Shrink the initial layer on build plate to compensate for elephant foot " -"effect" +"Shrink the initial layer on build plate to compensate for elephant foot effect" msgstr "" "Fil ayağı etkisini telafi etmek için baskı plakasındaki ilk katmanı küçültün" @@ -9493,15 +9483,15 @@ msgid "" "Orca Slicer can upload G-code files to a printer host. This field should " "contain the hostname, IP address or URL of the printer host instance. Print " "host behind HAProxy with basic auth enabled can be accessed by putting the " -"user name and password into the URL in the following format: https://" -"username:password@your-octopi-address/" +"user name and password into the URL in the following format: https://username:" +"password@your-octopi-address/" msgstr "" -"Orca Slicer, G kodu dosyalarını bir yazıcı ana bilgisayarına yükleyebilir. " -"Bu alan, yazıcı ana bilgisayar örneğinin ana bilgisayar adını, IP adresini " -"veya URL'sini içermelidir. Temel kimlik doğrulamanın etkin olduğu " -"HAProxy'nin arkasındaki yazdırma ana bilgisayarına, kullanıcı adı ve " -"parolanın aşağıdaki biçimdeki URL'ye girilmesiyle erişilebilir: https://" -"username:password@your-octopi-address/" +"Orca Slicer, G kodu dosyalarını bir yazıcı ana bilgisayarına yükleyebilir. Bu " +"alan, yazıcı ana bilgisayar örneğinin ana bilgisayar adını, IP adresini veya " +"URL'sini içermelidir. Temel kimlik doğrulamanın etkin olduğu HAProxy'nin " +"arkasındaki yazdırma ana bilgisayarına, kullanıcı adı ve parolanın aşağıdaki " +"biçimdeki URL'ye girilmesiyle erişilebilir: https://username:password@your-" +"octopi-address/" msgid "Device UI" msgstr "Cihaz kullanıcı arayüzü" @@ -9509,8 +9499,7 @@ msgstr "Cihaz kullanıcı arayüzü" msgid "" "Specify the URL of your device user interface if it's not same as print_host" msgstr "" -"Print_Host ile aynı değilse cihazınızın kullanıcı arayüzünün URL'sini " -"belirtin" +"Print_Host ile aynı değilse cihazınızın kullanıcı arayüzünün URL'sini belirtin" msgid "API Key / Password" msgstr "API Anahtarı / Şifre" @@ -9519,9 +9508,8 @@ msgid "" "Orca Slicer can upload G-code files to a printer host. This field should " "contain the API Key or the password required for authentication." msgstr "" -"Orca Slicer, G kodu dosyalarını bir yazıcı ana bilgisayarına yükleyebilir. " -"Bu alan, kimlik doğrulama için gereken API Anahtarını veya şifreyi " -"içermelidir." +"Orca Slicer, G kodu dosyalarını bir yazıcı ana bilgisayarına yükleyebilir. Bu " +"alan, kimlik doğrulama için gereken API Anahtarını veya şifreyi içermelidir." msgid "Name of the printer" msgstr "Yazıcı adı" @@ -9531,8 +9519,8 @@ msgstr "HTTPS CA Dosyası" msgid "" "Custom CA certificate file can be specified for HTTPS OctoPrint connections, " -"in crt/pem format. If left blank, the default OS CA certificate repository " -"is used." +"in crt/pem format. If left blank, the default OS CA certificate repository is " +"used." msgstr "" "HTTPS OctoPrint bağlantıları için crt/pem formatında özel CA sertifika " "dosyası belirtilebilir. Boş bırakılırsa varsayılan OS CA sertifika deposu " @@ -9583,10 +9571,10 @@ msgid "" "either as an absolute value or as percentage (for example 50%) of a direct " "travel path. Zero to disable" msgstr "" -"Duvarı geçmekten kaçınmak için maksimum sapma mesafesi. Yoldan sapma " -"mesafesi bu değerden büyükse yoldan sapmayın. Yol uzunluğu, mutlak bir değer " -"olarak veya doğrudan seyahat yolunun yüzdesi (örneğin %50) olarak " -"belirtilebilir. Devre dışı bırakmak için sıfır" +"Duvarı geçmekten kaçınmak için maksimum sapma mesafesi. Yoldan sapma mesafesi " +"bu değerden büyükse yoldan sapmayın. Yol uzunluğu, mutlak bir değer olarak " +"veya doğrudan seyahat yolunun yüzdesi (örneğin %50) olarak belirtilebilir. " +"Devre dışı bırakmak için sıfır" msgid "mm or %" msgstr "mm veya %" @@ -9595,8 +9583,8 @@ msgid "Other layers" msgstr "Diğer katmanlar" msgid "" -"Bed temperature for layers except the initial one. Value 0 means the " -"filament does not support to print on the Cool Plate" +"Bed temperature for layers except the initial one. Value 0 means the filament " +"does not support to print on the Cool Plate" msgstr "" "İlk katman dışındaki katmanlar için yatak sıcaklığı. 0 değeri, filamentin " "Cool Plate üzerine yazdırmayı desteklemediği anlamına gelir" @@ -9605,22 +9593,22 @@ msgid "°C" msgstr "°C" msgid "" -"Bed temperature for layers except the initial one. Value 0 means the " -"filament does not support to print on the Engineering Plate" +"Bed temperature for layers except the initial one. Value 0 means the filament " +"does not support to print on the Engineering Plate" msgstr "" "İlk katman dışındaki katmanlar için yatak sıcaklığı. Değer 0, filamentin " "Mühendislik Plakasına yazdırmayı desteklemediği anlamına gelir" msgid "" -"Bed temperature for layers except the initial one. Value 0 means the " -"filament does not support to print on the High Temp Plate" +"Bed temperature for layers except the initial one. Value 0 means the filament " +"does not support to print on the High Temp Plate" msgstr "" "İlk katman dışındaki katmanlar için yatak sıcaklığı. 0 değeri, filamentin " "Yüksek Sıcaklık Plakasına yazdırmayı desteklemediği anlamına gelir" msgid "" -"Bed temperature for layers except the initial one. Value 0 means the " -"filament does not support to print on the Textured PEI Plate" +"Bed temperature for layers except the initial one. Value 0 means the filament " +"does not support to print on the Textured PEI Plate" msgstr "" "İlk katman dışındaki katmanlar için yatak sıcaklığı. 0 Değeri, filamentin " "Dokulu PEI Plaka üzerine yazdırmayı desteklemediği anlamına gelir" @@ -9702,11 +9690,11 @@ msgid "" "The number of bottom solid layers is increased when slicing if the thickness " "calculated by bottom shell layers is thinner than this value. This can avoid " "having too thin shell when layer height is small. 0 means that this setting " -"is disabled and thickness of bottom shell is absolutely determained by " -"bottom shell layers" +"is disabled and thickness of bottom shell is absolutely determained by bottom " +"shell layers" msgstr "" -"Alt kabuk katmanları tarafından hesaplanan kalınlık bu değerden daha ince " -"ise dilimleme sırasında alt katı katmanların sayısı arttırılır. Bu, katman " +"Alt kabuk katmanları tarafından hesaplanan kalınlık bu değerden daha ince ise " +"dilimleme sırasında alt katı katmanların sayısı arttırılır. Bu, katman " "yüksekliği küçük olduğunda kabuğun çok ince olmasını önleyebilir. 0, bu " "ayarın devre dışı olduğu ve alt kabuğun kalınlığının mutlaka alt kabuk " "katmanları tarafından belirlendiği anlamına gelir" @@ -9720,8 +9708,7 @@ msgid "" "\n" "Options:\n" "1. Everywhere: Applies gap fill to top, bottom and internal solid surfaces\n" -"2. Top and Bottom surfaces: Applies gap fill to top and bottom surfaces " -"only\n" +"2. Top and Bottom surfaces: Applies gap fill to top and bottom surfaces only\n" "3. Nowhere: Disables gap fill\n" msgstr "" "Seçilen yüzeyler için boşluk doldurmayı etkinleştirir. Doldurulacak minimum " @@ -9747,19 +9734,19 @@ msgid "Force cooling for overhang and bridge" msgstr "Çıkıntı ve köprüler için soğutmayı zorla" msgid "" -"Enable this option to optimize part cooling fan speed for overhang and " -"bridge to get better cooling" +"Enable this option to optimize part cooling fan speed for overhang and bridge " +"to get better cooling" msgstr "" -"Daha iyi soğutma elde etmek amacıyla çıkıntı ve köprü için parça soğutma " -"fanı hızını optimize etmek amacıyla bu seçeneği etkinleştirin" +"Daha iyi soğutma elde etmek amacıyla çıkıntı ve köprü için parça soğutma fanı " +"hızını optimize etmek amacıyla bu seçeneği etkinleştirin" msgid "Fan speed for overhang" msgstr "Çıkıntılar için fan hızı" msgid "" -"Force part cooling fan to be this speed when printing bridge or overhang " -"wall which has large overhang degree. Forcing cooling for overhang and " -"bridge can get better quality for these part" +"Force part cooling fan to be this speed when printing bridge or overhang wall " +"which has large overhang degree. Forcing cooling for overhang and bridge can " +"get better quality for these part" msgstr "" "Çıkıntı derecesi büyük olan köprü veya çıkıntılı duvara baskı yaparken parça " "soğutma fanını bu hızda olmaya zorlayın. Çıkıntı ve köprü için soğutmayı " @@ -9771,9 +9758,9 @@ msgstr "Çıkıntı soğutması" #, c-format msgid "" "Force cooling fan to be specific speed when overhang degree of printed part " -"exceeds this value. Expressed as percentage which indicides how much width " -"of the line without support from lower layer. 0% means forcing cooling for " -"all outer wall no matter how much overhang degree" +"exceeds this value. Expressed as percentage which indicides how much width of " +"the line without support from lower layer. 0% means forcing cooling for all " +"outer wall no matter how much overhang degree" msgstr "" "Yazdırılan parçanın çıkıntı derecesi bu değeri aştığında soğutma fanını " "belirli bir hıza zorlar. Alt katmandan destek almadan çizginin ne kadar " @@ -9807,8 +9794,8 @@ msgid "" "Decrease this value slightly(for example 0.9) to reduce the amount of " "material for bridge, to improve sag" msgstr "" -"Köprü için malzeme miktarını azaltmak ve sarkmayı iyileştirmek için bu " -"değeri biraz azaltın (örneğin 0,9)" +"Köprü için malzeme miktarını azaltmak ve sarkmayı iyileştirmek için bu değeri " +"biraz azaltın (örneğin 0,9)" msgid "Internal bridge flow ratio" msgstr "İç köprü akış oranı" @@ -9876,11 +9863,11 @@ msgid "" "on the next layer, like letters. Set this setting to 0 to remove these " "artifacts." msgstr "" -"Eğer bir üst yüzey basılacaksa ve kısmen başka bir katman tarafından " -"kaplıysa layer genişliği bu değerin altında olan bir üst katman olarak " +"Eğer bir üst yüzey basılacaksa ve kısmen başka bir katman tarafından kaplıysa " +"layer genişliği bu değerin altında olan bir üst katman olarak " "değerlendirilmeyecek. Yalnızca çevrelerle kaplanması gereken yüzeyde 'bir " -"çevre üstte' tetiklemesine izin vermemek yararlı olabilir. Bu değer mm veya " -"a % çevre ekstrüzyon genişliğinin bir yüzdesi olabilir.\n" +"çevre üstte' tetiklemesine izin vermemek yararlı olabilir. Bu değer mm veya a " +"% çevre ekstrüzyon genişliğinin bir yüzdesi olabilir.\n" "Uyarı: Etkinleştirilirse bir sonraki katmanda harfler gibi bazı ince " "özelliklerin olması durumunda yapay yapılar oluşturulabilir. Bu yapıları " "kaldırmak için bu ayarı 0 olarak ayarlayın." @@ -9912,9 +9899,9 @@ msgid "Overhang reversal" msgstr "Çıkıntıyı tersine çevir" msgid "" -"Extrude perimeters that have a part over an overhang in the reverse " -"direction on odd layers. This alternating pattern can drastically improve " -"steep overhangs.\n" +"Extrude perimeters that have a part over an overhang in the reverse direction " +"on odd layers. This alternating pattern can drastically improve steep " +"overhangs.\n" "\n" "This setting can also help reduce part warping due to the reduction of " "stresses in the part walls." @@ -9936,8 +9923,7 @@ msgid "" "alternating directions. This should reduce part warping while also " "maintaining external wall quality. This feature can be very useful for warp " "prone material, like ABS/ASA, and also for elastic filaments, like TPU and " -"Silk PLA. It can also help reduce warping on floating regions over " -"supports.\n" +"Silk PLA. It can also help reduce warping on floating regions over supports.\n" "\n" "For this setting to be the most effective, it is recomended to set the " "Reverse Threshold to 0 so that all internal walls print in alternating " @@ -9969,8 +9955,7 @@ msgstr "" "Bu seçenek, havşa delikleri için köprüler oluşturarak bunların desteksiz " "yazdırılmasına olanak tanır. Mevcut modlar şunları içerir:\n" "1. Yok: Köprü oluşturulmaz.\n" -"2. Kısmen Köprülendi: Desteklenmeyen alanın yalnızca bir kısmı " -"köprülenecek.\n" +"2. Kısmen Köprülendi: Desteklenmeyen alanın yalnızca bir kısmı köprülenecek.\n" "3. Feda Katman: Tam bir feda köprü katmanı oluşturulur." msgid "Partially bridged" @@ -10090,8 +10075,8 @@ msgid "Brim ear detection radius" msgstr "Kenar kulak algılama yarıçapı" msgid "" -"The geometry will be decimated before dectecting sharp angles. This " -"parameter indicates the minimum length of the deviation for the decimation.\n" +"The geometry will be decimated before dectecting sharp angles. This parameter " +"indicates the minimum length of the deviation for the decimation.\n" "0 to deactivate" msgstr "" "Keskin açılar tespit edilmeden önce geometrinin büyük bir kısmı yok " @@ -10140,10 +10125,10 @@ msgid "" "that layer can be cooled for longer time. This can improve the cooling " "quality for needle and small details" msgstr "" -"Son katman süresinin \"Maksimum fan hızı eşiği\"ndeki katman süresi " -"eşiğinden kısa olmamasını sağlamak amacıyla yazdırma hızını yavaşlatmak için " -"bu seçeneği etkinleştirin, böylece katman daha uzun süre soğutulabilir. Bu, " -"iğne ve küçük detaylar için soğutma kalitesini artırabilir" +"Son katman süresinin \"Maksimum fan hızı eşiği\"ndeki katman süresi eşiğinden " +"kısa olmamasını sağlamak amacıyla yazdırma hızını yavaşlatmak için bu " +"seçeneği etkinleştirin, böylece katman daha uzun süre soğutulabilir. Bu, iğne " +"ve küçük detaylar için soğutma kalitesini artırabilir" msgid "Normal printing" msgstr "Normal baskı" @@ -10152,8 +10137,7 @@ msgid "" "The default acceleration of both normal printing and travel except initial " "layer" msgstr "" -"İlk katman dışında hem normal yazdırmanın hem de ilerlemenin varsayılan " -"ivmesi" +"İlk katman dışında hem normal yazdırmanın hem de ilerlemenin varsayılan ivmesi" msgid "mm/s²" msgstr "mm/s²" @@ -10197,8 +10181,8 @@ msgid "" "Close all cooling fan for the first certain layers. Cooling fan of the first " "layer used to be closed to get better build plate adhesion" msgstr "" -"İlk belirli katmanlar için tüm soğutma fanını kapatın. Daha iyi baskı " -"plakası yapışması sağlamak için ilk katmanın soğutma fanı kapatılırdı" +"İlk belirli katmanlar için tüm soğutma fanını kapatın. Daha iyi baskı plakası " +"yapışması sağlamak için ilk katmanın soğutma fanı kapatılırdı" msgid "Don't support bridges" msgstr "Köprülerde destek olmasın" @@ -10239,8 +10223,8 @@ msgid "Don't filter out small internal bridges (beta)" msgstr "Küçük iç köprüleri filtrelemeyin (deneysel)" msgid "" -"This option can help reducing pillowing on top surfaces in heavily slanted " -"or curved models.\n" +"This option can help reducing pillowing on top surfaces in heavily slanted or " +"curved models.\n" "\n" "By default, small internal bridges are filtered out and the internal solid " "infill is printed directly over the sparse infill. This works well in most " @@ -10255,16 +10239,16 @@ msgid "" "unsupported internal solid infill. The options below control the amount of " "filtering, i.e. the amount of internal bridges created.\n" "\n" -"Disabled - Disables this option. This is the default behaviour and works " -"well in most cases.\n" +"Disabled - Disables this option. This is the default behaviour and works well " +"in most cases.\n" "\n" "Limited filtering - Creates internal bridges on heavily slanted surfaces, " -"while avoiding creating uncessesary interal bridges. This works well for " -"most difficult models.\n" +"while avoiding creating uncessesary interal bridges. This works well for most " +"difficult models.\n" "\n" -"No filtering - Creates internal bridges on every potential internal " -"overhang. This option is useful for heavily slanted top surface models. " -"However, in most cases it creates too many unecessary bridges." +"No filtering - Creates internal bridges on every potential internal overhang. " +"This option is useful for heavily slanted top surface models. However, in " +"most cases it creates too many unecessary bridges." msgstr "" "Bu seçenek, aşırı eğimli veya kavisli modellerde üst yüzeylerdeki " "yastıklamanın azaltılmasına yardımcı olabilir.\n" @@ -10416,8 +10400,8 @@ msgid "" "Speed of outer wall which is outermost and visible. It's used to be slower " "than inner wall speed to get better quality." msgstr "" -"En dışta görünen ve görünen dış duvarın hızı. Daha iyi kalite elde etmek " -"için iç duvar hızından daha yavaş olması kullanılır." +"En dışta görünen ve görünen dış duvarın hızı. Daha iyi kalite elde etmek için " +"iç duvar hızından daha yavaş olması kullanılır." msgid "Small perimeters" msgstr "Küçük çevre (perimeter)" @@ -10446,8 +10430,8 @@ msgstr "Duvar baskı sırası" msgid "" "Print sequence of the internal (inner) and external (outer) walls. \n" "\n" -"Use Inner/Outer for best overhangs. This is because the overhanging walls " -"can adhere to a neighouring perimeter while printing. However, this option " +"Use Inner/Outer for best overhangs. This is because the overhanging walls can " +"adhere to a neighouring perimeter while printing. However, this option " "results in slightly reduced surface quality as the external perimeter is " "deformed by being squashed to the internal perimeter.\n" "\n" @@ -10478,14 +10462,14 @@ msgstr "" "kalitesi ve boyutsal doğruluk için İç/Dış/İç seçeneğini kullanın. Ancak, dış " "duvarın üzerine baskı yapılacak bir iç çevre olmadığından sarkma performansı " "düşecektir. Bu seçenek, önce 3. çevreden itibaren iç duvarları, ardından dış " -"çevreyi ve son olarak da birinci iç çevreyi yazdırdığından etkili olması " -"için en az 3 duvar gerektirir. Bu seçenek çoğu durumda Dış/İç seçeneğine " -"karşı önerilir. \n" +"çevreyi ve son olarak da birinci iç çevreyi yazdırdığından etkili olması için " +"en az 3 duvar gerektirir. Bu seçenek çoğu durumda Dış/İç seçeneğine karşı " +"önerilir. \n" "\n" "İç/Dış/İç seçeneğinin aynı dış duvar kalitesi ve boyutsal doğruluk " "avantajları için Dış/İç seçeneğini kullanın. Bununla birlikte, yeni bir " -"katmanın ilk ekstrüzyonu görünür bir yüzey üzerinde başladığından z " -"dikişleri daha az tutarlı görünecektir.\n" +"katmanın ilk ekstrüzyonu görünür bir yüzey üzerinde başladığından z dikişleri " +"daha az tutarlı görünecektir.\n" "\n" " " @@ -10507,9 +10491,9 @@ msgid "" "\n" "Printing infill first may help with extreme overhangs as the walls have the " "neighbouring infill to adhere to. However, the infill will slighly push out " -"the printed walls where it is attached to them, resulting in a worse " -"external surface finish. It can also cause the infill to shine through the " -"external surfaces of the part." +"the printed walls where it is attached to them, resulting in a worse external " +"surface finish. It can also cause the infill to shine through the external " +"surfaces of the part." msgstr "" "Duvar/dolgu sırası. Onay kutusu işaretlenmediğinde duvarlar önce yazdırılır, " "bu çoğu durumda en iyi şekilde çalışır.\n" @@ -10527,8 +10511,8 @@ msgid "" "The direction which the wall loops are extruded when looking down from the " "top.\n" "\n" -"By default all walls are extruded in counter-clockwise, unless Reverse on " -"odd is enabled. Set this to any option other than Auto will force the wall " +"By default all walls are extruded in counter-clockwise, unless Reverse on odd " +"is enabled. Set this to any option other than Auto will force the wall " "direction regardless of the Reverse on odd.\n" "\n" "This option will be disabled if sprial vase mode is enabled." @@ -10536,8 +10520,8 @@ msgstr "" "Yukarıdan aşağıya bakıldığında duvar döngülerinin ekstrüzyona uğradığı yön.\n" "\n" "Tek sayıyı ters çevir seçeneği etkinleştirilmedikçe, varsayılan olarak tüm " -"duvarlar saat yönünün tersine ekstrüde edilir. Bunu Otomatik dışında " -"herhangi bir seçeneğe ayarlayın, Ters açıklığa bakılmaksızın duvar yönünü " +"duvarlar saat yönünün tersine ekstrüde edilir. Bunu Otomatik dışında herhangi " +"bir seçeneğe ayarlayın, Ters açıklığa bakılmaksızın duvar yönünü " "zorlayacaktır.\n" "\n" "Spiral vazo modu etkinse bu seçenek devre dışı bırakılacaktır." @@ -10565,8 +10549,8 @@ msgid "" "Distance of the nozzle tip to the lid. Used for collision avoidance in by-" "object printing." msgstr "" -"Nozul ucunun kapağa olan mesafesi. Nesneye göre yazdırmada çarpışmayı " -"önlemek için kullanılır." +"Nozul ucunun kapağa olan mesafesi. Nesneye göre yazdırmada çarpışmayı önlemek " +"için kullanılır." msgid "" "Clearance radius around extruder. Used for collision avoidance in by-object " @@ -10589,20 +10573,19 @@ msgid "" "probe's XY offset, most printers are unable to probe the entire bed. To " "ensure the probe point does not go outside the bed area, the minimum and " "maximum points of the bed mesh should be set appropriately. OrcaSlicer " -"ensures that adaptive_bed_mesh_min/adaptive_bed_mesh_max values do not " -"exceed these min/max points. This information can usually be obtained from " -"your printer manufacturer. The default setting is (-99999, -99999), which " -"means there are no limits, thus allowing probing across the entire bed." -msgstr "" -"Bu seçenek, izin verilen yatak ağ alanı için minimum noktayı ayarlar. Prob " -"XY ofseti nedeniyle çoğu yazıcı yatağın tamamını tarayamaz. Prob noktasının " -"yatak alanı dışına çıkmamasını sağlamak için yatak ağının minimum ve " -"maksimum noktaları uygun şekilde ayarlanmalıdır. OrcaSlicer, " -"adaptive_bed_mesh_min/adaptive_bed_mesh_max değerlerinin bu min/maks " -"noktalarını aşmamasını sağlar. Bu bilgi genellikle yazıcınızın üreticisinden " -"edinilebilir. Varsayılan ayar (-99999, -99999) şeklindedir; bu, herhangi bir " -"sınırın olmadığı anlamına gelir, dolayısıyla yatağın tamamında problamaya " -"izin verilir." +"ensures that adaptive_bed_mesh_min/adaptive_bed_mesh_max values do not exceed " +"these min/max points. This information can usually be obtained from your " +"printer manufacturer. The default setting is (-99999, -99999), which means " +"there are no limits, thus allowing probing across the entire bed." +msgstr "" +"Bu seçenek, izin verilen yatak ağ alanı için minimum noktayı ayarlar. Prob XY " +"ofseti nedeniyle çoğu yazıcı yatağın tamamını tarayamaz. Prob noktasının " +"yatak alanı dışına çıkmamasını sağlamak için yatak ağının minimum ve maksimum " +"noktaları uygun şekilde ayarlanmalıdır. OrcaSlicer, adaptive_bed_mesh_min/" +"adaptive_bed_mesh_max değerlerinin bu min/maks noktalarını aşmamasını sağlar. " +"Bu bilgi genellikle yazıcınızın üreticisinden edinilebilir. Varsayılan ayar " +"(-99999, -99999) şeklindedir; bu, herhangi bir sınırın olmadığı anlamına " +"gelir, dolayısıyla yatağın tamamında problamaya izin verilir." msgid "Bed mesh max" msgstr "Maksimum yatak ağı" @@ -10612,20 +10595,19 @@ msgid "" "probe's XY offset, most printers are unable to probe the entire bed. To " "ensure the probe point does not go outside the bed area, the minimum and " "maximum points of the bed mesh should be set appropriately. OrcaSlicer " -"ensures that adaptive_bed_mesh_min/adaptive_bed_mesh_max values do not " -"exceed these min/max points. This information can usually be obtained from " -"your printer manufacturer. The default setting is (99999, 99999), which " -"means there are no limits, thus allowing probing across the entire bed." -msgstr "" -"Bu seçenek, izin verilen yatak ağ alanı için maksimum noktayı ayarlar. " -"Probun XY ofseti nedeniyle çoğu yazıcı yatağın tamamını tarayamaz. Prob " -"noktasının yatak alanı dışına çıkmamasını sağlamak için yatak ağının minimum " -"ve maksimum noktaları uygun şekilde ayarlanmalıdır. OrcaSlicer, " -"adaptive_bed_mesh_min/adaptive_bed_mesh_max değerlerinin bu min/maks " -"noktalarını aşmamasını sağlar. Bu bilgi genellikle yazıcınızın üreticisinden " -"edinilebilir. Varsayılan ayar (99999, 99999) şeklindedir; bu, herhangi bir " -"sınırın olmadığı anlamına gelir, dolayısıyla yatağın tamamında problamaya " -"izin verilir." +"ensures that adaptive_bed_mesh_min/adaptive_bed_mesh_max values do not exceed " +"these min/max points. This information can usually be obtained from your " +"printer manufacturer. The default setting is (99999, 99999), which means " +"there are no limits, thus allowing probing across the entire bed." +msgstr "" +"Bu seçenek, izin verilen yatak ağ alanı için maksimum noktayı ayarlar. Probun " +"XY ofseti nedeniyle çoğu yazıcı yatağın tamamını tarayamaz. Prob noktasının " +"yatak alanı dışına çıkmamasını sağlamak için yatak ağının minimum ve maksimum " +"noktaları uygun şekilde ayarlanmalıdır. OrcaSlicer, adaptive_bed_mesh_min/" +"adaptive_bed_mesh_max değerlerinin bu min/maks noktalarını aşmamasını sağlar. " +"Bu bilgi genellikle yazıcınızın üreticisinden edinilebilir. Varsayılan ayar " +"(99999, 99999) şeklindedir; bu, herhangi bir sınırın olmadığı anlamına gelir, " +"dolayısıyla yatağın tamamında problamaya izin verilir." msgid "Probe point distance" msgstr "Prob noktası mesafesi" @@ -10642,8 +10624,8 @@ msgid "Mesh margin" msgstr "Yatak ağı boşluğu" msgid "" -"This option determines the additional distance by which the adaptive bed " -"mesh area should be expanded in the XY directions." +"This option determines the additional distance by which the adaptive bed mesh " +"area should be expanded in the XY directions." msgstr "" "Bu seçenek, uyarlanabilir yatak ağ alanının XY yönlerinde genişletilmesi " "gereken ek mesafeyi belirler." @@ -10663,9 +10645,9 @@ msgstr "Akış oranı" msgid "" "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" +"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" msgstr "" "Malzeme, erimiş hal ile kristal hal arasında geçiş yaptıktan sonra hacimsel " "değişime sahip olabilir. Bu ayar, bu filamentin gcode'daki tüm ekstrüzyon " @@ -10687,9 +10669,8 @@ 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 "" +msgstr "Uyarlanabilir basınç ilerlemesini etkinleştir (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 " @@ -10698,21 +10679,38 @@ msgid "" "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 " +"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" +"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 "" +msgstr "Uyarlanabilir basınç ilerleme ölçümleri (beta)" msgid "" "Add sets of pressure advance (PA) values, the volumetric flow speeds and " @@ -10727,48 +10725,85 @@ msgid "" "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 " +"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 " +"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 "" +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" +"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 "" +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." +" 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." +"Default line width if other line widths are set to 0. If expressed as a %, it " +"will be computed over the nozzle diameter." msgstr "" "Diğer çizgi genişlikleri 0'a ayarlanmışsa varsayılan çizgi genişliği. % " "olarak ifade edilirse nozul çapı üzerinden hesaplanacaktır." @@ -10777,8 +10812,8 @@ msgid "Keep fan always on" msgstr "Fanı her zaman açık tut" msgid "" -"If enable this setting, part cooling fan will never be stoped and will run " -"at least at minimum speed to reduce the frequency of starting and stoping" +"If enable this setting, part cooling fan will never be stoped and will run at " +"least at minimum speed to reduce the frequency of starting and stoping" msgstr "" "Bu ayarı etkinleştirirseniz, parça soğutma fanı hiçbir zaman durdurulmayacak " "ve başlatma ve durdurma sıklığını azaltmak için en azından minimum hızda " @@ -10910,11 +10945,11 @@ msgid "" "Be sure to allow enough space between objects, as this compensation is done " "after the checks." msgstr "" -"Filamentin soğuduktan sonra alacağı büzülme yüzdesini girin (100 mm yerine " -"94 mm ölçerseniz 94%). Parça, telafi etmek için xy'de ölçeklendirilecektir. " +"Filamentin soğuduktan sonra alacağı büzülme yüzdesini girin (100 mm yerine 94 " +"mm ölçerseniz 94%). Parça, telafi etmek için xy'de ölçeklendirilecektir. " "Yalnızca çevre için kullanılan filament dikkate alınır.\n" -"Bu telafi kontrollerden sonra yapıldığından, nesneler arasında yeterli " -"boşluk bıraktığınızdan emin olun." +"Bu telafi kontrollerden sonra yapıldığından, nesneler arasında yeterli boşluk " +"bıraktığınızdan emin olun." msgid "Loading speed" msgstr "Yükleme hızı" @@ -10965,23 +11000,27 @@ msgid "" "Filament is cooled by being moved back and forth in the cooling tubes. " "Specify desired number of these moves." msgstr "" -"Filament, soğutma tüpleri içinde ileri geri hareket ettirilerek soğutulur. " -"Bu sayısını belirtin." +"Filament, soğutma tüpleri içinde ileri geri hareket ettirilerek soğutulur. Bu " +"sayısını belirtin." msgid "Stamping loading speed" -msgstr "" +msgstr "Damgalama yükleme hızı" msgid "Speed used for stamping." -msgstr "" +msgstr "Damgalama için kullanılan hız." msgid "Stamping distance measured from the center of the cooling tube" -msgstr "" +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." +"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ı" @@ -10995,9 +11034,9 @@ msgstr "Silme kulesi üzerinde minimum boşaltım" msgid "" "After a tool change, the exact position of the newly loaded filament inside " "the nozzle may not be known, and the filament pressure is likely not yet " -"stable. Before purging the print head into an infill or a sacrificial " -"object, Orca Slicer will always prime this amount of material into the wipe " -"tower to produce successive infill or sacrificial object extrusions reliably." +"stable. Before purging the print head into an infill or a sacrificial object, " +"Orca Slicer will always prime this amount of material into the wipe tower to " +"produce successive infill or sacrificial object extrusions reliably." msgstr "" "Bir takım değişiminden sonra, yeni yüklenen filamentin nozul içindeki kesin " "konumu bilinmeyebilir ve filament basıncı muhtemelen henüz stabil değildir. " @@ -11014,13 +11053,12 @@ msgstr "Soğutma hareketleri bu hıza doğru giderek hızlanır." msgid "" "Time for the printer firmware (or the Multi Material Unit 2.0) to load a new " -"filament during a tool change (when executing the T code). This time is " -"added to the total print time by the G-code time estimator." +"filament during a tool change (when executing the T code). This time is added " +"to the total print time by the G-code time estimator." msgstr "" "Yazıcı donanım yazılımının (veya Çoklu Malzeme Ünitesi 2.0'ın) takım " -"değişikliği sırasında (T kodu yürütülürken) yeni bir filament yükleme " -"süresi. Bu süre, G kodu zaman tahmincisi tarafından toplam baskı süresine " -"eklenir." +"değişikliği sırasında (T kodu yürütülürken) yeni bir filament yükleme süresi. " +"Bu süre, G kodu zaman tahmincisi tarafından toplam baskı süresine eklenir." msgid "Ramming parameters" msgstr "Sıkıştırma parametreleri" @@ -11034,8 +11072,8 @@ msgstr "" msgid "" "Time for the printer firmware (or the Multi Material Unit 2.0) to unload a " -"filament during a tool change (when executing the T code). This time is " -"added to the total print time by the G-code time estimator." +"filament during a tool change (when executing the T code). This time is added " +"to the total print time by the G-code time estimator." msgstr "" "Yazıcı ürün yazılımının (veya Çoklu Malzeme Ünitesi 2.0'ın) takım değişimi " "sırasında (T kodu yürütülürken) filamenti boşaltma süresi. Bu süre, G kodu " @@ -11083,8 +11121,7 @@ msgstr "Filament malzeme türü" msgid "Soluble material" msgstr "Çözünür malzeme" -msgid "" -"Soluble material is commonly used to print support and support interface" +msgid "Soluble material is commonly used to print support and support interface" msgstr "" "Çözünür malzeme genellikle destek ve destek arayüzünü yazdırmak için " "kullanılır" @@ -11092,8 +11129,7 @@ msgstr "" msgid "Support material" msgstr "Destek malzemesi" -msgid "" -"Support material is commonly used to print support and support interface" +msgid "Support material is commonly used to print support and support interface" msgstr "" "Destek malzemesi yaygın olarak destek ve destek arayüzünü yazdırmak için " "kullanılır" @@ -11141,8 +11177,8 @@ msgid "Solid infill direction" msgstr "Katı dolgu yönü" msgid "" -"Angle for solid infill pattern, which controls the start or main direction " -"of line" +"Angle for solid infill pattern, which controls the start or main direction of " +"line" msgstr "" "Hattın başlangıcını veya ana yönünü kontrol eden katı dolgu deseni açısı" @@ -11160,8 +11196,8 @@ msgid "" "Density of internal sparse infill, 100% turns all sparse infill into solid " "infill and internal solid infill pattern will be used" msgstr "" -"İç seyrek dolgunun yoğunluğu, %100 tüm seyrek dolguyu katı dolguya " -"dönüştürür ve iç katı dolgu modeli kullanılacaktır" +"İç seyrek dolgunun yoğunluğu, %100 tüm seyrek dolguyu katı dolguya dönüştürür " +"ve iç katı dolgu modeli kullanılacaktır" msgid "Sparse infill pattern" msgstr "Dolgu deseni" @@ -11209,23 +11245,22 @@ msgid "" "Connect an infill line to an internal perimeter with a short segment of an " "additional perimeter. If expressed as percentage (example: 15%) it is " "calculated over infill extrusion width. Orca Slicer tries to connect two " -"close infill lines to a short perimeter segment. If no such perimeter " -"segment shorter than infill_anchor_max is found, the infill line is " -"connected to a perimeter segment at just one side and the length of the " -"perimeter segment taken is limited to this parameter, but no longer than " -"anchor_length_max. \n" +"close infill lines to a short perimeter segment. If no such perimeter segment " +"shorter than infill_anchor_max is found, the infill line is connected to a " +"perimeter segment at just one side and the length of the perimeter segment " +"taken is limited to this parameter, but no longer than anchor_length_max. \n" "Set this parameter to zero to disable anchoring perimeters connected to a " "single infill line." msgstr "" "Bir dolgu hattını, ek bir çevrenin kısa bir bölümü ile bir iç çevreye " -"bağlayın. Yüzde olarak ifade edilirse (örnek: %15) dolgu ekstrüzyon " -"genişliği üzerinden hesaplanır. Orca Slicer iki yakın dolgu hattını kısa bir " -"çevre segmentine bağlamaya çalışıyor. infill_anchor_max'tan daha kısa böyle " -"bir çevre segmenti bulunamazsa, dolgu hattı yalnızca bir taraftaki bir çevre " +"bağlayın. Yüzde olarak ifade edilirse (örnek: %15) dolgu ekstrüzyon genişliği " +"üzerinden hesaplanır. Orca Slicer iki yakın dolgu hattını kısa bir çevre " +"segmentine bağlamaya çalışıyor. infill_anchor_max'tan daha kısa böyle bir " +"çevre segmenti bulunamazsa, dolgu hattı yalnızca bir taraftaki bir çevre " "segmentine bağlanır ve alınan çevre segmentinin uzunluğu bu parametreyle " "sınırlıdır, ancak çapa_uzunluk_max'tan uzun olamaz.\n" -"Tek bir dolgu hattına bağlı sabitleme çevrelerini devre dışı bırakmak için " -"bu parametreyi sıfıra ayarlayın." +"Tek bir dolgu hattına bağlı sabitleme çevrelerini devre dışı bırakmak için bu " +"parametreyi sıfıra ayarlayın." msgid "0 (no open anchors)" msgstr "0 (açık bağlantı yok)" @@ -11240,23 +11275,22 @@ msgid "" "Connect an infill line to an internal perimeter with a short segment of an " "additional perimeter. If expressed as percentage (example: 15%) it is " "calculated over infill extrusion width. Orca Slicer tries to connect two " -"close infill lines to a short perimeter segment. If no such perimeter " -"segment shorter than this parameter is found, the infill line is connected " -"to a perimeter segment at just one side and the length of the perimeter " -"segment taken is limited to infill_anchor, but no longer than this " -"parameter. \n" +"close infill lines to a short perimeter segment. If no such perimeter segment " +"shorter than this parameter is found, the infill line is connected to a " +"perimeter segment at just one side and the length of the perimeter segment " +"taken is limited to infill_anchor, but no longer than this parameter. \n" "If set to 0, the old algorithm for infill connection will be used, it should " "create the same result as with 1000 & 0." msgstr "" "Bir dolgu hattını, ek bir çevrenin kısa bir bölümü ile bir iç çevreye " -"bağlayın. Yüzde olarak ifade edilirse (örnek: %15) dolgu ekstrüzyon " -"genişliği üzerinden hesaplanır. Orca Slicer iki yakın dolgu hattını kısa bir " -"çevre segmentine bağlamaya çalışıyor. Bu parametreden daha kısa bir çevre " -"segmenti bulunamazsa, dolgu hattı sadece bir kenardaki bir çevre segmentine " -"bağlanır ve alınan çevre segmentinin uzunluğu infill_anchor ile sınırlıdır " -"ancak bu parametreden daha uzun olamaz.\n" -"0'a ayarlanırsa dolgu bağlantısı için eski algoritma kullanılacaktır; 1000 " -"ve 0 ile aynı sonucu oluşturmalıdır." +"bağlayın. Yüzde olarak ifade edilirse (örnek: %15) dolgu ekstrüzyon genişliği " +"üzerinden hesaplanır. Orca Slicer iki yakın dolgu hattını kısa bir çevre " +"segmentine bağlamaya çalışıyor. Bu parametreden daha kısa bir çevre segmenti " +"bulunamazsa, dolgu hattı sadece bir kenardaki bir çevre segmentine bağlanır " +"ve alınan çevre segmentinin uzunluğu infill_anchor ile sınırlıdır ancak bu " +"parametreden daha uzun olamaz.\n" +"0'a ayarlanırsa dolgu bağlantısı için eski algoritma kullanılacaktır; 1000 ve " +"0 ile aynı sonucu oluşturmalıdır." msgid "0 (Simple connect)" msgstr "0 (Basit bağlantı)" @@ -11274,8 +11308,8 @@ msgid "" "Acceleration of top surface infill. Using a lower value may improve top " "surface quality" msgstr "" -"Üst yüzey dolgusunun hızlandırılması. Daha düşük bir değerin kullanılması " -"üst yüzey kalitesini iyileştirebilir" +"Üst yüzey dolgusunun hızlandırılması. Daha düşük bir değerin kullanılması üst " +"yüzey kalitesini iyileştirebilir" msgid "Acceleration of outer wall. Using a lower value can improve quality" msgstr "" @@ -11285,8 +11319,8 @@ msgid "" "Acceleration of bridges. If the value is expressed as a percentage (e.g. " "50%), it will be calculated based on the outer wall acceleration." msgstr "" -"Köprülerin hızlandırılması. Değer yüzde olarak ifade edilirse (örn. %50), " -"dış duvar ivmesine göre hesaplanacaktır." +"Köprülerin hızlandırılması. Değer yüzde olarak ifade edilirse (örn. %50), dış " +"duvar ivmesine göre hesaplanacaktır." msgid "mm/s² or %" msgstr "mm/s² veya %" @@ -11323,8 +11357,7 @@ msgid "accel_to_decel" msgstr "Accel_to_decel" #, c-format, boost-format -msgid "" -"Klipper's max_accel_to_decel will be adjusted to this %% of acceleration" +msgid "Klipper's max_accel_to_decel will be adjusted to this %% of acceleration" msgstr "" "Klipper'ın max_accel_to_decel değeri ivmenin bu %%'sine göre ayarlanacak" @@ -11357,9 +11390,11 @@ msgid "Initial layer height" msgstr "Başlangıç katman yüksekliği" msgid "" -"Height of initial layer. Making initial layer height to be thick slightly " -"can improve build plate adhesion" +"Height of initial layer. Making initial layer height to be thick slightly can " +"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" msgid "Speed of initial layer except the solid infill part" msgstr "Katı dolgu kısmı dışındaki ilk katmanın hızı" @@ -11397,16 +11432,16 @@ msgstr "Maksimum fan hızı" 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 "" "Fan hızı, \"close_fan_the_first_x_layers\" katmanında sıfırdan " "\"ful_fan_speed_layer\" katmanında maksimuma doğrusal olarak artırılacaktır. " -"\"full_fan_speed_layer\", \"close_fan_the_first_x_layers\" değerinden " -"düşükse göz ardı edilecektir; bu durumda fan, \"close_fan_the_first_x_layers" -"\" + 1 katmanında izin verilen maksimum hızda çalışacaktır." +"\"full_fan_speed_layer\", \"close_fan_the_first_x_layers\" değerinden düşükse " +"göz ardı edilecektir; bu durumda fan, \"close_fan_the_first_x_layers\" + 1 " +"katmanında izin verilen maksimum hızda çalışacaktır." msgid "layer" msgstr "katman" @@ -11502,11 +11537,11 @@ msgid "" "Enable this to get a G-code file which has G2 and G3 moves. The fitting " "tolerance is same as the resolution. \n" "\n" -"Note: For klipper machines, this option is recomended to be disabled. " -"Klipper does not benefit from arc commands as these are split again into " -"line segments by the firmware. This results in a reduction in surface " -"quality as line segments are converted to arcs by the slicer and then back " -"to line segments by the firmware." +"Note: For klipper machines, this option is recomended to be disabled. Klipper " +"does not benefit from arc commands as these are split again into line " +"segments by the firmware. This results in a reduction in surface quality as " +"line segments are converted to arcs by the slicer and then back to line " +"segments by the firmware." msgstr "" "G2 ve G3 hareketlerine sahip bir G kodu dosyası elde etmek için bunu " "etkinleştirin. Montaj toleransı çözünürlükle aynıdır. \n" @@ -11543,8 +11578,8 @@ msgid "" "The metallic material of nozzle. This determines the abrasive resistance of " "nozzle, and what kind of filament can be printed" msgstr "" -"Nozulnin metalik malzemesi. Bu, nozulun aşınma direncini ve ne tür " -"filamentin basılabileceğini belirler" +"Nozulnin metalik malzemesi. Bu, nozulun aşınma direncini ve ne tür filamentin " +"basılabileceğini belirler" msgid "Undefine" msgstr "Tanımsız" @@ -11596,8 +11631,8 @@ msgid "Best auto arranging position in range [0,1] w.r.t. bed shape." msgstr "Yatak şekline göre [0,1] aralığında en iyi otomatik düzenleme konumu." msgid "" -"Enable this option if machine has auxiliary part cooling fan. G-code " -"command: M106 P2 S(0-255)." +"Enable this option if machine has auxiliary part cooling fan. G-code command: " +"M106 P2 S(0-255)." msgstr "" "Makinede yardımcı parça soğutma fanı varsa bu seçeneği etkinleştirin. G-code " "komut: M106 P2 S(0-255)." @@ -11640,8 +11675,8 @@ msgid "" msgstr "" "Soğutma fanını başlatmak için hedef hıza düşmeden önce bu süre boyunca " "maksimum fan hızı komutunu verin.\n" -"Bu, düşük PWM/gücün fanın durma noktasından dönmeye başlaması veya fanın " -"daha hızlı hızlanması için yetersiz olabileceği fanlar için kullanışlıdır.\n" +"Bu, düşük PWM/gücün fanın durma noktasından dönmeye başlaması veya fanın daha " +"hızlı hızlanması için yetersiz olabileceği fanlar için kullanışlıdır.\n" "Devre dışı bırakmak için 0'a ayarlayın." msgid "Time cost" @@ -11687,8 +11722,7 @@ msgid "Pellet Modded Printer" msgstr "Pelet Modlu Yazıcı" msgid "Enable this option if your printer uses pellets instead of filaments" -msgstr "" -"Yazıcınız filament yerine pellet kullanıyorsa bu seçeneği etkinleştirin" +msgstr "Yazıcınız filament yerine pellet kullanıyorsa bu seçeneği etkinleştirin" msgid "Support multi bed types" msgstr "Çoklu tabla" @@ -11702,21 +11736,20 @@ msgstr "Nesneleri etiketle" msgid "" "Enable this to add comments into the G-Code labeling print moves with what " -"object they belong to, which is useful for the Octoprint CancelObject " -"plugin. This settings is NOT compatible with Single Extruder Multi Material " -"setup and Wipe into Object / Wipe into Infill." +"object they belong to, which is useful for the Octoprint CancelObject plugin. " +"This settings is NOT compatible with Single Extruder Multi Material setup and " +"Wipe into Object / Wipe into Infill." msgstr "" "G-Code etiketleme yazdırma hareketlerine ait oldukları nesneyle ilgili " "yorumlar eklemek için bunu etkinleştirin; bu, Octoprint CancelObject " -"eklentisi için kullanışlıdır. Bu ayarlar Tek Ekstruder Çoklu Malzeme " -"kurulumu ve Nesneye Temizleme / Dolguya Temizleme ile uyumlu DEĞİLDİR." +"eklentisi için kullanışlıdır. Bu ayarlar Tek Ekstruder Çoklu Malzeme kurulumu " +"ve Nesneye Temizleme / Dolguya Temizleme ile uyumlu DEĞİLDİR." msgid "Exclude objects" msgstr "Nesneleri hariç tut" msgid "Enable this option to add EXCLUDE OBJECT command in g-code" -msgstr "" -"G koduna EXCLUDE OBJECT komutunu eklemek için bu seçeneği etkinleştirin" +msgstr "G koduna EXCLUDE OBJECT komutunu eklemek için bu seçeneği etkinleştirin" msgid "Verbose G-code" msgstr "Ayrıntılı G kodu" @@ -11756,10 +11789,10 @@ msgstr "Dolgu/Duvar örtüşmesi" #, no-c-format, no-boost-format msgid "" -"Infill area is enlarged slightly to overlap with wall for better bonding. " -"The percentage value is relative to line width of sparse infill. Set this " -"value to ~10-15% to minimize potential over extrusion and accumulation of " -"material resulting in rough top surfaces." +"Infill area is enlarged slightly to overlap with wall for better bonding. The " +"percentage value is relative to line width of sparse infill. Set this value " +"to ~10-15% to minimize potential over extrusion and accumulation of material " +"resulting in rough top surfaces." msgstr "" "Daha iyi yapışma için dolgu alanı duvarla örtüşecek şekilde hafifçe " "genişletilir. Yüzde değeri seyrek dolgunun çizgi genişliğine göredir. Aşırı " @@ -11772,8 +11805,8 @@ msgstr "Üst/Alt katı dolgu/Duvar örtüşmesi" #, no-c-format, no-boost-format msgid "" "Top solid infill area is enlarged slightly to overlap with wall for better " -"bonding and to minimize the appearance of pinholes where the top infill " -"meets the walls. A value of 25-30% is a good starting point, minimising the " +"bonding and to minimize the appearance of pinholes where the top infill meets " +"the walls. A value of 25-30% is a good starting point, minimising the " "appearance of pinholes. The percentage value is relative to line width of " "sparse infill" msgstr "" @@ -11791,12 +11824,12 @@ msgstr "Arayüz kabukları" msgid "" "Force the generation of solid shells between adjacent materials/volumes. " -"Useful for multi-extruder prints with translucent materials or manual " -"soluble support material" +"Useful for multi-extruder prints with translucent materials or manual soluble " +"support material" msgstr "" "Bitişik malzemeler/hacimler arasında katı kabuk oluşumunu zorlayın. Yarı " -"saydam malzemelerle veya elle çözülebilen destek malzemesiyle çoklu " -"ekstruder baskıları için kullanışlıdır" +"saydam malzemelerle veya elle çözülebilen destek malzemesiyle çoklu ekstruder " +"baskıları için kullanışlıdır" msgid "Maximum width of a segmented region" msgstr "Bölümlere ayrılmış bir bölgenin maksimum genişliği" @@ -11815,6 +11848,10 @@ msgid "" "\"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. " +"“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" @@ -11858,8 +11895,7 @@ msgid "" "structure, measured in cells. Too few cells will result in poor adhesion." msgstr "" "Hücrelerde ölçülen, birbirine kenetlenen yapıyı oluşturmak için filamentler " -"arasındaki sınırdan mesafe. Çok az hücre yapışmanın zayıf olmasına neden " -"olur." +"arasındaki sınırdan mesafe. Çok az hücre yapışmanın zayıf olmasına neden olur." msgid "Interlocking boundary avoidance" msgstr "Birbirine kenetlenen sınırdan kaçınma" @@ -11960,8 +11996,8 @@ msgstr "" "G kodu tadı Klipper olarak ayarlandığında bu seçenek göz ardı edilecektir." msgid "" -"This G-code will be used as a code for the pause print. User can insert " -"pause G-code in gcode viewer" +"This G-code will be used as a code for the pause print. User can insert pause " +"G-code in gcode viewer" msgstr "" "Bu G kodu duraklatma yazdırması için bir kod olarak kullanılacaktır. " "Kullanıcı gcode görüntüleyiciye duraklatma G kodunu ekleyebilir" @@ -12092,8 +12128,8 @@ msgid "Maximum acceleration for travel (M204 T), it only applies to Marlin 2" msgstr "Seyahat için maksimum ivme (M204 T), yalnızca Marlin 2 için geçerlidir" msgid "" -"Part cooling fan speed may be increased when auto cooling is enabled. This " -"is the maximum speed limitation of part cooling fan" +"Part cooling fan speed may be increased when auto cooling is enabled. This is " +"the maximum speed limitation of part cooling fan" msgstr "" "Otomatik soğutma etkinleştirildiğinde parça soğutma fanı hızı artırılabilir. " "Bu, parça soğutma fanının maksimum hız sınırlamasıdır" @@ -12113,8 +12149,8 @@ msgid "Extrusion rate smoothing" msgstr "Ekstrüzyon hızını yumuşatma" msgid "" -"This parameter smooths out sudden extrusion rate changes that happen when " -"the printer transitions from printing a high flow (high speed/larger width) " +"This parameter smooths out sudden extrusion rate changes that happen when the " +"printer transitions from printing a high flow (high speed/larger width) " "extrusion to a lower flow (lower speed/smaller width) extrusion and vice " "versa.\n" "\n" @@ -12125,12 +12161,11 @@ msgid "" "A value of 0 disables the feature. \n" "\n" "For a high speed, high flow direct drive printer (like the Bambu lab or " -"Voron) this value is usually not needed. However it can provide some " -"marginal benefit in certain cases where feature speeds vary greatly. For " -"example, when there are aggressive slowdowns due to overhangs. In these " -"cases a high value of around 300-350mm3/s2 is recommended as this allows for " -"just enough smoothing to assist pressure advance achieve a smoother flow " -"transition.\n" +"Voron) this value is usually not needed. However it can provide some marginal " +"benefit in certain cases where feature speeds vary greatly. For example, when " +"there are aggressive slowdowns due to overhangs. In these cases a high value " +"of around 300-350mm3/s2 is recommended as this allows for just enough " +"smoothing to assist pressure advance achieve a smoother flow transition.\n" "\n" "For slower printers without pressure advance, the value should be set much " "lower. A value of 10-15mm3/s2 is a good starting point for direct drive " @@ -12152,13 +12187,13 @@ msgstr "" "\n" "0 değeri özelliği devre dışı bırakır. \n" "\n" -"Yüksek hızlı, yüksek akışlı doğrudan tahrikli bir yazıcı için (Bambu lab " -"veya Voron gibi) bu değer genellikle gerekli değildir. Ancak özellik " -"hızlarının büyük ölçüde değiştiği bazı durumlarda marjinal bir fayda " -"sağlayabilir. Örneğin, çıkıntılar nedeniyle agresif yavaşlamalar olduğunda. " -"Bu durumlarda 300-350mm3/s2 civarında yüksek bir değer önerilir çünkü bu, " -"basınç ilerlemesinin daha yumuşak bir akış geçişi elde etmesine yardımcı " -"olmak için yeterli yumuşatmaya izin verir.\n" +"Yüksek hızlı, yüksek akışlı doğrudan tahrikli bir yazıcı için (Bambu lab veya " +"Voron gibi) bu değer genellikle gerekli değildir. Ancak özellik hızlarının " +"büyük ölçüde değiştiği bazı durumlarda marjinal bir fayda sağlayabilir. " +"Örneğin, çıkıntılar nedeniyle agresif yavaşlamalar olduğunda. Bu durumlarda " +"300-350mm3/s2 civarında yüksek bir değer önerilir çünkü bu, basınç " +"ilerlemesinin daha yumuşak bir akış geçişi elde etmesine yardımcı olmak için " +"yeterli yumuşatmaya izin verir.\n" "\n" "Basınç avansı olmayan daha yavaş yazıcılar için değer çok daha düşük " "ayarlanmalıdır. Doğrudan tahrikli ekstruderler için 10-15mm3/s2 ve Bowden " @@ -12252,8 +12287,8 @@ msgid "" "Orca Slicer can upload G-code files to a printer host. This field must " "contain the kind of the host." msgstr "" -"Orca Slicer, G kodu dosyalarını bir yazıcı ana bilgisayarına yükleyebilir. " -"Bu alan ana bilgisayarın türünü içermelidir." +"Orca Slicer, G kodu dosyalarını bir yazıcı ana bilgisayarına yükleyebilir. Bu " +"alan ana bilgisayarın türünü içermelidir." msgid "Nozzle volume" msgstr "Nozul hacmi" @@ -12294,8 +12329,8 @@ msgid "" "Distance of the extruder tip from the position where the filament is parked " "when unloaded. This should match the value in printer firmware." msgstr "" -"Ekstruder ucunun, boşaltıldığında filamentin park edildiği konumdan " -"uzaklığı. Bu ayar yazıcı ürün yazılımındaki değerle eşleşmelidir." +"Ekstruder ucunun, boşaltıldığında filamentin park edildiği konumdan uzaklığı. " +"Bu ayar yazıcı ürün yazılımındaki değerle eşleşmelidir." msgid "Extra loading distance" msgstr "Ekstra yükleme mesafesi" @@ -12322,8 +12357,8 @@ msgstr "Dolguda geri çekmeyi azalt" msgid "" "Don't retract when the travel is in infill area absolutely. That means the " -"oozing can't been seen. This can reduce times of retraction for complex " -"model and save printing time, but make slicing and G-code generating slower" +"oozing can't been seen. This can reduce times of retraction for complex model " +"and save printing time, but make slicing and G-code generating slower" msgstr "" "Hareket kesinlikle dolgu alanına girdiğinde geri çekilmeyin. Bu, sızıntının " "görülemeyeceği anlamına gelir. Bu, karmaşık model için geri çekme sürelerini " @@ -12334,6 +12369,8 @@ 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ı" @@ -12365,11 +12402,11 @@ msgid "Make overhangs printable - Hole area" msgstr "Yazdırılabilir çıkıntı delik alanı oluşturun" msgid "" -"Maximum area of a hole in the base of the model before it's filled by " -"conical material.A value of 0 will fill all the holes in the model base." +"Maximum area of a hole in the base of the model before it's filled by conical " +"material.A value of 0 will fill all the holes in the model base." msgstr "" -"Modelin tabanındaki bir deliğin, konik malzemeyle doldurulmadan önce " -"maksimum alanı. 0 değeri, model tabanındaki tüm delikleri dolduracaktır." +"Modelin tabanındaki bir deliğin, konik malzemeyle doldurulmadan önce maksimum " +"alanı. 0 değeri, model tabanındaki tüm delikleri dolduracaktır." msgid "mm²" msgstr "mm²" @@ -12379,14 +12416,14 @@ msgstr "Çıkıntılı duvarı algıla" #, c-format, boost-format msgid "" -"Detect the overhang percentage relative to line width and use different " -"speed to print. For 100%% overhang, bridge speed is used." +"Detect the overhang percentage relative to line width and use different speed " +"to print. For 100%% overhang, bridge speed is used." 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." +"Ç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 "" +msgstr "Duvarları yazdırmak için filament" msgid "" "Line width of inner wall. If expressed as a %, it will be computed over the " @@ -12408,8 +12445,8 @@ msgid "" "This setting adds an extra wall to every other layer. This way the infill " "gets wedged vertically between the walls, resulting in stronger prints. \n" "\n" -"When this option is enabled, the ensure vertical shell thickness option " -"needs to be disabled. \n" +"When this option is enabled, the ensure vertical shell thickness option needs " +"to be disabled. \n" "\n" "Using lightning infill together with this option is not recommended as there " "is limited infill to anchor the extra perimeters to." @@ -12430,17 +12467,16 @@ msgid "" "argument, and they can access the Orca Slicer config settings by reading " "environment variables." msgstr "" -"Çıktı G-kodunu özel komut dosyaları aracılığıyla işlemek istiyorsanız, " -"mutlak yollarını burada listeleyin. Birden fazla betiği noktalı virgülle " -"ayırın. 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." +"Çıktı G-kodunu özel komut dosyaları aracılığıyla işlemek istiyorsanız, mutlak " +"yollarını burada listeleyin. Birden fazla betiği noktalı virgülle ayırın. " +"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 "" +msgstr "Yazıcı türü" msgid "Type of the printer" -msgstr "" +msgstr "Yazıcı türü" msgid "Printer notes" msgstr "Yazıcı notları" @@ -12449,14 +12485,13 @@ msgid "You can put your notes regarding the printer here." msgstr "Yazıcı ile ilgili notlarınızı buraya yazabilirsiniz." msgid "Printer variant" -msgstr "" +msgstr "Yazıcı çeşidi" msgid "Raft contact Z distance" msgstr "Raft kontak Z mesafesi" msgid "Z gap between object and raft. Ignored for soluble interface" -msgstr "" -"Nesne ve raft arasındaki Z boşluğu. Çözünür arayüz için göz ardı edildi" +msgstr "Nesne ve raft arasındaki Z boşluğu. Çözünür arayüz için göz ardı edildi" msgid "Raft expansion" msgstr "Raft genişletme" @@ -12485,8 +12520,8 @@ msgid "" "Object will be raised by this number of support layers. Use this function to " "avoid wrapping when print ABS" msgstr "" -"Nesne bu sayıdaki destek katmanı tarafından yükseltilecektir. ABS " -"yazdırırken sarmayı önlemek için bu işlevi kullanın" +"Nesne bu sayıdaki destek katmanı tarafından yükseltilecektir. ABS yazdırırken " +"sarmayı önlemek için bu işlevi kullanın" msgid "" "G-code path is genereated after simplifing the contour of model to avoid too " @@ -12501,8 +12536,7 @@ msgid "Travel distance threshold" msgstr "Seyahat mesafesi" msgid "" -"Only trigger retraction when the travel distance is longer than this " -"threshold" +"Only trigger retraction when the travel distance is longer than this threshold" msgstr "" "Geri çekmeyi yalnızca hareket mesafesi bu eşikten daha uzun olduğunda " "tetikleyin" @@ -12510,8 +12544,7 @@ msgstr "" msgid "Retract amount before wipe" msgstr "Temizleme işlemi öncesi geri çekme miktarı" -msgid "" -"The length of fast retraction before wipe, relative to retraction length" +msgid "The length of fast retraction before wipe, relative to retraction length" msgstr "" "Geri çekme uzunluğuna göre, temizlemeden önce hızlı geri çekilmenin uzunluğu" @@ -12599,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" +"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" @@ -12736,13 +12771,13 @@ msgid "Seam gap" msgstr "Dikiş boşluğu" msgid "" -"In order to reduce the visibility of the seam in a closed loop extrusion, " -"the loop is interrupted and shortened by a specified amount.\n" -"This amount can be specified in millimeters or as a percentage of the " -"current extruder diameter. The default value for this parameter is 10%." +"In order to reduce the visibility of the seam in a closed loop extrusion, the " +"loop is interrupted and shortened by a specified amount.\n" +"This amount can be specified in millimeters or as a percentage of the current " +"extruder diameter. The default value for this parameter is 10%." msgstr "" -"Kapalı döngü ekstrüzyonda dikişin görünürlüğünü azaltmak için döngü " -"kesintiye uğrar ve belirli bir miktarda kısaltılır.\n" +"Kapalı döngü ekstrüzyonda dikişin görünürlüğünü azaltmak için döngü kesintiye " +"uğrar ve belirli bir miktarda kısaltılır.\n" "Bu miktar milimetre cinsinden veya mevcut ekstruder çapının yüzdesi olarak " "belirtilebilir. Bu parametrenin varsayılan değeri %10'dur." @@ -12751,8 +12786,8 @@ msgstr "Atkı birleşim dikişi (beta)" msgid "Use scarf joint to minimize seam visibility and increase seam strength." msgstr "" -"Dikiş görünürlüğünü en aza indirmek ve dikiş mukavemetini arttırmak için " -"atkı birleşimini kullanın." +"Dikiş görünürlüğünü en aza indirmek ve dikiş mukavemetini arttırmak için atkı " +"birleşimini kullanın." msgid "Conditional scarf joint" msgstr "Koşullu atkı birleşimi" @@ -12770,9 +12805,9 @@ msgstr "Koşullu açı eşiği" msgid "" "This option sets the threshold angle for applying a conditional scarf joint " "seam.\n" -"If the maximum angle within the perimeter loop exceeds this value " -"(indicating the absence of sharp corners), a scarf joint seam will be used. " -"The default value is 155°." +"If the maximum angle within the perimeter loop exceeds this value (indicating " +"the absence of sharp corners), a scarf joint seam will be used. The default " +"value is 155°." msgstr "" "Bu seçenek, koşullu bir atkı eklem dikişi uygulamak için eşik açısını " "ayarlar.\n" @@ -12787,8 +12822,8 @@ msgstr "Koşullu çıkıntı eşiği" msgid "" "This option determines the overhang threshold for the application of scarf " "joint seams. If the unsupported portion of the perimeter is less than this " -"threshold, scarf joint seams will be applied. The default threshold is set " -"at 40% of the external wall's width. Due to performance considerations, the " +"threshold, scarf joint seams will be applied. The default threshold is set at " +"40% of the external wall's width. Due to performance considerations, the " "degree of overhang is estimated." msgstr "" "Bu seçenek, atkı bağlantı dikişlerinin uygulanması için sarkma eşiğini " @@ -12802,22 +12837,22 @@ msgstr "Atkı birleşim hızı" msgid "" "This option sets the printing speed for scarf joints. It is recommended to " -"print scarf joints at a slow speed (less than 100 mm/s). It's also " -"advisable to enable 'Extrusion rate smoothing' if the set speed varies " -"significantly from the speed of the outer or inner walls. If the speed " -"specified here is higher than the speed of the outer or inner walls, the " -"printer will default to the slower of the two speeds. When specified as a " -"percentage (e.g., 80%), the speed is calculated based on the respective " -"outer or inner wall speed. The default value is set to 100%." +"print scarf joints at a slow speed (less than 100 mm/s). It's also advisable " +"to enable 'Extrusion rate smoothing' if the set speed varies significantly " +"from the speed of the outer or inner walls. If the speed specified here is " +"higher than the speed of the outer or inner walls, the printer will default " +"to the slower of the two speeds. When specified as a percentage (e.g., 80%), " +"the speed is calculated based on the respective outer or inner wall speed. " +"The default value is set to 100%." msgstr "" "Bu seçenek, atkı bağlantılarının yazdırma hızını ayarlar. Atkı " "bağlantılarının yavaş bir hızda (100 mm/s'den az) yazdırılması tavsiye " "edilir. Ayarlanan hızın dış veya iç duvarların hızından önemli ölçüde farklı " -"olması durumunda 'Ekstrüzyon hızı yumuşatma' seçeneğinin etkinleştirilmesi " -"de tavsiye edilir. Burada belirtilen hız, dış veya iç duvarların hızından " -"daha yüksekse, yazıcı varsayılan olarak iki hızdan daha yavaş olanı " -"seçecektir. Yüzde olarak belirtildiğinde (örn. %80), hız, ilgili dış veya iç " -"duvar hızına göre hesaplanır. Varsayılan değer %100 olarak ayarlanmıştır." +"olması durumunda 'Ekstrüzyon hızı yumuşatma' seçeneğinin etkinleştirilmesi de " +"tavsiye edilir. Burada belirtilen hız, dış veya iç duvarların hızından daha " +"yüksekse, yazıcı varsayılan olarak iki hızdan daha yavaş olanı seçecektir. " +"Yüzde olarak belirtildiğinde (örn. %80), hız, ilgili dış veya iç duvar hızına " +"göre hesaplanır. Varsayılan değer %100 olarak ayarlanmıştır." msgid "Scarf joint flow ratio" msgstr "Atkı birleşimi akış oranı" @@ -12831,8 +12866,8 @@ msgstr "Atkı başlangıç ​​yüksekliği" msgid "" "Start height of the scarf.\n" -"This amount can be specified in millimeters or as a percentage of the " -"current layer height. The default value for this parameter is 0." +"This amount can be specified in millimeters or as a percentage of the current " +"layer height. The default value for this parameter is 0." msgstr "" "Atkı başlangıç yüksekliği.\n" "Bu miktar milimetre cinsinden veya geçerli katman yüksekliğinin yüzdesi " @@ -12851,8 +12886,8 @@ msgid "" "Length of the scarf. Setting this parameter to zero effectively disables the " "scarf." msgstr "" -"Atkının uzunluğu. Bu parametrenin 0 a ayarlanması atkıyı dolaylı yoldan " -"devre dışı bırakır." +"Atkının uzunluğu. Bu parametrenin 0 a ayarlanması atkıyı dolaylı yoldan devre " +"dışı bırakır." msgid "Scarf steps" msgstr "Atkı kademesi" @@ -12893,15 +12928,15 @@ msgid "Wipe before external loop" msgstr "Harici döngüden önce silin" msgid "" -"To minimise visibility of potential overextrusion at the start of an " -"external perimeter when printing with Outer/Inner or Inner/Outer/Inner wall " -"print order, the deretraction is performed slightly on the inside from the " -"start of the external perimeter. That way any potential over extrusion is " -"hidden from the outside surface. \n" +"To minimise visibility of potential overextrusion at the start of an external " +"perimeter when printing with Outer/Inner or Inner/Outer/Inner wall print " +"order, the deretraction is performed slightly on the inside from the start of " +"the external perimeter. That way any potential over extrusion is hidden from " +"the outside surface. \n" "\n" -"This is useful when printing with Outer/Inner or Inner/Outer/Inner wall " -"print order as in these modes it is more likely an external perimeter is " -"printed immediately after a deretraction move." +"This is useful when printing with Outer/Inner or Inner/Outer/Inner wall print " +"order as in these modes it is more likely an external perimeter is printed " +"immediately after a deretraction move." msgstr "" "Dış/İç veya İç/Dış/İç duvar baskı sırası ile yazdırırken, dış çevrenin " "başlangıcında olası aşırı çıkıntının görünürlüğünü en aza indirmek için, " @@ -12910,8 +12945,8 @@ msgstr "" "yüzeyden gizlenir. \n" "\n" "Bu, Dış/İç veya İç/Dış/İç duvar yazdırma sırası ile yazdırırken " -"kullanışlıdır, çünkü bu modlarda, bir geri çekilme hareketinin hemen " -"ardından bir dış çevrenin yazdırılması daha olasıdır." +"kullanışlıdır, çünkü bu modlarda, bir geri çekilme hareketinin hemen ardından " +"bir dış çevrenin yazdırılması daha olasıdır." msgid "Wipe speed" msgstr "Temizleme hızı" @@ -12977,8 +13012,7 @@ msgid "Skirt loops" msgstr "Etek sayısı" msgid "Number of loops for the skirt. Zero means disabling skirt" -msgstr "" -"Etek için ilmek sayısı. Sıfır, eteği devre dışı bırakmak anlamına gelir" +msgstr "Etek için ilmek sayısı. Sıfır, eteği devre dışı bırakmak anlamına gelir" msgid "Skirt speed" msgstr "Etek hızı" @@ -13023,14 +13057,14 @@ msgstr "" "bırakmıştır" msgid "Solid infill" -msgstr "" +msgstr "Katı dolgu" msgid "Filament to print solid infill" -msgstr "" +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." +"Line width of internal solid infill. If expressed as a %, it will be computed " +"over the nozzle diameter." msgstr "" "İç katı dolgunun çizgi genişliği. % olarak ifade edilirse Nozul çapı " "üzerinden hesaplanacaktır." @@ -13044,8 +13078,8 @@ msgid "" "generated model has no seam" msgstr "" "Spiralleştirme, dış konturun z hareketlerini yumuşatır. Ve katı bir modeli, " -"katı alt katmanlara sahip tek duvarlı bir baskıya dönüştürür. Oluşturulan " -"son modelde dikiş yok." +"katı alt katmanlara sahip tek duvarlı bir baskıya dönüştürür. Oluşturulan son " +"modelde dikiş yok." msgid "Smooth Spiral" msgstr "Pürüzsüz spiral" @@ -13070,12 +13104,11 @@ msgstr "" msgid "" "If smooth or traditional mode is selected, a timelapse video will be " "generated for each print. After each layer is printed, a snapshot is taken " -"with the chamber camera. All of these snapshots are composed into a " -"timelapse video when printing completes. If smooth mode is selected, the " -"toolhead will move to the excess chute after each layer is printed and then " -"take a snapshot. Since the melt filament may leak from the nozzle during the " -"process of taking a snapshot, prime tower is required for smooth mode to " -"wipe nozzle." +"with the chamber camera. All of these snapshots are composed into a timelapse " +"video when printing completes. If smooth mode is selected, the toolhead will " +"move to the excess chute after each layer is printed and then take a " +"snapshot. Since the melt filament may leak from the nozzle during the process " +"of taking a snapshot, prime tower is required for smooth mode to wipe nozzle." msgstr "" "Düzgün veya geleneksel mod seçilirse her baskı için bir hızlandırılmış video " "oluşturulacaktır. Her katman basıldıktan sonra oda kamerasıyla anlık görüntü " @@ -13098,9 +13131,12 @@ msgid "" "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 "" +msgstr "Ön ısıtma süresi" msgid "" "To reduce the waiting time after tool change, Orca can preheat the next tool " @@ -13108,14 +13144,20 @@ msgid "" "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 "" +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" @@ -13161,10 +13203,9 @@ msgid "No sparse layers (beta)" msgstr "Seyrek katman yok (beta)" msgid "" -"If enabled, the wipe tower will not be printed on layers with no " -"toolchanges. On layers with a toolchange, extruder will travel downward to " -"print the wipe tower. User is responsible for ensuring there is no collision " -"with the print." +"If enabled, the wipe tower will not be printed on layers with no toolchanges. " +"On layers with a toolchange, extruder will travel downward to print the wipe " +"tower. User is responsible for ensuring there is no collision with the print." msgstr "" "Etkinleştirilirse, silme kulesi araç değişimi olmayan katmanlarda " "yazdırılmayacaktır. Araç değişimi olan katmanlarda, ekstruder silme kulesini " @@ -13189,16 +13230,16 @@ msgid "" "triangle mesh slicing. The gap closing operation may reduce the final print " "resolution, therefore it is advisable to keep the value reasonably low." msgstr "" -"Üçgen mesh dilimleme sırasında 2x boşluk kapatma yarıçapından küçük " -"çatlaklar doldurulmaktadır. Boşluk kapatma işlemi son yazdırma çözünürlüğünü " +"Üçgen mesh dilimleme sırasında 2x boşluk kapatma yarıçapından küçük çatlaklar " +"doldurulmaktadır. Boşluk kapatma işlemi son yazdırma çözünürlüğünü " "düşürebilir, bu nedenle değerin oldukça düşük tutulması tavsiye edilir." msgid "Slicing Mode" msgstr "Dilimleme modu" msgid "" -"Use \"Even-odd\" for 3DLabPrint airplane models. Use \"Close holes\" to " -"close all holes in the model." +"Use \"Even-odd\" for 3DLabPrint airplane models. Use \"Close holes\" to close " +"all holes in the model." msgstr "" "3DLabPrint uçak modelleri için \"Çift-tek\" seçeneğini kullanın. Modeldeki " "tüm delikleri kapatmak için \"Delikleri kapat\"ı kullanın." @@ -13222,10 +13263,9 @@ msgid "" "print bed, set this to -0.3 (or fix your endstop)." msgstr "" "Bu değer, çıkış G-kodu içindeki tüm Z koordinatlarına eklenir (veya " -"çıkarılır).Bu, kötü Z endstop konumunu telafi etmek için kullanılır: " -"örneğin, endstop sıfır noktanız aslında nozulu baskı tablasından 0.3mm " -"uzakta bırakıyorsa, bu değeri -0.3 olarak ayarlayın (veya endstop'unuzu " -"düzeltin)." +"çıkarılır).Bu, kötü Z endstop konumunu telafi etmek için kullanılır: örneğin, " +"endstop sıfır noktanız aslında nozulu baskı tablasından 0.3mm uzakta " +"bırakıyorsa, bu değeri -0.3 olarak ayarlayın (veya endstop'unuzu düzeltin)." msgid "Enable support" msgstr "Desteği etkinleştir" @@ -13279,8 +13319,7 @@ msgid "" "Only create support for critical regions including sharp tail, cantilever, " "etc." msgstr "" -"Yalnızca keskin kuyruk, konsol vb. gibi kritik bölgeler için destek " -"oluşturun." +"Yalnızca keskin kuyruk, konsol vb. gibi kritik bölgeler için destek oluşturun." msgid "Remove small overhangs" msgstr "Küçük çıkıntıları kaldır" @@ -13317,8 +13356,7 @@ msgstr "Taban için arayüz filamentini azaltın" msgid "" "Avoid using support interface filament to print support base if possible." msgstr "" -"Destek tabanını yazdırmak için destek arayüzü filamentini kullanmaktan " -"kaçının" +"Destek tabanını yazdırmak için destek arayüzü filamentini kullanmaktan kaçının" msgid "" "Line width of support. If expressed as a %, it will be computed over the " @@ -13393,8 +13431,8 @@ msgstr "Arayüz deseni" msgid "" "Line pattern of support interface. Default pattern for non-soluble support " -"interface is Rectilinear, while default pattern for soluble support " -"interface is Concentric" +"interface is Rectilinear, while default pattern for soluble support interface " +"is Concentric" msgstr "" "Destek arayüzünün çizgi deseni. Çözünmeyen destek arayüzü için varsayılan " "model Doğrusaldır, çözünebilir destek arayüzü için varsayılan model ise " @@ -13423,12 +13461,11 @@ msgid "" "into a regular grid will create more stable supports (default), while snug " "support towers will save material and reduce object scarring.\n" "For tree support, slim and organic style will merge branches more " -"aggressively and save a lot of material (default organic), while hybrid " -"style will create similar structure to normal support under large flat " -"overhangs." +"aggressively and save a lot of material (default organic), while hybrid style " +"will create similar structure to normal support under large flat overhangs." msgstr "" -"Destek stil ve şekli. Normal destek için, destekleri düzenli bir ızgara " -"içine projelendirmek daha stabil destekler oluşturacaktır (varsayılan), aynı " +"Destek stil ve şekli. Normal destek için, destekleri düzenli bir ızgara içine " +"projelendirmek daha stabil destekler oluşturacaktır (varsayılan), aynı " "zamanda sıkı destek kuleleri malzeme tasarrufu sağlar ve nesne üzerindeki " "izleri azaltır.\n" "Ağaç destek için, ince ve organik tarz, dalları daha etkili bir şekilde " @@ -13477,8 +13514,8 @@ msgid "Tree support branch angle" msgstr "Ağaç desteği dal açısı" msgid "" -"This setting determines the maximum overhang angle that t he branches of " -"tree support allowed to make.If the angle is increased, the branches can be " +"This setting determines the maximum overhang angle that t he branches of tree " +"support allowed to make.If the angle is increased, the branches can be " "printed more horizontally, allowing them to reach farther." msgstr "" "Bu ayar, ağaç desteğinin dallarının oluşmasına izin verilen maksimum çıkıntı " @@ -13510,11 +13547,10 @@ msgstr "Dal Yoğunluğu" #. TRN PrintSettings: "Organic supports" > "Branch Density" msgid "" -"Adjusts the density of the support structure used to generate the tips of " -"the branches. A higher value results in better overhangs but the supports " -"are harder to remove, thus it is recommended to enable top support " -"interfaces instead of a high branch density value if dense interfaces are " -"needed." +"Adjusts the density of the support structure used to generate the tips of the " +"branches. A higher value results in better overhangs but the supports are " +"harder to remove, thus it is recommended to enable top support interfaces " +"instead of a high branch density value if dense interfaces are needed." msgstr "" "Dalların uçlarını oluşturmak için kullanılan destek yapısının yoğunluğunu " "ayarlar. Daha yüksek bir değer daha iyi çıkıntılarla sonuçlanır, ancak " @@ -13526,8 +13562,8 @@ msgid "Adaptive layer height" msgstr "Uyarlanabilir katman yüksekliği" msgid "" -"Enabling this option means the height of tree support layer except the " -"first will be automatically calculated " +"Enabling this option means the height of tree support layer except the first " +"will be automatically calculated " msgstr "" "Bu seçeneğin etkinleştirilmesi, ilki hariç ağaç destek katmanının " "yüksekliğinin otomatik olarak hesaplanacağı anlamına gelir " @@ -13582,8 +13618,8 @@ msgstr "Çift duvarlı dal çapı" #. TRN PrintSettings: "Organic supports" > "Branch Diameter" msgid "" "Branches with area larger than the area of a circle of this diameter will be " -"printed with double walls for stability. Set this value to zero for no " -"double walls." +"printed with double walls for stability. Set this value to zero for no double " +"walls." msgstr "" "Bu çaptaki bir dairenin alanından daha büyük alana sahip dallar, stabilite " "için çift duvarlı olarak basılacaktır. Çift duvar olmaması için bu değeri " @@ -13613,8 +13649,8 @@ msgid "" "added before \"machine_start_gcode\"\n" "G-code commands: M141/M191 S(0-255)" msgstr "" -"Hazne sıcaklığı kontrolü için bu seçeneği etkinleştirin. Önce bir M191 " -"komutu eklenecek \"machine_start_gcode\"\n" +"Hazne sıcaklığı kontrolü için bu seçeneği etkinleştirin. Önce bir M191 komutu " +"eklenecek \"machine_start_gcode\"\n" "G-code komut: M141/M191 S(0-255)" msgid "Chamber temperature" @@ -13692,11 +13728,11 @@ msgid "" "The number of top solid layers is increased when slicing if the thickness " "calculated by top shell layers is thinner than this value. This can avoid " "having too thin shell when layer height is small. 0 means that this setting " -"is disabled and thickness of top shell is absolutely determained by top " -"shell layers" +"is disabled and thickness of top shell is absolutely determained by top shell " +"layers" msgstr "" -"Üst kabuk katmanları tarafından hesaplanan kalınlık bu değerden daha ince " -"ise dilimleme sırasında üst katı katmanların sayısı artırılır. Bu, katman " +"Üst kabuk katmanları tarafından hesaplanan kalınlık bu değerden daha ince ise " +"dilimleme sırasında üst katı katmanların sayısı artırılır. Bu, katman " "yüksekliği küçük olduğunda kabuğun çok ince olmasını önleyebilir. 0, bu " "ayarın devre dışı olduğu ve üst kabuğun kalınlığının kesinlikle üst kabuk " "katmanları tarafından belirlendiği anlamına gelir" @@ -13719,12 +13755,11 @@ msgid "Wipe Distance" msgstr "Temizleme mesafesi" msgid "" -"Discribe how long the nozzle will move along the last path when " -"retracting. \n" +"Discribe how long the nozzle will move along the last path when retracting. \n" "\n" "Depending on how long the wipe operation lasts, how fast and long the " -"extruder/filament retraction settings are, a retraction move may be needed " -"to retract the remaining filament. \n" +"extruder/filament retraction settings are, a retraction move may be needed to " +"retract the remaining filament. \n" "\n" "Setting a value in the retract amount before wipe setting below will perform " "any excess retraction before the wipe, else it will be performed after." @@ -13732,9 +13767,9 @@ msgstr "" "Geri çekilirken nozulun son yol boyunca ne kadar süre hareket edeceğini " "açıklayın. \n" "\n" -"Silme işleminin ne kadar sürdüğüne, ekstruder/filament geri çekme " -"ayarlarının ne kadar hızlı ve uzun olduğuna bağlı olarak, kalan filamanı " -"geri çekmek için bir geri çekme hareketine ihtiyaç duyulabilir. \n" +"Silme işleminin ne kadar sürdüğüne, ekstruder/filament geri çekme ayarlarının " +"ne kadar hızlı ve uzun olduğuna bağlı olarak, kalan filamanı geri çekmek için " +"bir geri çekme hareketine ihtiyaç duyulabilir. \n" "\n" "Aşağıdaki silme ayarından önce geri çekme miktarına bir değer ayarlamak, " "silme işleminden önce aşırı geri çekme işlemini gerçekleştirecektir, aksi " @@ -13784,8 +13819,8 @@ msgid "" "Angle at the apex of the cone that is used to stabilize the wipe tower. " "Larger angle means wider base." 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." +"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 "Maximum wipe tower print speed" msgstr "Maksimum silme kulesi yazdırma hızı" @@ -13847,8 +13882,8 @@ msgid "" "volumes below." msgstr "" "Bu vektör, silme kulesinde kullanılan her bir araçtan/araca geçiş için " -"gerekli hacimleri kaydeder. Bu değerler, aşağıdaki tam temizleme " -"hacimlerinin oluşturulmasını basitleştirmek için kullanılır." +"gerekli hacimleri kaydeder. Bu değerler, aşağıdaki tam temizleme hacimlerinin " +"oluşturulmasını basitleştirmek için kullanılır." msgid "" "Purging after filament change will be done inside objects' infills. This may " @@ -13872,13 +13907,13 @@ msgstr "" msgid "" "This object will be used to purge the nozzle after a filament change to save " -"filament and decrease the print time. Colours of the objects will be mixed " -"as a result. It will not take effect, unless the prime tower is enabled." +"filament and decrease the print time. Colours of the objects will be mixed as " +"a result. It will not take effect, unless the prime tower is enabled." msgstr "" -"Bu nesne, filamentten tasarruf etmek ve baskı süresini azaltmak için " -"filament değişiminden sonra nozulu temizlemek için kullanılacaktır. Sonuç " -"olarak nesnelerin renkleri karıştırılacaktır. Prime tower " -"etkinleştirilmediği sürece etkili olmayacaktır." +"Bu nesne, filamentten tasarruf etmek ve baskı süresini azaltmak için filament " +"değişiminden sonra nozulu temizlemek için kullanılacaktır. Sonuç olarak " +"nesnelerin renkleri karıştırılacaktır. Prime tower etkinleştirilmediği sürece " +"etkili olmayacaktır." msgid "Maximal bridging distance" msgstr "Maksimum köprüleme mesafesi" @@ -13887,8 +13922,8 @@ msgid "Maximal distance between supports on sparse infill sections." msgstr "" "Bu nesne, filamentten tasarruf etmek ve baskı süresini azaltmak için bir " "filament değişiminden sonra nozulu temizlemek için kullanılacaktır. Sonuç " -"olarak nesnelerin renkleri karıştırılacaktır. Prime tower " -"etkinleştirilmediği sürece etkili olmayacaktır." +"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ığı" @@ -13897,22 +13932,28 @@ msgid "Spacing of purge lines on the wipe tower." msgstr "Silme kulesindeki boşaltma hatlarının aralığı." msgid "Extra flow for purging" -msgstr "" +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." +"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 "" +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" @@ -13937,8 +13978,8 @@ msgid "" "assembling issue" msgstr "" "Nesnenin konturu XY düzleminde yapılandırılan değer kadar büyütülür veya " -"küçültülür. Pozitif değer konturu büyütür. Negatif değer konturu küçültür. " -"Bu fonksiyon, nesnenin montaj sorunu olduğunda boyutu hafifçe ayarlamak için " +"küçültülür. Pozitif değer konturu büyütür. Negatif değer konturu küçültür. Bu " +"fonksiyon, nesnenin montaj sorunu olduğunda boyutu hafifçe ayarlamak için " "kullanılır" msgid "Convert holes to polyholes" @@ -13962,14 +14003,14 @@ msgstr "Çokgen delik tespiti marjı" msgid "" "Maximum defection of a point to the estimated radius of the circle.\n" "As cylinders are often exported as triangles of varying size, points may not " -"be on the circle circumference. This setting allows you some leway to " -"broaden the detection.\n" +"be on the circle circumference. This setting allows you some leway to broaden " +"the detection.\n" "In mm or in % of the radius." msgstr "" "Bir noktanın dairenin tahmini yarıçapına göre maksimum sapması.\n" "Silindirler genellikle farklı boyutlarda üçgenler olarak ihraç edildiğinden, " -"noktalar daire çevresinde olmayabilir. Bu ayar, algılamayı genişletmeniz " -"için size biraz alan sağlar.\n" +"noktalar daire çevresinde olmayabilir. Bu ayar, algılamayı genişletmeniz için " +"size biraz alan sağlar.\n" "inc mm cinsinden veya yarıçapın %'si cinsinden." msgid "Polyhole twist" @@ -13992,8 +14033,8 @@ msgid "Format of G-code thumbnails" msgstr "G kodu küçük resimlerinin formatı" msgid "" -"Format of G-code thumbnails: PNG for best quality, JPG for smallest size, " -"QOI for low memory firmware" +"Format of G-code thumbnails: PNG for best quality, JPG for smallest size, QOI " +"for low memory firmware" msgstr "" "G kodu küçük resimlerinin formatı: En iyi kalite için PNG, en küçük boyut " "için JPG, düşük bellekli donanım yazılımı için QOI" @@ -14014,11 +14055,11 @@ msgstr "" msgid "" "Classic wall generator produces walls with constant extrusion width and for " -"very thin areas is used gap-fill. Arachne engine produces walls with " -"variable extrusion width" +"very thin areas is used gap-fill. Arachne engine produces walls with variable " +"extrusion width" msgstr "" -"Klasik duvar oluşturucu sabit ekstrüzyon genişliğine sahip duvarlar üretir " -"ve çok ince alanlar için boşluk doldurma kullanılır. Arachne motoru değişken " +"Klasik duvar oluşturucu sabit ekstrüzyon genişliğine sahip duvarlar üretir ve " +"çok ince alanlar için boşluk doldurma kullanılır. Arachne motoru değişken " "ekstrüzyon genişliğine sahip duvarlar üretir" msgid "Classic" @@ -14045,20 +14086,19 @@ msgstr "Duvar geçiş filtresi oranı" msgid "" "Prevent transitioning back and forth between one extra wall and one less. " "This margin extends the range of extrusion widths which follow to [Minimum " -"wall width - margin, 2 * Minimum wall width + margin]. Increasing this " -"margin reduces the number of transitions, which reduces the number of " -"extrusion starts/stops and travel time. However, large extrusion width " -"variation can lead to under- or overextrusion problems. It's expressed as a " -"percentage over nozzle diameter" -msgstr "" -"Fazladan bir duvar ile bir eksik arasında ileri geri geçişi önleyin. Bu " -"kenar boşluğu, [Minimum duvar genişliği - kenar boşluğu, 2 * Minimum duvar " +"wall width - margin, 2 * Minimum wall width + margin]. Increasing this margin " +"reduces the number of transitions, which reduces the number of extrusion " +"starts/stops and travel time. However, large extrusion width variation can " +"lead to under- or overextrusion problems. It's expressed as a percentage over " +"nozzle diameter" +msgstr "" +"Fazladan bir duvar ile bir eksik arasında ileri geri geçişi önleyin. Bu kenar " +"boşluğu, [Minimum duvar genişliği - kenar boşluğu, 2 * Minimum duvar " "genişliği + kenar boşluğu] şeklinde takip eden ekstrüzyon genişlikleri " "aralığını genişletir. Bu marjın arttırılması geçiş sayısını azaltır, bu da " "ekstrüzyonun başlama/durma sayısını ve seyahat süresini azaltır. Bununla " -"birlikte, büyük ekstrüzyon genişliği değişimi, yetersiz veya aşırı " -"ekstrüzyon sorunlarına yol açabilir. Nozul çapına göre yüzde olarak ifade " -"edilir" +"birlikte, büyük ekstrüzyon genişliği değişimi, yetersiz veya aşırı ekstrüzyon " +"sorunlarına yol açabilir. Nozul çapına göre yüzde olarak ifade edilir" msgid "Wall transitioning threshold angle" msgstr "Duvar geçiş açısı" @@ -14070,11 +14110,11 @@ msgid "" "this setting reduces the number and length of these center walls, but may " "leave gaps or overextrude" msgstr "" -"Çift ve tek sayıdaki duvarlar arasında geçişler ne zaman oluşturulmalıdır? " -"Bu ayardan daha büyük bir açıya sahip bir kama şeklinin geçişleri olmayacak " -"ve kalan alanı dolduracak şekilde ortada hiçbir duvar basılmayacaktır. Bu " -"ayarın düşürülmesi, bu merkez duvarların sayısını ve uzunluğunu azaltır " -"ancak boşluklara veya aşırı çıkıntıya neden olabilir" +"Çift ve tek sayıdaki duvarlar arasında geçişler ne zaman oluşturulmalıdır? Bu " +"ayardan daha büyük bir açıya sahip bir kama şeklinin geçişleri olmayacak ve " +"kalan alanı dolduracak şekilde ortada hiçbir duvar basılmayacaktır. Bu ayarın " +"düşürülmesi, bu merkez duvarların sayısını ve uzunluğunu azaltır ancak " +"boşluklara veya aşırı çıkıntıya neden olabilir" msgid "Wall distribution count" msgstr "Duvar dağılım sayısı" @@ -14090,9 +14130,9 @@ msgid "Minimum feature size" msgstr "Minimum özellik boyutu" msgid "" -"Minimum thickness of thin features. Model features that are thinner than " -"this value will not be printed, while features thicker than the Minimum " -"feature size will be widened to the Minimum wall width. It's expressed as a " +"Minimum thickness of thin features. Model features that are thinner than this " +"value will not be printed, while features thicker than the Minimum feature " +"size will be widened to the Minimum wall width. It's expressed as a " "percentage over nozzle diameter" msgstr "" "İnce özellikler için minimum kalınlık. Bu değerden daha ince olan model " @@ -14109,28 +14149,27 @@ msgid "" "\n" "NOTE: Bottom and top surfaces will not be affected by this value to prevent " "visual gaps on the ouside of the model. Adjust 'One wall threshold' in the " -"Advanced settings below to adjust the sensitivity of what is considered a " -"top-surface. 'One wall threshold' is only visibile if this setting is set " -"above the default value of 0.5, or if single-wall top surfaces is enabled." +"Advanced settings below to adjust the sensitivity of what is considered a top-" +"surface. 'One wall threshold' is only visibile if this setting is set above " +"the default value of 0.5, or if single-wall top surfaces is enabled." msgstr "" "Yazdırma süresini artırabilecek kısa, kapatılmamış duvarların yazdırılmasını " "önlemek için bu değeri ayarlayın. Daha yüksek değerler daha fazla ve daha " "uzun duvarları kaldırır.\n" "\n" -"NOT: Modelin dış kısmında görsel boşluk kalmaması için alt ve üst yüzeyler " -"bu değerden etkilenmeyecektir. Üst yüzey olarak kabul edilen şeyin " -"hassasiyetini ayarlamak için aşağıdaki Gelişmiş ayarlarda 'Tek duvar " -"eşiği'ni ayarlayın. 'Tek duvar eşiği' yalnızca bu ayar varsayılan değer olan " -"0,5'in üzerine ayarlandığında veya tek duvarlı üst yüzeyler " -"etkinleştirildiğinde görünür." +"NOT: Modelin dış kısmında görsel boşluk kalmaması için alt ve üst yüzeyler bu " +"değerden etkilenmeyecektir. Üst yüzey olarak kabul edilen şeyin hassasiyetini " +"ayarlamak için aşağıdaki Gelişmiş ayarlarda 'Tek duvar eşiği'ni ayarlayın. " +"'Tek duvar eşiği' yalnızca bu ayar varsayılan değer olan 0,5'in üzerine " +"ayarlandığında veya tek duvarlı üst yüzeyler etkinleştirildiğinde görünür." msgid "First layer minimum wall width" msgstr "İlk katman minimum duvar genişliği" msgid "" -"The minimum wall width that should be used for the first layer is " -"recommended to be set to the same size as the nozzle. This adjustment is " -"expected to enhance adhesion." +"The minimum wall width that should be used for the first layer is recommended " +"to be set to the same size as the nozzle. This adjustment is expected to " +"enhance adhesion." msgstr "" "İlk katman için kullanılması gereken minimum duvar genişliğinin nozul ile " "aynı boyuta ayarlanması tavsiye edilir. Bu ayarlamanın yapışmayı artırması " @@ -14155,8 +14194,8 @@ msgstr "Dar iç katı dolguyu tespit et" msgid "" "This option will auto detect narrow internal solid infill area. If enabled, " -"concentric pattern will be used for the area to speed printing up. " -"Otherwise, rectilinear pattern is used defaultly." +"concentric pattern will be used for the area to speed printing up. Otherwise, " +"rectilinear pattern is used defaultly." msgstr "" "Bu seçenek dar dahili katı dolgu alanını otomatik olarak algılayacaktır. " "Etkinleştirilirse, yazdırmayı hızlandırmak amacıyla alanda eşmerkezli desen " @@ -14202,8 +14241,7 @@ msgstr "Yönlendirme Seçenekleri" msgid "Orient options: 0-disable, 1-enable, others-auto" msgstr "" -"Yönlendirme seçenekleri: 0-devre dışı bırak, 1-etkinleştir, diğerleri-" -"otomatik" +"Yönlendirme seçenekleri: 0-devre dışı bırak, 1-etkinleştir, diğerleri-otomatik" msgid "Rotation angle around the Z axis in degrees." msgstr "Z ekseni etrafında derece cinsinden dönüş açısı." @@ -14248,13 +14286,13 @@ msgstr "" "ettiğini bilmesi için bu değişkene yazması gerekir." msgid "" -"Retraction state at the beginning of the custom G-code block. If the custom " -"G-code moves the extruder axis, it should write to this variable so " -"PrusaSlicer deretracts correctly when it gets control back." +"Retraction state at the beginning of the custom G-code block. If the custom G-" +"code moves the extruder axis, it should write to this variable so PrusaSlicer " +"deretracts correctly when it gets control back." msgstr "" "Özel G kodu bloğunun başlangıcındaki geri çekilme durumu. Özel G kodu " -"ekstruder eksenini hareket ettirirse, Slicer'ın kontrolü geri aldığında " -"doğru şekilde geri çekme yapması için bu değişkene yazması gerekir." +"ekstruder eksenini hareket ettirirse, Slicer'ın kontrolü geri aldığında doğru " +"şekilde geri çekme yapması için bu değişkene yazması gerekir." msgid "Extra deretraction" msgstr "Ekstra deretraksiyon" @@ -14264,12 +14302,14 @@ msgstr "" "Şu anda, geri çekilmeden sonra ekstra ekstruder hazırlaması planlanıyor." msgid "Absolute E position" -msgstr "" +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" @@ -14321,10 +14361,10 @@ msgstr "" "vektörü." msgid "Has single extruder MM priming" -msgstr "" +msgstr "Tek ekstruder MM astarına sahiptir" msgid "Are the extra multi-material priming regions used in this print?" -msgstr "" +msgstr "Bu baskıda ekstra çok malzemeli astarlama bölgeleri kullanılıyor mu?" msgid "Volume per extruder" msgstr "Ekstruder başına hacim" @@ -14353,18 +14393,18 @@ msgid "" "Weight per extruder extruded during the entire print. Calculated from " "filament_density value in Filament Settings." msgstr "" -"Baskının tamamı boyunca ekstrüzyon yapılan ekstruder başına ağırlık. " -"Filament Ayarlarındaki filaman yoğunluğu değerinden hesaplanır." +"Baskının tamamı boyunca ekstrüzyon yapılan ekstruder başına ağırlık. Filament " +"Ayarlarındaki filaman yoğunluğu değerinden hesaplanır." msgid "Total weight" msgstr "Toplam ağırlık" msgid "" -"Total weight of the print. Calculated from filament_density value in " -"Filament Settings." +"Total weight of the print. Calculated from filament_density value in Filament " +"Settings." msgstr "" -"Baskının toplam ağırlığı. Filament Ayarlarındaki filaman yoğunluğu " -"değerinden hesaplanır." +"Baskının toplam ağırlığı. Filament Ayarlarındaki filaman yoğunluğu değerinden " +"hesaplanır." msgid "Total layer count" msgstr "Toplam katman sayısı" @@ -14413,8 +14453,8 @@ msgstr "" "cinsindendir." msgid "" -"The vector has two elements: x and y dimension of the bounding box. Values " -"in mm." +"The vector has two elements: x and y dimension of the bounding box. Values in " +"mm." msgstr "" "Vektörün iki öğesi vardır: sınırlayıcı kutunun x ve y boyutu. Değerler mm " "cinsindendir." @@ -14426,8 +14466,8 @@ msgid "" "Vector of points of the first layer convex hull. Each element has the " "following format:'[x, y]' (x and y are floating-point numbers in mm)." msgstr "" -"Birinci katmanın dışbükey gövdesinin noktalarının vektörü. Her öğe şu " -"formata sahiptir:'[x, y]' (x ve y, mm cinsinden kayan noktalı sayılardır)." +"Birinci katmanın dışbükey gövdesinin noktalarının vektörü. Her öğe şu formata " +"sahiptir:'[x, y]' (x ve y, mm cinsinden kayan noktalı sayılardır)." msgid "Bottom-left corner of first layer bounding box" msgstr "İlk katman sınırlayıcı kutusunun sol alt köşesi" @@ -14491,12 +14531,14 @@ 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 "" +msgstr "Ekstruder sayısı" msgid "" -"Total number of extruders, regardless of whether they are used in the " -"current print." +"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ı" @@ -14631,8 +14673,7 @@ msgstr "Sağlanan dosya boş olduğundan okunamadı" msgid "Unknown file format. Input file must have .3mf or .zip.amf extension." msgstr "" -"Bilinmeyen dosya formatı. Giriş dosyası .3mf veya .zip.amf uzantılı " -"olmalıdır." +"Bilinmeyen dosya formatı. Giriş dosyası .3mf veya .zip.amf uzantılı olmalıdır." msgid "Canceled" msgstr "İptal edildi" @@ -14754,8 +14795,7 @@ msgstr "yeni ön ayar oluşturma başarısız oldu." msgid "" "Are you sure to cancel the current calibration and return to the home page?" msgstr "" -"Mevcut kalibrasyonu iptal edip ana sayfaya dönmek istediğinizden emin " -"misiniz?" +"Mevcut kalibrasyonu iptal edip ana sayfaya dönmek istediğinizden emin misiniz?" msgid "No Printer Connected!" msgstr "Yazıcı Bağlı Değil!" @@ -14770,16 +14810,16 @@ msgid "The input value size must be 3." msgstr "Giriş değeri boyutu 3 olmalıdır." msgid "" -"This machine type can only hold 16 history results per nozzle. You can " -"delete the existing historical results and then start calibration. Or you " -"can continue the calibration, but you cannot create new calibration " -"historical results. \n" +"This machine type can only hold 16 history results per nozzle. You can delete " +"the existing historical results and then start calibration. Or you can " +"continue the calibration, but you cannot create new calibration historical " +"results. \n" "Do you still want to continue the calibration?" msgstr "" "Bu makine tipi, püskürtme ucu başına yalnızca 16 geçmiş sonucu tutabilir. " -"Mevcut geçmiş sonuçları silebilir ve ardından kalibrasyona " -"başlayabilirsiniz. Veya kalibrasyona devam edebilirsiniz ancak yeni " -"kalibrasyon geçmişi sonuçları oluşturamazsınız.\n" +"Mevcut geçmiş sonuçları silebilir ve ardından kalibrasyona başlayabilirsiniz. " +"Veya kalibrasyona devam edebilirsiniz ancak yeni kalibrasyon geçmişi " +"sonuçları oluşturamazsınız.\n" "Hala kalibrasyona devam etmek istiyor musunuz?" msgid "Connecting to printer..." @@ -14793,9 +14833,9 @@ msgstr "Akış Dinamiği Kalibrasyonu sonucu yazıcıya kaydedildi" #, c-format, boost-format msgid "" -"There is already a historical calibration result with the same name: %s. " -"Only one of the results with the same name is saved. Are you sure you want " -"to override the historical result?" +"There is already a historical calibration result with the same name: %s. Only " +"one of the results with the same name is saved. Are you sure you want to " +"override the historical result?" msgstr "" "Aynı ada sahip geçmiş bir kalibrasyon sonucu zaten var: %s. Aynı ada sahip " "sonuçlardan yalnızca biri kaydedilir. Geçmiş sonucu geçersiz kılmak " @@ -14806,8 +14846,8 @@ msgid "" "This machine type can only hold %d history results per nozzle. This result " "will not be saved." msgstr "" -"Bu makine türü püskürtme ucu başına yalnızca %d geçmiş sonucunu tutabilir. " -"Bu sonuç kaydedilmeyecek." +"Bu makine türü püskürtme ucu başına yalnızca %d geçmiş sonucunu tutabilir. Bu " +"sonuç kaydedilmeyecek." msgid "Internal Error" msgstr "İç hata" @@ -14826,10 +14866,10 @@ msgstr "Akış Dinamiği Kalibrasyonuna ne zaman ihtiyacınız olur" msgid "" "We now have added the auto-calibration for different filaments, which is " -"fully automated and the result will be saved into the printer for future " -"use. You only need to do the calibration in the following limited cases:\n" -"1. If you introduce a new filament of different brands/models or the " -"filament is damp;\n" +"fully automated and the result will be saved into the printer for future use. " +"You only need to do the calibration in the following limited cases:\n" +"1. If you introduce a new filament of different brands/models or the filament " +"is damp;\n" "2. if the nozzle is worn out or replaced with a new one;\n" "3. If the max volumetric speed or print temperature is changed in the " "filament setting." @@ -14851,10 +14891,10 @@ msgid "" "\n" "Usually the calibration is unnecessary. When you start a single color/" "material print, with the \"flow dynamics calibration\" option checked in the " -"print start menu, the printer will follow the old way, calibrate the " -"filament before the print; When you start a multi color/material print, the " -"printer will use the default compensation parameter for the filament during " -"every filament switch which will have a good result in most cases.\n" +"print start menu, the printer will follow the old way, calibrate the filament " +"before the print; When you start a multi color/material print, the printer " +"will use the default compensation parameter for the filament during every " +"filament switch which will have a good result in most cases.\n" "\n" "Please note that there are a few cases that can make the calibration results " "unreliable, such as insufficient adhesion on the build plate. Improving " @@ -14870,9 +14910,9 @@ msgstr "" "Genellikle kalibrasyon gereksizdir. Baskı başlatma menüsünde \"akış " "dinamikleri kalibrasyonu\" seçeneği işaretliyken tek renkli/malzemeli bir " "baskı başlattığınızda, yazıcı eski yolu izleyecek, baskıdan önce filamenti " -"kalibre edecektir; Çok renkli/malzemeli bir baskı başlattığınızda, yazıcı " -"her filament değişimi sırasında filament için varsayılan telafi " -"parametresini kullanacaktır ve bu da çoğu durumda iyi bir sonuç verecektir.\n" +"kalibre edecektir; Çok renkli/malzemeli bir baskı başlattığınızda, yazıcı her " +"filament değişimi sırasında filament için varsayılan telafi parametresini " +"kullanacaktır ve bu da çoğu durumda iyi bir sonuç verecektir.\n" "\n" "Yapı plakası üzerinde yetersiz yapışma gibi kalibrasyon sonuçlarını " "güvenilmez hale getirebilecek birkaç durum olduğunu lütfen unutmayın. " @@ -14922,10 +14962,10 @@ msgstr "" msgid "" "Flow Rate Calibration measures the ratio of expected to actual extrusion " "volumes. The default setting works well in Bambu Lab printers and official " -"filaments as they were pre-calibrated and fine-tuned. For a regular " -"filament, you usually won't need to perform a Flow Rate Calibration unless " -"you still see the listed defects after you have done other calibrations. For " -"more details, please check out the wiki article." +"filaments as they were pre-calibrated and fine-tuned. For a regular filament, " +"you usually won't need to perform a Flow Rate Calibration unless you still " +"see the listed defects after you have done other calibrations. For more " +"details, please check out the wiki article." msgstr "" "Akış Hızı Kalibrasyonu, beklenen ekstrüzyon hacimlerinin gerçek ekstrüzyon " "hacimlerine oranını ölçer. Varsayılan ayar, önceden kalibre edilmiş ve ince " @@ -14940,13 +14980,12 @@ msgid "" "directly measuring the calibration patterns. However, please be advised that " "the efficacy and accuracy of this method may be compromised with specific " "types of materials. Particularly, filaments that are transparent or semi-" -"transparent, sparkling-particled, or have a high-reflective finish may not " -"be suitable for this calibration and can produce less-than-desirable " -"results.\n" +"transparent, sparkling-particled, or have a high-reflective finish may not be " +"suitable for this calibration and can produce less-than-desirable results.\n" "\n" -"The calibration results may vary between each calibration or filament. We " -"are still improving the accuracy and compatibility of this calibration " -"through firmware updates over time.\n" +"The calibration results may vary between each calibration or filament. We are " +"still improving the accuracy and compatibility of this calibration through " +"firmware updates over time.\n" "\n" "Caution: Flow Rate Calibration is an advanced process, to be attempted only " "by those who fully understand its purpose and implications. Incorrect usage " @@ -14957,8 +14996,8 @@ msgstr "" "kullanarak kalibrasyon modellerini doğrudan ölçer. Ancak, bu yöntemin " "etkinliğinin ve doğruluğunun belirli malzeme türleriyle tehlikeye " "girebileceğini lütfen unutmayın. Özellikle şeffaf veya yarı şeffaf, parlak " -"parçacıklı veya yüksek yansıtıcı yüzeye sahip filamentler bu kalibrasyon " -"için uygun olmayabilir ve arzu edilenden daha az sonuçlar üretebilir.\n" +"parçacıklı veya yüksek yansıtıcı yüzeye sahip filamentler bu kalibrasyon için " +"uygun olmayabilir ve arzu edilenden daha az sonuçlar üretebilir.\n" "\n" "Kalibrasyon sonuçları her kalibrasyon veya filament arasında farklılık " "gösterebilir. Zaman içinde ürün yazılımı güncellemeleriyle bu kalibrasyonun " @@ -14967,8 +15006,8 @@ msgstr "" "Dikkat: Akış Hızı Kalibrasyonu, yalnızca amacını ve sonuçlarını tam olarak " "anlayan kişiler tarafından denenmesi gereken gelişmiş bir işlemdir. Yanlış " "kullanım, ortalamanın altında baskılara veya yazıcının zarar görmesine neden " -"olabilir. Lütfen işlemi yapmadan önce işlemi dikkatlice okuyup " -"anladığınızdan emin olun." +"olabilir. Lütfen işlemi yapmadan önce işlemi dikkatlice okuyup anladığınızdan " +"emin olun." msgid "When you need Max Volumetric Speed Calibration" msgstr "Maksimum Hacimsel Hız Kalibrasyonuna ihtiyaç duyduğunuzda" @@ -14990,15 +15029,15 @@ msgid "We found the best Flow Dynamics Calibration Factor" msgstr "En iyi Akış Dinamiği Kalibrasyon Faktörünü bulduk" msgid "" -"Part of the calibration failed! You may clean the plate and retry. The " -"failed test result would be dropped." +"Part of the calibration failed! You may clean the plate and retry. The failed " +"test result would be dropped." msgstr "" "Kalibrasyonun bir kısmı başarısız oldu! Plakayı temizleyip tekrar " "deneyebilirsiniz. Başarısız olan test sonucu görmezden gelinir." msgid "" -"*We recommend you to add brand, materia, type, and even humidity level in " -"the Name" +"*We recommend you to add brand, materia, type, and even humidity level in the " +"Name" msgstr "*İsme marka, malzeme, tür ve hatta nem seviyesini eklemenizi öneririz" msgid "Failed" @@ -15587,8 +15626,8 @@ msgid "" "name. Do you want to continue?" msgstr "" "Oluşturduğunuz %s Filament adı zaten mevcut.\n" -"Oluşturmaya devam ederseniz oluşturulan ön ayar tam adıyla " -"görüntülenecektir. Devam etmek istiyor musun?" +"Oluşturmaya devam ederseniz oluşturulan ön ayar tam adıyla görüntülenecektir. " +"Devam etmek istiyor musun?" msgid "Some existing presets have failed to be created, as follows:\n" msgstr "Aşağıdaki gibi bazı mevcut ön ayarlar oluşturulamadı:\n" @@ -15601,8 +15640,8 @@ msgstr "" "Yeniden yazmak ister misin?" 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 ayarları şu şekilde yeniden adlandırırdık: \"Satıcı Türü Seçtiğiniz Seri " @@ -15704,15 +15743,15 @@ msgid "" "You have not yet chosen which printer preset to create based on. Please " "choose the vendor and model of the printer" msgstr "" -"Hangi yazıcı ön ayarının temel alınacağını henüz seçmediniz. Lütfen " -"yazıcının satıcısını ve modelini seçin" +"Hangi yazıcı ön ayarının temel alınacağını henüz seçmediniz. Lütfen yazıcının " +"satıcısını ve modelini seçin" msgid "" "You have entered an illegal input in the printable area section on the first " "page. Please check before creating it." msgstr "" -"İlk sayfadaki yazdırılabilir alan kısmına geçersiz bir giriş yaptınız. " -"Lütfen oluşturmadan önce kontrol edin." +"İlk sayfadaki yazdırılabilir alan kısmına geçersiz bir giriş yaptınız. Lütfen " +"oluşturmadan önce kontrol edin." msgid "The custom printer or model is not inputed, place input." msgstr "Özel yazıcı veya model girilmedi lütfen giriş yapın." @@ -15729,8 +15768,7 @@ msgstr "" "Oluşturduğunuz yazıcı ön ayarının zaten aynı ada sahip bir ön ayarı var. " "Üzerine yazmak istiyor musunuz?\n" "\tEvet: Aynı adı taşıyan yazıcı ön ayarının üzerine yazın; aynı ön ayar adı " -"taşıyan filaman ve proses ön ayarları yeniden oluşturulacak ve aynı ön " -"ayar \n" +"taşıyan filaman ve proses ön ayarları yeniden oluşturulacak ve aynı ön ayar \n" "adı olmayan filament ve işlem ön ayarları rezerve edilecektir.\n" "\tİptal: Ön ayar oluşturmayın, oluşturma arayüzüne dönün." @@ -15776,8 +15814,7 @@ msgstr "" msgid "" "You have not yet selected the printer to replace the nozzle, please choose." -msgstr "" -"Hala nozulu değiştirmek için yazıcı seçmediniz, lütfen bir seçim yapın." +msgstr "Hala nozulu değiştirmek için yazıcı seçmediniz, lütfen bir seçim yapın." msgid "Create Printer Successful" msgstr "Yazıcı Oluşturma Başarılı" @@ -15860,8 +15897,8 @@ msgstr "Dışa aktarma başarılı" #, c-format, boost-format msgid "" -"The '%s' folder already exists in the current directory. Do you want to " -"clear it and rebuild it.\n" +"The '%s' folder already exists in the current directory. Do you want to clear " +"it and rebuild it.\n" "If not, a time suffix will be added, and you can modify the name after " "creation." msgstr "" @@ -15900,8 +15937,8 @@ msgid "" "Only printer names with user printer presets will be displayed, and each " "preset you choose will be exported as a zip." msgstr "" -"Yalnızca kullanıcı yazıcı ön ayarlarına sahip yazıcı adları görüntülenecek " -"ve seçtiğiniz her ön ayar zip olarak dışa aktarılacaktır." +"Yalnızca kullanıcı yazıcı ön ayarlarına sahip yazıcı adları görüntülenecek ve " +"seçtiğiniz her ön ayar zip olarak dışa aktarılacaktır." msgid "" "Only the filament names with user filament presets will be displayed, \n" @@ -15909,13 +15946,13 @@ msgid "" "exported as a zip." msgstr "" "Yalnızca kullanıcı filamenti ön ayarlarına sahip filament adları \n" -"görüntülenecek ve seçtiğiniz her filament adındaki tüm kullanıcı filamenti " -"ön ayarları zip olarak dışa aktarılacaktır." +"görüntülenecek ve seçtiğiniz her filament adındaki tüm kullanıcı filamenti ön " +"ayarları zip olarak dışa aktarılacaktır." msgid "" "Only printer names with changed process presets will be displayed, \n" -"and all user process presets in each printer name you select will be " -"exported as a zip." +"and all user process presets in each printer name you select will be exported " +"as a zip." msgstr "" "Yalnızca işlem ön ayarları değiştirilen yazıcı adları görüntülenecek \n" "ve seçtiğiniz her yazıcı adındaki tüm kullanıcı işlem ön ayarları zip olarak " @@ -15939,8 +15976,8 @@ msgid "Filament presets under this filament" msgstr "Bu filamentin altındaki filament ön ayarları" msgid "" -"Note: If the only preset under this filament is deleted, the filament will " -"be deleted after exiting the dialog." +"Note: If the only preset under this filament is deleted, the filament will be " +"deleted after exiting the dialog." msgstr "" "Not: Bu filamentin altındaki tek ön ayar silinirse, diyalogdan çıkıldıktan " "sonra filament silinecektir." @@ -16058,8 +16095,7 @@ msgstr "Aygıt sekmesinde yazdırma ana bilgisayarı web arayüzünü görüntü msgid "Replace the BambuLab's device tab with print host webui" msgstr "" -"BambuLab’ın aygıt sekmesini yazdırma ana bilgisayarı web arayüzüyle " -"değiştirin" +"BambuLab’ın aygıt sekmesini yazdırma ana bilgisayarı web arayüzüyle değiştirin" msgid "" "HTTPS CA file is optional. It is only needed if you use HTTPS with a self-" @@ -16079,8 +16115,8 @@ msgid "" "On this system, %s uses HTTPS certificates from the system Certificate Store " "or Keychain." msgstr "" -"Bu sistemde %s, sistem Sertifika Deposu veya Anahtar Zincirinden alınan " -"HTTPS sertifikalarını kullanıyor." +"Bu sistemde %s, sistem Sertifika Deposu veya Anahtar Zincirinden alınan HTTPS " +"sertifikalarını kullanıyor." msgid "" "To use a custom CA file, please import your CA file into Certificate Store / " @@ -16230,31 +16266,30 @@ msgstr "" "Hata: \"%2%\"" msgid "" -"It has a small layer height, and results in almost negligible layer lines " -"and high printing quality. It is suitable for most general printing cases." +"It has a small layer height, and results in almost negligible layer lines and " +"high printing quality. It is suitable for most general printing cases." msgstr "" "Küçük bir katman yüksekliğine sahiptir ve neredeyse ihmal edilebilir katman " "çizgileri ve yüksek baskı kalitesi sağlar. Çoğu genel yazdırma durumu için " "uygundur." msgid "" -"Compared with the default profile of a 0.2 mm nozzle, it has lower speeds " -"and acceleration, and the sparse infill pattern is Gyroid. So, it results in " -"much higher printing quality, but a much longer printing time." +"Compared with the default profile of a 0.2 mm nozzle, it has lower speeds and " +"acceleration, and the sparse infill pattern is Gyroid. So, it results in much " +"higher printing quality, but a much longer printing time." msgstr "" "0,2 mm’lik nozülün varsayılan profiliyle karşılaştırıldığında daha düşük hız " -"ve ivmeye sahiptir ve seyrek dolgu deseni Gyroid’dir. Böylece çok daha " -"yüksek baskı kalitesi elde edilir, ancak çok daha uzun baskı süresi elde " -"edilir." +"ve ivmeye sahiptir ve seyrek dolgu deseni Gyroid’dir. Böylece çok daha yüksek " +"baskı kalitesi elde edilir, ancak çok daha uzun baskı süresi elde edilir." msgid "" "Compared with the default profile of a 0.2 mm nozzle, it has a slightly " "bigger layer height, and results in almost negligible layer lines, and " "slightly shorter printing time." msgstr "" -"0,2 mm’lik püskürtme ucunun varsayılan profiliyle karşılaştırıldığında, " -"biraz daha büyük katman yüksekliğine sahiptir ve neredeyse ihmal edilebilir " -"düzeyde katman çizgileri ve biraz daha kısa yazdırma süresi sağlar." +"0,2 mm’lik püskürtme ucunun varsayılan profiliyle karşılaştırıldığında, biraz " +"daha büyük katman yüksekliğine sahiptir ve neredeyse ihmal edilebilir düzeyde " +"katman çizgileri ve biraz daha kısa yazdırma süresi sağlar." msgid "" "Compared with the default profile of a 0.2 mm nozzle, it has a bigger layer " @@ -16292,8 +16327,8 @@ msgid "" "shorter printing time." msgstr "" "Varsayılan 0,2 mm püskürtme ucu profiliyle karşılaştırıldığında, daha küçük " -"katman yüksekliğine sahiptir ve minimum katman çizgileri ve daha yüksek " -"baskı kalitesi sağlar, ancak daha kısa yazdırma süresi sağlar." +"katman yüksekliğine sahiptir ve minimum katman çizgileri ve daha yüksek baskı " +"kalitesi sağlar, ancak daha kısa yazdırma süresi sağlar." msgid "" "Compared with the default profile of a 0.2 mm nozzle, it has a smaller layer " @@ -16344,12 +16379,12 @@ msgstr "" msgid "" "Compared with the default profile of a 0.4 mm nozzle, it has a smaller layer " -"height, and results in less apparent layer lines and higher printing " -"quality, but longer printing time." +"height, and results in less apparent layer lines and higher printing quality, " +"but longer printing time." msgstr "" "0,4 mm’lik püskürtme ucunun varsayılan profiliyle karşılaştırıldığında, daha " -"küçük bir katman yüksekliğine sahiptir ve daha az görünür katman çizgileri " -"ve daha yüksek baskı kalitesi sağlar, ancak daha uzun yazdırma süresi sağlar." +"küçük bir katman yüksekliğine sahiptir ve daha az görünür katman çizgileri ve " +"daha yüksek baskı kalitesi sağlar, ancak daha uzun yazdırma süresi sağlar." msgid "" "Compared with the default profile of a 0.4 mm nozzle, it has a smaller layer " @@ -16387,8 +16422,7 @@ msgstr "" msgid "" "Compared with the default profile of a 0.4 mm nozzle, it has a smaller layer " -"height, and results in almost negligible layer lines and longer printing " -"time." +"height, and results in almost negligible layer lines and longer printing time." msgstr "" "0,4 mm’lik püskürtme ucunun varsayılan profiliyle karşılaştırıldığında, " "katman yüksekliği daha küçüktür ve neredeyse göz ardı edilebilecek düzeyde " @@ -16423,8 +16457,8 @@ msgstr "" msgid "" "Compared with the default profile of a 0.6 mm nozzle, it has a bigger layer " -"height, and results in much more apparent layer lines and much lower " -"printing quality, but shorter printing time in some printing cases." +"height, and results in much more apparent layer lines and much lower printing " +"quality, but shorter printing time in some printing cases." msgstr "" "0,6 mm’lik püskürtme ucunun varsayılan profiliyle karşılaştırıldığında, daha " "büyük bir katman yüksekliğine sahiptir ve çok daha belirgin katman çizgileri " @@ -16443,16 +16477,16 @@ msgstr "" msgid "" "Compared with the default profile of a 0.6 mm nozzle, it has a smaller layer " -"height, and results in less apparent layer lines and higher printing " -"quality, but longer printing time." +"height, and results in less apparent layer lines and higher printing quality, " +"but longer printing time." msgstr "" "0,6 mm’lik püskürtme ucunun varsayılan profiliyle karşılaştırıldığında, daha " -"küçük bir katman yüksekliğine sahiptir ve daha az görünür katman çizgileri " -"ve daha yüksek baskı kalitesi sağlar, ancak daha uzun yazdırma süresi sağlar." +"küçük bir katman yüksekliğine sahiptir ve daha az görünür katman çizgileri ve " +"daha yüksek baskı kalitesi sağlar, ancak daha uzun yazdırma süresi sağlar." msgid "" -"It has a very big layer height, and results in very apparent layer lines, " -"low printing quality and general printing time." +"It has a very big layer height, and results in very apparent layer lines, low " +"printing quality and general printing time." msgstr "" "Çok büyük bir katman yüksekliğine sahiptir ve çok belirgin katman " "çizgilerine, düşük baskı kalitesine ve genel yazdırma süresine neden olur." @@ -16464,8 +16498,8 @@ msgid "" msgstr "" "0,8 mm’lik püskürtme ucunun varsayılan profiliyle karşılaştırıldığında, daha " "büyük bir katman yüksekliğine sahiptir ve çok belirgin katman çizgileri ve " -"çok daha düşük baskı kalitesiyle sonuçlanır, ancak bazı yazdırma " -"durumlarında daha kısa yazdırma süresi sağlar." +"çok daha düşük baskı kalitesiyle sonuçlanır, ancak bazı yazdırma durumlarında " +"daha kısa yazdırma süresi sağlar." msgid "" "Compared with the default profile of a 0.8 mm nozzle, it has a much bigger " @@ -16474,8 +16508,8 @@ msgid "" msgstr "" "0,8 mm’lik püskürtme ucunun varsayılan profiliyle karşılaştırıldığında, çok " "daha büyük bir katman yüksekliğine sahiptir ve son derece belirgin katman " -"çizgileri ve çok daha düşük baskı kalitesiyle sonuçlanır, ancak bazı " -"yazdırma durumlarında çok daha kısa yazdırma süresi sağlar." +"çizgileri ve çok daha düşük baskı kalitesiyle sonuçlanır, ancak bazı yazdırma " +"durumlarında çok daha kısa yazdırma süresi sağlar." msgid "" "Compared with the default profile of a 0.8 mm nozzle, it has a slightly " @@ -16483,10 +16517,10 @@ msgid "" "lines and slightly higher printing quality, but longer printing time in some " "printing cases." msgstr "" -"0,8 mm’lik püskürtme ucunun varsayılan profiliyle karşılaştırıldığında, " -"biraz daha küçük bir katman yüksekliğine sahiptir ve biraz daha az ama yine " -"de görünür katman çizgileri ve biraz daha yüksek baskı kalitesi sağlar, " -"ancak bazı yazdırma durumlarında daha uzun yazdırma süresi sağlar." +"0,8 mm’lik püskürtme ucunun varsayılan profiliyle karşılaştırıldığında, biraz " +"daha küçük bir katman yüksekliğine sahiptir ve biraz daha az ama yine de " +"görünür katman çizgileri ve biraz daha yüksek baskı kalitesi sağlar, ancak " +"bazı yazdırma durumlarında daha uzun yazdırma süresi sağlar." msgid "" "Compared with the default profile of a 0.8 mm nozzle, it has a smaller layer " @@ -16558,8 +16592,7 @@ msgid "" msgstr "" "Sandviç modu\n" "Modelinizde çok dik çıkıntılar yoksa hassasiyeti ve katman tutarlılığını " -"artırmak için sandviç modunu (iç-dış-iç) kullanabileceğinizi biliyor " -"muydunuz?" +"artırmak için sandviç modunu (iç-dış-iç) kullanabileceğinizi biliyor muydunuz?" #: resources/data/hints.ini: [hint:Chamber temperature] msgid "" @@ -16621,14 +16654,14 @@ msgid "" "3D scene operations." msgstr "" "Klavye kısayolları nasıl kullanılır?\n" -"Orca Slicer'ın çok çeşitli klavye kısayolları ve 3B sahne işlemleri " -"sunduğunu biliyor muydunuz?" +"Orca Slicer'ın çok çeşitli klavye kısayolları ve 3B sahne işlemleri sunduğunu " +"biliyor muydunuz?" #: 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?" +"Did you know that Reverse on odd feature can significantly improve the " +"surface quality of your overhangs?" msgstr "" "Tersine çevir\n" "Tersine çevir özelliğinin çıkıntılarınızın yüzey kalitesini önemli " @@ -16651,8 +16684,8 @@ msgid "" "problems on the Windows system?" msgstr "" "Modeli Düzelt\n" -"Windows sisteminde birçok dilimleme sorununu önlemek için bozuk bir 3D " -"modeli düzeltebileceğinizi biliyor muydunuz?" +"Windows sisteminde birçok dilimleme sorununu önlemek için bozuk bir 3D modeli " +"düzeltebileceğinizi biliyor muydunuz?" #: resources/data/hints.ini: [hint:Timelapse] msgid "" @@ -16785,9 +16818,9 @@ msgstr "" #: 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." +"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 "" "Akış hızı için ince ayar\n" "Baskıların daha da iyi görünmesi için akış hızına ince ayar yapılabileceğini " @@ -16821,8 +16854,8 @@ msgstr "" 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." +"makes it easy to place the support material only on the sections of the model " +"that actually need it." msgstr "" "Destek boyama\n" "Desteklerinizin yerini boyayabileceğinizi biliyor muydunuz? Bu özellik, " @@ -16976,8 +17009,8 @@ msgstr "" #~ msgstr "Alt+Fare tekerleği" #~ msgid "" -#~ "Different nozzle diameters and different filament diameters is not " -#~ "allowed when prime tower is enabled." +#~ "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." @@ -16990,11 +17023,10 @@ msgstr "" #~ "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" +#~ "İ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." +#~ 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." @@ -17072,12 +17104,11 @@ msgstr "" #~ "the print start menu, the printer will follow the old way, calibrate the " #~ "filament before the print; When you start a multi color/material print, " #~ "the printer will use the default compensation parameter for the filament " -#~ "during every filament switch which will have a good result in most " -#~ "cases.\n" +#~ "during every filament switch which will have a good result in most cases.\n" #~ "\n" #~ "Please note there are a few cases that will make the calibration result " -#~ "not reliable: using a texture plate to do the calibration; the build " -#~ "plate does not have good adhesion (please wash the build plate or apply " +#~ "not reliable: using a texture plate to do the calibration; the build plate " +#~ "does not have good adhesion (please wash the build plate or apply " #~ "gluestick!) ...You can find more from our wiki.\n" #~ "\n" #~ "The calibration results have about 10 percent jitter in our test, which " @@ -17088,12 +17119,11 @@ msgstr "" #~ "bulabilirsiniz.\n" #~ "\n" #~ "Genellikle kalibrasyon gereksizdir. Yazdırma başlat menüsündeki \"akış " -#~ "dinamiği kalibrasyonu\" seçeneği işaretliyken tek renkli/malzeme " -#~ "baskısını başlattığınızda, yazıcı eski yöntemi izleyecek, yazdırmadan " -#~ "önce filamenti kalibre edecektir; Çok renkli/malzeme baskısını " -#~ "başlattığınızda, yazıcı her filament değişiminde filament için varsayılan " -#~ "dengeleme parametresini kullanacaktır ve bu çoğu durumda iyi bir sonuç " -#~ "verecektir.\n" +#~ "dinamiği kalibrasyonu\" seçeneği işaretliyken tek renkli/malzeme baskısını " +#~ "başlattığınızda, yazıcı eski yöntemi izleyecek, yazdırmadan önce filamenti " +#~ "kalibre edecektir; Çok renkli/malzeme baskısını başlattığınızda, yazıcı " +#~ "her filament değişiminde filament için varsayılan dengeleme parametresini " +#~ "kullanacaktır ve bu çoğu durumda iyi bir sonuç verecektir.\n" #~ "\n" #~ "Kalibrasyon sonucunun güvenilir olmamasına yol açacak birkaç durum " #~ "olduğunu lütfen unutmayın: kalibrasyonu yapmak için doku plakası " @@ -17101,14 +17131,14 @@ msgstr "" #~ "yıkayın veya yapıştırıcı uygulayın!) ...Daha fazlasını wiki'mizden " #~ "bulabilirsiniz.\n" #~ "\n" -#~ "Testimizde kalibrasyon sonuçlarında yaklaşık yüzde 10'luk bir titreşim " -#~ "var ve bu da sonucun her kalibrasyonda tam olarak aynı olmamasına neden " +#~ "Testimizde kalibrasyon sonuçlarında yaklaşık yüzde 10'luk bir titreşim var " +#~ "ve bu da sonucun her kalibrasyonda tam olarak aynı olmamasına neden " #~ "olabilir. Yeni güncellemelerle iyileştirmeler yapmak için hâlâ temel " #~ "nedeni araştırıyoruz." #~ msgid "" -#~ "Only one of the results with the same name will be saved. Are you sure " -#~ "you want to overrides the other results?" +#~ "Only one of the results with the same name will be saved. Are you sure you " +#~ "want to overrides the other results?" #~ msgstr "" #~ "Aynı ada sahip sonuçlardan yalnızca biri kaydedilecektir. Diğer sonuçları " #~ "geçersiz kılmak istediğinizden emin misiniz?" @@ -17116,11 +17146,11 @@ msgstr "" #, c-format, boost-format #~ msgid "" #~ "There is already a historical calibration result with the same name: %s. " -#~ "Only one of the results with the same name is saved. Are you sure you " -#~ "want to overrides the historical result?" +#~ "Only one of the results with the same name is saved. Are you sure you want " +#~ "to overrides the historical result?" #~ msgstr "" -#~ "Aynı ada sahip geçmiş bir kalibrasyon sonucu zaten var: %s. Aynı ada " -#~ "sahip sonuçlardan yalnızca biri kaydedilir. Geçmiş sonucu geçersiz kılmak " +#~ "Aynı ada sahip geçmiş bir kalibrasyon sonucu zaten var: %s. Aynı ada sahip " +#~ "sonuçlardan yalnızca biri kaydedilir. Geçmiş sonucu geçersiz kılmak " #~ "istediğinizden emin misiniz?" #~ msgid "Please find the cornor with perfect degree of extrusion" @@ -17143,11 +17173,11 @@ msgstr "" #~ "Order of wall/infill. When the tickbox is unchecked the walls are printed " #~ "first, which works best in most cases.\n" #~ "\n" -#~ "Printing walls first may help with extreme overhangs as the walls have " -#~ "the neighbouring infill to adhere to. However, the infill will slighly " -#~ "push out the printed walls where it is attached to them, resulting in a " -#~ "worse external surface finish. It can also cause the infill to shine " -#~ "through the external surfaces of the part." +#~ "Printing walls first may help with extreme overhangs as the walls have the " +#~ "neighbouring infill to adhere to. However, the infill will slighly push " +#~ "out the printed walls where it is attached to them, resulting in a worse " +#~ "external surface finish. It can also cause the infill to shine through the " +#~ "external surfaces of the part." #~ msgstr "" #~ "Duvar/dolgu sırası. Onay kutusunun işareti kaldırıldığında ilk olarak " #~ "duvarlar yazdırılır ve bu çoğu durumda en iyi sonucu verir.\n" @@ -17162,9 +17192,9 @@ msgstr "" #~ msgstr "V" #~ msgid "" -#~ "Orca Slicer is based on BambuStudio by Bambulab, which is from " -#~ "PrusaSlicer by Prusa Research. PrusaSlicer is from Slic3r by Alessandro " -#~ "Ranellucci and the RepRap community" +#~ "Orca Slicer is based on BambuStudio by Bambulab, which is from PrusaSlicer " +#~ "by Prusa Research. PrusaSlicer is from Slic3r by Alessandro Ranellucci " +#~ "and the RepRap community" #~ msgstr "" #~ "Orca Slicer, Prusa Research'ün PrusaSlicer'ından Bambulab'ın " #~ "BambuStudio'sunu temel alıyor. PrusaSlicer, Alessandro Ranellucci ve " @@ -17235,16 +17265,15 @@ msgstr "" #~ "değer) korumak ister misiniz?" #~ msgid "" -#~ "You have previously modified your settings and are about to overwrite " -#~ "them with new ones." +#~ "You have previously modified your settings and are about to overwrite them " +#~ "with new ones." #~ msgstr "" -#~ "Ayarlarınızı daha önce değiştirdiniz ve bunların üzerine yenilerini " -#~ "yazmak üzeresiniz." +#~ "Ayarlarınızı daha önce değiştirdiniz ve bunların üzerine yenilerini yazmak " +#~ "üzeresiniz." #~ msgid "" #~ "\n" -#~ "Do you want to keep your current modified settings, or use preset " -#~ "settings?" +#~ "Do you want to keep your current modified settings, or use preset settings?" #~ msgstr "" #~ "\n" #~ "Geçerli değiştirilen ayarlarınızı korumak mı yoksa önceden ayarlanmış " @@ -17264,8 +17293,8 @@ msgstr "" #~ "Choose an AMS slot then press \"Load\" or \"Unload\" button to " #~ "automatically load or unload filiament." #~ msgstr "" -#~ "Filamenti otomatik olarak yüklemek veya çıkarmak için bir AMS yuvası " -#~ "seçin ve ardından \"Yükle\" veya \"Boşalt\" düğmesine basın." +#~ "Filamenti otomatik olarak yüklemek veya çıkarmak için bir AMS yuvası seçin " +#~ "ve ardından \"Yükle\" veya \"Boşalt\" düğmesine basın." #~ msgid "MC" #~ msgstr "MC" @@ -17305,8 +17334,8 @@ msgstr "" #~ "The 3mf file version is in Beta and it is newer than the current Bambu " #~ "Studio version." #~ msgstr "" -#~ "3mf dosya sürümü Beta aşamasındadır ve mevcut Bambu Studio sürümünden " -#~ "daha yenidir." +#~ "3mf dosya sürümü Beta aşamasındadır ve mevcut Bambu Studio sürümünden daha " +#~ "yenidir." #~ msgid "If you would like to try Bambu Studio Beta, you may click to" #~ msgstr "Bambu Studio Beta’yı denemek isterseniz tıklayabilirsiniz." @@ -17333,9 +17362,9 @@ msgstr "" #~ "Green means that AMS humidity is normal, orange represent humidity is " #~ "high, red represent humidity is too high.(Hygrometer: lower the better.)" #~ msgstr "" -#~ "Yeşil, AMS neminin normal olduğunu, turuncu nemin yüksek olduğunu, " -#~ "kırmızı ise nemin çok yüksek olduğunu gösterir.(Higrometre: ne kadar " -#~ "düşükse o kadar iyidir.)" +#~ "Yeşil, AMS neminin normal olduğunu, turuncu nemin yüksek olduğunu, kırmızı " +#~ "ise nemin çok yüksek olduğunu gösterir.(Higrometre: ne kadar düşükse o " +#~ "kadar iyidir.)" #~ msgid "Desiccant status" #~ msgstr "Kurutucu durumu" @@ -17345,14 +17374,14 @@ msgstr "" #~ "inactive. Please change the desiccant.(The bars: higher the better.)" #~ msgstr "" #~ "İki çubuktan daha düşük bir kurutucu durumu, kurutucunun etkin olmadığını " -#~ "gösterir. Lütfen kurutucuyu değiştirin.(Çubuklar: ne kadar yüksek olursa " -#~ "o kadar iyidir.)" +#~ "gösterir. Lütfen kurutucuyu değiştirin.(Çubuklar: ne kadar yüksek olursa o " +#~ "kadar iyidir.)" #~ msgid "" #~ "Note: When the lid is open or the desiccant pack is changed, it can take " #~ "hours or a night to absorb the moisture. Low temperatures also slow down " -#~ "the process. During this time, the indicator may not represent the " -#~ "chamber accurately." +#~ "the process. During this time, the indicator may not represent the chamber " +#~ "accurately." #~ msgstr "" #~ "Not: Kapak açıkken veya kurutucu paketi değiştirildiğinde, nemin emilmesi " #~ "saatler veya bir gece sürebilir. Düşük sıcaklıklar da süreci yavaşlatır. " @@ -17450,14 +17479,14 @@ msgstr "" #~ msgid "" #~ "Please go to filament setting to edit your presets if you need.\n" #~ "Please note that nozzle temperature, hot bed temperature, and maximum " -#~ "volumetric speed have a significant impact on printing quality. Please " -#~ "set them carefully." +#~ "volumetric speed have a significant impact on printing quality. Please set " +#~ "them carefully." #~ msgstr "" -#~ "İhtiyacınız olursa ön ayarlarınızı düzenlemek için lütfen filament " -#~ "ayarına gidin.\n" +#~ "İhtiyacınız olursa ön ayarlarınızı düzenlemek için lütfen filament ayarına " +#~ "gidin.\n" #~ "Lütfen püskürtme ucu sıcaklığının, sıcak yatak sıcaklığının ve maksimum " -#~ "hacimsel hızın yazdırma kalitesi üzerinde önemli bir etkiye sahip " -#~ "olduğunu unutmayın. Lütfen bunları dikkatlice ayarlayın." +#~ "hacimsel hızın yazdırma kalitesi üzerinde önemli bir etkiye sahip olduğunu " +#~ "unutmayın. Lütfen bunları dikkatlice ayarlayın." #~ msgid "Studio Version:" #~ msgstr "Stüdyo Sürümü:" @@ -17502,8 +17531,8 @@ msgstr "" #~ msgstr "Depolama Yüklemesini Test Etme" #~ msgid "" -#~ "The speed setting exceeds the printer's maximum speed " -#~ "(machine_max_speed_x/machine_max_speed_y).\n" +#~ "The speed setting exceeds the printer's maximum speed (machine_max_speed_x/" +#~ "machine_max_speed_y).\n" #~ "Orca will automatically cap the print speed to ensure it doesn't surpass " #~ "the printer's capabilities.\n" #~ "You can adjust the maximum speed setting in your printer's configuration " @@ -17511,8 +17540,8 @@ msgstr "" #~ msgstr "" #~ "Hız ayarı yazıcının maksimum hızını aşıyor (machine_max_speed_x/" #~ "machine_max_speed_y).\n" -#~ "Orca, yazıcının yeteneklerini aşmadığından emin olmak için yazdırma " -#~ "hızını otomatik olarak sınırlayacaktır.\n" +#~ "Orca, yazıcının yeteneklerini aşmadığından emin olmak için yazdırma hızını " +#~ "otomatik olarak sınırlayacaktır.\n" #~ "Daha yüksek hızlar elde etmek için yazıcınızın yapılandırmasındaki " #~ "maksimum hız ayarını yapabilirsiniz." @@ -17538,8 +17567,8 @@ msgstr "" #~ "Add solid infill near sloping surfaces to guarantee the vertical shell " #~ "thickness (top+bottom solid layers)" #~ msgstr "" -#~ "Dikey kabuk kalınlığını garanti etmek için eğimli yüzeylerin yakınına " -#~ "katı dolgu ekleyin (üst + alt katı katmanlar)" +#~ "Dikey kabuk kalınlığını garanti etmek için eğimli yüzeylerin yakınına katı " +#~ "dolgu ekleyin (üst + alt katı katmanlar)" #~ msgid "Further reduce solid infill on walls (beta)" #~ msgstr "Duvarlardaki katı dolguyu daha da azaltın (deneysel)" @@ -17593,19 +17622,19 @@ msgstr "" #~ "are not specified explicitly." #~ msgstr "" #~ "Daha iyi katman soğutması için yavaşlama etkinleştirildiğinde, yazdırma " -#~ "çıkıntıları olduğunda ve özellik hızları açıkça belirtilmediğinde " -#~ "filament için minimum yazdırma hızı." +#~ "çıkıntıları olduğunda ve özellik hızları açıkça belirtilmediğinde filament " +#~ "için minimum yazdırma hızı." #~ msgid "No sparse layers (EXPERIMENTAL)" #~ msgstr "Seyrek katman yok (DENEYSEL)" #~ 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 "" -#~ "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" #~ msgid "The Config can not be loaded." @@ -17620,8 +17649,8 @@ msgstr "" #~ msgstr "wiki" #~ msgid "" -#~ "Relative extrusion is recommended when using \"label_objects\" option." -#~ "Some extruders work better with this option unckecked (absolute extrusion " +#~ "Relative extrusion is recommended when using \"label_objects\" option.Some " +#~ "extruders work better with this option unckecked (absolute extrusion " #~ "mode). Wipe tower is only compatible with relative mode. It is always " #~ "enabled on BambuLab printers. Default is checked" #~ msgstr "" @@ -17751,8 +17780,8 @@ msgstr "" #~ "Bir Parçayı Çıkar\n" #~ "Negatif parça değiştiriciyi kullanarak bir ağı diğerinden " #~ "çıkarabileceğinizi biliyor muydunuz? Bu şekilde örneğin doğrudan Orca " -#~ "Slicer'da kolayca yeniden boyutlandırılabilen delikler " -#~ "oluşturabilirsiniz. Daha fazlasını belgelerde okuyun." +#~ "Slicer'da kolayca yeniden boyutlandırılabilen delikler oluşturabilirsiniz. " +#~ "Daha fazlasını belgelerde okuyun." #~ msgid "Filling bed " #~ msgstr "Yatak doldurma " @@ -17768,8 +17797,7 @@ msgstr "" #~ msgstr "" #~ "Doğrusal desene geçilsin mi?\n" #~ "Evet - otomatik olarak doğrusal desene geçin\n" -#~ "Hayır - yoğunluğu otomatik olarak %100 olmayan varsayılan değere " -#~ "sıfırlayın" +#~ "Hayır - yoğunluğu otomatik olarak %100 olmayan varsayılan değere sıfırlayın" #~ msgid "Please heat the nozzle to above 170 degree before loading filament." #~ msgstr "" @@ -18010,8 +18038,8 @@ msgstr "" #~ "load uptodate process/machine settings from the specified file when using " #~ "uptodate" #~ msgstr "" -#~ "güncellemeyi kullanırken belirtilen dosyadan güncel işlem/" -#~ "yazıcıayarlarını yükle" +#~ "güncellemeyi kullanırken belirtilen dosyadan güncel işlem/yazıcıayarlarını " +#~ "yükle" #~ msgid "Output directory" #~ msgstr "Çıkış dizini" @@ -18058,8 +18086,8 @@ msgstr "" #~ "OrcaSlicer configuration file may be corrupted and is not abled to be " #~ "parsed.Please delete the file and try again." #~ msgstr "" -#~ "OrcaSlicer yapılandırma dosyası bozulmuş olabilir ve ayrıştırılması " -#~ "mümkün olmayabilir. Lütfen dosyayı silin ve tekrar deneyin." +#~ "OrcaSlicer yapılandırma dosyası bozulmuş olabilir ve ayrıştırılması mümkün " +#~ "olmayabilir. Lütfen dosyayı silin ve tekrar deneyin." #~ msgid "Online Models" #~ msgstr "Çevrimiçi Modeller" @@ -18073,8 +18101,8 @@ msgstr "" #~ msgid "" #~ "There are currently no identical spare consumables available, and " #~ "automatic replenishment is currently not possible. \n" -#~ "(Currently supporting automatic supply of consumables with the same " -#~ "brand, material type, and color)" +#~ "(Currently supporting automatic supply of consumables with the same brand, " +#~ "material type, and color)" #~ msgstr "" #~ "Şu anda aynı yedek sarf malzemesi mevcut değildir ve otomatik yenileme şu " #~ "anda mümkün değildir.\n" @@ -18106,8 +18134,7 @@ msgstr "" #~ "daha sıcak olamaz" #~ msgid "Enable this option if machine has auxiliary part cooling fan" -#~ msgstr "" -#~ "Makinede yardımcı parça soğutma fanı varsa bu seçeneği etkinleştirin" +#~ msgstr "Makinede yardımcı parça soğutma fanı varsa bu seçeneği etkinleştirin" #~ msgid "" #~ "This option is enabled if machine support controlling chamber temperature" @@ -18135,8 +18162,7 @@ msgstr "" #~ "katmanları etkilemez" #~ msgid "Empty layers around bottom are replaced by nearest normal layers." -#~ msgstr "" -#~ "Alt kısımdaki boş katmanların yerini en yakın normal katmanlar alır." +#~ msgstr "Alt kısımdaki boş katmanların yerini en yakın normal katmanlar alır." #~ msgid "The model has too many empty layers." #~ msgstr "Modelde çok fazla boş katman var." @@ -18154,9 +18180,8 @@ msgstr "" #~ "Bed temperature when high temperature plate is installed. Value 0 means " #~ "the filament does not support to print on the High Temp Plate" #~ msgstr "" -#~ "Yüksek sıcaklık plakası takıldığında yatak sıcaklığı. 0 değeri, " -#~ "filamentin Yüksek Sıcaklık Plakasına yazdırmayı desteklemediği anlamına " -#~ "gelir" +#~ "Yüksek sıcaklık plakası takıldığında yatak sıcaklığı. 0 değeri, filamentin " +#~ "Yüksek Sıcaklık Plakasına yazdırmayı desteklemediği anlamına gelir" #~ msgid "" #~ "Klipper's max_accel_to_decel will be adjusted to this % of acceleration" @@ -18176,8 +18201,7 @@ msgstr "" #~ msgstr "" #~ "Desteğin stili ve şekli. Normal destek için, desteklerin düzenli bir " #~ "ızgaraya yansıtılması daha sağlam destekler oluşturur (varsayılan), rahat " -#~ "destek kuleleri ise malzemeden tasarruf sağlar ve nesne izlerini " -#~ "azaltır.\n" +#~ "destek kuleleri ise malzemeden tasarruf sağlar ve nesne izlerini azaltır.\n" #~ "Ağaç desteği için, ince stil, dalları daha agresif bir şekilde " #~ "birleştirecek ve çok fazla malzeme tasarrufu sağlayacak (varsayılan), " #~ "hibrit stil ise büyük düz çıkıntılar altında normal desteğe benzer yapı " 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/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/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/ToolOrdering.cpp b/src/libslic3r/GCode/ToolOrdering.cpp index 1f2aa13e7fe..0abeedd58e6 100644 --- a/src/libslic3r/GCode/ToolOrdering.cpp +++ b/src/libslic3r/GCode/ToolOrdering.cpp @@ -325,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()) { @@ -353,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++) { @@ -385,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()) { @@ -409,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 d3a6ac6c845..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 { diff --git a/src/libslic3r/Geometry/Voronoi.cpp b/src/libslic3r/Geometry/Voronoi.cpp index f9ab6a69459..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 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 a6f55a9bfea..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; @@ -2479,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 702214eca5a..dfec7089dc2 100644 --- a/src/libslic3r/Print.cpp +++ b/src/libslic3r/Print.cpp @@ -831,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(); @@ -1401,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; + } + } } } @@ -1441,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) { @@ -1450,7 +1453,7 @@ StringObjectException Print::validate(StringObjectException *warning, Polygons* } } return warning_key; - }; */ + }; std::string warning_key; // check jerk @@ -2463,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"}; } } @@ -2666,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 32d3b563ce1..0d2ba956922 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" }); @@ -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 30b267c1517..8674c1a4ea5 100644 --- a/src/libslic3r/PrintObject.cpp +++ b/src/libslic3r/PrintObject.cpp @@ -680,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, @@ -2951,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() @@ -3670,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/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 f7789d681b0..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); @@ -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 1bc2b55adf1..7f2353a3046 100644 --- a/src/slic3r/GUI/PartPlate.cpp +++ b/src/slic3r/GUI/PartPlate.cpp @@ -1597,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; @@ -1655,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) @@ -1710,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; @@ -2098,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); } @@ -2121,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); @@ -2516,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++ ) { @@ -2535,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; @@ -2586,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++ ) { @@ -2605,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; @@ -3120,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; @@ -4147,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())) @@ -4176,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 @@ -4281,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; @@ -4379,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) { @@ -4429,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]; @@ -4603,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(); @@ -4829,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 @@ -4868,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]; @@ -5429,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; }