diff --git a/localization/i18n/fr/OrcaSlicer_fr.po b/localization/i18n/fr/OrcaSlicer_fr.po index d8b744ddbd..b0118131b7 100644 --- a/localization/i18n/fr/OrcaSlicer_fr.po +++ b/localization/i18n/fr/OrcaSlicer_fr.po @@ -1327,7 +1327,7 @@ msgid "Esc" msgstr "Échap" msgid "Cancel a feature until exit" -msgstr "" +msgstr "Annuler une fonction jusqu’à ce qu’on la quitte" msgid "Measure" msgstr "Mesurer" @@ -1335,16 +1335,18 @@ msgstr "Mesurer" msgid "" "Please confirm explosion ratio = 1,and please select at least one object" msgstr "" +"Veuillez confirmer le rapport d’explosion = 1 et sélectionner au moins un " +"objet." msgid "Please select at least one object." -msgstr "" +msgstr "Veuillez sélectionner au moins un objet." msgid "Edit to scale" msgstr "Modifier à l’échelle" msgctxt "Verb" msgid "Scale all" -msgstr "" +msgstr "Tout mettre à l’échelle" msgid "None" msgstr "Aucun" @@ -1359,40 +1361,47 @@ msgid "Selection" msgstr "Sélection" msgid " (Moving)" -msgstr "" +msgstr " (Déplacement)" msgid "" "Select 2 faces on objects and \n" " make objects assemble together." msgstr "" +"Sélectionner 2 faces sur les objets et \n" +" faire en sorte que les objets s’assemblent." msgid "" "Select 2 points or circles on objects and \n" " specify distance between them." msgstr "" +"Sélectionnez 2 points ou cercles sur des objets et \n" +" spécifier la distance qui les sépare." msgid "Face" -msgstr "" +msgstr "Face" msgid " (Fixed)" -msgstr "" +msgstr " (Fixé)" msgid "Point" -msgstr "" +msgstr "Point" msgid "" "Feature 1 has been reset, \n" "feature 2 has been feature 1" msgstr "" +"La fonction 1 a été réinitialisée, \n" +"la fonction 2 a été la fonction 1" msgid "Warning:please select Plane's feature." -msgstr "" +msgstr "Avertissement : veuillez sélectionner la fonction du plan." msgid "Warning:please select Point's or Circle's feature." msgstr "" +"Avertissement : veuillez sélectionner la fonction du Point ou du Cercle." msgid "Warning:please select two different mesh." -msgstr "" +msgstr "Attention : veuillez sélectionner deux maillages différents." msgid "Copy to clipboard" msgstr "Copier dans le presse-papier" @@ -1410,25 +1419,25 @@ msgid "Distance XYZ" msgstr "Distance XYZ" msgid "Parallel" -msgstr "" +msgstr "Parallèle" msgid "Center coincidence" -msgstr "" +msgstr "Coïncidence du centre" msgid "Featue 1" -msgstr "" +msgstr "Fonction 1" msgid "Reverse rotation" -msgstr "" +msgstr "Inverser la rotation" msgid "Rotate around center:" -msgstr "" +msgstr "Rotation autour du centre :" msgid "Parallel distance:" -msgstr "" +msgstr "Distance parallèle :" msgid "Flip by Face 2" -msgstr "" +msgstr "Retournement par la Face 2" msgid "Ctrl+" msgstr "Ctrl+" @@ -3066,7 +3075,7 @@ msgid "Print with the filament mounted on the back of chassis" msgstr "Impression avec du filament de la bobine externe" msgid "Current AMS humidity" -msgstr "" +msgstr "Humidité actuelle de l’AMS" msgid "" "Please change the desiccant when it is too wet. The indicator may not " @@ -3723,9 +3732,9 @@ 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 "" "La température actuelle du caisson est supérieure à la température de " "sécurité du matériau, ce qui peut entraîner un ramollissement et un bouchage " @@ -5198,7 +5207,7 @@ msgid "The printer has been logged out and cannot connect." msgstr "L’imprimante a été déconnectée et ne peut pas se connecter." msgid "Video Stopped." -msgstr "" +msgstr "Vidéo arrêtée." msgid "LAN Connection Failed (Failed to start liveview)" msgstr "" @@ -5312,6 +5321,9 @@ msgid "" "Please check if the SD card is inserted into the printer.\n" "If it still cannot be read, you can try formatting the SD card." msgstr "" +"Veuillez vérifier si la carte SD est insérée dans l’imprimante.\n" +"Si elle ne peut toujours pas être lue, vous pouvez essayer de formater la " +"carte SD." msgid "LAN Connection Failed (Failed to view sdcard)" msgstr "" @@ -5769,23 +5781,27 @@ msgid "Not for now" msgstr "Pas pour le moment" msgid "Server Exception" -msgstr "" +msgstr "Exception serveur" msgid "" "The server is unable to respond. Please click the link below to check the " "server status." msgstr "" +"Le serveur n’est pas en mesure de répondre. Veuillez cliquer sur le lien ci-" +"dessous pour vérifier l’état du serveur." msgid "" "If the server is in a fault state, you can temporarily use offline printing " "or local network printing." msgstr "" +"Si le serveur est en panne, vous pouvez temporairement utiliser l’impression " +"hors ligne ou l’impression via le réseau local." msgid "How to use LAN only mode" -msgstr "" +msgstr "Comment utiliser le mode LAN uniquement" msgid "Don't show this dialog again" -msgstr "" +msgstr "Ne plus afficher cette boîte de dialogue" msgid "3D Mouse disconnected." msgstr "Souris 3D déconnectée." @@ -6522,6 +6538,8 @@ msgstr "Importer la géométrie uniquement" msgid "" "This option can be changed later in preferences, under 'Load Behaviour'." msgstr "" +"Cette option peut être modifiée ultérieurement dans les préférences, sous " +"« Comportement du chargement »." msgid "Only one G-code file can be opened at the same time." msgstr "Un seul fichier G-code peut être ouvert à la fois." @@ -6992,22 +7010,24 @@ msgid "Associate URLs to OrcaSlicer" msgstr "Associer des URL à OrcaSlicer" msgid "Load All" -msgstr "" +msgstr "Tout charger" msgid "Ask When Relevant" -msgstr "" +msgstr "Demander quand c’est pertinent" msgid "Always Ask" -msgstr "" +msgstr "Toujours demander" msgid "Load Geometry Only" -msgstr "" +msgstr "Charger uniquement la géométrie" msgid "Load Behaviour" -msgstr "" +msgstr "Comportement du chargement" msgid "Should printer/filament/process settings be loaded when opening a .3mf?" msgstr "" +"Les paramètres de l’imprimante/du filament/du processus doivent-ils être " +"chargés lors de l’ouverture d’un fichier .3mf ?" msgid "Maximum recent projects" msgstr "Projets récents maximum" @@ -7598,7 +7618,7 @@ msgid "Bind with Pin Code" msgstr "Relier avec le code pin" msgid "Bind with Access Code" -msgstr "" +msgstr "Relier avec un code d’accès" msgid "Send to Printer SD card" msgstr "Envoyer sur la carte SD de l'imprimante" @@ -7910,9 +7930,9 @@ msgid "" "complications.Please use with the latest printer firmware." msgstr "" "Fonction expérimentale : Rétracter et couper le filament à une plus grande " -"distance lors des changements de filament afin de minimiser " -"l’affleurement.Bien que cela puisse réduire sensiblement l’affleurement, " -"cela peut également augmenter le risque d’obstruction des buses ou d’autres " +"distance lors des changements de filament afin de minimiser l’affleurement." +"Bien que cela puisse réduire sensiblement l’affleurement, cela peut " +"également augmenter le risque d’obstruction des buses ou d’autres " "complications d’impression.Veuillez utiliser le dernier micrologiciel de " "l’imprimante." @@ -7931,70 +7951,78 @@ msgid "" "A copy of the current system preset will be created, which will be detached " "from the system preset." msgstr "" +"Une copie du préréglage actuel du système est créée et détachée du " +"préréglage du système." msgid "" "The current custom preset will be detached from the parent system preset." msgstr "" +"Le préréglage personnalisé actuel sera détaché du préréglage du système " +"parent." msgid "Modifications to the current profile will be saved." -msgstr "" +msgstr "Les modifications apportées au profil actuel sont enregistrées." msgid "" "This action is not revertible.\n" "Do you want to proceed?" msgstr "" +"Cette action n’est pas réversible.\n" +"Voulez-vous continuer ?" msgid "Detach preset" -msgstr "" +msgstr "Détacher la présélection" msgid "This is a default preset." -msgstr "" +msgstr "Il s’agit d’un préréglage par défaut." msgid "This is a system preset." -msgstr "" +msgstr "Il s’agit d’un préréglage du système." msgid "Current preset is inherited from the default preset." -msgstr "" +msgstr "Le préréglage actuel est hérité du préréglage par défaut." msgid "Current preset is inherited from" -msgstr "" +msgstr "Le préréglage actuel est hérité de" msgid "It can't be deleted or modified." -msgstr "" +msgstr "Il ne peut être ni supprimé ni modifié." msgid "" "Any modifications should be saved as a new preset inherited from this one." msgstr "" +"Toute modification doit être enregistrée sous la forme d’un nouveau " +"préréglage hérité de celui-ci." msgid "To do that please specify a new name for the preset." -msgstr "" +msgstr "Pour ce faire, veuillez spécifier un nouveau nom pour le préréglage." msgid "Additional information:" -msgstr "" +msgstr "Informations complémentaires :" msgid "vendor" -msgstr "" +msgstr "vendeur" msgid "printer model" -msgstr "" +msgstr "modèle d’imprimante" msgid "default print profile" -msgstr "" +msgstr "profil d’impression par défaut" msgid "default filament profile" -msgstr "" +msgstr "profil de filament par défaut" msgid "default SLA material profile" -msgstr "" +msgstr "profil de matériau SLA par défaut" msgid "default SLA print profile" -msgstr "" +msgstr "profil d’impression SLA par défaut" msgid "full profile name" -msgstr "" +msgstr "nom complet du profil" msgid "symbolic profile name" -msgstr "" +msgstr "nom symbolique du profil" msgid "Line width" msgstr "Largeur de ligne" @@ -8094,10 +8122,10 @@ msgid "Notes" msgstr "Notes" msgid "Dependencies" -msgstr "" +msgstr "Dépendances" msgid "Profile dependencies" -msgstr "" +msgstr "Dépendances du profil" msgid "Frequent" msgstr "Fréquent" @@ -8156,12 +8184,15 @@ msgid "Nozzle temperature when printing" msgstr "Température de la buse lors de l'impression" msgid "Cool Plate (SuperTack)" -msgstr "" +msgstr "Cool Plate (SuperTack)" msgid "" "Bed temperature when cool plate is installed. Value 0 means the filament " "does not support to print on the Cool Plate SuperTack" msgstr "" +"Température du plateau lorsque la Cool Plate est installée. La valeur 0 " +"signifie que le filament ne peut pas être imprimé sur la Cool Plate " +"SuperTack." msgid "Cool Plate" msgstr "Cool Plate/Plaque PLA" @@ -8402,7 +8433,7 @@ msgid "Layer height limits" msgstr "Limites de hauteur de couche" msgid "Z-Hop" -msgstr "" +msgstr "Saut en Z" msgid "Retraction when switching material" msgstr "Rétraction lors du changement de matériau" @@ -9254,21 +9285,27 @@ msgid "Confirm and Update Nozzle" msgstr "Confirmation et mise à jour de la buse" msgid "Connect the printer using IP and access code" -msgstr "" +msgstr "Connecter l’imprimante en utilisant l’IP et le code d’accès" msgid "" "Step 1. Please confirm Orca Slicer and your printer are in the same LAN." msgstr "" +"Étape 1. Veuillez confirmer qu’Orca Slicer et votre imprimante se trouvent " +"sur le même réseau local." msgid "" "Step 2. If the IP and Access Code below are different from the actual values " "on your printer, please correct them." msgstr "" +"Etape 2. Si l’IP et le code d’accès ci-dessous sont différents des valeurs " +"réelles de votre imprimante, veuillez les corriger." msgid "" "Step 3. Please obtain the device SN from the printer side; it is usually " "found in the device information on the printer screen." msgstr "" +"Étape 3. Veuillez obtenir le SN de l’imprimante ; il se trouve généralement " +"dans les informations relatives à l’appareil sur l’écran de l’imprimante." msgid "IP" msgstr "IP" @@ -9277,37 +9314,38 @@ msgid "Access Code" msgstr "Code d'Accès" msgid "Printer model" -msgstr "" +msgstr "Modèle d’imprimante" msgid "Printer name" -msgstr "" +msgstr "Nom de l’imprimante" msgid "Where to find your printer's IP and Access Code?" msgstr "Où trouver l'adresse IP et le code d'accès de votre imprimante ?" msgid "Connect" -msgstr "" +msgstr "Se connecter" msgid "Manual Setup" -msgstr "" +msgstr "Configuration manuelle" msgid "connecting..." -msgstr "" +msgstr "connexion…" msgid "Failed to connect to printer." -msgstr "" +msgstr "Échec de la connexion à l’imprimante." msgid "Failed to publish login request." -msgstr "" +msgstr "Échec de la publication de la demande de connexion." msgid "The printer has already been bound." -msgstr "" +msgstr "L’imprimante a déjà été reliée." msgid "The printer mode is incorrect, please switch to LAN Only." msgstr "" +"Le mode d’impression est incorrect, veuillez passer en mode LAN uniquement." msgid "Connecting to printer... The dialog will close later" -msgstr "" +msgstr "Connexion à l’imprimante… La boîte de dialogue se fermera plus tard" msgid "Connection failed, please double check IP and Access Code" msgstr "La connexion a échoué, veuillez vérifier l’IP et le code d’accès." @@ -10191,6 +10229,8 @@ msgid "" "Bed temperature of the initial layer. Value 0 means the filament does not " "support to print on the Cool Plate SuperTack" msgstr "" +"Température du plateau de la couche initiale. La valeur 0 signifie que le " +"filament n’est pas compatible avec l’impression sur la Cool Plate SuperTack." msgid "" "Bed temperature of the initial layer. Value 0 means the filament does not " @@ -10362,7 +10402,7 @@ msgid "Nowhere" msgstr "Nulle part" msgid "Force cooling for overhangs and bridges" -msgstr "" +msgstr "Refroidissement forcé pour les surplombs et les ponts" msgid "" "Enable this option to allow adjustment of the part cooling fan speed for " @@ -10370,9 +10410,14 @@ msgid "" "speed specifically for these features can improve overall print quality and " "reduce warping." msgstr "" +"Activez cette option pour permettre le réglage de la vitesse du ventilateur " +"de refroidissement de la pièce pour les surplombs, les ponts internes et " +"externes. Le réglage de la vitesse du ventilateur en fonction de ces " +"caractéristiques peut améliorer la qualité globale de l’impression et " +"réduire le gauchissement." msgid "Overhangs and external bridges fan speed" -msgstr "" +msgstr "Vitesse du ventilateur pour les ponts extérieurs et les surplombs" msgid "" "Use this part cooling fan speed when printing bridges or overhang walls with " @@ -10385,11 +10430,21 @@ msgid "" "speed threshold set above. It is also adjusted upwards up to the maximum fan " "speed threshold when the minimum layer time threshold is not met." msgstr "" +"Utilisez cette vitesse du ventilateur de refroidissement de la pièce lorsque " +"vous imprimez des ponts ou des parois en surplomb dont le seuil de surplomb " +"dépasse la valeur définie dans le paramètre ‘Seuil de refroidissement des " +"surplombs’ ci-dessus. L’augmentation du refroidissement spécifiquement pour " +"les surplombs et les ponts peut améliorer la qualité d’impression globale de " +"ces éléments.\n" +"\n" +"Veuillez noter que cette vitesse de ventilateur est limitée à l’extrémité " +"inférieure par le seuil minimum de vitesse de ventilateur défini ci-dessus. " +"Elle est également ajustée à la hausse jusqu’au seuil de vitesse maximale du " +"ventilateur lorsque le seuil de temps de couche minimal n’est pas atteint." msgid "Overhang cooling activation threshold" -msgstr "" +msgstr "Seuil d’activation du refroidissement en surplomb" -#, c-format, boost-format msgid "" "When the overhang exceeds this specified threshold, force the cooling fan to " "run at the 'Overhang Fan Speed' set below. This threshold is expressed as a " @@ -10397,9 +10452,16 @@ msgid "" "by the layer beneath it. Setting this value to 0% forces the cooling fan to " "run for all outer walls, regardless of the overhang degree." msgstr "" +"Lorsque le dépassement dépasse le seuil spécifié, le ventilateur de " +"refroidissement est forcé de fonctionner à la « vitesse du ventilateur de " +"dépassement » définie ci-dessous. Ce seuil est exprimé en pourcentage, " +"indiquant la portion de la largeur de chaque ligne qui n’est pas supportée " +"par la couche située en dessous. En réglant cette valeur sur 0%, on force le " +"ventilateur de refroidissement à fonctionner pour toutes les parois en " +"surplomb, quel que soit le degré de surplomb." msgid "External bridge infill direction" -msgstr "" +msgstr "Direction du remplissage du pont extérieur" msgid "" "Bridging angle override. If left to zero, the bridging angle will be " @@ -10411,7 +10473,7 @@ msgstr "" "externes. Utilisez 180° pour un angle nul." msgid "Internal bridge infill direction" -msgstr "" +msgstr "Direction du remplissage du pont interne" msgid "" "Internal bridging angle override. If left to zero, the bridging angle will " @@ -10421,9 +10483,15 @@ msgid "" "It is recommended to leave it at 0 unless there is a specific model need not " "to." msgstr "" +"Priorité à l’angle de pont interne. S’il est laissé à zéro, l’angle de " +"pontage sera calculé automatiquement. Dans le cas contraire, l’angle fourni " +"sera utilisé pour les ponts internes. Utiliser 180° pour l’angle zéro.\n" +"\n" +"Il est recommandé de le laisser à 0, à moins qu’un modèle spécifique impose " +"de ne pas le faire." msgid "External bridge density" -msgstr "" +msgstr "Densité du pont externe" msgid "" "Controls the density (spacing) of external bridge lines. 100% means solid " @@ -10433,9 +10501,15 @@ msgid "" "space for air to circulate around the extruded bridge, improving its cooling " "speed." msgstr "" +"Contrôle la densité (l’espacement) des lignes de pont externes. 100 % " +"signifie que le pont est plein. La valeur par défaut est 100%.\n" +"\n" +"Des ponts externes moins denses peuvent contribuer à améliorer la fiabilité, " +"car l’air a plus de place pour circuler autour du pont extrudé, ce qui " +"améliore sa vitesse de refroidissement." msgid "Internal bridge density" -msgstr "" +msgstr "Densité du pont interne" msgid "" "Controls the density (spacing) of internal bridge lines. 100% means solid " @@ -10449,6 +10523,18 @@ msgid "" "bridge over infill option, further improving internal bridging structure " "before solid infill is extruded." msgstr "" +"Contrôle la densité (l’espacement) des lignes de pont internes. 100 % " +"signifie que le pont est plein. La valeur par défaut est 100%.\n" +"\n" +" Des ponts internes moins denses peuvent contribuer à réduire le gonflement " +"de la surface supérieure et à améliorer la fiabilité des ponts internes, car " +"l’air a plus de place pour circuler autour du pont extrudé, ce qui améliore " +"sa vitesse de refroidissement. \n" +"\n" +"Cette option fonctionne particulièrement bien lorsqu’elle est combinée avec " +"la deuxième option de pont interne sur le remplissage, ce qui permet " +"d’améliorer encore la structure du pont interne avant l’extrusion du " +"remplissage solide." msgid "Bridge flow ratio" msgstr "Débit des ponts" @@ -10847,6 +10933,9 @@ msgid "" "profile. If this expression evaluates to true, this profile is considered " "compatible with the active printer profile." msgstr "" +"Expression booléenne utilisant les valeurs de configuration d’un profil " +"d’imprimante actif. Si cette expression vaut true, ce profil est considéré " +"comme compatible avec le profil d’imprimante actif." msgid "Compatible process profiles" msgstr "Profils de traitement compatibles" @@ -10859,6 +10948,9 @@ msgid "" "profile. If this expression evaluates to true, this profile is considered " "compatible with the active print profile." msgstr "" +"Expression booléenne utilisant les valeurs de configuration d’un profil " +"d’impression actif. Si cette expression vaut true, ce profil est considéré " +"comme compatible avec le profil d’impression actif." msgid "Print sequence, layer by layer or object by object" msgstr "Séquence d'impression, couche par couche ou objet par objet" @@ -10961,7 +11053,7 @@ msgstr "" "support s'ils ne sont pas très longs." msgid "Thick external bridges" -msgstr "" +msgstr "Ponts extérieurs épais" msgid "" "If enabled, bridges are more reliable, can bridge longer distances, but may " @@ -10986,7 +11078,7 @@ msgstr "" "à la désactiver si vous utilisez des buses larges." msgid "Extra bridge layers (beta)" -msgstr "" +msgstr "Couches de pont supplémentaires (beta)" msgid "" "This option enables the generation of an extra bridge layer over internal " @@ -11021,21 +11113,55 @@ msgid "" "4. Apply to all - generates second bridge layers for both internal and " "external-facing bridges\n" msgstr "" +"Cette option permet de générer une couche de bridge supplémentaire sur les " +"bridges internes et/ou externes.\n" +"\n" +"Les couches de pont supplémentaires permettent d'améliorer l'apparence et la " +"fiabilité du pont, car le remplissage solide est mieux supporté. Ceci est " +"particulièrement utile pour les imprimantes rapides, où les vitesses du pont " +"et du remplissage varient considérablement. La couche de pont supplémentaire " +"permet de réduire la formation de bourrelets sur les surfaces supérieures, " +"ainsi que la séparation de la couche de pont externe de ses périmètres " +"environnants.\n" +"\n" +"Il est généralement recommandé de régler ce paramètre au moins sur « Pont " +"externe uniquement », à moins que des problèmes spécifiques ne soient " +"constatés avec le modèle découpé.\n" +"\n" +"Options possibles :\n" +"1. Désactivé - ne génère pas de deuxième couche de pont. Il s'agit de la " +"valeur par défaut, définie à des fins de compatibilité.\n" +"2. Pont externe uniquement - génère des couches de deuxième pont pour les " +"ponts faisant face à l’extérieur uniquement. Veuillez noter que les petits " +"ponts qui sont plus courts ou plus étroits que le nombre de périmètres " +"défini seront ignorés car ils ne bénéficieront pas d’une deuxième couche de " +"pont. Si elle est générée, la deuxième couche de bridge sera extrudée " +"parallèlement à la première couche de bridge afin de renforcer la solidité " +"du bridge.\n" +"3. Pont interne uniquement - génère des couches de deuxième pont pour les " +"ponts internes sur un remplissage peu dense uniquement. Veuillez noter que " +"les ponts internes sont comptabilisés dans le nombre de couches de la coque " +"supérieure de votre modèle. La deuxième couche de pont interne sera extrudée " +"aussi près que possible de la perpendiculaire à la première. Si plusieurs " +"régions d’un même îlot présentent des angles de pont différents, la dernière " +"région de cet îlot sera sélectionnée comme référence d’angle.\n" +"4. Appliquer à tous - génère les deuxièmes couches de bridge pour les " +"bridges internes et externes.\n" msgid "Disabled" msgstr "Désactivé" msgid "External bridge only" -msgstr "" +msgstr "Pont externe uniquement" msgid "Internal bridge only" -msgstr "" +msgstr "Pont interne uniquement" msgid "Apply to all" -msgstr "" +msgstr "Appliquer à tous" msgid "Filter out small internal bridges" -msgstr "" +msgstr "Filtrer les petits ponts internes" msgid "" "This option can help reduce pillowing on top surfaces in heavily slanted or " @@ -11066,6 +11192,36 @@ msgid "" "overhang. This option is useful for heavily slanted top surface models; " "however, in most cases, it creates too many unnecessary bridges." msgstr "" +"Cette option peut aider à réduire le gonflement des surfaces supérieures " +"dans les modèles fortement inclinés ou courbés.\n" +"\n" +"Par défaut, les petits ponts internes sont filtrés et le remplissage solide " +"interne est imprimé directement sur le remplissage peu dense. Cela " +"fonctionne bien dans la plupart des cas, accélérant l'impression sans trop " +"compromettre la qualité de la surface supérieure. \n" +"\n" +"Cependant, dans les modèles fortement inclinés ou courbés, en particulier " +"lorsqu'une densité de remplissage trop faible est utilisée, il peut en " +"résulter un enroulement du remplissage solide non soutenu, ce qui provoque " +"un effet de pilonnage.\n" +"\n" +"L’activation d’un filtrage limité ou l’absence de filtrage entraîne " +"l’impression d’une couche de pont interne sur un remplissage solide interne " +"légèrement non soutenu. Les options ci-dessous contrôlent la sensibilité du " +"filtrage, c’est-à-dire qu’elles contrôlent l’endroit où les ponts internes " +"sont créés.\n" +"\n" +"1. Filtre - active cette option. C’est le comportement par défaut et il " +"fonctionne bien dans la plupart des cas.\n" +"\n" +"2. Filtrage limité - crée des ponts internes sur les surfaces fortement " +"inclinées tout en évitant les ponts inutiles. Cette option fonctionne bien " +"pour la plupart des modèles difficiles.\n" +"\n" +"3. Pas de filtrage - crée des ponts internes sur chaque surplomb interne " +"potentiel. Cette option est utile pour les modèles à surface supérieure " +"fortement inclinée ; cependant, dans la plupart des cas, elle crée trop de " +"ponts inutiles." msgid "Filter" msgstr "Filtrer" @@ -12091,7 +12247,7 @@ msgid "Grid" msgstr "Grille" msgid "2D Lattice" -msgstr "" +msgstr "Treillis 2D" msgid "Line" msgstr "Ligne" @@ -12124,23 +12280,27 @@ msgid "Cross Hatch" msgstr "Quadrillage" msgid "Quarter Cubic" -msgstr "" +msgstr "Quartier Cubique" msgid "Lattice angle 1" -msgstr "" +msgstr "Angle de treillis 1" msgid "" "The angle of the first set of 2D lattice elements in the Z direction. Zero " "is vertical." msgstr "" +"Angle du premier ensemble d’éléments de treillis 2D dans la direction Z. " +"Zéro correspond à la verticale." msgid "Lattice angle 2" -msgstr "" +msgstr "Angle de treillis 2" msgid "" "The angle of the second set of 2D lattice elements in the Z direction. Zero " "is vertical." msgstr "" +"Angle de la deuxième série d’éléments de treillis 2D dans la direction Z. " +"Zéro correspond à la verticale." msgid "Sparse infill anchor length" msgstr "Longueur de l’ancrage de remplissage interne" @@ -12237,8 +12397,8 @@ msgid "mm/s² or %" msgstr "mm/s² or %" msgid "" -"Acceleration of sparse infill. If the value is expressed as a percentage " -"(e.g. 100%), it will be calculated based on the default acceleration." +"Acceleration of sparse infill. If the value is expressed as a percentage (e." +"g. 100%), it will be calculated based on the default acceleration." msgstr "" "Accélération du remplissage interne. Si la valeur est exprimée en " "pourcentage (par exemple 100%), elle sera calculée en fonction de " @@ -12375,9 +12535,16 @@ msgid "" "Set to -1 to disable it.\n" "This setting is overridden by disable_fan_first_layers." msgstr "" +"La vitesse du ventilateur de refroidissement des pièces est appliquée lors " +"de l’impression des interfaces de support. Le réglage de ce paramètre à une " +"vitesse supérieure à la vitesse normale réduit la force de liaison de la " +"couche entre les supports et la pièce supportée, ce qui les rend plus " +"faciles à séparer.\n" +"La valeur -1 permet de désactiver ce paramètre.\n" +"Ce paramètre est remplacé par disable_fan_first_layers." msgid "Internal bridges fan speed" -msgstr "" +msgstr "Vitesse du ventilateur des ponts internes" msgid "" "The part cooling fan speed used for all internal bridges. Set to -1 to use " @@ -12387,6 +12554,14 @@ msgid "" "can help reduce part warping due to excessive cooling applied over a large " "surface for a prolonged period of time." msgstr "" +"Vitesse du ventilateur de refroidissement de la pièce utilisée pour tous les " +"ponts internes. Réglez-la à -1 pour utiliser les paramètres de vitesse du " +"ventilateur de surplomb à la place.\n" +"\n" +"La réduction de la vitesse du ventilateur des ponts internes, par rapport à " +"la vitesse normale du ventilateur, peut aider à réduire le gauchissement des " +"pièces dû à un refroidissement excessif appliqué sur une grande surface " +"pendant une période de temps prolongée." msgid "" "Randomly jitter while printing the wall, so that the surface has a rough " @@ -12431,7 +12606,7 @@ msgid "Whether to apply fuzzy skin on the first layer" msgstr "Application ou non d’une surface irrégulière sur la première couche" msgid "Fuzzy skin noise type" -msgstr "" +msgstr "Type de bruit de surface irrégulière" msgid "" "Noise type to use for fuzzy skin generation.\n" @@ -12443,45 +12618,59 @@ msgid "" "Voronoi: Divides the surface into voronoi cells, and displaces each one by a " "random amount. Creates a patchwork texture." msgstr "" +"Type de bruit à utiliser pour la génération de surfaces irrégulières.\n" +"Classique : Bruit aléatoire uniforme classique.\n" +"Perlin : Bruit de Perlin, qui donne une texture plus cohérente.\n" +"Billow : Similaire au bruit de perlin, mais plus grossier.\n" +"Multifractal strié : Bruit en forme de crête avec des caractéristiques " +"nettes et irrégulières. Crée des textures semblables à des marbres.\n" +"Voronoï : Divise la surface en cellules de Voronoï et déplace chacune " +"d’entre elles de manière aléatoire. Crée une texture en patchwork." msgid "Classic" msgstr "Classique" msgid "Perlin" -msgstr "" +msgstr "Perlin" msgid "Billow" -msgstr "" +msgstr "Billow" msgid "Ridged Multifractal" -msgstr "" +msgstr "Multifractal strié" msgid "Voronoi" -msgstr "" +msgstr "Voronoi" msgid "Fuzzy skin feature size" -msgstr "" +msgstr "Taille des caractéristiques de la surface irrégulière" msgid "" "The base size of the coherent noise features, in mm. Higher values will " "result in larger features." msgstr "" +"Taille de base des caractéristiques de bruit cohérent, en mm. Des valeurs " +"plus élevées se traduiront par des caractéristiques plus grandes." msgid "Fuzzy Skin Noise Octaves" -msgstr "" +msgstr "Octaves de bruits de surface irrégulière" msgid "" "The number of octaves of coherent noise to use. Higher values increase the " "detail of the noise, but also increase computation time." msgstr "" +"Nombre d’octaves de bruit cohérent à utiliser. Des valeurs plus élevées " +"augmentent le niveau de détail du bruit, mais aussi le temps de calcul." msgid "Fuzzy skin noise persistence" -msgstr "" +msgstr "Persistance du bruit de la surface irrégulière" msgid "" "The decay rate for higher octaves of the coherent noise. Lower values will " "result in smoother noise." msgstr "" +"Taux de décroissance des octaves supérieures du bruit cohérent. Des valeurs " +"plus faibles permettent d’obtenir un bruit plus doux." msgid "Filter out tiny gaps" msgstr "Filtrer les petits espaces" @@ -12985,12 +13174,14 @@ msgid "The distance between the lines of ironing" msgstr "La distance entre les lignes de lissage" msgid "Ironing inset" -msgstr "" +msgstr "Encastrement du repassage" msgid "" "The distance to keep from the edges. A value of 0 sets this to half of the " "nozzle diameter" msgstr "" +"Distance à respecter par rapport aux bords. La valeur 0 correspond à la " +"moitié du diamètre de la buse." msgid "Ironing speed" msgstr "Vitesse de lissage" @@ -13270,9 +13461,18 @@ msgid "" "\n" "Allowed values: 0.5-5" msgstr "" +"Une valeur plus faible permet d’obtenir des transitions de taux d’extrusion " +"plus douces. Cependant, cela se traduit par un fichier gcode beaucoup plus " +"volumineux et plus d’instructions à traiter par l’imprimante. \n" +"\n" +"La valeur par défaut de 3 fonctionne bien dans la plupart des cas. Si votre " +"imprimante a des ratés, augmentez cette valeur pour réduire le nombre " +"d’ajustements effectués.\n" +"\n" +"Valeurs autorisées : 0.5-5" msgid "Apply only on external features" -msgstr "" +msgstr "Ne s’applique qu’aux parties extérieures" msgid "" "Applies extrusion rate smoothing only on external perimeters and overhangs. " @@ -13280,6 +13480,11 @@ msgid "" "visible overhangs without impacting the print speed of features that will " "not be visible to the user." msgstr "" +"Applique le lissage de la vitesse d’extrusion uniquement sur les périmètres " +"externes et les surplombs. Cela permet de réduire les artefacts dus à des " +"transitions de vitesse brutales sur les surplombs visibles de l’extérieur, " +"sans affecter la vitesse d’impression des éléments qui ne seront pas " +"visibles par l’utilisateur." msgid "Minimum speed for part cooling fan" msgstr "Vitesse minimale du ventilateur de refroidissement des pièces" @@ -13316,6 +13521,9 @@ msgid "" "minimum layer time defined above when the slowdown for better layer cooling " "is enabled." msgstr "" +"Vitesse d’impression minimale à laquelle l’imprimante ralentit pour " +"maintenir le temps de couche minimal défini ci-dessus lorsque le " +"ralentissement pour un meilleur refroidissement de la couche est activé." msgid "Diameter of nozzle" msgstr "Diamètre de la buse" @@ -13669,7 +13877,7 @@ msgstr "" "changement de filament." msgid "Z-hop height" -msgstr "" +msgstr "Hauteur du saut en Z" msgid "" "Whenever the retraction is done, the nozzle is lifted a little to create " @@ -13703,7 +13911,7 @@ msgstr "" "inférieur à cette valeur." msgid "Z-hop type" -msgstr "" +msgstr "Type de saut en Z" msgid "Z hop type" msgstr "Type de décalage en Z" @@ -14406,18 +14614,21 @@ msgid "" "Normal (manual) or Tree (manual) is selected, only support enforcers are " "generated" msgstr "" +"Les options Normal (auto) et Arbre (auto) sont utilisées pour générer " +"automatiquement des supports. Si l’option Normal (manuel) ou Arbre (manuel) " +"est sélectionnée, seuls les forceurs de supports sont générés." msgid "Normal (auto)" -msgstr "" +msgstr "Normal (auto)" msgid "Tree (auto)" -msgstr "" +msgstr "Arbre (auto)" msgid "Normal (manual)" -msgstr "" +msgstr "Normal (manuel)" msgid "Tree (manual)" -msgstr "" +msgstr "Arbre (manuel)" msgid "Support/object xy distance" msgstr "Distance support/objet xy" @@ -14650,13 +14861,16 @@ msgstr "" "inférieur au seuil." msgid "Threshold overlap" -msgstr "" +msgstr "Chevauchement du seuil" msgid "" "If threshold angle is zero, support will be generated for overhangs whose " "overlap is below the threshold. The smaller this value is, the steeper the " "overhang that can be printed without support." msgstr "" +"Si l’angle seuil est égal à zéro, le support sera généré pour les surplombs " +"dont le chevauchement est inférieur au seuil. Plus cette valeur est petite, " +"plus la pente du surplomb qui peut être imprimé sans support est importante." msgid "Tree support branch angle" msgstr "Angle de branche support arborescent" @@ -15144,9 +15358,9 @@ msgid "Idle temperature" msgstr "Température au repos" msgid "" -"Nozzle temperature when the tool is currently not used in multi-tool " -"setups.This is only used when 'Ooze prevention' is active in Print Settings. " -"Set to 0 to disable." +"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 " @@ -15879,8 +16093,8 @@ msgstr "Support : propagation des branches à la couche %d" msgid "" "Unknown file format. Input file must have .stl, .obj, .amf(.xml) extension." msgstr "" -"Format de fichier inconnu : le fichier d'entrée doit porter " -"l'extension .stl, .obj ou .amf (.xml)." +"Format de fichier inconnu : le fichier d'entrée doit porter l'extension ." +"stl, .obj ou .amf (.xml)." msgid "Loading of a model file failed." msgstr "Le chargement du fichier modèle a échoué." @@ -15890,8 +16104,8 @@ msgstr "Le fichier fourni n'a pas pu être lu car il est vide." msgid "Unknown file format. Input file must have .3mf or .zip.amf extension." msgstr "" -"Format de fichier inconnu : le fichier d'entrée doit porter l'extension " -".3mf, .zip ou .amf." +"Format de fichier inconnu : le fichier d'entrée doit porter " +"l'extension .3mf, .zip ou .amf." msgid "Canceled" msgstr "Annulé" @@ -19700,10 +19914,10 @@ msgstr "" #~ "chargement des données de géométrie uniquement." #~ msgid "" -#~ "Relative extrusion is recommended when using \"label_objects\" " -#~ "option.Some extruders work better with this option unchecked (absolute " -#~ "extrusion mode). Wipe tower is only compatible with relative mode. It is " -#~ "always enabled on BambuLab printers. Default is checked" +#~ "Relative extrusion is recommended when using \"label_objects\" option." +#~ "Some extruders work better with this option unchecked (absolute extrusion " +#~ "mode). Wipe tower is only compatible with relative mode. It is always " +#~ "enabled on BambuLab 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 " @@ -20060,11 +20274,11 @@ msgstr "" #~ msgstr "Niveau de débogage" #~ msgid "" -#~ "Sets debug logging level. 0:fatal, 1:error, 2:warning, 3:info, 4:debug, " -#~ "5:trace\n" +#~ "Sets debug logging level. 0:fatal, 1:error, 2:warning, 3:info, 4:debug, 5:" +#~ "trace\n" #~ msgstr "" -#~ "Définit le niveau de journalisation du débogage. 0 :fatal, 1 :erreur, " -#~ "2 :avertissement, 3 :info, 4 :débogage, 5 :trace\n" +#~ "Définit le niveau de journalisation du débogage. 0 :fatal, 1 :erreur, 2 :" +#~ "avertissement, 3 :info, 4 :débogage, 5 :trace\n" #~ msgid "" #~ "3D Scene Operations\n" diff --git a/localization/i18n/pt_BR/OrcaSlicer_pt_BR.po b/localization/i18n/pt_BR/OrcaSlicer_pt_BR.po index 9c3d7e9142..1eacac3d76 100644 --- a/localization/i18n/pt_BR/OrcaSlicer_pt_BR.po +++ b/localization/i18n/pt_BR/OrcaSlicer_pt_BR.po @@ -4,7 +4,7 @@ msgstr "" "Project-Id-Version: Orca Slicer\n" "Report-Msgid-Bugs-To: \n" "POT-Creation-Date: 2025-02-14 23:42+0800\n" -"PO-Revision-Date: 2025-02-15 15:57-0300\n" +"PO-Revision-Date: 2025-02-16 12:19-0300\n" "Last-Translator: Alexandre Folle de Menezes \n" "Language-Team: Portuguese, Brazilian\n" "Language: pt_BR\n" @@ -1303,7 +1303,7 @@ msgid "Esc" msgstr "Esc" msgid "Cancel a feature until exit" -msgstr "" +msgstr "Cancelar um recurso até sair" msgid "Measure" msgstr "Medir" @@ -1312,14 +1312,14 @@ msgid "Please confirm explosion ratio = 1,and please select at least one object" msgstr "" msgid "Please select at least one object." -msgstr "" +msgstr "Por favor selecione pelo menos um objeto." msgid "Edit to scale" msgstr "Editar para escala" msgctxt "Verb" msgid "Scale all" -msgstr "" +msgstr "Escalar tudo" msgid "None" msgstr "Nenhum" @@ -1334,7 +1334,7 @@ msgid "Selection" msgstr "Seleção" msgid " (Moving)" -msgstr "" +msgstr " (Movendo)" msgid "" "Select 2 faces on objects and \n" @@ -1347,13 +1347,13 @@ msgid "" msgstr "" msgid "Face" -msgstr "" +msgstr "Face" msgid " (Fixed)" -msgstr "" +msgstr " (Fixo)" msgid "Point" -msgstr "" +msgstr "Ponto" msgid "" "Feature 1 has been reset, \n" @@ -1385,25 +1385,25 @@ msgid "Distance XYZ" msgstr "Distância XYZ" msgid "Parallel" -msgstr "" +msgstr "Paralelo" msgid "Center coincidence" -msgstr "" +msgstr "Centralizar coincidência" msgid "Featue 1" -msgstr "" +msgstr "Recurso 1" msgid "Reverse rotation" -msgstr "" +msgstr "Rotação reversa" msgid "Rotate around center:" -msgstr "" +msgstr "Girar ao redor do centro:" msgid "Parallel distance:" -msgstr "" +msgstr "Distância paralela:" msgid "Flip by Face 2" -msgstr "" +msgstr "Virar pela Face 2" msgid "Ctrl+" msgstr "Ctrl+" @@ -2033,7 +2033,7 @@ msgid "Center" msgstr "Centralizar" msgid "Drop" -msgstr "" +msgstr "Descartar" msgid "Edit Process Settings" msgstr "Editar Configurações de Processo" @@ -2882,11 +2882,11 @@ msgstr "Você precisa selecionar o tipo e a cor do material primeiro." #, c-format, boost-format msgid "Please input a valid value (K in %.1f~%.1f)" -msgstr "" +msgstr "Por favor insira um valor válido (K entre %.1f~%.1f)" #, c-format, boost-format msgid "Please input a valid value (K in %.1f~%.1f, N in %.1f~%.1f)" -msgstr "" +msgstr "Por favor insira um valor válido (K entre %.1f~%.1f, N entre %.1f~%.1f)" msgid "Other Color" msgstr "Outra Cor" @@ -3303,11 +3303,11 @@ msgid "Edit multiple printers" msgstr "Editar múltiplas impressoras" msgid "Select connected printers (0/6)" -msgstr "" +msgstr "Selecione impressoras conectadas (0/6)" #, c-format, boost-format msgid "Select Connected Printers (%d/6)" -msgstr "" +msgstr "Selecione Impressoras Conectadas (%d/6)" #, c-format, boost-format msgid "The maximum number of printers that can be selected is %d" @@ -3370,7 +3370,7 @@ msgid "Printing Failed" msgstr "Falha na Impressão" msgid "Printing Pause" -msgstr "" +msgstr "Pausa de Impressão" msgid "Prepare" msgstr "Preparar" @@ -3469,7 +3469,7 @@ msgid "Send Options" msgstr "Opções de envio" msgid "Send to" -msgstr "" +msgstr "Enviar para" msgid "" "printers at the same time.(It depends on how many devices can undergo heating at the " @@ -4775,10 +4775,10 @@ msgid "Clone copies of selections" msgstr "Clonar cópias das seleções" msgid "Duplicate Current Plate" -msgstr "" +msgstr "Duplicar Mesa Atual" msgid "Duplicate the current plate" -msgstr "" +msgstr "Duplica a mesa atual" msgid "Select all" msgstr "Selecionar tudo" @@ -4856,16 +4856,16 @@ msgid "Flow rate test - Pass 2" msgstr "Teste de fluxo - Passo 2" msgid "YOLO (Recommended)" -msgstr "" +msgstr "YOLO (Recomendado)" msgid "Orca YOLO flowrate calibration, 0.01 step" -msgstr "" +msgstr "Calibração de fluxo YOLO Orca, passo de 0.01" msgid "YOLO (perfectionist version)" -msgstr "" +msgstr "YOLO (versão perfeccionista)" msgid "Orca YOLO flowrate calibration, 0.005 step" -msgstr "" +msgstr "Calibração de fluxo YOLO Orca, passo de 0.005" msgid "Flow rate" msgstr "Fluxo" @@ -5066,7 +5066,7 @@ msgid "The printer has been logged out and cannot connect." msgstr "A impressora foi desconectada e não pode se conectar." msgid "Video Stopped." -msgstr "" +msgstr "Vídeo Parado." msgid "LAN Connection Failed (Failed to start liveview)" msgstr "Falha na conexão da LAN (Falha ao iniciar a visualização ao vivo)" @@ -5623,7 +5623,7 @@ msgid "Not for now" msgstr "Não por enquanto" msgid "Server Exception" -msgstr "" +msgstr "Exceção de Servidor" msgid "" "The server is unable to respond. Please click the link below to check the server " @@ -5639,7 +5639,7 @@ msgid "How to use LAN only mode" msgstr "" msgid "Don't show this dialog again" -msgstr "" +msgstr "Não mostrar esse diálogo novamente" msgid "3D Mouse disconnected." msgstr "Mouse 3D desconectado." @@ -5860,7 +5860,7 @@ msgid "View all object's settings" msgstr "Ver todas as configurações do objeto" msgid "Material settings" -msgstr "" +msgstr "Configurações de material" msgid "Remove current plate (if not last one)" msgstr "Remover a mesa atual (se não for a última)" @@ -5881,7 +5881,7 @@ msgid "Edit current plate name" msgstr "Editar nome da mesa atual" msgid "Move plate to the front" -msgstr "" +msgstr "Mover mesa para frente" msgid "Customize current plate" msgstr "Personalizar a mesa atual" @@ -5942,7 +5942,7 @@ msgid "Search plate, object and part." msgstr "Pesquisar mesa, objeto e peça." msgid "Pellets" -msgstr "" +msgstr "Pellets" msgid "No AMS filaments. Please select a printer in 'Device' page to load AMS info." msgstr "" @@ -6555,16 +6555,16 @@ msgid "Choose Download Directory" msgstr "Escolha o Diretório de Download" msgid "Associate" -msgstr "" +msgstr "Associar" msgid "with OrcaSlicer so that Orca can open models from" msgstr "" msgid "Current Association: " -msgstr "" +msgstr "Associação Atual:" msgid "Current Instance" -msgstr "" +msgstr "Instância Atual" msgid "Current Instance Path: " msgstr "" @@ -6777,19 +6777,19 @@ msgid "Associate URLs to OrcaSlicer" msgstr "Associar URLs ao OrcaSlicer" msgid "Load All" -msgstr "" +msgstr "Carregar Tudo" msgid "Ask When Relevant" -msgstr "" +msgstr "Perguntar Quando Relevante" msgid "Always Ask" -msgstr "" +msgstr "Perguntar Sempre" msgid "Load Geometry Only" -msgstr "" +msgstr "Carregar Apenas Geometria" msgid "Load Behaviour" -msgstr "" +msgstr "Carregar Comportamento" msgid "Should printer/filament/process settings be loaded when opening a .3mf?" msgstr "" @@ -7658,68 +7658,72 @@ msgid "" "A copy of the current system preset will be created, which will be detached from the " "system preset." msgstr "" +"Uma cópia do perfil de sistema atual será criada, que será desanexada da perfil de " +"sistema." msgid "The current custom preset will be detached from the parent system preset." -msgstr "" +msgstr "O perfil customizado atual será desanexado do perfil de sistema pai." msgid "Modifications to the current profile will be saved." -msgstr "" +msgstr "Modificações ao perfil atual serão salvas." msgid "" "This action is not revertible.\n" "Do you want to proceed?" msgstr "" +"Esta ação não é reversível.\n" +"Você quer prosseguir?" msgid "Detach preset" -msgstr "" +msgstr "Desanexar perfil" msgid "This is a default preset." -msgstr "" +msgstr "Esse é um perfil padrão." msgid "This is a system preset." -msgstr "" +msgstr "Esse é um perfil do sistema." msgid "Current preset is inherited from the default preset." -msgstr "" +msgstr "Perfil atual é herdado do perfil padrão." msgid "Current preset is inherited from" -msgstr "" +msgstr "Perfil atual é herdado de" msgid "It can't be deleted or modified." -msgstr "" +msgstr "Não pode ser excluído ou modificado." msgid "Any modifications should be saved as a new preset inherited from this one." -msgstr "" +msgstr "Qualquer modificação deve ser salva como um novo perfil herdade deste." msgid "To do that please specify a new name for the preset." -msgstr "" +msgstr "Para fazer isso, por favor especifique um novo nome para o perfil." msgid "Additional information:" -msgstr "" +msgstr "Informação adicional:" msgid "vendor" -msgstr "" +msgstr "fornecedor" msgid "printer model" -msgstr "" +msgstr "modelo de impressora" msgid "default print profile" -msgstr "" +msgstr "perfil de impressora padrão" msgid "default filament profile" -msgstr "" +msgstr "perfil de filamento padrão" msgid "default SLA material profile" -msgstr "" +msgstr "perfil de material SLA padrão" msgid "default SLA print profile" -msgstr "" +msgstr "perfil de impressora SLA padrão" msgid "full profile name" -msgstr "" +msgstr "nome completo do perfil" msgid "symbolic profile name" -msgstr "" +msgstr "nome simbólico do perfil" msgid "Line width" msgstr "Largura da linha" @@ -7818,10 +7822,10 @@ msgid "Notes" msgstr "Notas" msgid "Dependencies" -msgstr "" +msgstr "Dependências" msgid "Profile dependencies" -msgstr "" +msgstr "Dependências de perfil" msgid "Frequent" msgstr "Frequente" @@ -8412,10 +8416,10 @@ msgid "The color count should be in range [%d, %d]." msgstr "" msgid "Recommended " -msgstr "" +msgstr "Recomendado " msgid "Current filament colors:" -msgstr "" +msgstr "Cores de filamento atuais:" msgid "Quick set:" msgstr "" @@ -8427,7 +8431,7 @@ msgid "Approximate color matching." msgstr "" msgid "Append" -msgstr "" +msgstr "Adicionar" msgid "Add consumable extruder after existing extruders." msgstr "" @@ -8436,10 +8440,10 @@ msgid "Reset mapped extruders." msgstr "" msgid "Cluster colors" -msgstr "" +msgstr "Agrupar cores" msgid "Map Filament" -msgstr "" +msgstr "Mapear Filamento" msgid "" "Note:The color has been selected, you can choose OK \n" @@ -8927,22 +8931,22 @@ msgid "Access Code" msgstr "Código de Acesso" msgid "Printer model" -msgstr "" +msgstr "Modelo de impressora" msgid "Printer name" -msgstr "" +msgstr "Nome da impressora" msgid "Where to find your printer's IP and Access Code?" msgstr "Onde encontrar o IP e o Código de Acesso da sua impressora?" msgid "Connect" -msgstr "" +msgstr "Conectar" msgid "Manual Setup" msgstr "" msgid "connecting..." -msgstr "" +msgstr "conectando..." msgid "Failed to connect to printer." msgstr "" @@ -10420,7 +10424,7 @@ msgstr "" "recurso ativado. No entanto, considere desativá-lo se estiver usando bocais grandes." msgid "Extra bridge layers (beta)" -msgstr "" +msgstr "Camadas extra de ponte (beta)" msgid "" "This option enables the generation of an extra bridge layer over internal and/or " @@ -10457,16 +10461,16 @@ msgid "Disabled" msgstr "Desativado" msgid "External bridge only" -msgstr "" +msgstr "Apenas pontes externas" msgid "Internal bridge only" -msgstr "" +msgstr "Apenas pontes internas" msgid "Apply to all" -msgstr "" +msgstr "Aplicar a todos" msgid "Filter out small internal bridges" -msgstr "" +msgstr "Filtrar pontes internas pequenas" msgid "" "This option can help reduce pillowing on top surfaces in heavily slanted or curved " @@ -10496,7 +10500,7 @@ msgid "" msgstr "" msgid "Filter" -msgstr "" +msgstr "Filtro" msgid "Limited filtering" msgstr "Filtragem limitada" @@ -11093,7 +11097,7 @@ msgid "" msgstr "" msgid "Shrinkage (XY)" -msgstr "" +msgstr "Encolhimento (XY)" #, no-c-format, no-boost-format msgid "" @@ -11110,7 +11114,7 @@ msgstr "" "feita após as verificações." msgid "Shrinkage (Z)" -msgstr "" +msgstr "Encolhimento (Z)" #, no-c-format, no-boost-format msgid "" @@ -11608,7 +11612,7 @@ msgstr "" "máxima permitida na camada \"close_fan_the_first_x_layers\" + 1." msgid "layer" -msgstr "" +msgstr "camada" msgid "Support interface fan speed" msgstr "Velocidade do ventilador de interface de suporte" @@ -11689,16 +11693,16 @@ msgid "Classic" msgstr "Clássico" msgid "Perlin" -msgstr "" +msgstr "Perlin" msgid "Billow" -msgstr "" +msgstr "Billow" msgid "Ridged Multifractal" msgstr "" msgid "Voronoi" -msgstr "" +msgstr "Voronoi" msgid "Fuzzy skin feature size" msgstr "" @@ -12689,10 +12693,10 @@ msgstr "" "ambiente." msgid "Printer type" -msgstr "" +msgstr "Tipo de impressora" msgid "Type of the printer" -msgstr "" +msgstr "Tipo da impressora" msgid "Printer notes" msgstr "Notas da impressora" @@ -12701,7 +12705,7 @@ msgid "You can put your notes regarding the printer here." msgstr "Você pode inserir suas observações sobre a impressora aqui." msgid "Printer variant" -msgstr "" +msgstr "Variante da impressora" msgid "Raft contact Z distance" msgstr "Distância (Z) de contato da Jangada" @@ -12810,7 +12814,7 @@ msgstr "" "mudança de filamento" msgid "Z-hop height" -msgstr "" +msgstr "Altura de Z-hop" msgid "" "Whenever the retraction is done, the nozzle is lifted a little to create clearance " @@ -12842,7 +12846,7 @@ msgstr "" "parâmetro: \"Limite inferior do Z hop\" e abaixo deste valor" msgid "Z-hop type" -msgstr "" +msgstr "Tipo de Z-hop" msgid "Z hop type" msgstr "Tipo de Z hop" @@ -13211,16 +13215,18 @@ msgid "Enabled" msgstr "Ativado" msgid "Skirt type" -msgstr "" +msgstr "Tipo de saia" msgid "Combined - single skirt for all objects, Per object - individual object skirt." msgstr "" +"Combinado - saia única para todos os objetos, Por objeto - saias individuais por " +"objeto" msgid "Combined" -msgstr "" +msgstr "Combinado" msgid "Per object" -msgstr "" +msgstr "Por objeto" msgid "Skirt loops" msgstr "Voltas da saia" @@ -15431,7 +15437,7 @@ msgid "PETG" msgstr "PETG" msgid "PCTG" -msgstr "" +msgstr "PCTG" msgid "TPU" msgstr "TPU" @@ -16643,7 +16649,7 @@ msgid "Could not connect to SimplyPrint" msgstr "Não é possível conectar a SimplyPrint" msgid "Internal error" -msgstr "" +msgstr "Erro interno" msgid "Unknown error" msgstr "Erro desconhecido" diff --git a/localization/i18n/zh_TW/OrcaSlicer_zh_TW.po b/localization/i18n/zh_TW/OrcaSlicer_zh_TW.po index 56c79d9dba..12cde969b1 100644 --- a/localization/i18n/zh_TW/OrcaSlicer_zh_TW.po +++ b/localization/i18n/zh_TW/OrcaSlicer_zh_TW.po @@ -2936,7 +2936,7 @@ msgid "Print with the filament mounted on the back of chassis" msgstr "使用機箱背後掛載的線材列印" msgid "Current AMS humidity" -msgstr "" +msgstr "目前 AMS 濕度" msgid "" "Please change the desiccant when it is too wet. The indicator may not " @@ -4906,7 +4906,7 @@ msgid "Synchronization" msgstr "同步" msgid "The device cannot handle more conversations. Please retry later." -msgstr "" +msgstr "該設備無法處理更多對話。請稍後再試。" msgid "Player is malfunctioning. Please reinstall the system player." msgstr "播放器故障。請重新安裝系統播放器。" @@ -4950,7 +4950,7 @@ msgid "The printer has been logged out and cannot connect." msgstr "列印設備已登出,無法連接。" msgid "Video Stopped." -msgstr "" +msgstr "影片已停止。" msgid "LAN Connection Failed (Failed to start liveview)" msgstr "區域網路連接失敗(無法啟動 Liveview)" @@ -5058,7 +5058,7 @@ msgstr "目前韌體不支援瀏覽 SD 卡中的檔案。請更新列印機韌 msgid "" "Please check if the SD card is inserted into the printer.\n" "If it still cannot be read, you can try formatting the SD card." -msgstr "" +msgstr "請確認 SD 卡已正確插入印表機。如果仍無法讀取,請嘗試格式化 SD 卡。" msgid "LAN Connection Failed (Failed to view sdcard)" msgstr "LAN 連線失敗(無法查看 SD 卡)。" @@ -5066,7 +5066,7 @@ msgstr "LAN 連線失敗(無法查看 SD 卡)。" msgid "Browsing file in SD card is not supported in LAN Only Mode." msgstr "在僅 LAN 模式下不支援瀏覽 SD 卡中的檔案。" -#, c-format, boost-format +#, possible-c-format, possible-boost-format msgid "You are going to delete %u file from printer. Are you sure to continue?" msgid_plural "" "You are going to delete %u files from printer. Are you sure to continue?" @@ -5075,7 +5075,7 @@ msgstr[0] "將從列印設備中刪除 %u 個檔案。確定要繼續嗎?" msgid "Delete files" msgstr "刪除檔案" -#, c-format, boost-format +#, possible-c-format, possible-boost-format msgid "Do you want to delete the file '%s' from printer?" msgstr "確定要從列印設備中刪除檔案 '%s' 嗎?" @@ -5487,23 +5487,23 @@ msgid "Not for now" msgstr "現在不要" msgid "Server Exception" -msgstr "" +msgstr "伺服器異常" msgid "" "The server is unable to respond. Please click the link below to check the " "server status." -msgstr "" +msgstr "伺服器沒有回應,請點擊下方連結檢查伺服器狀態。" msgid "" "If the server is in a fault state, you can temporarily use offline printing " "or local network printing." -msgstr "" +msgstr "若伺服器發生故障,可以暫時改用離線列印或本地網路列印。" msgid "How to use LAN only mode" -msgstr "" +msgstr "如何啟用 LAN 模式" msgid "Don't show this dialog again" -msgstr "" +msgstr "不要再顯示此提示" msgid "3D Mouse disconnected." msgstr "3D 滑鼠已中斷連線。" @@ -6183,7 +6183,7 @@ msgstr "僅匯入模型數據" msgid "" "This option can be changed later in preferences, under 'Load Behaviour'." -msgstr "" +msgstr "可以稍後在偏好設定的「載入方式」中變更此選項。" msgid "Only one G-code file can be opened at the same time." msgstr "只能同時打開一個 G-code 檔案。" @@ -6601,22 +6601,22 @@ msgid "Associate URLs to OrcaSlicer" msgstr "將 URL 關聯到 OrcaSlicer" msgid "Load All" -msgstr "" +msgstr "載入全部" msgid "Ask When Relevant" -msgstr "" +msgstr "必要時詢問" msgid "Always Ask" -msgstr "" +msgstr "總是詢問" msgid "Load Geometry Only" -msgstr "" +msgstr "僅載入幾何數據" msgid "Load Behaviour" -msgstr "" +msgstr "載入方式" msgid "Should printer/filament/process settings be loaded when opening a .3mf?" -msgstr "" +msgstr "開啟 .3mf 檔案時,是否需要載入印表機、線材和參數設定?" msgid "Maximum recent projects" msgstr "最近專案項目的最大數量" @@ -7161,7 +7161,7 @@ msgid "Bind with Pin Code" msgstr "Pin碼綁定" msgid "Bind with Access Code" -msgstr "" +msgstr "透過存取碼綁定" msgid "Send to Printer SD card" msgstr "傳送到列印設備的 SD 記憶卡" @@ -8688,21 +8688,21 @@ msgid "Confirm and Update Nozzle" msgstr "確認並更新噴嘴" msgid "Connect the printer using IP and access code" -msgstr "" +msgstr "透過 IP 和存取碼連接列印設備" msgid "" "Step 1. Please confirm Orca Slicer and your printer are in the same LAN." -msgstr "" +msgstr "步驟 1. 請確保 Orca Slicer 與列印設備在同一區域網路(LAN)中。" msgid "" "Step 2. If the IP and Access Code below are different from the actual values " "on your printer, please correct them." -msgstr "" +msgstr "步驟 2. 若下方的 IP 和存取碼與印表機上的實際數值不符,請進行修正。" msgid "" "Step 3. Please obtain the device SN from the printer side; it is usually " "found in the device information on the printer screen." -msgstr "" +msgstr "步驟 3. 請從列印設備上取得設備序號(SN),通常可在列印設備螢幕的設備資訊中查看。" msgid "IP" msgstr "IP" @@ -8711,37 +8711,37 @@ msgid "Access Code" msgstr "訪問碼" msgid "Printer model" -msgstr "" +msgstr "列印設備型號" msgid "Printer name" -msgstr "" +msgstr "列印設備名稱" msgid "Where to find your printer's IP and Access Code?" msgstr "在哪裡可以找到列印設備的 IP 和訪問碼?" msgid "Connect" -msgstr "" +msgstr "連線" msgid "Manual Setup" -msgstr "" +msgstr "手動設定" msgid "connecting..." -msgstr "" +msgstr "連線中..." msgid "Failed to connect to printer." -msgstr "" +msgstr "無法連接到列印設備。" msgid "Failed to publish login request." -msgstr "" +msgstr "登入請求發送失敗。" msgid "The printer has already been bound." -msgstr "" +msgstr "此印表機已綁定。" msgid "The printer mode is incorrect, please switch to LAN Only." -msgstr "" +msgstr "列印設備模式錯誤,請切換為 LAN Only 模式。" msgid "Connecting to printer... The dialog will close later" -msgstr "" +msgstr "正在連接印表機… 對話框將在稍後自動關閉。" msgid "Connection failed, please double check IP and Access Code" msgstr "連接失敗,請再次檢查 IP 和存取碼" @@ -9232,9 +9232,9 @@ msgid "" "extruder addressing." msgstr "在 layer_gcode 中發現 \"G92 E0\",它與絕對擠出機尋址不相容。" -#, c-format, boost-format +#, possible-c-format, possible-boost-format msgid "Plate %d: %s does not support filament %s" -msgstr "" +msgstr "平台 %d:%s 不支援線材 %s。" msgid "" "Setting the jerk speed too low could lead to artifacts on curved surfaces" @@ -9638,7 +9638,7 @@ msgid "Nowhere" msgstr "無" msgid "Force cooling for overhangs and bridges" -msgstr "" +msgstr "強制冷卻懸垂與橋接結構" msgid "" "Enable this option to allow adjustment of the part cooling fan speed for " @@ -9646,9 +9646,11 @@ msgid "" "speed specifically for these features can improve overall print quality and " "reduce warping." msgstr "" +"啟用此選項後,可調整零件冷卻風扇的速度,專門針對懸垂結構、內部和外部橋接區域。" +"適當調整風扇速度能提升列印品質並減少變形問題。" msgid "Overhangs and external bridges fan speed" -msgstr "" +msgstr "懸垂與外部橋接區域的冷卻風扇速度" msgid "" "Use this part cooling fan speed when printing bridges or overhang walls with " @@ -9661,21 +9663,28 @@ msgid "" "speed threshold set above. It is also adjusted upwards up to the maximum fan " "speed threshold when the minimum layer time threshold is not met." msgstr "" +"當列印橋接結構或懸垂牆,且其懸垂角度超過「懸垂冷卻閾值」所設定的標準時,將適用此零件冷卻風扇轉速。" +"針對懸垂與橋接部分提高冷卻強度,有助於提升列印品質並減少變形。\n" +"\n" +"請注意,此風扇轉速的最低值受限於「最小風扇轉速」設定。此外,當層列印時間未達「最小層列印時間」閾值時," +"風扇轉速將自動增加,最高可達「最大風扇轉速」設定值。" msgid "Overhang cooling activation threshold" -msgstr "" +msgstr "懸垂冷卻觸發閾值" #, c-format, boost-format msgid "" "When the overhang exceeds this specified threshold, force the cooling fan to " "run at the 'Overhang Fan Speed' set below. This threshold is expressed as a " "percentage, indicating the portion of each line's width that is unsupported " -"by the layer beneath it. Setting this value to 0% forces the cooling fan to " +"by the layer beneath it. Setting this value to 0%% forces the cooling fan to " "run for all outer walls, regardless of the overhang degree." msgstr "" +"當懸垂超過此設定的閾值時,冷卻風扇將強制以「懸垂風扇轉速」運行。該閾值以百分比表示," +"代表每條列印線寬中未受下層支撐的比例。若將此值設為 0%%,則冷卻風扇將對所有外牆啟動,不論懸垂角度大小。" msgid "External bridge infill direction" -msgstr "" +msgstr "外部橋接結構的填充方向" msgid "" "Bridging angle override. If left to zero, the bridging angle will be " @@ -9686,7 +9695,7 @@ msgstr "" "示 0 度。" msgid "Internal bridge infill direction" -msgstr "" +msgstr "內部橋接結構的填充方向" msgid "" "Internal bridging angle override. If left to zero, the bridging angle will " @@ -9696,9 +9705,13 @@ msgid "" "It is recommended to leave it at 0 unless there is a specific model need not " "to." msgstr "" +"內部橋接角度覆蓋設定。若設定為 0,系統將自動計算橋接角度;若輸入特定角度,則內部橋接將依此角度列印。" +"設定 180° 可視為零角度。\n" +"\n" +"建議將此值保持為 0,除非模型有特殊需求需手動調整。" msgid "External bridge density" -msgstr "" +msgstr "外部橋接密度" msgid "" "Controls the density (spacing) of external bridge lines. 100% means solid " @@ -9708,9 +9721,12 @@ msgid "" "space for air to circulate around the extruded bridge, improving its cooling " "speed." msgstr "" +"調整外部橋接線的密度(間距)。100% 代表實心橋接,預設值為 100%。" +"\n" +"降低外部橋接的密度可提升列印穩定性,因為較大的間距讓空氣更容易流通,加速冷卻效果。" msgid "Internal bridge density" -msgstr "" +msgstr "內部橋接密度" msgid "" "Controls the density (spacing) of internal bridge lines. 100% means solid " @@ -9724,6 +9740,12 @@ msgid "" "bridge over infill option, further improving internal bridging structure " "before solid infill is extruded." msgstr "" +"調整內部橋接線的密度(間距)。100% 代表實心橋接,預設值為 100%。\n" +"\n" +"降低內部橋接的密度有助於減少頂部表面的鼓起問題,並提升內部橋接的穩定性,因為較大的間距讓空氣更容易流通," +"加速冷卻效果。\n" +"\n" +"此選項特別適用於「內部橋接覆蓋填充」功能,可進一步優化內部橋接結構,在擠出實心填充前提供更穩固的支撐。" msgid "Bridge flow ratio" msgstr "橋接流量" @@ -9794,7 +9816,7 @@ msgstr "精準外牆尺寸" msgid "" "Improve shell precision by adjusting outer wall spacing. This also improves " "layer consistency." -msgstr "" +msgstr "調整外壁間距以提升外殼精度,同時改善列印層的一致性。" msgid "Only one wall on top surfaces" msgstr "頂面單層牆" @@ -9991,7 +10013,7 @@ msgstr "" "(無論是橋接的一部分還是懸空結構)將使用該列印速度。" msgid "mm/s" -msgstr "" +msgstr "mm/s" msgid "Internal" msgstr "內部" @@ -10069,6 +10091,8 @@ msgid "" "profile. If this expression evaluates to true, this profile is considered " "compatible with the active printer profile." msgstr "" +"使用啟用的列印設備設定值來進行布林運算的表達式。如果此表達式的結果為 true," +"則該設定檔將被視為與當前啟用的印表機設定檔相容。" msgid "Compatible process profiles" msgstr "相容的切片設定" @@ -10081,6 +10105,8 @@ msgid "" "profile. If this expression evaluates to true, this profile is considered " "compatible with the active print profile." msgstr "" +"使用啟用的列印設定檔值來進行布林運算的表達式。如果此表達式的結果為 true," +"則該設定檔將被視為與當前啟用的列印設定檔相容。" msgid "Print sequence, layer by layer or object by object" msgstr "列印順序,逐層列印或者逐件列印" @@ -10172,7 +10198,7 @@ msgstr "" "印" msgid "Thick external bridges" -msgstr "" +msgstr "增厚外部橋接" msgid "" "If enabled, bridges are more reliable, can bridge longer distances, but may " @@ -10194,7 +10220,7 @@ msgstr "" "考慮關閉此選項。" msgid "Extra bridge layers (beta)" -msgstr "" +msgstr "額外橋接層(Beta 版)" msgid "" "This option enables the generation of an extra bridge layer over internal " @@ -10229,21 +10255,38 @@ msgid "" "4. Apply to all - generates second bridge layers for both internal and " "external-facing bridges\n" msgstr "" +"此選項可在內部和/或外部橋接結構上額外生成一層橋接填充。\n" +"\n" +"額外的橋接層能改善橋接區域的外觀與穩定性,提供更佳的實心填充支撐。" +"這對於高速列印機特別有幫助,因為橋接與實心填充的列印速度可能有顯著差異。" +"額外的橋接層還能減少頂部表面的起皺現象,並降低外部橋接層與周圍輪廓分離的風險。\n" +"\n" +"一般建議將此選項設定為「僅外部橋接」,除非特定的切片模型需要其他調整。" +"\n" +"選項說明:\n" +"1. 停用 - 不啟用第二層橋接層(預設值,確保與其他設定相容)。\n" +"2. 僅外部橋接 - 僅對外部橋接區域添加第二層橋接層。請注意,若橋接結構過短或寬度小於設定的輪廓數量," +"則不會生成額外橋接層,因為這樣的結構不會受益於第二層橋接。如果啟用,第二層橋接層將與第一層平行擠出," +"以提升橋接的強度。\n" +"3. 僅內部橋接 - 僅為內部橋接區域(例如稀疏填充上的橋接部分)添加第二層橋接層。請注意," +"內部橋接層會計入模型的頂部外殼層數。第二層內部橋接層的擠出方向會盡可能接近垂直於第一層," +"若同一區域內存在多個橋接角度,則該區域的最後一個部分將作為角度參考。\n" +"4. 應用於所有橋接區域 - 為內部與外部橋接區域都添加第二層橋接層。\n" msgid "Disabled" msgstr "停用" msgid "External bridge only" -msgstr "" +msgstr "僅外部橋接" msgid "Internal bridge only" -msgstr "" +msgstr "僅內部橋接" msgid "Apply to all" -msgstr "" +msgstr "應用於所有橋接區域" msgid "Filter out small internal bridges" -msgstr "" +msgstr "忽略過小的內部橋接" msgid "" "This option can help reduce pillowing on top surfaces in heavily slanted or " @@ -10274,6 +10317,22 @@ msgid "" "overhang. This option is useful for heavily slanted top surface models; " "however, in most cases, it creates too many unnecessary bridges." msgstr "" +"此選項可幫助降低在高度傾斜或曲面模型上的頂部表面起皺問題。\n" +"\n" +"預設情況下,小型內部橋接會被過濾掉,內部實心填充會直接列印在稀疏填充上。這種方式適用於大多數情況," +"能提升列印速度,同時維持合理的頂部表面品質。\n" +"\n" +"然而,在高度傾斜或曲面的模型上,特別是當稀疏填充密度過低時,未受支撐的實心填充可能會翹曲,導致表面起皺。\n" +"\n" +"啟用「有限過濾」或「不過濾」模式,將允許在部分未完全支撐的內部實心填充區域上列印內部橋接層。" +"下列選項可調整過濾的敏感度,決定哪些區域需要生成內部橋接。\n" +"\n" +"選項說明:\n" +"1. 過濾 - 預設選項,能有效過濾小型內部橋接,在大多數情況下效果良好。\n" +"\n" +"2. 有限過濾 - 僅在高度傾斜的表面上建立內部橋接,同時避免生成過多無用的橋接結構,適合處理較複雜的模型。\n" +"\n" +"3. 不過濾 - 在所有可能的內部懸垂區域上建立內部橋接,適用於高度傾斜的頂部表面模型,但通常會產生過多不必要的橋接結構。" msgid "Filter" msgstr "篩選" @@ -11143,7 +11202,7 @@ msgid "Grid" msgstr "網格" msgid "2D Lattice" -msgstr "" +msgstr "2D 網格結構" msgid "Line" msgstr "線" @@ -11176,23 +11235,23 @@ msgid "Cross Hatch" msgstr "交叉填充" msgid "Quarter Cubic" -msgstr "" +msgstr "四分之一立方" msgid "Lattice angle 1" -msgstr "" +msgstr "網格結構角度 1" msgid "" "The angle of the first set of 2D lattice elements in the Z direction. Zero " "is vertical." -msgstr "" +msgstr "Z 軸方向第一組 2D 網格結構的角度,0° 表示垂直方向。" msgid "Lattice angle 2" -msgstr "" +msgstr "網格結構角度 2" msgid "" "The angle of the second set of 2D lattice elements in the Z direction. Zero " "is vertical." -msgstr "" +msgstr "Z 軸方向第二組 2D 網格結構的角度,0° 表示垂直方向。" msgid "Sparse infill anchor length" msgstr "稀疏填充錨線長度" @@ -11395,9 +11454,14 @@ msgid "" "Set to -1 to disable it.\n" "This setting is overridden by disable_fan_first_layers." msgstr "" +"此冷卻風扇速度適用於列印支撐介面時。" +"將此值設為高於正常速度,可減少支撐結構與受支撐零件之間的黏結強度,使拆除支撐更容易。\n" +"若設為 -1,則禁用此功能。\n" +"此設定會被 disable_fan_first_layers 覆寫。" + msgid "Internal bridges fan speed" -msgstr "" +msgstr "內部橋接風扇轉速" msgid "" "The part cooling fan speed used for all internal bridges. Set to -1 to use " @@ -11407,6 +11471,9 @@ msgid "" "can help reduce part warping due to excessive cooling applied over a large " "surface for a prolonged period of time." msgstr "" +"此風扇轉速適用於所有內部橋接。若設為 -1,則改用懸垂風扇速度設定。\n" +"\n" +"適當降低內部橋接的風扇轉速(相較於一般風扇速度),可減少因長時間對大面積區域過度冷卻而導致的零件翹曲。" msgid "" "Randomly jitter while printing the wall, so that the surface has a rough " @@ -11445,7 +11512,7 @@ msgid "Whether to apply fuzzy skin on the first layer" msgstr "是否啟用絨毛表面於第一層" msgid "Fuzzy skin noise type" -msgstr "" +msgstr "模糊表面紋理噪聲類型" msgid "" "Noise type to use for fuzzy skin generation.\n" @@ -11457,45 +11524,51 @@ msgid "" "Voronoi: Divides the surface into voronoi cells, and displaces each one by a " "random amount. Creates a patchwork texture." msgstr "" +"用於產生模糊表面效果的噪聲類型:\n" +"經典(Classic):標準的均勻隨機噪聲。\n" +"柏林(Perlin):提供更平滑且一致的紋理效果。\n" +"波狀(Billow):類似柏林噪聲,但紋理較為團塊狀。\n" +"脊狀多重分形(Ridged Multifractal):帶有尖銳、鋸齒狀特徵的紋理,可產生類似大理石的效果。\n" +"沃羅諾伊(Voronoi):將表面分割成多個區塊,並隨機位移,形成拼貼風格的紋理。" msgid "Classic" msgstr "經典" msgid "Perlin" -msgstr "" +msgstr "柏林" msgid "Billow" -msgstr "" +msgstr "波狀" msgid "Ridged Multifractal" -msgstr "" +msgstr "脊狀多重分形" msgid "Voronoi" -msgstr "" +msgstr "沃羅諾伊" msgid "Fuzzy skin feature size" -msgstr "" +msgstr "模糊表面紋理尺寸" msgid "" "The base size of the coherent noise features, in mm. Higher values will " "result in larger features." -msgstr "" +msgstr "控制模糊紋理的基礎尺寸(單位:毫米)。數值越大,紋理特徵越明顯、範圍越大。" msgid "Fuzzy Skin Noise Octaves" -msgstr "" +msgstr "模糊表面紋理噪聲層級" msgid "" "The number of octaves of coherent noise to use. Higher values increase the " "detail of the noise, but also increase computation time." -msgstr "" +msgstr "設定模糊紋理的噪聲層級數量。較高的值可提升紋理細節,但也會增加運算時間。" msgid "Fuzzy skin noise persistence" -msgstr "" +msgstr "模糊表面紋理噪聲強度衰減係數" msgid "" "The decay rate for higher octaves of the coherent noise. Lower values will " "result in smoother noise." -msgstr "" +msgstr "控制高層級噪聲細節的衰減率。數值越低,紋理會越平滑。" msgid "Filter out tiny gaps" msgstr "忽略微小間隙" @@ -11943,12 +12016,12 @@ msgid "The distance between the lines of ironing" msgstr "熨燙走線的間距" msgid "Ironing inset" -msgstr "" +msgstr "燙平內縮距離" msgid "" "The distance to keep from the edges. A value of 0 sets this to half of the " "nozzle diameter" -msgstr "" +msgstr "與邊緣保持的距離。設定為 0 時,距離將自動設為噴嘴直徑的一半。" msgid "Ironing speed" msgstr "熨燙速度" @@ -12183,9 +12256,14 @@ msgid "" "\n" "Allowed values: 0.5-5" msgstr "" +"較低的設定值能讓擠出速率變化更平滑,但會導致 G-code 檔案變大,並增加印表機的運算負擔。\n" +"\n" +"預設值為 3,適用於大多數情況。如果您的印表機在列印時出現停頓或卡頓,請提高此數值,以減少擠出速率的頻繁調整。\n" +"\n" +"可設定範圍:0.5-5" msgid "Apply only on external features" -msgstr "" +msgstr "僅套用於外部結構" msgid "" "Applies extrusion rate smoothing only on external perimeters and overhangs. " @@ -12193,6 +12271,8 @@ msgid "" "visible overhangs without impacting the print speed of features that will " "not be visible to the user." msgstr "" +"僅在外部輪廓與懸垂部分應用擠出速率平滑處理。" +"這可減少外部可見區域因速度變化過快而產生的瑕疵,而不影響內部結構的列印速度。" msgid "Minimum speed for part cooling fan" msgstr "物件冷卻風扇的最小轉速" @@ -13162,18 +13242,20 @@ msgid "" "Normal (manual) or Tree (manual) is selected, only support enforcers are " "generated" msgstr "" +"選擇「普通 (自動)」或「樹狀 (自動)」時,系統將自動產生支撐結構。若選擇「普通 (自動)」或「樹狀 (自動)」," +"則僅會生成手動設定的支撐區域。" msgid "Normal (auto)" -msgstr "" +msgstr "普通 (自動)" msgid "Tree (auto)" -msgstr "" +msgstr "樹狀 (自動)" msgid "Normal (manual)" -msgstr "" +msgstr "普通 (自動)" msgid "Tree (manual)" -msgstr "" +msgstr "樹狀 (自動)" msgid "Support/object xy distance" msgstr "支撐/模型 XY 間距" @@ -13381,13 +13463,14 @@ msgid "" msgstr "將會為懸空角度低於臨界值的模型表面產生支撐。" msgid "Threshold overlap" -msgstr "" +msgstr "閾值疊加比例" msgid "" "If threshold angle is zero, support will be generated for overhangs whose " "overlap is below the threshold. The smaller this value is, the steeper the " "overhang that can be printed without support." -msgstr "" +msgstr "當閾值角度設為 0 時,系統將為重疊比例低於該閾值的懸垂部分生成支撐。" +"數值越小,代表可以在不使用支撐的情況下列印更陡峭的懸垂結構。" msgid "Tree support branch angle" msgstr "樹狀支撐分支角度" @@ -14114,7 +14197,7 @@ msgid "Extra de-retraction" msgstr "額外返回抽" msgid "Currently planned extra extruder priming after de-retraction." -msgstr "" +msgstr "當前計劃的額外擠出機加料,發生於回抽恢復後。" msgid "Absolute E position" msgstr "絕對擠出值" @@ -14317,7 +14400,7 @@ msgid "Name of the printer preset used for slicing." msgstr "用於切片的列印設備預設名稱。" msgid "Physical printer name" -msgstr "列印設備名稱" +msgstr "列印設備實際名稱" msgid "Name of the physical printer used for slicing." msgstr "用於切片的印表設備名稱。" @@ -15943,7 +16026,7 @@ msgstr "" "HTTP 狀態:%1%\n" "訊息內容:\"%2%\"" -#, boost-format +#, possible-boost-format msgid "" "Parsing of host response failed.\n" "Message body: \"%1%\"\n" diff --git a/resources/profiles/Elegoo.json b/resources/profiles/Elegoo.json index de8197bbb5..5b556c083f 100644 --- a/resources/profiles/Elegoo.json +++ b/resources/profiles/Elegoo.json @@ -1,9 +1,17 @@ { "name": "Elegoo", - "version": "02.02.00.04", + "version": "02.03.00.00", "force_update": "0", "description": "Elegoo configurations", "machine_model_list": [ + { + "name": "Elegoo Centauri Carbon", + "sub_path": "machine/ECC/Elegoo Centauri Carbon.json" + }, + { + "name": "Elegoo Centauri", + "sub_path": "machine/EC/Elegoo Centauri.json" + }, { "name": "Elegoo Neptune", "sub_path": "machine/Elegoo Neptune.json" @@ -62,6 +70,198 @@ } ], "process_list": [ + { + "name": "fdm_process_ecc_common", + "sub_path": "process/ECC/fdm_process_ecc_common.json" + }, + { + "name": "fdm_process_ecc", + "sub_path": "process/ECC/fdm_process_ecc.json" + }, + { + "name": "fdm_process_ecc_02010", + "sub_path": "process/ECC/fdm_process_ecc_02010.json" + }, + { + "name": "fdm_process_ecc_04020", + "sub_path": "process/ECC/fdm_process_ecc_04020.json" + }, + { + "name": "fdm_process_ecc_06030", + "sub_path": "process/ECC/fdm_process_ecc_06030.json" + }, + { + "name": "fdm_process_ecc_08040", + "sub_path": "process/ECC/fdm_process_ecc_08040.json" + }, + { + "name": "0.20mm Standard @Elegoo CC 0.4 nozzle", + "sub_path": "process/ECC/0.20mm Standard @Elegoo CC 0.4 nozzle.json" + }, + { + "name": "0.10mm Standard @Elegoo CC 0.2 nozzle", + "sub_path": "process/ECC/0.10mm Standard @Elegoo CC 0.2 nozzle.json" + }, + { + "name": "0.30mm Standard @Elegoo CC 0.6 nozzle", + "sub_path": "process/ECC/0.30mm Standard @Elegoo CC 0.6 nozzle.json" + }, + { + "name": "0.40mm Standard @Elegoo CC 0.8 nozzle", + "sub_path": "process/ECC/0.40mm Standard @Elegoo CC 0.8 nozzle.json" + }, + { + "name": "0.48mm Draft @Elegoo CC 0.8 nozzle", + "sub_path": "process/ECC/0.48mm Draft @Elegoo CC 0.8 nozzle.json" + }, + { + "name": "0.42mm Extra Draft @Elegoo CC 0.6 nozzle", + "sub_path": "process/ECC/0.42mm Extra Draft @Elegoo CC 0.6 nozzle.json" + }, + { + "name": "0.36mm Draft @Elegoo CC 0.6 nozzle", + "sub_path": "process/ECC/0.36mm Draft @Elegoo CC 0.6 nozzle.json" + }, + { + "name": "0.32mm Optimal @Elegoo CC 0.8 nozzle", + "sub_path": "process/ECC/0.32mm Optimal @Elegoo CC 0.8 nozzle.json" + }, + { + "name": "0.30mm Strength @Elegoo CC 0.6 nozzle", + "sub_path": "process/ECC/0.30mm Strength @Elegoo CC 0.6 nozzle.json" + }, + { + "name": "0.28mm Extra Draft @Elegoo CC 0.4 nozzle", + "sub_path": "process/ECC/0.28mm Extra Draft @Elegoo CC 0.4 nozzle.json" + }, + { + "name": "0.24mm Optimal @Elegoo CC 0.6 nozzle", + "sub_path": "process/ECC/0.24mm Optimal @Elegoo CC 0.6 nozzle.json" + }, + { + "name": "0.24mm Fine @Elegoo CC 0.8 nozzle", + "sub_path": "process/ECC/0.24mm Fine @Elegoo CC 0.8 nozzle.json" + }, + { + "name": "0.24mm Draft @Elegoo CC 0.4 nozzle", + "sub_path": "process/ECC/0.24mm Draft @Elegoo CC 0.4 nozzle.json" + }, + { + "name": "0.20mm Strength @Elegoo CC 0.4 nozzle", + "sub_path": "process/ECC/0.20mm Strength @Elegoo CC 0.4 nozzle.json" + }, + { + "name": "0.18mm Fine @Elegoo CC 0.6 nozzle", + "sub_path": "process/ECC/0.18mm Fine @Elegoo CC 0.6 nozzle.json" + }, + { + "name": "0.16mm Optimal @Elegoo CC 0.4 nozzle", + "sub_path": "process/ECC/0.16mm Optimal @Elegoo CC 0.4 nozzle.json" + }, + { + "name": "0.16mm Extra Fine @Elegoo CC 0.8 nozzle", + "sub_path": "process/ECC/0.16mm Extra Fine @Elegoo CC 0.8 nozzle.json" + }, + { + "name": "0.14mm Extra Draft @Elegoo CC 0.2 nozzle", + "sub_path": "process/ECC/0.14mm Extra Draft @Elegoo CC 0.2 nozzle.json" + }, + { + "name": "0.12mm Fine @Elegoo CC 0.4 nozzle", + "sub_path": "process/ECC/0.12mm Fine @Elegoo CC 0.4 nozzle.json" + }, + { + "name": "0.12mm Draft @Elegoo CC 0.2 nozzle", + "sub_path": "process/ECC/0.12mm Draft @Elegoo CC 0.2 nozzle.json" + }, + { + "name": "0.08mm Optimal @Elegoo CC 0.2 nozzle", + "sub_path": "process/ECC/0.08mm Optimal @Elegoo CC 0.2 nozzle.json" + }, + { + "name": "0.20mm Standard @Elegoo C 0.4 nozzle", + "sub_path": "process/EC/0.20mm Standard @Elegoo C 0.4 nozzle.json" + }, + { + "name": "0.10mm Standard @Elegoo C 0.2 nozzle", + "sub_path": "process/EC/0.10mm Standard @Elegoo C 0.2 nozzle.json" + }, + { + "name": "0.30mm Standard @Elegoo C 0.6 nozzle", + "sub_path": "process/EC/0.30mm Standard @Elegoo C 0.6 nozzle.json" + }, + { + "name": "0.40mm Standard @Elegoo C 0.8 nozzle", + "sub_path": "process/EC/0.40mm Standard @Elegoo C 0.8 nozzle.json" + }, + { + "name": "0.48mm Draft @Elegoo C 0.8 nozzle", + "sub_path": "process/EC/0.48mm Draft @Elegoo C 0.8 nozzle.json" + }, + { + "name": "0.42mm Extra Draft @Elegoo C 0.6 nozzle", + "sub_path": "process/EC/0.42mm Extra Draft @Elegoo C 0.6 nozzle.json" + }, + { + "name": "0.36mm Draft @Elegoo C 0.6 nozzle", + "sub_path": "process/EC/0.36mm Draft @Elegoo C 0.6 nozzle.json" + }, + { + "name": "0.32mm Optimal @Elegoo C 0.8 nozzle", + "sub_path": "process/EC/0.32mm Optimal @Elegoo C 0.8 nozzle.json" + }, + { + "name": "0.30mm Strength @Elegoo C 0.6 nozzle", + "sub_path": "process/EC/0.30mm Strength @Elegoo C 0.6 nozzle.json" + }, + { + "name": "0.28mm Extra Draft @Elegoo C 0.4 nozzle", + "sub_path": "process/EC/0.28mm Extra Draft @Elegoo C 0.4 nozzle.json" + }, + { + "name": "0.24mm Optimal @Elegoo C 0.6 nozzle", + "sub_path": "process/EC/0.24mm Optimal @Elegoo C 0.6 nozzle.json" + }, + { + "name": "0.24mm Fine @Elegoo C 0.8 nozzle", + "sub_path": "process/EC/0.24mm Fine @Elegoo C 0.8 nozzle.json" + }, + { + "name": "0.24mm Draft @Elegoo C 0.4 nozzle", + "sub_path": "process/EC/0.24mm Draft @Elegoo C 0.4 nozzle.json" + }, + { + "name": "0.20mm Strength @Elegoo C 0.4 nozzle", + "sub_path": "process/EC/0.20mm Strength @Elegoo C 0.4 nozzle.json" + }, + { + "name": "0.18mm Fine @Elegoo C 0.6 nozzle", + "sub_path": "process/EC/0.18mm Fine @Elegoo C 0.6 nozzle.json" + }, + { + "name": "0.16mm Optimal @Elegoo C 0.4 nozzle", + "sub_path": "process/EC/0.16mm Optimal @Elegoo C 0.4 nozzle.json" + }, + { + "name": "0.16mm Extra Fine @Elegoo C 0.8 nozzle", + "sub_path": "process/EC/0.16mm Extra Fine @Elegoo C 0.8 nozzle.json" + }, + { + "name": "0.14mm Extra Draft @Elegoo C 0.2 nozzle", + "sub_path": "process/EC/0.14mm Extra Draft @Elegoo C 0.2 nozzle.json" + }, + { + "name": "0.12mm Fine @Elegoo C 0.4 nozzle", + "sub_path": "process/EC/0.12mm Fine @Elegoo C 0.4 nozzle.json" + }, + { + "name": "0.12mm Draft @Elegoo C 0.2 nozzle", + "sub_path": "process/EC/0.12mm Draft @Elegoo C 0.2 nozzle.json" + }, + { + "name": "0.08mm Optimal @Elegoo C 0.2 nozzle", + "sub_path": "process/EC/0.08mm Optimal @Elegoo C 0.2 nozzle.json" + }, { "name": "fdm_process_common", "sub_path": "process/fdm_process_common.json" @@ -775,7 +975,183 @@ "sub_path": "process/0.16mm Optimal @Elegoo Giga 0.4 nozzle.json" } ], - "filament_list": [ + "filament_list": [ + { + "name": "fdm_elegoo_filament_common", + "sub_path": "filament/ELEGOO/fdm_elegoo_filament_common.json" + }, + { + "name": "fdm_elegoo_filament_pla", + "sub_path": "filament/ELEGOO/fdm_elegoo_filament_pla.json" + }, + { + "name": "fdm_elegoo_filament_tpu", + "sub_path": "filament/ELEGOO/fdm_elegoo_filament_tpu.json" + }, + { + "name": "fdm_elegoo_filament_pet", + "sub_path": "filament/ELEGOO/fdm_elegoo_filament_pet.json" + }, + { + "name": "fdm_elegoo_filament_asa", + "sub_path": "filament/ELEGOO/fdm_elegoo_filament_asa.json" + }, + { + "name": "Elegoo TPU 95A @base", + "sub_path": "filament/ELEGOO/Elegoo TPU 95A @base.json" + }, + { + "name": "Elegoo PETG PRO @base", + "sub_path": "filament/ELEGOO/Elegoo PETG PRO @base.json" + }, + { + "name": "Elegoo RAPID PETG @base", + "sub_path": "filament/ELEGOO/Elegoo RAPID PETG @base.json" + }, + { + "name": "Elegoo PLA @base", + "sub_path": "filament/ELEGOO/Elegoo PLA @base.json" + }, + { + "name": "Elegoo RAPID PLA+ @base", + "sub_path": "filament/ELEGOO/Elegoo RAPID PLA+ @base.json" + }, + { + "name": "Elegoo PLA Silk @base", + "sub_path": "filament/ELEGOO/Elegoo PLA Silk @base.json" + }, + { + "name": "Elegoo PLA Matte @base", + "sub_path": "filament/ELEGOO/Elegoo PLA Matte @base.json" + }, + { + "name": "Elegoo PLA-CF @base", + "sub_path": "filament/ELEGOO/Elegoo PLA-CF @base.json" + }, + { + "name": "Elegoo ASA @base", + "sub_path": "filament/ELEGOO/Elegoo ASA @base.json" + }, + { + "name": "Elegoo ASA @0.2 nozzle", + "sub_path": "filament/ELEGOO/Elegoo ASA @0.2 nozzle.json" + }, + { + "name": "Elegoo PETG PRO @0.2 nozzle", + "sub_path": "filament/ELEGOO/Elegoo PETG PRO @0.2 nozzle.json" + }, + { + "name": "Elegoo PLA @0.2 nozzle", + "sub_path": "filament/ELEGOO/Elegoo PLA @0.2 nozzle.json" + }, + { + "name": "Elegoo PLA Matte @0.2 nozzle", + "sub_path": "filament/ELEGOO/Elegoo PLA Matte @0.2 nozzle.json" + }, + { + "name": "Elegoo PLA PRO @0.2 nozzle", + "sub_path": "filament/ELEGOO/Elegoo PLA PRO @0.2 nozzle.json" + }, + { + "name": "Elegoo PLA Silk @0.2 nozzle", + "sub_path": "filament/ELEGOO/Elegoo PLA Silk @0.2 nozzle.json" + }, + { + "name": "Elegoo PLA+ @0.2 nozzle", + "sub_path": "filament/ELEGOO/Elegoo PLA+ @0.2 nozzle.json" + }, + { + "name": "Elegoo RAPID PLA+ @0.2 nozzle", + "sub_path": "filament/ELEGOO/Elegoo RAPID PLA+ @0.2 nozzle.json" + }, + { + "name": "Elegoo RAPID PETG @0.2 nozzle", + "sub_path": "filament/ELEGOO/Elegoo RAPID PETG @0.2 nozzle.json" + }, + { + "name": "Elegoo PLA @ECC", + "sub_path": "filament/ECC/Elegoo PLA @ECC.json" + }, + { + "name": "Elegoo PLA PRO @ECC", + "sub_path": "filament/ECC/Elegoo PLA PRO @ECC.json" + }, + { + "name": "Elegoo PLA+ @ECC", + "sub_path": "filament/ECC/Elegoo PLA+ @ECC.json" + }, + { + "name": "Elegoo RAPID PLA+ @ECC", + "sub_path": "filament/ECC/Elegoo RAPID PLA+ @ECC.json" + }, + { + "name": "Elegoo PLA Silk @ECC", + "sub_path": "filament/ECC/Elegoo PLA Silk @ECC.json" + }, + { + "name": "Elegoo PLA Matte @ECC", + "sub_path": "filament/ECC/Elegoo PLA Matte @ECC.json" + }, + { + "name": "Elegoo PLA-CF @ECC", + "sub_path": "filament/ECC/Elegoo PLA-CF @ECC.json" + }, + { + "name": "Elegoo PETG PRO @ECC", + "sub_path": "filament/ECC/Elegoo PETG PRO @ECC.json" + }, + { + "name": "Elegoo RAPID PETG @ECC", + "sub_path": "filament/ECC/Elegoo RAPID PETG @ECC.json" + }, + { + "name": "Elegoo TPU 95A @ECC", + "sub_path": "filament/ECC/Elegoo TPU 95A @ECC.json" + }, + { + "name": "Elegoo ASA @ECC", + "sub_path": "filament/ECC/Elegoo ASA @ECC.json" + }, + { + "name": "Elegoo PLA @EC", + "sub_path": "filament/EC/Elegoo PLA @EC.json" + }, + { + "name": "Elegoo PLA PRO @EC", + "sub_path": "filament/EC/Elegoo PLA PRO @EC.json" + }, + { + "name": "Elegoo PLA+ @EC", + "sub_path": "filament/EC/Elegoo PLA+ @EC.json" + }, + { + "name": "Elegoo RAPID PLA+ @EC", + "sub_path": "filament/EC/Elegoo RAPID PLA+ @EC.json" + }, + { + "name": "Elegoo PLA Silk @EC", + "sub_path": "filament/EC/Elegoo PLA Silk @EC.json" + }, + { + "name": "Elegoo PLA Matte @EC", + "sub_path": "filament/EC/Elegoo PLA Matte @EC.json" + }, + { + "name": "Elegoo PETG PRO @EC", + "sub_path": "filament/EC/Elegoo PETG PRO @EC.json" + }, + { + "name": "Elegoo RAPID PETG @EC", + "sub_path": "filament/EC/Elegoo RAPID PETG @EC.json" + }, + { + "name": "Elegoo TPU 95A @EC", + "sub_path": "filament/EC/Elegoo TPU 95A @EC.json" + }, + { + "name": "Elegoo ASA @EC", + "sub_path": "filament/EC/Elegoo ASA @EC.json" + }, { "name": "fdm_filament_common", "sub_path": "filament/fdm_filament_common.json" @@ -838,6 +1214,46 @@ } ], "machine_list": [ + { + "name": "fdm_machine_ecc_common", + "sub_path": "machine/ECC/fdm_machine_ecc_common.json" + }, + { + "name": "fdm_machine_ecc", + "sub_path": "machine/ECC/fdm_machine_ecc.json" + }, + { + "name": "Elegoo Centauri Carbon 0.4 nozzle", + "sub_path": "machine/ECC/Elegoo Centauri Carbon 0.4 nozzle.json" + }, + { + "name": "Elegoo Centauri Carbon 0.2 nozzle", + "sub_path": "machine/ECC/Elegoo Centauri Carbon 0.2 nozzle.json" + }, + { + "name": "Elegoo Centauri Carbon 0.6 nozzle", + "sub_path": "machine/ECC/Elegoo Centauri Carbon 0.6 nozzle.json" + }, + { + "name": "Elegoo Centauri Carbon 0.8 nozzle", + "sub_path": "machine/ECC/Elegoo Centauri Carbon 0.8 nozzle.json" + }, + { + "name": "Elegoo Centauri 0.4 nozzle", + "sub_path": "machine/EC/Elegoo Centauri 0.4 nozzle.json" + }, + { + "name": "Elegoo Centauri 0.2 nozzle", + "sub_path": "machine/EC/Elegoo Centauri 0.2 nozzle.json" + }, + { + "name": "Elegoo Centauri 0.6 nozzle", + "sub_path": "machine/EC/Elegoo Centauri 0.6 nozzle.json" + }, + { + "name": "Elegoo Centauri 0.8 nozzle", + "sub_path": "machine/EC/Elegoo Centauri 0.8 nozzle.json" + }, { "name": "fdm_machine_common", "sub_path": "machine/fdm_machine_common.json" @@ -971,4 +1387,4 @@ "sub_path": "machine/Elegoo OrangeStorm Giga 0.8 nozzle.json" } ] -} +} \ No newline at end of file diff --git a/resources/profiles/Elegoo/Elegoo Centauri Carbon_cover.png b/resources/profiles/Elegoo/Elegoo Centauri Carbon_cover.png new file mode 100644 index 0000000000..77e395385c Binary files /dev/null and b/resources/profiles/Elegoo/Elegoo Centauri Carbon_cover.png differ diff --git a/resources/profiles/Elegoo/Elegoo Centauri_cover.png b/resources/profiles/Elegoo/Elegoo Centauri_cover.png new file mode 100644 index 0000000000..db621731ba Binary files /dev/null and b/resources/profiles/Elegoo/Elegoo Centauri_cover.png differ diff --git a/resources/profiles/Elegoo/elegoo_CC_buildplate_model.stl b/resources/profiles/Elegoo/elegoo_CC_buildplate_model.stl new file mode 100644 index 0000000000..16710b68b8 Binary files /dev/null and b/resources/profiles/Elegoo/elegoo_CC_buildplate_model.stl differ diff --git a/resources/profiles/Elegoo/elegoo_C_buildplate_model.stl b/resources/profiles/Elegoo/elegoo_C_buildplate_model.stl new file mode 100644 index 0000000000..16710b68b8 Binary files /dev/null and b/resources/profiles/Elegoo/elegoo_C_buildplate_model.stl differ diff --git a/resources/profiles/Elegoo/filament/EC/Elegoo ASA @EC.json b/resources/profiles/Elegoo/filament/EC/Elegoo ASA @EC.json new file mode 100644 index 0000000000..b1b917a6db --- /dev/null +++ b/resources/profiles/Elegoo/filament/EC/Elegoo ASA @EC.json @@ -0,0 +1,23 @@ +{ + "type": "filament", + "name": "Elegoo ASA @EC", + "inherits": "Elegoo ASA @base", + "from": "system", + "setting_id": "EASAEC", + "instantiation": "true", + "pressure_advance": [ + "0.024" + ], + "nozzle_temperature": [ + "270" + ], + "nozzle_temperature_initial_layer": [ + "270" + ], + "compatible_printers": [ + "Elegoo Centauri 0.4 nozzle", + "Elegoo Centauri 0.6 nozzle", + "Elegoo Centauri 0.8 nozzle" + ] +} + \ No newline at end of file diff --git a/resources/profiles/Elegoo/filament/EC/Elegoo PETG PRO @EC.json b/resources/profiles/Elegoo/filament/EC/Elegoo PETG PRO @EC.json new file mode 100644 index 0000000000..84ffa4264c --- /dev/null +++ b/resources/profiles/Elegoo/filament/EC/Elegoo PETG PRO @EC.json @@ -0,0 +1,16 @@ +{ + "type": "filament", + "name": "Elegoo PETG PRO @EC", + "inherits": "Elegoo PETG PRO @base", + "from": "system", + "setting_id": "EPETGPROEC", + "instantiation": "true", + "pressure_advance": [ + "0.024" + ], + "compatible_printers": [ + "Elegoo Centauri 0.4 nozzle", + "Elegoo Centauri 0.6 nozzle", + "Elegoo Centauri 0.8 nozzle" + ] +} diff --git a/resources/profiles/Elegoo/filament/EC/Elegoo PLA @EC.json b/resources/profiles/Elegoo/filament/EC/Elegoo PLA @EC.json new file mode 100644 index 0000000000..549dfeda68 --- /dev/null +++ b/resources/profiles/Elegoo/filament/EC/Elegoo PLA @EC.json @@ -0,0 +1,31 @@ +{ + "type": "filament", + "name": "Elegoo PLA @EC", + "inherits": "Elegoo PLA @base", + "from": "system", + "setting_id": "EPLAEC", + "instantiation": "true", + "filament_max_volumetric_speed": [ + "21" + ], + "nozzle_temperature_initial_layer": [ + "210" + ], + "nozzle_temperature": [ + "210" + ], + "pressure_advance": [ + "0.024" + ], + "slow_down_layer_time": [ + "4" + ], + "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}" + ], + "compatible_printers": [ + "Elegoo Centauri 0.4 nozzle", + "Elegoo Centauri 0.6 nozzle", + "Elegoo Centauri 0.8 nozzle" + ] +} diff --git a/resources/profiles/Elegoo/filament/EC/Elegoo PLA Matte @EC.json b/resources/profiles/Elegoo/filament/EC/Elegoo PLA Matte @EC.json new file mode 100644 index 0000000000..fac450b2c9 --- /dev/null +++ b/resources/profiles/Elegoo/filament/EC/Elegoo PLA Matte @EC.json @@ -0,0 +1,46 @@ +{ + "type": "filament", + "name": "Elegoo PLA Matte @EC", + "inherits": "Elegoo PLA Matte @base", + "from": "system", + "setting_id": "EPLAMEC", + "instantiation": "true", + "fan_cooling_layer_time": [ + "80" + ], + "fan_max_speed": [ + "80" + ], + "fan_min_speed": [ + "60" + ], + "filament_max_volumetric_speed": [ + "16" + ], + "hot_plate_temp": [ + "60" + ], + "hot_plate_temp_initial_layer": [ + "60" + ], + "slow_down_layer_time": [ + "6" + ], + "textured_plate_temp": [ + "65" + ], + "textured_plate_temp_initial_layer": [ + "65" + ], + "pressure_advance": [ + "0.024" + ], + "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}" + ], + "compatible_printers": [ + "Elegoo Centauri 0.4 nozzle", + "Elegoo Centauri 0.6 nozzle", + "Elegoo Centauri 0.8 nozzle" + ] +} \ No newline at end of file diff --git a/resources/profiles/Elegoo/filament/EC/Elegoo PLA PRO @EC.json b/resources/profiles/Elegoo/filament/EC/Elegoo PLA PRO @EC.json new file mode 100644 index 0000000000..78aa71d384 --- /dev/null +++ b/resources/profiles/Elegoo/filament/EC/Elegoo PLA PRO @EC.json @@ -0,0 +1,25 @@ +{ + "type": "filament", + "name": "Elegoo PLA PRO @EC", + "inherits": "Elegoo PLA @base", + "from": "system", + "setting_id": "EPLAPROEC", + "instantiation": "true", + "filament_max_volumetric_speed": [ + "20" + ], + "pressure_advance": [ + "0.024" + ], + "slow_down_layer_time": [ + "6" + ], + "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}" + ], + "compatible_printers": [ + "Elegoo Centauri 0.4 nozzle", + "Elegoo Centauri 0.6 nozzle", + "Elegoo Centauri 0.8 nozzle" + ] +} diff --git a/resources/profiles/Elegoo/filament/EC/Elegoo PLA Silk @EC.json b/resources/profiles/Elegoo/filament/EC/Elegoo PLA Silk @EC.json new file mode 100644 index 0000000000..a8ac184802 --- /dev/null +++ b/resources/profiles/Elegoo/filament/EC/Elegoo PLA Silk @EC.json @@ -0,0 +1,43 @@ +{ + "type": "filament", + "name": "Elegoo PLA Silk @EC", + "inherits": "Elegoo PLA Silk @base", + "from": "system", + "setting_id": "EPLASEC", + "instantiation": "true", + "fan_cooling_layer_time": [ + "80" + ], + "fan_max_speed": [ + "80" + ], + "fan_min_speed": [ + "60" + ], + "hot_plate_temp": [ + "60" + ], + "hot_plate_temp_initial_layer": [ + "60" + ], + "slow_down_layer_time": [ + "8" + ], + "textured_plate_temp": [ + "65" + ], + "textured_plate_temp_initial_layer": [ + "65" + ], + "pressure_advance": [ + "0.024" + ], + "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}" + ], + "compatible_printers": [ + "Elegoo Centauri 0.4 nozzle", + "Elegoo Centauri 0.6 nozzle", + "Elegoo Centauri 0.8 nozzle" + ] +} \ No newline at end of file diff --git a/resources/profiles/Elegoo/filament/EC/Elegoo PLA+ @EC.json b/resources/profiles/Elegoo/filament/EC/Elegoo PLA+ @EC.json new file mode 100644 index 0000000000..47299a382c --- /dev/null +++ b/resources/profiles/Elegoo/filament/EC/Elegoo PLA+ @EC.json @@ -0,0 +1,25 @@ +{ + "type": "filament", + "name": "Elegoo PLA+ @EC", + "inherits": "Elegoo PLA @base", + "from": "system", + "setting_id": "EPLAPLUSEC", + "instantiation": "true", + "filament_max_volumetric_speed": [ + "20" + ], + "pressure_advance": [ + "0.024" + ], + "slow_down_layer_time": [ + "6" + ], + "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}" + ], + "compatible_printers": [ + "Elegoo Centauri 0.4 nozzle", + "Elegoo Centauri 0.6 nozzle", + "Elegoo Centauri 0.8 nozzle" + ] +} diff --git a/resources/profiles/Elegoo/filament/EC/Elegoo RAPID PETG @EC.json b/resources/profiles/Elegoo/filament/EC/Elegoo RAPID PETG @EC.json new file mode 100644 index 0000000000..62359032c8 --- /dev/null +++ b/resources/profiles/Elegoo/filament/EC/Elegoo RAPID PETG @EC.json @@ -0,0 +1,16 @@ +{ + "type": "filament", + "name": "Elegoo RAPID PETG @EC", + "inherits": "Elegoo RAPID PETG @base", + "from": "system", + "setting_id": "ERPETGEC", + "instantiation": "true", + "pressure_advance": [ + "0.024" + ], + "compatible_printers": [ + "Elegoo Centauri 0.4 nozzle", + "Elegoo Centauri 0.6 nozzle", + "Elegoo Centauri 0.8 nozzle" + ] +} diff --git a/resources/profiles/Elegoo/filament/EC/Elegoo RAPID PLA+ @EC.json b/resources/profiles/Elegoo/filament/EC/Elegoo RAPID PLA+ @EC.json new file mode 100644 index 0000000000..4ae38a2c68 --- /dev/null +++ b/resources/profiles/Elegoo/filament/EC/Elegoo RAPID PLA+ @EC.json @@ -0,0 +1,46 @@ +{ + "type": "filament", + "name": "Elegoo RAPID PLA+ @EC", + "inherits": "Elegoo RAPID PLA+ @base", + "from": "system", + "setting_id": "ERPLAPLUSEC", + "instantiation": "true", + "fan_cooling_layer_time": [ + "80" + ], + "fan_max_speed": [ + "100" + ], + "fan_min_speed": [ + "60" + ], + "filament_max_volumetric_speed": [ + "21" + ], + "hot_plate_temp": [ + "60" + ], + "hot_plate_temp_initial_layer": [ + "60" + ], + "slow_down_layer_time": [ + "4" + ], + "textured_plate_temp": [ + "60" + ], + "textured_plate_temp_initial_layer": [ + "60" + ], + "pressure_advance": [ + "0.024" + ], + "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}" + ], + "compatible_printers": [ + "Elegoo Centauri 0.4 nozzle", + "Elegoo Centauri 0.6 nozzle", + "Elegoo Centauri 0.8 nozzle" + ] +} \ No newline at end of file diff --git a/resources/profiles/Elegoo/filament/EC/Elegoo TPU 95A @EC.json b/resources/profiles/Elegoo/filament/EC/Elegoo TPU 95A @EC.json new file mode 100644 index 0000000000..6d33bab481 --- /dev/null +++ b/resources/profiles/Elegoo/filament/EC/Elegoo TPU 95A @EC.json @@ -0,0 +1,19 @@ +{ + "type": "filament", + "name": "Elegoo TPU 95A @EC", + "inherits": "Elegoo TPU 95A @base", + "from": "system", + "setting_id": "ETPU95AEC", + "instantiation": "true", + "filament_max_volumetric_speed": [ + "3.2" + ], + "pressure_advance": [ + "0.024" + ], + "compatible_printers": [ + "Elegoo Centauri 0.4 nozzle", + "Elegoo Centauri 0.6 nozzle", + "Elegoo Centauri 0.8 nozzle" + ] +} diff --git a/resources/profiles/Elegoo/filament/ECC/Elegoo ASA @ECC.json b/resources/profiles/Elegoo/filament/ECC/Elegoo ASA @ECC.json new file mode 100644 index 0000000000..3f8a4d7995 --- /dev/null +++ b/resources/profiles/Elegoo/filament/ECC/Elegoo ASA @ECC.json @@ -0,0 +1,23 @@ +{ + "type": "filament", + "name": "Elegoo ASA @ECC", + "inherits": "Elegoo ASA @base", + "from": "system", + "setting_id": "EASAECC", + "instantiation": "true", + "pressure_advance": [ + "0.024" + ], + "nozzle_temperature": [ + "270" + ], + "nozzle_temperature_initial_layer": [ + "270" + ], + "compatible_printers": [ + "Elegoo Centauri Carbon 0.4 nozzle", + "Elegoo Centauri Carbon 0.6 nozzle", + "Elegoo Centauri Carbon 0.8 nozzle" + ] +} + \ No newline at end of file diff --git a/resources/profiles/Elegoo/filament/ECC/Elegoo PETG PRO @ECC.json b/resources/profiles/Elegoo/filament/ECC/Elegoo PETG PRO @ECC.json new file mode 100644 index 0000000000..7fbdc24dcc --- /dev/null +++ b/resources/profiles/Elegoo/filament/ECC/Elegoo PETG PRO @ECC.json @@ -0,0 +1,16 @@ +{ + "type": "filament", + "name": "Elegoo PETG PRO @ECC", + "inherits": "Elegoo PETG PRO @base", + "from": "system", + "setting_id": "EPETGPROECC", + "instantiation": "true", + "pressure_advance": [ + "0.024" + ], + "compatible_printers": [ + "Elegoo Centauri Carbon 0.4 nozzle", + "Elegoo Centauri Carbon 0.6 nozzle", + "Elegoo Centauri Carbon 0.8 nozzle" + ] +} diff --git a/resources/profiles/Elegoo/filament/ECC/Elegoo PLA @ECC.json b/resources/profiles/Elegoo/filament/ECC/Elegoo PLA @ECC.json new file mode 100644 index 0000000000..64838026a8 --- /dev/null +++ b/resources/profiles/Elegoo/filament/ECC/Elegoo PLA @ECC.json @@ -0,0 +1,31 @@ +{ + "type": "filament", + "name": "Elegoo PLA @ECC", + "inherits": "Elegoo PLA @base", + "from": "system", + "setting_id": "EPLAECC", + "instantiation": "true", + "filament_max_volumetric_speed": [ + "21" + ], + "nozzle_temperature_initial_layer": [ + "210" + ], + "nozzle_temperature": [ + "210" + ], + "pressure_advance": [ + "0.024" + ], + "slow_down_layer_time": [ + "4" + ], + "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}" + ], + "compatible_printers": [ + "Elegoo Centauri Carbon 0.4 nozzle", + "Elegoo Centauri Carbon 0.6 nozzle", + "Elegoo Centauri Carbon 0.8 nozzle" + ] +} diff --git a/resources/profiles/Elegoo/filament/ECC/Elegoo PLA Matte @ECC.json b/resources/profiles/Elegoo/filament/ECC/Elegoo PLA Matte @ECC.json new file mode 100644 index 0000000000..e4b8d6a8fc --- /dev/null +++ b/resources/profiles/Elegoo/filament/ECC/Elegoo PLA Matte @ECC.json @@ -0,0 +1,46 @@ +{ + "type": "filament", + "name": "Elegoo PLA Matte @ECC", + "inherits": "Elegoo PLA Matte @base", + "from": "system", + "setting_id": "EPLAMECC", + "instantiation": "true", + "fan_cooling_layer_time": [ + "80" + ], + "fan_max_speed": [ + "80" + ], + "fan_min_speed": [ + "60" + ], + "filament_max_volumetric_speed": [ + "16" + ], + "hot_plate_temp": [ + "60" + ], + "hot_plate_temp_initial_layer": [ + "60" + ], + "slow_down_layer_time": [ + "6" + ], + "textured_plate_temp": [ + "65" + ], + "textured_plate_temp_initial_layer": [ + "65" + ], + "pressure_advance": [ + "0.024" + ], + "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}" + ], + "compatible_printers": [ + "Elegoo Centauri Carbon 0.4 nozzle", + "Elegoo Centauri Carbon 0.6 nozzle", + "Elegoo Centauri Carbon 0.8 nozzle" + ] +} \ No newline at end of file diff --git a/resources/profiles/Elegoo/filament/ECC/Elegoo PLA PRO @ECC.json b/resources/profiles/Elegoo/filament/ECC/Elegoo PLA PRO @ECC.json new file mode 100644 index 0000000000..e169374edb --- /dev/null +++ b/resources/profiles/Elegoo/filament/ECC/Elegoo PLA PRO @ECC.json @@ -0,0 +1,25 @@ +{ + "type": "filament", + "name": "Elegoo PLA PRO @ECC", + "inherits": "Elegoo PLA @base", + "from": "system", + "setting_id": "EPLAPROECC", + "instantiation": "true", + "filament_max_volumetric_speed": [ + "20" + ], + "pressure_advance": [ + "0.024" + ], + "slow_down_layer_time": [ + "6" + ], + "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}" + ], + "compatible_printers": [ + "Elegoo Centauri Carbon 0.4 nozzle", + "Elegoo Centauri Carbon 0.6 nozzle", + "Elegoo Centauri Carbon 0.8 nozzle" + ] +} diff --git a/resources/profiles/Elegoo/filament/ECC/Elegoo PLA Silk @ECC.json b/resources/profiles/Elegoo/filament/ECC/Elegoo PLA Silk @ECC.json new file mode 100644 index 0000000000..56101b838e --- /dev/null +++ b/resources/profiles/Elegoo/filament/ECC/Elegoo PLA Silk @ECC.json @@ -0,0 +1,43 @@ +{ + "type": "filament", + "name": "Elegoo PLA Silk @ECC", + "inherits": "Elegoo PLA Silk @base", + "from": "system", + "setting_id": "EPLASECC", + "instantiation": "true", + "fan_cooling_layer_time": [ + "80" + ], + "fan_max_speed": [ + "80" + ], + "fan_min_speed": [ + "60" + ], + "hot_plate_temp": [ + "60" + ], + "hot_plate_temp_initial_layer": [ + "60" + ], + "slow_down_layer_time": [ + "8" + ], + "textured_plate_temp": [ + "65" + ], + "textured_plate_temp_initial_layer": [ + "65" + ], + "pressure_advance": [ + "0.024" + ], + "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}" + ], + "compatible_printers": [ + "Elegoo Centauri Carbon 0.4 nozzle", + "Elegoo Centauri Carbon 0.6 nozzle", + "Elegoo Centauri Carbon 0.8 nozzle" + ] +} \ No newline at end of file diff --git a/resources/profiles/Elegoo/filament/ECC/Elegoo PLA+ @ECC.json b/resources/profiles/Elegoo/filament/ECC/Elegoo PLA+ @ECC.json new file mode 100644 index 0000000000..21e0471e8a --- /dev/null +++ b/resources/profiles/Elegoo/filament/ECC/Elegoo PLA+ @ECC.json @@ -0,0 +1,25 @@ +{ + "type": "filament", + "name": "Elegoo PLA+ @ECC", + "inherits": "Elegoo PLA @base", + "from": "system", + "setting_id": "EPLAPLUSECC", + "instantiation": "true", + "filament_max_volumetric_speed": [ + "20" + ], + "pressure_advance": [ + "0.024" + ], + "slow_down_layer_time": [ + "6" + ], + "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}" + ], + "compatible_printers": [ + "Elegoo Centauri Carbon 0.4 nozzle", + "Elegoo Centauri Carbon 0.6 nozzle", + "Elegoo Centauri Carbon 0.8 nozzle" + ] +} diff --git a/resources/profiles/Elegoo/filament/ECC/Elegoo PLA-CF @ECC.json b/resources/profiles/Elegoo/filament/ECC/Elegoo PLA-CF @ECC.json new file mode 100644 index 0000000000..a8a887eece --- /dev/null +++ b/resources/profiles/Elegoo/filament/ECC/Elegoo PLA-CF @ECC.json @@ -0,0 +1,46 @@ +{ + "type": "filament", + "name": "Elegoo PLA-CF @ECC", + "inherits": "Elegoo PLA-CF @base", + "from": "system", + "setting_id": "EPLACFECC", + "instantiation": "true", + "fan_cooling_layer_time": [ + "80" + ], + "fan_max_speed": [ + "80" + ], + "fan_min_speed": [ + "60" + ], + "filament_max_volumetric_speed": [ + "21" + ], + "hot_plate_temp": [ + "60" + ], + "hot_plate_temp_initial_layer": [ + "60" + ], + "slow_down_layer_time": [ + "6" + ], + "textured_plate_temp": [ + "65" + ], + "textured_plate_temp_initial_layer": [ + "65" + ], + "pressure_advance": [ + "0.024" + ], + "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}" + ], + "compatible_printers": [ + "Elegoo Centauri Carbon 0.4 nozzle", + "Elegoo Centauri Carbon 0.6 nozzle", + "Elegoo Centauri Carbon 0.8 nozzle" + ] +} \ No newline at end of file diff --git a/resources/profiles/Elegoo/filament/ECC/Elegoo RAPID PETG @ECC.json b/resources/profiles/Elegoo/filament/ECC/Elegoo RAPID PETG @ECC.json new file mode 100644 index 0000000000..d88ba1ff12 --- /dev/null +++ b/resources/profiles/Elegoo/filament/ECC/Elegoo RAPID PETG @ECC.json @@ -0,0 +1,16 @@ +{ + "type": "filament", + "name": "Elegoo RAPID PETG @ECC", + "inherits": "Elegoo RAPID PETG @base", + "from": "system", + "setting_id": "ERPETGECC", + "instantiation": "true", + "pressure_advance": [ + "0.024" + ], + "compatible_printers": [ + "Elegoo Centauri Carbon 0.4 nozzle", + "Elegoo Centauri Carbon 0.6 nozzle", + "Elegoo Centauri Carbon 0.8 nozzle" + ] +} diff --git a/resources/profiles/Elegoo/filament/ECC/Elegoo RAPID PLA+ @ECC.json b/resources/profiles/Elegoo/filament/ECC/Elegoo RAPID PLA+ @ECC.json new file mode 100644 index 0000000000..68312b569d --- /dev/null +++ b/resources/profiles/Elegoo/filament/ECC/Elegoo RAPID PLA+ @ECC.json @@ -0,0 +1,46 @@ +{ + "type": "filament", + "name": "Elegoo RAPID PLA+ @ECC", + "inherits": "Elegoo RAPID PLA+ @base", + "from": "system", + "setting_id": "ERPLAPLUSECC", + "instantiation": "true", + "fan_cooling_layer_time": [ + "80" + ], + "fan_max_speed": [ + "100" + ], + "fan_min_speed": [ + "60" + ], + "filament_max_volumetric_speed": [ + "21" + ], + "hot_plate_temp": [ + "60" + ], + "hot_plate_temp_initial_layer": [ + "60" + ], + "slow_down_layer_time": [ + "4" + ], + "textured_plate_temp": [ + "60" + ], + "textured_plate_temp_initial_layer": [ + "60" + ], + "pressure_advance": [ + "0.024" + ], + "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}" + ], + "compatible_printers": [ + "Elegoo Centauri Carbon 0.4 nozzle", + "Elegoo Centauri Carbon 0.6 nozzle", + "Elegoo Centauri Carbon 0.8 nozzle" + ] +} \ No newline at end of file diff --git a/resources/profiles/Elegoo/filament/ECC/Elegoo TPU 95A @ECC.json b/resources/profiles/Elegoo/filament/ECC/Elegoo TPU 95A @ECC.json new file mode 100644 index 0000000000..e41926a16c --- /dev/null +++ b/resources/profiles/Elegoo/filament/ECC/Elegoo TPU 95A @ECC.json @@ -0,0 +1,19 @@ +{ + "type": "filament", + "name": "Elegoo TPU 95A @ECC", + "inherits": "Elegoo TPU 95A @base", + "from": "system", + "setting_id": "ETPU95AECC", + "instantiation": "true", + "filament_max_volumetric_speed": [ + "3.2" + ], + "pressure_advance": [ + "0.024" + ], + "compatible_printers": [ + "Elegoo Centauri Carbon 0.4 nozzle", + "Elegoo Centauri Carbon 0.6 nozzle", + "Elegoo Centauri Carbon 0.8 nozzle" + ] +} diff --git a/resources/profiles/Elegoo/filament/ELEGOO/Elegoo ASA @0.2 nozzle.json b/resources/profiles/Elegoo/filament/ELEGOO/Elegoo ASA @0.2 nozzle.json new file mode 100644 index 0000000000..945d91ddb6 --- /dev/null +++ b/resources/profiles/Elegoo/filament/ELEGOO/Elegoo ASA @0.2 nozzle.json @@ -0,0 +1,23 @@ +{ + "type": "filament", + "name": "Elegoo ASA @0.2 nozzle", + "inherits": "Elegoo ASA @base", + "from": "system", + "setting_id": "EASA00020", + "instantiation": "true", + "filament_max_volumetric_speed": [ + "3.2" + ], + "compatible_printers": [ + "Elegoo Centauri 0.2 nozzle", + "Elegoo Centauri Carbon 0.2 nozzle", + "Elegoo Neptune 4 0.2 nozzle", + "Elegoo Neptune 4 Pro 0.2 nozzle", + "Elegoo Neptune 4 Plus 0.2 nozzle", + "Elegoo Neptune 4 Max 0.2 nozzle", + "Elegoo Neptune 3 Pro 0.2 nozzle", + "Elegoo Neptune 3 Plus 0.2 nozzle", + "Elegoo Neptune 3 Max 0.2 nozzle" + ] +} + \ No newline at end of file diff --git a/resources/profiles/Elegoo/filament/ELEGOO/Elegoo ASA @base.json b/resources/profiles/Elegoo/filament/ELEGOO/Elegoo ASA @base.json new file mode 100644 index 0000000000..78386c7351 --- /dev/null +++ b/resources/profiles/Elegoo/filament/ELEGOO/Elegoo ASA @base.json @@ -0,0 +1,17 @@ +{ + "type": "filament", + "name": "Elegoo ASA @base", + "inherits": "fdm_elegoo_filament_asa", + "from": "system", + "filament_id": "EASAB00", + "instantiation": "false", + "filament_vendor": [ + "Elegoo" + ], + "filament_density": [ + "1.1" + ], + "filament_max_volumetric_speed": [ + "12" + ] +} \ No newline at end of file diff --git a/resources/profiles/Elegoo/filament/ELEGOO/Elegoo ASA.json b/resources/profiles/Elegoo/filament/ELEGOO/Elegoo ASA.json new file mode 100644 index 0000000000..8381f0978f --- /dev/null +++ b/resources/profiles/Elegoo/filament/ELEGOO/Elegoo ASA.json @@ -0,0 +1,11 @@ +{ + "type": "filament", + "name": "Elegoo ASA", + "inherits": "Elegoo ASA @base", + "from": "system", + "setting_id": "EASA00", + "instantiation": "true", + "compatible_printers": [ + ] +} + \ No newline at end of file diff --git a/resources/profiles/Elegoo/filament/ELEGOO/Elegoo PETG PRO @0.2 nozzle.json b/resources/profiles/Elegoo/filament/ELEGOO/Elegoo PETG PRO @0.2 nozzle.json new file mode 100644 index 0000000000..cb9c132128 --- /dev/null +++ b/resources/profiles/Elegoo/filament/ELEGOO/Elegoo PETG PRO @0.2 nozzle.json @@ -0,0 +1,22 @@ +{ + "type": "filament", + "name": "Elegoo PETG PRO @0.2 nozzle", + "inherits": "Elegoo PETG PRO @base", + "from": "system", + "setting_id": "EGPETG00020", + "instantiation": "true", + "filament_max_volumetric_speed": [ + "1" + ], + "compatible_printers": [ + "Elegoo Centauri 0.2 nozzle", + "Elegoo Centauri Carbon 0.2 nozzle", + "Elegoo Neptune 4 0.2 nozzle", + "Elegoo Neptune 4 Pro 0.2 nozzle", + "Elegoo Neptune 4 Plus 0.2 nozzle", + "Elegoo Neptune 4 Max 0.2 nozzle", + "Elegoo Neptune 3 Pro 0.2 nozzle", + "Elegoo Neptune 3 Plus 0.2 nozzle", + "Elegoo Neptune 3 Max 0.2 nozzle" + ] +} diff --git a/resources/profiles/Elegoo/filament/ELEGOO/Elegoo PETG PRO @base.json b/resources/profiles/Elegoo/filament/ELEGOO/Elegoo PETG PRO @base.json new file mode 100644 index 0000000000..82edb3f89c --- /dev/null +++ b/resources/profiles/Elegoo/filament/ELEGOO/Elegoo PETG PRO @base.json @@ -0,0 +1,83 @@ +{ + "type": "filament", + "name": "Elegoo PETG PRO @base", + "inherits": "fdm_elegoo_filament_pet", + "from": "system", + "filament_id": "EPETGPROB00", + "instantiation": "false", + "cool_plate_temp": [ + "0" + ], + "cool_plate_temp_initial_layer": [ + "0" + ], + "eng_plate_temp": [ + "70" + ], + "eng_plate_temp_initial_layer": [ + "70" + ], + "fan_cooling_layer_time": [ + "30" + ], + "fan_max_speed": [ + "40" + ], + "fan_min_speed": [ + "10" + ], + "filament_cost": [ + "0" + ], + "filament_density": [ + "1.25" + ], + "filament_max_volumetric_speed": [ + "8" + ], + "filament_vendor": [ + "Elegoo" + ], + "hot_plate_temp": [ + "70" + ], + "hot_plate_temp_initial_layer": [ + "70" + ], + "nozzle_temperature_range_high": [ + "270" + ], + "nozzle_temperature_range_low": [ + "230" + ], + "nozzle_temperature": [ + "240" + ], + "nozzle_temperature_initial_layer": [ + "240" + ], + "overhang_fan_speed": [ + "90" + ], + "overhang_fan_threshold": [ + "10%" + ], + "slow_down_layer_time": [ + "12" + ], + "textured_plate_temp": [ + "70" + ], + "textured_plate_temp_initial_layer": [ + "70" + ], + "filament_start_gcode": [ + "; Filament start gcode\n" + ], + "filament_end_gcode": [ + "; filament end gcode \n" + ], + "filament_type": [ + "PETG" + ] +} \ No newline at end of file diff --git a/resources/profiles/Elegoo/filament/ELEGOO/Elegoo PETG PRO.json b/resources/profiles/Elegoo/filament/ELEGOO/Elegoo PETG PRO.json new file mode 100644 index 0000000000..12c6fd1c33 --- /dev/null +++ b/resources/profiles/Elegoo/filament/ELEGOO/Elegoo PETG PRO.json @@ -0,0 +1,10 @@ +{ + "type": "filament", + "name": "Elegoo PETG PRO", + "inherits": "Elegoo PETG PRO @base", + "from": "system", + "setting_id": "EPETGPRO00", + "instantiation": "true", + "compatible_printers": [ + ] +} diff --git a/resources/profiles/Elegoo/filament/ELEGOO/Elegoo PLA @0.2 nozzle.json b/resources/profiles/Elegoo/filament/ELEGOO/Elegoo PLA @0.2 nozzle.json new file mode 100644 index 0000000000..26f3efd91b --- /dev/null +++ b/resources/profiles/Elegoo/filament/ELEGOO/Elegoo PLA @0.2 nozzle.json @@ -0,0 +1,22 @@ +{ + "type": "filament", + "name": "Elegoo PLA @0.2 nozzle", + "from": "system", + "setting_id": "EPLA00020", + "instantiation": "true", + "inherits": "Elegoo PLA @base", + "filament_max_volumetric_speed": [ + "3.2" + ], + "compatible_printers": [ + "Elegoo Centauri 0.2 nozzle", + "Elegoo Centauri Carbon 0.2 nozzle", + "Elegoo Neptune 4 0.2 nozzle", + "Elegoo Neptune 4 Pro 0.2 nozzle", + "Elegoo Neptune 4 Plus 0.2 nozzle", + "Elegoo Neptune 4 Max 0.2 nozzle", + "Elegoo Neptune 3 Pro 0.2 nozzle", + "Elegoo Neptune 3 Plus 0.2 nozzle", + "Elegoo Neptune 3 Max 0.2 nozzle" + ] +} diff --git a/resources/profiles/Elegoo/filament/ELEGOO/Elegoo PLA @base.json b/resources/profiles/Elegoo/filament/ELEGOO/Elegoo PLA @base.json new file mode 100644 index 0000000000..5b837fd233 --- /dev/null +++ b/resources/profiles/Elegoo/filament/ELEGOO/Elegoo PLA @base.json @@ -0,0 +1,23 @@ +{ + "type": "filament", + "name": "Elegoo PLA @base", + "inherits": "fdm_elegoo_filament_pla", + "from": "system", + "filament_id": "EPLAB00", + "instantiation": "false", + "filament_cost": [ + "0" + ], + "filament_density": [ + "1.25" + ], + "filament_max_volumetric_speed": [ + "16" + ], + "filament_vendor": [ + "Elegoo" + ], + "filament_start_gcode": [ + "; filament start gcode\n" + ] +} \ No newline at end of file diff --git a/resources/profiles/Elegoo/filament/ELEGOO/Elegoo PLA Matte @0.2 nozzle.json b/resources/profiles/Elegoo/filament/ELEGOO/Elegoo PLA Matte @0.2 nozzle.json new file mode 100644 index 0000000000..0cd3391585 --- /dev/null +++ b/resources/profiles/Elegoo/filament/ELEGOO/Elegoo PLA Matte @0.2 nozzle.json @@ -0,0 +1,46 @@ +{ + "type": "filament", + "name": "Elegoo PLA Matte @0.2 nozzle", + "inherits": "Elegoo PLA Matte @base", + "from": "system", + "setting_id": "EPLAM00020", + "instantiation": "true", + "fan_cooling_layer_time": [ + "80" + ], + "fan_max_speed": [ + "80" + ], + "fan_min_speed": [ + "60" + ], + "filament_max_volumetric_speed": [ + "2" + ], + "hot_plate_temp": [ + "60" + ], + "hot_plate_temp_initial_layer": [ + "60" + ], + "slow_down_layer_time": [ + "6" + ], + "textured_plate_temp": [ + "65" + ], + "textured_plate_temp_initial_layer": [ + "65" + ], + "compatible_printers": [ + "Elegoo Centauri 0.2 nozzle", + "Elegoo Centauri Carbon 0.2 nozzle", + "Elegoo Neptune 4 0.2 nozzle", + "Elegoo Neptune 4 Pro 0.2 nozzle", + "Elegoo Neptune 4 Plus 0.2 nozzle", + "Elegoo Neptune 4 Max 0.2 nozzle", + "Elegoo Neptune 3 Pro 0.2 nozzle", + "Elegoo Neptune 3 Plus 0.2 nozzle", + "Elegoo Neptune 3 Max 0.2 nozzle" + ] +} \ No newline at end of file diff --git a/resources/profiles/Elegoo/filament/ELEGOO/Elegoo PLA Matte @base.json b/resources/profiles/Elegoo/filament/ELEGOO/Elegoo PLA Matte @base.json new file mode 100644 index 0000000000..55c747b373 --- /dev/null +++ b/resources/profiles/Elegoo/filament/ELEGOO/Elegoo PLA Matte @base.json @@ -0,0 +1,20 @@ +{ + "type": "filament", + "name": "Elegoo PLA Matte @base", + "inherits": "fdm_elegoo_filament_pla", + "from": "system", + "filament_id": "EPLAMB00", + "instantiation": "false", + "filament_cost": [ + "0" + ], + "filament_density": [ + "1.25" + ], + "filament_vendor": [ + "Elegoo" + ], + "filament_start_gcode": [ + "; filament start gcode\n" + ] +} \ No newline at end of file diff --git a/resources/profiles/Elegoo/filament/ELEGOO/Elegoo PLA Matte.json b/resources/profiles/Elegoo/filament/ELEGOO/Elegoo PLA Matte.json new file mode 100644 index 0000000000..cc002d1b0d --- /dev/null +++ b/resources/profiles/Elegoo/filament/ELEGOO/Elegoo PLA Matte.json @@ -0,0 +1,37 @@ +{ + "type": "filament", + "name": "Elegoo PLA Matte", + "inherits": "Elegoo PLA Matte @base", + "from": "system", + "setting_id": "EPLAM00", + "instantiation": "true", + "fan_cooling_layer_time": [ + "80" + ], + "fan_max_speed": [ + "80" + ], + "fan_min_speed": [ + "60" + ], + "filament_max_volumetric_speed": [ + "16" + ], + "hot_plate_temp": [ + "60" + ], + "hot_plate_temp_initial_layer": [ + "60" + ], + "slow_down_layer_time": [ + "6" + ], + "textured_plate_temp": [ + "60" + ], + "textured_plate_temp_initial_layer": [ + "60" + ], + "compatible_printers": [ + ] +} \ No newline at end of file diff --git a/resources/profiles/Elegoo/filament/ELEGOO/Elegoo PLA PRO @0.2 nozzle.json b/resources/profiles/Elegoo/filament/ELEGOO/Elegoo PLA PRO @0.2 nozzle.json new file mode 100644 index 0000000000..a46f14d250 --- /dev/null +++ b/resources/profiles/Elegoo/filament/ELEGOO/Elegoo PLA PRO @0.2 nozzle.json @@ -0,0 +1,22 @@ +{ + "type": "filament", + "name": "Elegoo PLA PRO @0.2 nozzle", + "inherits": "Elegoo PLA @base", + "from": "system", + "setting_id": "EPLAPRO00020", + "instantiation": "true", + "filament_max_volumetric_speed": [ + "3.2" + ], + "compatible_printers": [ + "Elegoo Centauri 0.2 nozzle", + "Elegoo Centauri Carbon 0.2 nozzle", + "Elegoo Neptune 4 0.2 nozzle", + "Elegoo Neptune 4 Pro 0.2 nozzle", + "Elegoo Neptune 4 Plus 0.2 nozzle", + "Elegoo Neptune 4 Max 0.2 nozzle", + "Elegoo Neptune 3 Pro 0.2 nozzle", + "Elegoo Neptune 3 Plus 0.2 nozzle", + "Elegoo Neptune 3 Max 0.2 nozzle" + ] +} diff --git a/resources/profiles/Elegoo/filament/ELEGOO/Elegoo PLA PRO.json b/resources/profiles/Elegoo/filament/ELEGOO/Elegoo PLA PRO.json new file mode 100644 index 0000000000..6ddbe449ef --- /dev/null +++ b/resources/profiles/Elegoo/filament/ELEGOO/Elegoo PLA PRO.json @@ -0,0 +1,13 @@ +{ + "type": "filament", + "name": "Elegoo PLA PRO", + "inherits": "Elegoo PLA @base", + "from": "system", + "setting_id": "EPLAPRO00", + "instantiation": "true", + "filament_max_volumetric_speed": [ + "16" + ], + "compatible_printers": [ + ] +} diff --git a/resources/profiles/Elegoo/filament/ELEGOO/Elegoo PLA Silk @0.2 nozzle.json b/resources/profiles/Elegoo/filament/ELEGOO/Elegoo PLA Silk @0.2 nozzle.json new file mode 100644 index 0000000000..43994c5f57 --- /dev/null +++ b/resources/profiles/Elegoo/filament/ELEGOO/Elegoo PLA Silk @0.2 nozzle.json @@ -0,0 +1,46 @@ +{ + "type": "filament", + "name": "Elegoo PLA Silk @0.2 nozzle", + "inherits": "Elegoo PLA Silk @base", + "from": "system", + "setting_id": "EPLAS00020", + "instantiation": "true", + "fan_cooling_layer_time": [ + "80" + ], + "fan_max_speed": [ + "80" + ], + "fan_min_speed": [ + "60" + ], + "filament_max_volumetric_speed": [ + "2" + ], + "hot_plate_temp": [ + "60" + ], + "hot_plate_temp_initial_layer": [ + "60" + ], + "slow_down_layer_time": [ + "8" + ], + "textured_plate_temp": [ + "60" + ], + "textured_plate_temp_initial_layer": [ + "60" + ], + "compatible_printers": [ + "Elegoo Centauri 0.2 nozzle", + "Elegoo Centauri Carbon 0.2 nozzle", + "Elegoo Neptune 4 0.2 nozzle", + "Elegoo Neptune 4 Pro 0.2 nozzle", + "Elegoo Neptune 4 Plus 0.2 nozzle", + "Elegoo Neptune 4 Max 0.2 nozzle", + "Elegoo Neptune 3 Pro 0.2 nozzle", + "Elegoo Neptune 3 Plus 0.2 nozzle", + "Elegoo Neptune 3 Max 0.2 nozzle" + ] +} \ No newline at end of file diff --git a/resources/profiles/Elegoo/filament/ELEGOO/Elegoo PLA Silk @base.json b/resources/profiles/Elegoo/filament/ELEGOO/Elegoo PLA Silk @base.json new file mode 100644 index 0000000000..ba627e88cb --- /dev/null +++ b/resources/profiles/Elegoo/filament/ELEGOO/Elegoo PLA Silk @base.json @@ -0,0 +1,29 @@ +{ + "type": "filament", + "name": "Elegoo PLA Silk @base", + "inherits": "fdm_elegoo_filament_pla", + "from": "system", + "filament_id": "EPLASB00", + "instantiation": "false", + "filament_cost": [ + "0" + ], + "filament_density": [ + "1.32" + ], + "filament_vendor": [ + "Elegoo" + ], + "filament_max_volumetric_speed": [ + "16" + ], + "nozzle_temperature": [ + "230" + ], + "nozzle_temperature_initial_layer": [ + "230" + ], + "filament_start_gcode": [ + "; filament start gcode\n" + ] +} \ No newline at end of file diff --git a/resources/profiles/Elegoo/filament/ELEGOO/Elegoo PLA Silk.json b/resources/profiles/Elegoo/filament/ELEGOO/Elegoo PLA Silk.json new file mode 100644 index 0000000000..eb576dce2d --- /dev/null +++ b/resources/profiles/Elegoo/filament/ELEGOO/Elegoo PLA Silk.json @@ -0,0 +1,34 @@ +{ + "type": "filament", + "name": "Elegoo PLA Silk", + "inherits": "Elegoo PLA Silk @base", + "from": "system", + "setting_id": "EPLAS00", + "instantiation": "true", + "fan_cooling_layer_time": [ + "80" + ], + "fan_max_speed": [ + "80" + ], + "fan_min_speed": [ + "60" + ], + "hot_plate_temp": [ + "60" + ], + "hot_plate_temp_initial_layer": [ + "60" + ], + "slow_down_layer_time": [ + "8" + ], + "textured_plate_temp": [ + "60" + ], + "textured_plate_temp_initial_layer": [ + "60" + ], + "compatible_printers": [ + ] +} \ No newline at end of file diff --git a/resources/profiles/Elegoo/filament/ELEGOO/Elegoo PLA+ @0.2 nozzle.json b/resources/profiles/Elegoo/filament/ELEGOO/Elegoo PLA+ @0.2 nozzle.json new file mode 100644 index 0000000000..6fc3cbf7fc --- /dev/null +++ b/resources/profiles/Elegoo/filament/ELEGOO/Elegoo PLA+ @0.2 nozzle.json @@ -0,0 +1,22 @@ +{ + "type": "filament", + "name": "Elegoo PLA+ @0.2 nozzle", + "inherits": "Elegoo PLA @base", + "from": "system", + "setting_id": "EPLAPLUS00020", + "instantiation": "true", + "filament_max_volumetric_speed": [ + "3.2" + ], + "compatible_printers": [ + "Elegoo Centauri 0.2 nozzle", + "Elegoo Centauri Carbon 0.2 nozzle", + "Elegoo Neptune 4 0.2 nozzle", + "Elegoo Neptune 4 Pro 0.2 nozzle", + "Elegoo Neptune 4 Plus 0.2 nozzle", + "Elegoo Neptune 4 Max 0.2 nozzle", + "Elegoo Neptune 3 Pro 0.2 nozzle", + "Elegoo Neptune 3 Plus 0.2 nozzle", + "Elegoo Neptune 3 Max 0.2 nozzle" + ] +} diff --git a/resources/profiles/Elegoo/filament/ELEGOO/Elegoo PLA+.json b/resources/profiles/Elegoo/filament/ELEGOO/Elegoo PLA+.json new file mode 100644 index 0000000000..54cfdb3d0a --- /dev/null +++ b/resources/profiles/Elegoo/filament/ELEGOO/Elegoo PLA+.json @@ -0,0 +1,13 @@ +{ + "type": "filament", + "name": "Elegoo PLA+", + "inherits": "Elegoo PLA @base", + "from": "system", + "setting_id": "EPLAPLUS00", + "instantiation": "true", + "filament_max_volumetric_speed": [ + "16" + ], + "compatible_printers": [ + ] +} diff --git a/resources/profiles/Elegoo/filament/ELEGOO/Elegoo PLA-CF @base.json b/resources/profiles/Elegoo/filament/ELEGOO/Elegoo PLA-CF @base.json new file mode 100644 index 0000000000..3e2fca2bb6 --- /dev/null +++ b/resources/profiles/Elegoo/filament/ELEGOO/Elegoo PLA-CF @base.json @@ -0,0 +1,38 @@ +{ + "type": "filament", + "name": "Elegoo PLA-CF @base", + "inherits": "fdm_elegoo_filament_pla", + "from": "system", + "filament_id": "EPLACFB00", + "instantiation": "false", + "additional_cooling_fan_speed": [ + "0" + ], + "cool_plate_temp": [ + "45" + ], + "cool_plate_temp_initial_layer": [ + "45" + ], + "filament_type": [ + "PLA-CF" + ], + "filament_vendor": [ + "Elegoo" + ], + "filament_density": [ + "1.21" + ], + "required_nozzle_HRC": [ + "40" + ], + "slow_down_layer_time": [ + "7" + ], + "filament_start_gcode": [ + "; Filament start gcode\n" + ], + "filament_end_gcode": [ + "; filament end gcode \n" + ] +} \ No newline at end of file diff --git a/resources/profiles/Elegoo/filament/ELEGOO/Elegoo PLA-CF.json b/resources/profiles/Elegoo/filament/ELEGOO/Elegoo PLA-CF.json new file mode 100644 index 0000000000..1111ff70f6 --- /dev/null +++ b/resources/profiles/Elegoo/filament/ELEGOO/Elegoo PLA-CF.json @@ -0,0 +1,37 @@ +{ + "type": "filament", + "name": "Elegoo PLA-CF", + "inherits": "Elegoo PLA-CF @base", + "from": "system", + "setting_id": "EPLACF00", + "instantiation": "true", + "fan_cooling_layer_time": [ + "80" + ], + "fan_max_speed": [ + "100" + ], + "fan_min_speed": [ + "60" + ], + "filament_max_volumetric_speed": [ + "12" + ], + "hot_plate_temp": [ + "60" + ], + "hot_plate_temp_initial_layer": [ + "60" + ], + "slow_down_layer_time": [ + "6" + ], + "textured_plate_temp": [ + "65" + ], + "textured_plate_temp_initial_layer": [ + "65" + ], + "compatible_printers": [ + ] +} \ No newline at end of file diff --git a/resources/profiles/Elegoo/filament/ELEGOO/Elegoo PLA.json b/resources/profiles/Elegoo/filament/ELEGOO/Elegoo PLA.json new file mode 100644 index 0000000000..5cbb391d81 --- /dev/null +++ b/resources/profiles/Elegoo/filament/ELEGOO/Elegoo PLA.json @@ -0,0 +1,13 @@ +{ + "type": "filament", + "name": "Elegoo PLA", + "inherits": "Elegoo PLA @base", + "from": "system", + "setting_id": "EPLA00", + "instantiation": "true", + "filament_max_volumetric_speed": [ + "15" + ], + "compatible_printers": [ + ] +} diff --git a/resources/profiles/Elegoo/filament/ELEGOO/Elegoo RAPID PETG @0.2 nozzle.json b/resources/profiles/Elegoo/filament/ELEGOO/Elegoo RAPID PETG @0.2 nozzle.json new file mode 100644 index 0000000000..105690cfeb --- /dev/null +++ b/resources/profiles/Elegoo/filament/ELEGOO/Elegoo RAPID PETG @0.2 nozzle.json @@ -0,0 +1,22 @@ +{ + "type": "filament", + "name": "Elegoo RAPID PETG @0.2 nozzle", + "inherits": "Elegoo RAPID PETG @base", + "from": "system", + "setting_id": "ERPETG00020", + "instantiation": "true", + "filament_max_volumetric_speed": [ + "1" + ], + "compatible_printers": [ + "Elegoo Centauri 0.2 nozzle", + "Elegoo Centauri Carbon 0.2 nozzle", + "Elegoo Neptune 4 0.2 nozzle", + "Elegoo Neptune 4 Pro 0.2 nozzle", + "Elegoo Neptune 4 Plus 0.2 nozzle", + "Elegoo Neptune 4 Max 0.2 nozzle", + "Elegoo Neptune 3 Pro 0.2 nozzle", + "Elegoo Neptune 3 Plus 0.2 nozzle", + "Elegoo Neptune 3 Max 0.2 nozzle" + ] +} diff --git a/resources/profiles/Elegoo/filament/ELEGOO/Elegoo RAPID PETG @base.json b/resources/profiles/Elegoo/filament/ELEGOO/Elegoo RAPID PETG @base.json new file mode 100644 index 0000000000..d0ae01301c --- /dev/null +++ b/resources/profiles/Elegoo/filament/ELEGOO/Elegoo RAPID PETG @base.json @@ -0,0 +1,83 @@ +{ + "type": "filament", + "name": "Elegoo RAPID PETG @base", + "inherits": "fdm_elegoo_filament_pet", + "from": "system", + "filament_id": "ERPETGB00", + "instantiation": "false", + "cool_plate_temp": [ + "0" + ], + "filament_type": [ + "PETG" + ], + "cool_plate_temp_initial_layer": [ + "0" + ], + "eng_plate_temp": [ + "70" + ], + "eng_plate_temp_initial_layer": [ + "70" + ], + "fan_cooling_layer_time": [ + "30" + ], + "fan_max_speed": [ + "80" + ], + "fan_min_speed": [ + "30" + ], + "filament_cost": [ + "0" + ], + "filament_density": [ + "1.26" + ], + "filament_max_volumetric_speed": [ + "18" + ], + "filament_vendor": [ + "Elegoo" + ], + "hot_plate_temp": [ + "70" + ], + "hot_plate_temp_initial_layer": [ + "70" + ], + "nozzle_temperature_range_high": [ + "270" + ], + "nozzle_temperature_range_low": [ + "230" + ], + "nozzle_temperature": [ + "250" + ], + "nozzle_temperature_initial_layer": [ + "250" + ], + "overhang_fan_speed": [ + "90" + ], + "overhang_fan_threshold": [ + "10%" + ], + "slow_down_layer_time": [ + "12" + ], + "textured_plate_temp": [ + "70" + ], + "textured_plate_temp_initial_layer": [ + "70" + ], + "filament_start_gcode": [ + "; Filament start gcode\n" + ], + "filament_end_gcode": [ + "; filament end gcode \n" + ] +} \ No newline at end of file diff --git a/resources/profiles/Elegoo/filament/ELEGOO/Elegoo RAPID PETG+.json b/resources/profiles/Elegoo/filament/ELEGOO/Elegoo RAPID PETG+.json new file mode 100644 index 0000000000..67b208178b --- /dev/null +++ b/resources/profiles/Elegoo/filament/ELEGOO/Elegoo RAPID PETG+.json @@ -0,0 +1,10 @@ +{ + "type": "filament", + "name": "Elegoo RAPID PETG+", + "inherits": "Elegoo RAPID PETG @base", + "from": "system", + "setting_id": "ERPETGPLUS00", + "instantiation": "true", + "compatible_printers": [ + ] +} diff --git a/resources/profiles/Elegoo/filament/ELEGOO/Elegoo RAPID PETG.json b/resources/profiles/Elegoo/filament/ELEGOO/Elegoo RAPID PETG.json new file mode 100644 index 0000000000..87f8df6cea --- /dev/null +++ b/resources/profiles/Elegoo/filament/ELEGOO/Elegoo RAPID PETG.json @@ -0,0 +1,10 @@ +{ + "type": "filament", + "name": "Elegoo RAPID PETG", + "inherits": "Elegoo RAPID PETG @base", + "from": "system", + "setting_id": "ERPETG00", + "instantiation": "true", + "compatible_printers": [ + ] +} diff --git a/resources/profiles/Elegoo/filament/ELEGOO/Elegoo RAPID PLA+ @0.2 nozzle.json b/resources/profiles/Elegoo/filament/ELEGOO/Elegoo RAPID PLA+ @0.2 nozzle.json new file mode 100644 index 0000000000..6dc97327db --- /dev/null +++ b/resources/profiles/Elegoo/filament/ELEGOO/Elegoo RAPID PLA+ @0.2 nozzle.json @@ -0,0 +1,22 @@ +{ + "type": "filament", + "name": "Elegoo RAPID PLA+ @0.2 nozzle", + "inherits": "Elegoo RAPID PLA+ @base", + "from": "system", + "setting_id": "ERPLAPLUS00020", + "instantiation": "true", + "filament_max_volumetric_speed": [ + "3.2" + ], + "compatible_printers": [ + "Elegoo Centauri 0.2 nozzle", + "Elegoo Centauri Carbon 0.2 nozzle", + "Elegoo Neptune 4 0.2 nozzle", + "Elegoo Neptune 4 Pro 0.2 nozzle", + "Elegoo Neptune 4 Plus 0.2 nozzle", + "Elegoo Neptune 4 Max 0.2 nozzle", + "Elegoo Neptune 3 Pro 0.2 nozzle", + "Elegoo Neptune 3 Plus 0.2 nozzle", + "Elegoo Neptune 3 Max 0.2 nozzle" + ] +} diff --git a/resources/profiles/Elegoo/filament/ELEGOO/Elegoo RAPID PLA+ @base.json b/resources/profiles/Elegoo/filament/ELEGOO/Elegoo RAPID PLA+ @base.json new file mode 100644 index 0000000000..31d06cc809 --- /dev/null +++ b/resources/profiles/Elegoo/filament/ELEGOO/Elegoo RAPID PLA+ @base.json @@ -0,0 +1,20 @@ +{ + "type": "filament", + "name": "Elegoo RAPID PLA+ @base", + "inherits": "fdm_elegoo_filament_pla", + "from": "system", + "filament_id": "ERPLAPLUSB00", + "instantiation": "false", + "filament_max_volumetric_speed": [ + "21" + ], + "filament_density": [ + "1.25" + ], + "filament_vendor": [ + "Elegoo" + ], + "filament_start_gcode": [ + "; filament start gcode\n" + ] +} \ No newline at end of file diff --git a/resources/profiles/Elegoo/filament/ELEGOO/Elegoo RAPID PLA+.json b/resources/profiles/Elegoo/filament/ELEGOO/Elegoo RAPID PLA+.json new file mode 100644 index 0000000000..41aba3dcd6 --- /dev/null +++ b/resources/profiles/Elegoo/filament/ELEGOO/Elegoo RAPID PLA+.json @@ -0,0 +1,37 @@ +{ + "type": "filament", + "name": "Elegoo RAPID PLA+", + "inherits": "Elegoo RAPID PLA+ @base", + "from": "system", + "setting_id": "ERPLAPLUS00", + "instantiation": "true", + "fan_cooling_layer_time": [ + "80" + ], + "fan_max_speed": [ + "100" + ], + "fan_min_speed": [ + "60" + ], + "filament_max_volumetric_speed": [ + "21" + ], + "hot_plate_temp": [ + "60" + ], + "hot_plate_temp_initial_layer": [ + "60" + ], + "slow_down_layer_time": [ + "6" + ], + "textured_plate_temp": [ + "60" + ], + "textured_plate_temp_initial_layer": [ + "60" + ], + "compatible_printers": [ + ] +} \ No newline at end of file diff --git a/resources/profiles/Elegoo/filament/ELEGOO/Elegoo TPU 95A @base.json b/resources/profiles/Elegoo/filament/ELEGOO/Elegoo TPU 95A @base.json new file mode 100644 index 0000000000..022972ac19 --- /dev/null +++ b/resources/profiles/Elegoo/filament/ELEGOO/Elegoo TPU 95A @base.json @@ -0,0 +1,26 @@ +{ + "type": "filament", + "name": "Elegoo TPU 95A @base", + "inherits": "fdm_elegoo_filament_tpu", + "from": "system", + "filament_id": "ETPU95AB00", + "instantiation": "false", + "filament_max_volumetric_speed": [ + "3.6" + ], + "filament_vendor": [ + "Elegoo" + ], + "filament_density": [ + "1.21" + ], + "nozzle_temperature": [ + "225" + ], + "nozzle_temperature_initial_layer": [ + "225" + ], + "filament_start_gcode": [ + "; filament start gcode\n" + ] +} \ No newline at end of file diff --git a/resources/profiles/Elegoo/filament/ELEGOO/fdm_elegoo_filament_asa.json b/resources/profiles/Elegoo/filament/ELEGOO/fdm_elegoo_filament_asa.json new file mode 100644 index 0000000000..cb033e1172 --- /dev/null +++ b/resources/profiles/Elegoo/filament/ELEGOO/fdm_elegoo_filament_asa.json @@ -0,0 +1,82 @@ +{ + "type": "filament", + "name": "fdm_elegoo_filament_asa", + "inherits": "fdm_elegoo_filament_common", + "from": "system", + "instantiation": "false", + "activate_air_filtration": [ + "0" + ], + "cool_plate_temp": [ + "0" + ], + "cool_plate_temp_initial_layer": [ + "0" + ], + "eng_plate_temp": [ + "90" + ], + "eng_plate_temp_initial_layer": [ + "90" + ], + "fan_cooling_layer_time": [ + "35" + ], + "fan_max_speed": [ + "80" + ], + "fan_min_speed": [ + "10" + ], + "filament_cost": [ + "0" + ], + "filament_density": [ + "1.04" + ], + "filament_max_volumetric_speed": [ + "16" + ], + "filament_type": [ + "ASA" + ], + "hot_plate_temp": [ + "90" + ], + "hot_plate_temp_initial_layer": [ + "90" + ], + "nozzle_temperature": [ + "260" + ], + "nozzle_temperature_initial_layer": [ + "260" + ], + "nozzle_temperature_range_high": [ + "280" + ], + "nozzle_temperature_range_low": [ + "240" + ], + "overhang_fan_speed": [ + "80" + ], + "overhang_fan_threshold": [ + "25%" + ], + "reduce_fan_stop_start_freq": [ + "1" + ], + "slow_down_layer_time": [ + "3" + ], + "slow_down_min_speed": [ + "20" + ], + "textured_plate_temp": [ + "90" + ], + "textured_plate_temp_initial_layer": [ + "90" + ] +} \ No newline at end of file diff --git a/resources/profiles/Elegoo/filament/ELEGOO/fdm_elegoo_filament_common.json b/resources/profiles/Elegoo/filament/ELEGOO/fdm_elegoo_filament_common.json new file mode 100644 index 0000000000..df77feb47a --- /dev/null +++ b/resources/profiles/Elegoo/filament/ELEGOO/fdm_elegoo_filament_common.json @@ -0,0 +1,160 @@ +{ + "type": "filament", + "name": "fdm_elegoo_filament_common", + "from": "system", + "instantiation": "false", + "activate_air_filtration": [ + "0" + ], + "chamber_temperatures": [ + "0" + ], + "close_fan_the_first_x_layers": [ + "3" + ], + "complete_print_exhaust_fan_speed": [ + "70" + ], + "cool_plate_temp": [ + "60" + ], + "cool_plate_temp_initial_layer": [ + "60" + ], + "during_print_exhaust_fan_speed": [ + "70" + ], + "eng_plate_temp": [ + "60" + ], + "eng_plate_temp_initial_layer": [ + "60" + ], + "fan_cooling_layer_time": [ + "60" + ], + "fan_max_speed": [ + "100" + ], + "fan_min_speed": [ + "35" + ], + "filament_cost": [ + "0" + ], + "filament_density": [ + "0" + ], + "filament_deretraction_speed": [ + "nil" + ], + "filament_diameter": [ + "1.75" + ], + "filament_flow_ratio": [ + "0.98" + ], + "filament_is_support": [ + "0" + ], + "filament_max_volumetric_speed": [ + "1" + ], + "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": [ + "PLA" + ], + "filament_vendor": [ + "Elegoo" + ], + "filament_wipe": [ + "nil" + ], + "filament_wipe_distance": [ + "nil" + ], + "filament_z_hop": [ + "nil" + ], + "filament_z_hop_types": [ + "nil" + ], + "full_fan_speed_layer": [ + "0" + ], + "hot_plate_temp": [ + "60" + ], + "hot_plate_temp_initial_layer": [ + "60" + ], + "nozzle_temperature": [ + "200" + ], + "nozzle_temperature_initial_layer": [ + "200" + ], + "overhang_fan_speed": [ + "100" + ], + "overhang_fan_threshold": [ + "95%" + ], + "reduce_fan_stop_start_freq": [ + "0" + ], + "required_nozzle_HRC": [ + "3" + ], + "slow_down_for_layer_cooling": [ + "1" + ], + "slow_down_layer_time": [ + "8" + ], + "slow_down_min_speed": [ + "10" + ], + "temperature_vitrification": [ + "100" + ], + "textured_plate_temp": [ + "60" + ], + "textured_plate_temp_initial_layer": [ + "60" + ], + "compatible_printers": [], + "filament_start_gcode": [ + "; Filament start gcode\n" + ], + "filament_end_gcode": [ + "; filament end gcode \n" + ] +} \ No newline at end of file diff --git a/resources/profiles/Elegoo/filament/ELEGOO/fdm_elegoo_filament_pet.json b/resources/profiles/Elegoo/filament/ELEGOO/fdm_elegoo_filament_pet.json new file mode 100644 index 0000000000..3951115ee3 --- /dev/null +++ b/resources/profiles/Elegoo/filament/ELEGOO/fdm_elegoo_filament_pet.json @@ -0,0 +1,67 @@ +{ + "type": "filament", + "name": "fdm_elegoo_filament_pet", + "inherits": "fdm_elegoo_filament_common", + "from": "system", + "instantiation": "false", + "eng_plate_temp": [ + "0" + ], + "eng_plate_temp_initial_layer": [ + "0" + ], + "fan_cooling_layer_time": [ + "20" + ], + "fan_min_speed": [ + "20" + ], + "filament_cost": [ + "0" + ], + "filament_density": [ + "1.27" + ], + "filament_max_volumetric_speed": [ + "12" + ], + "filament_type": [ + "PET" + ], + "hot_plate_temp": [ + "80" + ], + "hot_plate_temp_initial_layer": [ + "80" + ], + "nozzle_temperature": [ + "250" + ], + "nozzle_temperature_initial_layer": [ + "250" + ], + "nozzle_temperature_range_high": [ + "260" + ], + "nozzle_temperature_range_low": [ + "220" + ], + "reduce_fan_stop_start_freq": [ + "1" + ], + "temperature_vitrification": [ + "70" + ], + "textured_plate_temp": [ + "80" + ], + "textured_plate_temp_initial_layer": [ + "80" + ], + "filament_start_gcode": [ + "; Filament start gcode\n" + ], + "filament_end_gcode": [ + "; filament end gcode \n" + ] +} \ No newline at end of file diff --git a/resources/profiles/Elegoo/filament/ELEGOO/fdm_elegoo_filament_pla.json b/resources/profiles/Elegoo/filament/ELEGOO/fdm_elegoo_filament_pla.json new file mode 100644 index 0000000000..2f837599c8 --- /dev/null +++ b/resources/profiles/Elegoo/filament/ELEGOO/fdm_elegoo_filament_pla.json @@ -0,0 +1,88 @@ +{ + "type": "filament", + "name": "fdm_elegoo_filament_pla", + "inherits": "fdm_elegoo_filament_common", + "from": "system", + "instantiation": "false", + "filament_max_volumetric_speed": [ + "12" + ], + "filament_type": [ + "PLA" + ], + "filament_density": [ + "1.24" + ], + "filament_cost": [ + "0" + ], + "cool_plate_temp": [ + "35" + ], + "eng_plate_temp": [ + "0" + ], + "textured_plate_temp": [ + "60" + ], + "cool_plate_temp_initial_layer": [ + "35" + ], + "eng_plate_temp_initial_layer": [ + "0" + ], + "textured_plate_temp_initial_layer": [ + "60" + ], + "nozzle_temperature_initial_layer": [ + "220" + ], + "reduce_fan_stop_start_freq": [ + "1" + ], + "overhang_fan_threshold": [ + "50%" + ], + "close_fan_the_first_x_layers": [ + "1" + ], + "nozzle_temperature": [ + "220" + ], + "temperature_vitrification": [ + "45" + ], + "nozzle_temperature_range_low": [ + "190" + ], + "nozzle_temperature_range_high": [ + "240" + ], + "slow_down_min_speed": [ + "20" + ], + "additional_cooling_fan_speed": [ + "0" + ], + "fan_cooling_layer_time": [ + "80" + ], + "fan_min_speed": [ + "50" + ], + "hot_plate_temp": [ + "60" + ], + "hot_plate_temp_initial_layer": [ + "60" + ], + "slow_down_layer_time": [ + "8" + ], + "filament_start_gcode": [ + "; Filament start gcode\n" + ], + "filament_end_gcode": [ + "; filament end gcode \n" + ] +} \ No newline at end of file diff --git a/resources/profiles/Elegoo/filament/ELEGOO/fdm_elegoo_filament_tpu.json b/resources/profiles/Elegoo/filament/ELEGOO/fdm_elegoo_filament_tpu.json new file mode 100644 index 0000000000..98e75f6f20 --- /dev/null +++ b/resources/profiles/Elegoo/filament/ELEGOO/fdm_elegoo_filament_tpu.json @@ -0,0 +1,85 @@ +{ + "type": "filament", + "name": "fdm_elegoo_filament_tpu", + "inherits": "fdm_elegoo_filament_common", + "from": "system", + "instantiation": "false", + "filament_flow_ratio": [ + "0.96" + ], + "additional_cooling_fan_speed": [ + "0" + ], + "close_fan_the_first_x_layers": [ + "1" + ], + "cool_plate_temp": [ + "30" + ], + "cool_plate_temp_initial_layer": [ + "30" + ], + "eng_plate_temp": [ + "30" + ], + "eng_plate_temp_initial_layer": [ + "30" + ], + "fan_cooling_layer_time": [ + "100" + ], + "fan_min_speed": [ + "100" + ], + "filament_cost": [ + "0" + ], + "filament_density": [ + "1.24" + ], + "filament_max_volumetric_speed": [ + "3" + ], + "filament_retraction_length": [ + "0.4" + ], + "filament_type": [ + "TPU" + ], + "hot_plate_temp": [ + "35" + ], + "hot_plate_temp_initial_layer": [ + "35" + ], + "nozzle_temperature": [ + "240" + ], + "nozzle_temperature_initial_layer": [ + "240" + ], + "nozzle_temperature_range_high": [ + "250" + ], + "nozzle_temperature_range_low": [ + "200" + ], + "reduce_fan_stop_start_freq": [ + "1" + ], + "temperature_vitrification": [ + "30" + ], + "textured_plate_temp": [ + "35" + ], + "textured_plate_temp_initial_layer": [ + "35" + ], + "filament_start_gcode": [ + "; Filament start gcode\n" + ], + "filament_end_gcode": [ + "; filament end gcode \n" + ] +} \ No newline at end of file diff --git a/resources/profiles/Elegoo/machine/EC/Elegoo Centauri 0.2 nozzle.json b/resources/profiles/Elegoo/machine/EC/Elegoo Centauri 0.2 nozzle.json new file mode 100644 index 0000000000..771ae88be9 --- /dev/null +++ b/resources/profiles/Elegoo/machine/EC/Elegoo Centauri 0.2 nozzle.json @@ -0,0 +1,32 @@ +{ + "type": "machine", + "name": "Elegoo Centauri 0.2 nozzle", + "inherits": "Elegoo Centauri 0.4 nozzle", + "from": "system", + "setting_id": "EC02", + "instantiation": "true", + "nozzle_diameter": [ + "0.2" + ], + "printer_model": "Elegoo Centauri", + "printer_variant": "0.2", + "default_filament_profile": [ + "Elegoo PLA @0.2 nozzle" + ], + "default_print_profile": "0.10mm Standard @Elegoo C 0.2 nozzle", + "retraction_minimum_travel": [ + "0.4" + ], + "wipe_distance": [ + "0.8" + ], + "retraction_length": [ + "0.5" + ], + "max_layer_height": [ + "0.14" + ], + "min_layer_height": [ + "0.06" + ] +} \ No newline at end of file diff --git a/resources/profiles/Elegoo/machine/EC/Elegoo Centauri 0.4 nozzle.json b/resources/profiles/Elegoo/machine/EC/Elegoo Centauri 0.4 nozzle.json new file mode 100644 index 0000000000..5b196abdd7 --- /dev/null +++ b/resources/profiles/Elegoo/machine/EC/Elegoo Centauri 0.4 nozzle.json @@ -0,0 +1,56 @@ +{ + "type": "machine", + "name": "Elegoo Centauri 0.4 nozzle", + "inherits": "fdm_machine_ecc", + "from": "system", + "setting_id": "EC04", + "instantiation": "true", + "nozzle_diameter": [ + "0.4" + ], + "printer_model": "Elegoo Centauri", + "printer_variant": "0.4", + "auxiliary_fan": "1", + "printable_area": [ + "0x0", + "257x0", + "257x257", + "0x257" + ], + "printable_height": "257", + "retract_lift_below": [ + "255" + ], + "bed_exclude_area": [ + "246x0", + "256x0", + "256x20", + "246x20" + ], + "thumbnails": [ + "144x144" + ], + "machine_max_acceleration_travel": [ + "20000", + "20000" + ], + "default_filament_profile": [ + "Elegoo PLA @EC" + ], + "default_print_profile": "0.20mm Standard @Elegoo C 0.4 nozzle", + "extruder_offset": [ + "0x0" + ], + "fan_speedup_time": "0.5", + "machine_load_filament_time": "29", + "machine_unload_filament_time": "28", + "nozzle_type": "hardened_steel", + "scan_first_layer": "1", + "upward_compatible_machine": [ + ], + "gcode_flavor": "klipper", + "change_filament_gcode": "M600", + "machine_pause_gcode": "M600", + "machine_start_gcode": ";;===== date: 20240520 =====================\n;printer_model:[printer_model]\n;initial_filament:{filament_type[initial_extruder]}\n;curr_bed_type:{curr_bed_type}\nM400 ; wait for buffer to clear\nM220 S100 ;Set the feed speed to 100%\nM221 S100 ;Set the flow rate to 100%\nM104 S140\nM140 S[bed_temperature_initial_layer_single]\nG90\nG28 ;home\nM729 ;Clean Nozzle\n\n\n;=============turn on fans to prevent PLA jamming=================\n{if filament_type[initial_no_support_extruder]==\"PLA\"}\n {if (bed_temperature[initial_no_support_extruder] >50)||(bed_temperature_initial_layer[initial_no_support_extruder] >50)}\n M106 P3 S255\n {elsif (bed_temperature[initial_no_support_extruder] >45)||(bed_temperature_initial_layer[initial_no_support_extruder] >45)}\n M106 P3 S180\n {endif};Prevent PLA from jamming\n{endif}\n\n;enable_pressure_advance:{enable_pressure_advance[initial_extruder]}\n;This value is called if pressure advance is enabled\n{if enable_pressure_advance[initial_extruder] == \"true\"}\nSET_PRESSURE_ADVANCE ADVANCE=[pressure_advance] ;\nM400\n{endif}\nM204 S{min(20000,max(1000,outer_wall_acceleration))} ;Call exterior wall print acceleration\n\n\nG1 X{print_bed_max[0]*0.5} Y-1.2 F20000\nG1 Z0.3 F900\nM109 S[nozzle_temperature_initial_layer]\nM83\nG92 E0 ;Reset Extruder\nG1 F{min(6000, max(900, filament_max_volumetric_speed[initial_no_support_extruder]/0.5/0.3*60))} \nG1 X-1.2 E10.156 ;Draw the first line\nG1 Y98.8 E7.934\nG1 X-0.5 Y100 E0.1\nG1 Y-0.3 E7.934\nG1 X{print_bed_max[0]*0.5-50} E6.284\nG1 F{0.2*min(12000, max(1200, filament_max_volumetric_speed[initial_no_support_extruder]/0.5/0.3*60))} \nG1 X{print_bed_max[0]*0.5-30} E2\nG1 F{min(12000, max(1200, filament_max_volumetric_speed[initial_no_support_extruder]/0.5/0.3*60))} \nG1 X{print_bed_max[0]*0.5-10} E2\nG1 F{0.2*min(12000, max(1200, filament_max_volumetric_speed[initial_no_support_extruder]/0.5/0.3*60))} \nG1 X{print_bed_max[0]*0.5+10} E2\nG1 F{min(12000, max(1200, filament_max_volumetric_speed[initial_no_support_extruder]/0.5/0.3*60))} \nG1 X{print_bed_max[0]*0.5+30} E2\nG1 F{min(12000, max(1200, filament_max_volumetric_speed[initial_no_support_extruder]/0.5/0.3*60))} \nG1 X{print_bed_max[0]*0.5+50} E2\n;End PA test.\n\n\nG3 I-1 J0 Z0.6 F1200.0 ;Move to side a little\nG1 F20000\nG92 E0 ;Reset Extruder\n;LAYER_COUNT:[total_layer_count]\n;LAYER:0", + "machine_end_gcode": ";===== date: 20250109 =====================\nM400 ; wait for buffer to clear\nM140 S0 ;Turn-off bed\nM106 S255 ;Cooling nozzle\nM83\nG92 E0 ; zero the extruder\nG2 I1 J0 Z{max_layer_z+0.5} E-1 F3000 ; lower z a little\nG90\n{if max_layer_z > 50}G1 Z{min(max_layer_z+50, printable_height+0.5)} F20000{else}G1 Z100 F20000 {endif}; Move print head up \nM204 S5000\nM400\nM83\nG1 X202 F20000\nM400\nG1 Y250 F20000\nG1 Y264.5 F1200\nM400\nG92 E0\nM104 S0 ;Turn-off hotend\nM140 S0 ;Turn-off bed\nM106 S0 ; turn off fan\nM106 P2 S0 ; turn off remote part cooling fan\nM106 P3 S0 ; turn off chamber cooling fan\nM84 ;Disable all steppers" +} \ No newline at end of file diff --git a/resources/profiles/Elegoo/machine/EC/Elegoo Centauri 0.6 nozzle.json b/resources/profiles/Elegoo/machine/EC/Elegoo Centauri 0.6 nozzle.json new file mode 100644 index 0000000000..d9f11b1ad0 --- /dev/null +++ b/resources/profiles/Elegoo/machine/EC/Elegoo Centauri 0.6 nozzle.json @@ -0,0 +1,32 @@ +{ + "type": "machine", + "name": "Elegoo Centauri 0.6 nozzle", + "inherits": "Elegoo Centauri 0.4 nozzle", + "from": "system", + "setting_id": "EC06", + "instantiation": "true", + "nozzle_diameter": [ + "0.6" + ], + "printer_model": "Elegoo Centauri", + "printer_variant": "0.6", + "default_filament_profile": [ + "Elegoo PLA @EC" + ], + "default_print_profile": "0.30mm Standard @Elegoo C 0.6 nozzle", + "retraction_minimum_travel": [ + "1.2" + ], + "wipe_distance": [ + "1.8" + ], + "retraction_length": [ + "0.8" + ], + "max_layer_height": [ + "0.42" + ], + "min_layer_height": [ + "0.12" + ] +} \ No newline at end of file diff --git a/resources/profiles/Elegoo/machine/EC/Elegoo Centauri 0.8 nozzle.json b/resources/profiles/Elegoo/machine/EC/Elegoo Centauri 0.8 nozzle.json new file mode 100644 index 0000000000..5491b94b50 --- /dev/null +++ b/resources/profiles/Elegoo/machine/EC/Elegoo Centauri 0.8 nozzle.json @@ -0,0 +1,35 @@ +{ + "type": "machine", + "name": "Elegoo Centauri 0.8 nozzle", + "inherits": "Elegoo Centauri 0.4 nozzle", + "from": "system", + "setting_id": "EC08", + "instantiation": "true", + "nozzle_diameter": [ + "0.8" + ], + "printer_model": "Elegoo Centauri", + "printer_variant": "0.8", + "default_filament_profile": [ + "Elegoo PLA @EC" + ], + "default_print_profile": "0.40mm Standard @Elegoo C 0.8 nozzle", + "retraction_minimum_travel": [ + "1.6" + ], + "wipe_distance": [ + "2.0" + ], + "retraction_length": [ + "1.2" + ], + "max_layer_height": [ + "0.56" + ], + "min_layer_height": [ + "0.16" + ], + "retract_length_toolchange": [ + "3" + ] +} \ No newline at end of file diff --git a/resources/profiles/Elegoo/machine/EC/Elegoo Centauri.json b/resources/profiles/Elegoo/machine/EC/Elegoo Centauri.json new file mode 100644 index 0000000000..d16ef5ea4a --- /dev/null +++ b/resources/profiles/Elegoo/machine/EC/Elegoo Centauri.json @@ -0,0 +1,12 @@ +{ + "type": "machine_model", + "name": "Elegoo Centauri", + "model_id": "Elegoo-C", + "nozzle_diameter": "0.4;0.2;0.6;0.8", + "machine_tech": "FFF", + "family": "Elegoo", + "bed_model": "elegoo_C_buildplate_model.stl", + "bed_texture": "", + "hotend_model": "", + "default_materials": "Elegoo ASA @0.2 nozzle;Elegoo ASA @EC;Elegoo PETG PRO @0.2 nozzle;Elegoo PETG PRO @EC;Elegoo PLA @0.2 nozzle;Elegoo PLA Matte @0.2 nozzle;Elegoo PLA Matte @EC;Elegoo PLA PRO @0.2 nozzle;Elegoo PLA PRO @EC;Elegoo PLA Silk @0.2 nozzle;Elegoo PLA Silk @EC;Elegoo PLA @EC;Elegoo PLA+ @0.2 nozzle;Elegoo PLA+ @EC;Elegoo RAPID PETG @0.2 nozzle;Elegoo RAPID PETG @EC;Elegoo RAPID PETG+ @0.2 nozzle;Elegoo RAPID PETG+ @EC;Elegoo RAPID PLA @0.2 nozzle;Elegoo RAPID PLA @EC;Elegoo RAPID PLA+ @0.2 nozzle;Elegoo RAPID PLA+ @EC;Elegoo TPU 95A @EC" +} diff --git a/resources/profiles/Elegoo/machine/ECC/Elegoo Centauri Carbon 0.2 nozzle.json b/resources/profiles/Elegoo/machine/ECC/Elegoo Centauri Carbon 0.2 nozzle.json new file mode 100644 index 0000000000..218ab73e1c --- /dev/null +++ b/resources/profiles/Elegoo/machine/ECC/Elegoo Centauri Carbon 0.2 nozzle.json @@ -0,0 +1,32 @@ +{ + "type": "machine", + "name": "Elegoo Centauri Carbon 0.2 nozzle", + "inherits": "Elegoo Centauri Carbon 0.4 nozzle", + "from": "system", + "setting_id": "ECC02", + "instantiation": "true", + "nozzle_diameter": [ + "0.2" + ], + "printer_model": "Elegoo Centauri Carbon", + "printer_variant": "0.2", + "default_filament_profile": [ + "Elegoo PLA @0.2 nozzle" + ], + "default_print_profile": "0.10mm Standard @Elegoo CC 0.2 nozzle", + "retraction_minimum_travel": [ + "0.4" + ], + "wipe_distance": [ + "0.8" + ], + "retraction_length": [ + "0.5" + ], + "max_layer_height": [ + "0.14" + ], + "min_layer_height": [ + "0.06" + ] +} \ No newline at end of file diff --git a/resources/profiles/Elegoo/machine/ECC/Elegoo Centauri Carbon 0.4 nozzle.json b/resources/profiles/Elegoo/machine/ECC/Elegoo Centauri Carbon 0.4 nozzle.json new file mode 100644 index 0000000000..2757442d27 --- /dev/null +++ b/resources/profiles/Elegoo/machine/ECC/Elegoo Centauri Carbon 0.4 nozzle.json @@ -0,0 +1,56 @@ +{ + "type": "machine", + "name": "Elegoo Centauri Carbon 0.4 nozzle", + "inherits": "fdm_machine_ecc", + "from": "system", + "setting_id": "ECC04", + "instantiation": "true", + "nozzle_diameter": [ + "0.4" + ], + "printer_model": "Elegoo Centauri Carbon", + "printer_variant": "0.4", + "auxiliary_fan": "1", + "printable_area": [ + "0x0", + "257x0", + "257x257", + "0x257" + ], + "printable_height": "257", + "retract_lift_below": [ + "255" + ], + "bed_exclude_area": [ + "246x0", + "256x0", + "256x20", + "246x20" + ], + "thumbnails": [ + "144x144" + ], + "machine_max_acceleration_travel": [ + "20000", + "20000" + ], + "default_filament_profile": [ + "Elegoo PLA @ECC" + ], + "default_print_profile": "0.20mm Standard @Elegoo CC 0.4 nozzle", + "extruder_offset": [ + "0x0" + ], + "fan_speedup_time": "0.5", + "machine_load_filament_time": "29", + "machine_unload_filament_time": "28", + "nozzle_type": "hardened_steel", + "scan_first_layer": "1", + "upward_compatible_machine": [ + ], + "gcode_flavor": "klipper", + "change_filament_gcode": "M600", + "machine_pause_gcode": "M600", + "machine_start_gcode": ";;===== date: 20240520 =====================\n;printer_model:[printer_model]\n;initial_filament:{filament_type[initial_extruder]}\n;curr_bed_type:{curr_bed_type}\nM400 ; wait for buffer to clear\nM220 S100 ;Set the feed speed to 100%\nM221 S100 ;Set the flow rate to 100%\nM104 S140\nM140 S[bed_temperature_initial_layer_single]\nG90\nG28 ;home\nM729 ;Clean Nozzle\n\n\n;=============turn on fans to prevent PLA jamming=================\n{if filament_type[initial_no_support_extruder]==\"PLA\"}\n {if (bed_temperature[initial_no_support_extruder] >50)||(bed_temperature_initial_layer[initial_no_support_extruder] >50)}\n M106 P3 S255\n {elsif (bed_temperature[initial_no_support_extruder] >45)||(bed_temperature_initial_layer[initial_no_support_extruder] >45)}\n M106 P3 S180\n {endif};Prevent PLA from jamming\n{endif}\n\n;enable_pressure_advance:{enable_pressure_advance[initial_extruder]}\n;This value is called if pressure advance is enabled\n{if enable_pressure_advance[initial_extruder] == \"true\"}\nSET_PRESSURE_ADVANCE ADVANCE=[pressure_advance] ;\nM400\n{endif}\nM204 S{min(20000,max(1000,outer_wall_acceleration))} ;Call exterior wall print acceleration\n\n\nG1 X{print_bed_max[0]*0.5} Y-1.2 F20000\nG1 Z0.3 F900\nM109 S[nozzle_temperature_initial_layer]\nM83\nG92 E0 ;Reset Extruder\nG1 F{min(6000, max(900, filament_max_volumetric_speed[initial_no_support_extruder]/0.5/0.3*60))} \nG1 X-1.2 E10.156 ;Draw the first line\nG1 Y98.8 E7.934\nG1 X-0.5 Y100 E0.1\nG1 Y-0.3 E7.934\nG1 X{print_bed_max[0]*0.5-50} E6.284\nG1 F{0.2*min(12000, max(1200, filament_max_volumetric_speed[initial_no_support_extruder]/0.5/0.3*60))} \nG1 X{print_bed_max[0]*0.5-30} E2\nG1 F{min(12000, max(1200, filament_max_volumetric_speed[initial_no_support_extruder]/0.5/0.3*60))} \nG1 X{print_bed_max[0]*0.5-10} E2\nG1 F{0.2*min(12000, max(1200, filament_max_volumetric_speed[initial_no_support_extruder]/0.5/0.3*60))} \nG1 X{print_bed_max[0]*0.5+10} E2\nG1 F{min(12000, max(1200, filament_max_volumetric_speed[initial_no_support_extruder]/0.5/0.3*60))} \nG1 X{print_bed_max[0]*0.5+30} E2\nG1 F{min(12000, max(1200, filament_max_volumetric_speed[initial_no_support_extruder]/0.5/0.3*60))} \nG1 X{print_bed_max[0]*0.5+50} E2\n;End PA test.\n\n\nG3 I-1 J0 Z0.6 F1200.0 ;Move to side a little\nG1 F20000\nG92 E0 ;Reset Extruder\n;LAYER_COUNT:[total_layer_count]\n;LAYER:0", + "machine_end_gcode": ";===== date: 20250109 =====================\nM400 ; wait for buffer to clear\nM140 S0 ;Turn-off bed\nM106 S255 ;Cooling nozzle\nM83\nG92 E0 ; zero the extruder\nG2 I1 J0 Z{max_layer_z+0.5} E-1 F3000 ; lower z a little\nG90\n{if max_layer_z > 50}G1 Z{min(max_layer_z+50, printable_height+0.5)} F20000{else}G1 Z100 F20000 {endif}; Move print head up \nM204 S5000\nM400\nM83\nG1 X202 F20000\nM400\nG1 Y250 F20000\nG1 Y264.5 F1200\nM400\nG92 E0\nM104 S0 ;Turn-off hotend\nM140 S0 ;Turn-off bed\nM106 S0 ; turn off fan\nM106 P2 S0 ; turn off remote part cooling fan\nM106 P3 S0 ; turn off chamber cooling fan\nM84 ;Disable all steppers" +} \ No newline at end of file diff --git a/resources/profiles/Elegoo/machine/ECC/Elegoo Centauri Carbon 0.6 nozzle.json b/resources/profiles/Elegoo/machine/ECC/Elegoo Centauri Carbon 0.6 nozzle.json new file mode 100644 index 0000000000..92006ad780 --- /dev/null +++ b/resources/profiles/Elegoo/machine/ECC/Elegoo Centauri Carbon 0.6 nozzle.json @@ -0,0 +1,32 @@ +{ + "type": "machine", + "name": "Elegoo Centauri Carbon 0.6 nozzle", + "inherits": "Elegoo Centauri Carbon 0.4 nozzle", + "from": "system", + "setting_id": "ECC06", + "instantiation": "true", + "nozzle_diameter": [ + "0.6" + ], + "printer_model": "Elegoo Centauri Carbon", + "printer_variant": "0.6", + "default_filament_profile": [ + "Elegoo PLA @ECC" + ], + "default_print_profile": "0.30mm Standard @Elegoo CC 0.6 nozzle", + "retraction_minimum_travel": [ + "1.2" + ], + "wipe_distance": [ + "1.8" + ], + "retraction_length": [ + "0.8" + ], + "max_layer_height": [ + "0.42" + ], + "min_layer_height": [ + "0.12" + ] +} \ No newline at end of file diff --git a/resources/profiles/Elegoo/machine/ECC/Elegoo Centauri Carbon 0.8 nozzle.json b/resources/profiles/Elegoo/machine/ECC/Elegoo Centauri Carbon 0.8 nozzle.json new file mode 100644 index 0000000000..3feab339ef --- /dev/null +++ b/resources/profiles/Elegoo/machine/ECC/Elegoo Centauri Carbon 0.8 nozzle.json @@ -0,0 +1,35 @@ +{ + "type": "machine", + "name": "Elegoo Centauri Carbon 0.8 nozzle", + "inherits": "Elegoo Centauri Carbon 0.4 nozzle", + "from": "system", + "setting_id": "ECC08", + "instantiation": "true", + "nozzle_diameter": [ + "0.8" + ], + "printer_model": "Elegoo Centauri Carbon", + "printer_variant": "0.8", + "default_filament_profile": [ + "Elegoo PLA @ECC" + ], + "default_print_profile": "0.40mm Standard @Elegoo CC 0.8 nozzle", + "retraction_minimum_travel": [ + "1.6" + ], + "wipe_distance": [ + "2.0" + ], + "retraction_length": [ + "1.2" + ], + "max_layer_height": [ + "0.56" + ], + "min_layer_height": [ + "0.16" + ], + "retract_length_toolchange": [ + "3" + ] +} \ No newline at end of file diff --git a/resources/profiles/Elegoo/machine/ECC/Elegoo Centauri Carbon.json b/resources/profiles/Elegoo/machine/ECC/Elegoo Centauri Carbon.json new file mode 100644 index 0000000000..999b98354e --- /dev/null +++ b/resources/profiles/Elegoo/machine/ECC/Elegoo Centauri Carbon.json @@ -0,0 +1,12 @@ +{ + "type": "machine_model", + "name": "Elegoo Centauri Carbon", + "model_id": "Elegoo-CC", + "nozzle_diameter": "0.4;0.2;0.6;0.8", + "machine_tech": "FFF", + "family": "Elegoo", + "bed_model": "elegoo_CC_buildplate_model.stl", + "bed_texture": "", + "hotend_model": "", + "default_materials": "Elegoo ASA @0.2 nozzle;Elegoo ASA @ECC;Elegoo PETG PRO @0.2 nozzle;Elegoo PETG PRO @ECC;Elegoo PLA @0.2 nozzle;Elegoo PLA Matte @0.2 nozzle;Elegoo PLA Matte @ECC;Elegoo PLA PRO @0.2 nozzle;Elegoo PLA PRO @ECC;Elegoo PLA Silk @0.2 nozzle;Elegoo PLA Silk @ECC;Elegoo PLA-CF @ECC;Elegoo PLA @ECC;Elegoo PLA+ @0.2 nozzle;Elegoo PLA+ @ECC;Elegoo RAPID PETG @0.2 nozzle;Elegoo RAPID PETG @ECC;Elegoo RAPID PETG+ @0.2 nozzle;Elegoo RAPID PETG+ @ECC;Elegoo RAPID PLA @0.2 nozzle;Elegoo RAPID PLA @ECC;Elegoo RAPID PLA+ @0.2 nozzle;Elegoo RAPID PLA+ @ECC;Elegoo TPU 95A @ECC" +} diff --git a/resources/profiles/Elegoo/machine/ECC/fdm_machine_ecc.json b/resources/profiles/Elegoo/machine/ECC/fdm_machine_ecc.json new file mode 100644 index 0000000000..48aeca1553 --- /dev/null +++ b/resources/profiles/Elegoo/machine/ECC/fdm_machine_ecc.json @@ -0,0 +1,143 @@ +{ + "type": "machine", + "name": "fdm_machine_ecc", + "inherits": "fdm_machine_ecc_common", + "from": "system", + "instantiation": "false", + "nozzle_diameter": [ + "0.4" + ], + "printer_variant": "0.4", + "printable_area": [ + "0x0", + "256x0", + "256x256", + "0x256" + ], + "auxiliary_fan": "1", + "bed_exclude_area": [ + "0x0" + ], + "default_filament_profile": [ + "Elegoo PLA" + ], + "default_print_profile": "0.20mm Standard @Elegoo CC 0.4 nozzle", + "extruder_colour": [ + "#018001" + ], + "machine_max_acceleration_e": [ + "5000", + "5000" + ], + "machine_max_acceleration_extruding": [ + "20000", + "20000" + ], + "machine_max_acceleration_retracting": [ + "5000", + "5000" + ], + "machine_max_acceleration_travel": [ + "9000", + "9000" + ], + "machine_max_acceleration_x": [ + "20000", + "20000" + ], + "machine_max_acceleration_y": [ + "20000", + "20000" + ], + "machine_max_acceleration_z": [ + "500", + "200" + ], + "machine_max_speed_e": [ + "30", + "30" + ], + "machine_max_speed_x": [ + "500", + "200" + ], + "machine_max_speed_y": [ + "500", + "200" + ], + "machine_max_speed_z": [ + "20", + "20" + ], + "machine_max_jerk_e": [ + "2.5", + "2.5" + ], + "machine_max_jerk_x": [ + "9", + "9" + ], + "machine_max_jerk_y": [ + "9", + "9" + ], + "machine_max_jerk_z": [ + "3", + "3" + ], + "machine_min_extruding_rate": [ + "0", + "0" + ], + "machine_min_travel_rate": [ + "0", + "0" + ], + "retract_lift_below":[ + "249" + ], + "extruder_clearance_radius": "57", + "extruder_clearance_max_radius": "68", + "extruder_clearance_height_to_lid": "90", + "nozzle_volume": "107", + "printer_structure": "corexy", + "best_object_pos":"0.5x0.5", + "retraction_minimum_travel": [ + "0.8" + ], + "retract_before_wipe": [ + "0%" + ], + "wipe_distance": [ + "1.2" + ], + "retraction_length": [ + "0.8" + ], + "retract_length_toolchange": [ + "2" + ], + "z_hop": [ + "0.4" + ], + "retraction_speed": [ + "30" + ], + "deretraction_speed": [ + "30" + ], + "z_hop_types": [ + "Auto Lift" + ], + "thumbnails": [ + "320x320", + "160x160" + ], + "thumbnails_format": "PNG", + "nozzle_type": "brass", + "single_extruder_multi_material": "1", + "machine_end_gcode": ";===== date: 20240510 =====================\nM400 ; wait for buffer to clear\nG92 E0 ; zero the extruder\nG1 E-0.8 F1800 ; retract\nG1 Z{max_layer_z + 0.5} F900 ; lower z a little\nG1 X65 Y245 F12000 ; move to safe pos \nG1 Y245 F3000\n\nG1 X65 Y245 F12000\nG1 Y245 F3000\nM140 S0 ; turn off bed\nM106 S0 ; turn off fan\nM106 P2 S0 ; turn off remote part cooling fan\nM106 P3 S0 ; turn off chamber cooling fan\n", + "layer_change_gcode": ";LAYER:{layer_num+1}\n", + "change_filament_gcode": "", + "machine_pause_gcode": "M600" +} \ No newline at end of file diff --git a/resources/profiles/Elegoo/machine/ECC/fdm_machine_ecc_common.json b/resources/profiles/Elegoo/machine/ECC/fdm_machine_ecc_common.json new file mode 100644 index 0000000000..129aa8fcef --- /dev/null +++ b/resources/profiles/Elegoo/machine/ECC/fdm_machine_ecc_common.json @@ -0,0 +1,130 @@ +{ + "type": "machine", + "name": "fdm_machine_ecc_common", + "from": "system", + "instantiation": "false", + "nozzle_diameter": [ + "0.4" + ], + "printer_variant": "0.4", + "support_chamber_temp_control": "0", + "printer_technology": "FFF", + "printer_notes": "", + "deretraction_speed": [ + "40" + ], + "extruder_colour": [ + "#FCE94F" + ], + "extruder_offset": [ + "0x0" + ], + "gcode_flavor": "marlin", + "silent_mode": "0", + "machine_max_acceleration_e": [ + "5000" + ], + "machine_max_acceleration_extruding": [ + "10000" + ], + "machine_max_acceleration_retracting": [ + "1000" + ], + "machine_max_acceleration_x": [ + "10000" + ], + "machine_max_acceleration_y": [ + "10000" + ], + "machine_max_acceleration_z": [ + "100" + ], + "machine_max_speed_e": [ + "60" + ], + "machine_max_speed_x": [ + "500" + ], + "machine_max_speed_y": [ + "500" + ], + "machine_max_speed_z": [ + "10" + ], + "machine_max_jerk_e": [ + "5" + ], + "machine_max_jerk_x": [ + "8" + ], + "machine_max_jerk_y": [ + "8" + ], + "machine_max_jerk_z": [ + "3" + ], + "machine_min_extruding_rate": [ + "0" + ], + "machine_min_travel_rate": [ + "0" + ], + "max_layer_height": [ + "0.28" + ], + "min_layer_height": [ + "0.08" + ], + "printable_height": "250", + "extruder_clearance_radius": "65", + "extruder_clearance_height_to_rod": "36", + "extruder_clearance_height_to_lid": "140", + "printer_settings_id": "Elegoo", + "disable_m73": "1", + "retraction_minimum_travel": [ + "2" + ], + "retract_before_wipe": [ + "70%" + ], + "retract_when_changing_layer": [ + "1" + ], + "retraction_length": [ + "5" + ], + "retract_length_toolchange": [ + "1" + ], + "z_hop": [ + "0" + ], + "retract_restart_extra": [ + "0" + ], + "retract_restart_extra_toolchange": [ + "0" + ], + "retraction_speed": [ + "60" + ], + "cooling_tube_retraction": "90", + "parking_pos_retraction": "90", + "single_extruder_multi_material": "1", + "support_air_filtration": "0", + "wipe": [ + "1" + ], + "z_hop_types": [ + "Auto Lift" + ], + "default_filament_profile": [], + "before_layer_change_gcode": ";BEFORE_LAYER_CHANGE\n;[layer_z]\nG92 E0\n", + "layer_change_gcode": ";LAYER:{layer_num+1}\n", + "machine_start_gcode": "", + "machine_end_gcode": "", + "change_filament_gcode": "", + "purge_in_prime_tower": "0", + "manual_filament_change": "1", + "enable_filament_ramming": "0" +} \ No newline at end of file diff --git a/resources/profiles/Elegoo/process/0.48mm Draft @Elegoo Giga 0.8 nozzle.json b/resources/profiles/Elegoo/process/0.48mm Draft @Elegoo Giga 0.8 nozzle.json index a74ffca3de..29e330e3e0 100644 --- a/resources/profiles/Elegoo/process/0.48mm Draft @Elegoo Giga 0.8 nozzle.json +++ b/resources/profiles/Elegoo/process/0.48mm Draft @Elegoo Giga 0.8 nozzle.json @@ -2,6 +2,5 @@ "inherits": "0.40mm Standard @Elegoo Giga 0.8 nozzle", "layer_height": "0.48", "name": "0.48mm Draft @Elegoo Giga 0.8 nozzle", - "instantiation": "true", "instantiation": "true" } diff --git a/resources/profiles/Elegoo/process/EC/0.08mm Optimal @Elegoo C 0.2 nozzle.json b/resources/profiles/Elegoo/process/EC/0.08mm Optimal @Elegoo C 0.2 nozzle.json new file mode 100644 index 0000000000..4e3cdbb77a --- /dev/null +++ b/resources/profiles/Elegoo/process/EC/0.08mm Optimal @Elegoo C 0.2 nozzle.json @@ -0,0 +1,7 @@ +{ + "elefant_foot_compensation": "0.05", + "inherits": "0.10mm Standard @Elegoo C 0.2 nozzle", + "layer_height": "0.08", + "name": "0.08mm Optimal @Elegoo C 0.2 nozzle", + "instantiation": "true" +} diff --git a/resources/profiles/Elegoo/process/EC/0.10mm Standard @Elegoo C 0.2 nozzle.json b/resources/profiles/Elegoo/process/EC/0.10mm Standard @Elegoo C 0.2 nozzle.json new file mode 100644 index 0000000000..b0b493d5c1 --- /dev/null +++ b/resources/profiles/Elegoo/process/EC/0.10mm Standard @Elegoo C 0.2 nozzle.json @@ -0,0 +1,14 @@ +{ + "type": "process", + "name": "0.10mm Standard @Elegoo C 0.2 nozzle", + "inherits": "fdm_process_ecc_02010", + "from": "system", + "setting_id": "PEC02010", + "instantiation": "true", + "sparse_infill_pattern": "zig-zag", + "filename_format": "EC_{nozzle_diameter[0]}_{input_filename_base}_{filament_type[0]}{layer_height}_{print_time}.gcode", + "elefant_foot_compensation": "0.15", + "compatible_printers": [ + "Elegoo Centauri 0.2 nozzle" + ] +} \ No newline at end of file diff --git a/resources/profiles/Elegoo/process/EC/0.12mm Draft @Elegoo C 0.2 nozzle.json b/resources/profiles/Elegoo/process/EC/0.12mm Draft @Elegoo C 0.2 nozzle.json new file mode 100644 index 0000000000..d44d74b44f --- /dev/null +++ b/resources/profiles/Elegoo/process/EC/0.12mm Draft @Elegoo C 0.2 nozzle.json @@ -0,0 +1,6 @@ +{ + "inherits": "0.10mm Standard @Elegoo C 0.2 nozzle", + "layer_height": "0.12", + "name": "0.12mm Draft @Elegoo C 0.2 nozzle", + "instantiation": "true" +} diff --git a/resources/profiles/Elegoo/process/EC/0.12mm Fine @Elegoo C 0.4 nozzle.json b/resources/profiles/Elegoo/process/EC/0.12mm Fine @Elegoo C 0.4 nozzle.json new file mode 100644 index 0000000000..6673f84cdc --- /dev/null +++ b/resources/profiles/Elegoo/process/EC/0.12mm Fine @Elegoo C 0.4 nozzle.json @@ -0,0 +1,7 @@ +{ + "inherits": "0.20mm Standard @Elegoo C 0.4 nozzle", + "layer_height": "0.12", + "name": "0.12mm Fine @Elegoo C 0.4 nozzle", + "wall_loops": "3", + "instantiation": "true" +} diff --git a/resources/profiles/Elegoo/process/EC/0.14mm Extra Draft @Elegoo C 0.2 nozzle.json b/resources/profiles/Elegoo/process/EC/0.14mm Extra Draft @Elegoo C 0.2 nozzle.json new file mode 100644 index 0000000000..b8de607b01 --- /dev/null +++ b/resources/profiles/Elegoo/process/EC/0.14mm Extra Draft @Elegoo C 0.2 nozzle.json @@ -0,0 +1,6 @@ +{ + "inherits": "0.10mm Standard @Elegoo C 0.2 nozzle", + "layer_height": "0.14", + "name": "0.14mm Extra Draft @Elegoo C 0.2 nozzle", + "instantiation": "true" +} diff --git a/resources/profiles/Elegoo/process/EC/0.16mm Extra Fine @Elegoo C 0.8 nozzle.json b/resources/profiles/Elegoo/process/EC/0.16mm Extra Fine @Elegoo C 0.8 nozzle.json new file mode 100644 index 0000000000..c2ea2b0c0d --- /dev/null +++ b/resources/profiles/Elegoo/process/EC/0.16mm Extra Fine @Elegoo C 0.8 nozzle.json @@ -0,0 +1,7 @@ +{ + "inherits": "0.40mm Standard @Elegoo C 0.8 nozzle", + "initial_layer_print_height": "0.3", + "layer_height": "0.16", + "name": "0.16mm Extra Fine @Elegoo C 0.8 nozzle", + "instantiation": "true" +} diff --git a/resources/profiles/Elegoo/process/EC/0.16mm Optimal @Elegoo C 0.4 nozzle.json b/resources/profiles/Elegoo/process/EC/0.16mm Optimal @Elegoo C 0.4 nozzle.json new file mode 100644 index 0000000000..137d7bb435 --- /dev/null +++ b/resources/profiles/Elegoo/process/EC/0.16mm Optimal @Elegoo C 0.4 nozzle.json @@ -0,0 +1,6 @@ +{ + "inherits": "0.20mm Standard @Elegoo C 0.4 nozzle", + "layer_height": "0.16", + "name": "0.16mm Optimal @Elegoo C 0.4 nozzle", + "instantiation": "true" +} diff --git a/resources/profiles/Elegoo/process/EC/0.18mm Fine @Elegoo C 0.6 nozzle.json b/resources/profiles/Elegoo/process/EC/0.18mm Fine @Elegoo C 0.6 nozzle.json new file mode 100644 index 0000000000..217e174eb7 --- /dev/null +++ b/resources/profiles/Elegoo/process/EC/0.18mm Fine @Elegoo C 0.6 nozzle.json @@ -0,0 +1,6 @@ +{ + "inherits": "0.30mm Standard @Elegoo C 0.6 nozzle", + "layer_height": "0.18", + "name": "0.18mm Fine @Elegoo C 0.6 nozzle", + "instantiation": "true" +} diff --git a/resources/profiles/Elegoo/process/EC/0.20mm Standard @Elegoo C 0.4 nozzle.json b/resources/profiles/Elegoo/process/EC/0.20mm Standard @Elegoo C 0.4 nozzle.json new file mode 100644 index 0000000000..538c8b3e65 --- /dev/null +++ b/resources/profiles/Elegoo/process/EC/0.20mm Standard @Elegoo C 0.4 nozzle.json @@ -0,0 +1,15 @@ +{ + "type": "process", + "name": "0.20mm Standard @Elegoo C 0.4 nozzle", + "inherits": "fdm_process_ecc_04020", + "from": "system", + "setting_id": "PEC04020", + "instantiation": "true", + "bottom_shell_layers": "3", + "bottom_shell_thickness": "0.6", + "sparse_infill_pattern": "zig-zag", + "filename_format": "EC_{nozzle_diameter[0]}_{input_filename_base}_{filament_type[0]}{layer_height}_{print_time}.gcode", + "compatible_printers": [ + "Elegoo Centauri 0.4 nozzle" + ] +} \ No newline at end of file diff --git a/resources/profiles/Elegoo/process/EC/0.20mm Strength @Elegoo C 0.4 nozzle.json b/resources/profiles/Elegoo/process/EC/0.20mm Strength @Elegoo C 0.4 nozzle.json new file mode 100644 index 0000000000..cd35fa1ad7 --- /dev/null +++ b/resources/profiles/Elegoo/process/EC/0.20mm Strength @Elegoo C 0.4 nozzle.json @@ -0,0 +1,13 @@ +{ + "inherits": "0.20mm Standard @Elegoo C 0.4 nozzle", + "name": "0.20mm Strength @Elegoo C 0.4 nozzle", + "wall_sequence": "inner-outer-inner wall", + "reduce_crossing_wall": "1", + "bottom_shell_layers": "5", + "outer_wall_speed": "120", + "print_flow_ratio": "0.95", + "sparse_infill_density": "20%", + "top_shell_layers": "6", + "wall_loops": "6", + "instantiation": "true" +} diff --git a/resources/profiles/Elegoo/process/EC/0.24mm Draft @Elegoo C 0.4 nozzle.json b/resources/profiles/Elegoo/process/EC/0.24mm Draft @Elegoo C 0.4 nozzle.json new file mode 100644 index 0000000000..203b7e4bfd --- /dev/null +++ b/resources/profiles/Elegoo/process/EC/0.24mm Draft @Elegoo C 0.4 nozzle.json @@ -0,0 +1,6 @@ +{ + "inherits": "0.20mm Standard @Elegoo C 0.4 nozzle", + "layer_height": "0.24", + "name": "0.24mm Draft @Elegoo C 0.4 nozzle", + "instantiation": "true" +} diff --git a/resources/profiles/Elegoo/process/EC/0.24mm Fine @Elegoo C 0.8 nozzle.json b/resources/profiles/Elegoo/process/EC/0.24mm Fine @Elegoo C 0.8 nozzle.json new file mode 100644 index 0000000000..e14a75ec1b --- /dev/null +++ b/resources/profiles/Elegoo/process/EC/0.24mm Fine @Elegoo C 0.8 nozzle.json @@ -0,0 +1,7 @@ +{ + "inherits": "0.40mm Standard @Elegoo C 0.8 nozzle", + "initial_layer_print_height": "0.3", + "layer_height": "0.24", + "name": "0.24mm Fine @Elegoo C 0.8 nozzle", + "instantiation": "true" +} diff --git a/resources/profiles/Elegoo/process/EC/0.24mm Optimal @Elegoo C 0.6 nozzle.json b/resources/profiles/Elegoo/process/EC/0.24mm Optimal @Elegoo C 0.6 nozzle.json new file mode 100644 index 0000000000..e8a6624341 --- /dev/null +++ b/resources/profiles/Elegoo/process/EC/0.24mm Optimal @Elegoo C 0.6 nozzle.json @@ -0,0 +1,6 @@ +{ + "inherits": "0.30mm Standard @Elegoo C 0.6 nozzle", + "layer_height": "0.24", + "name": "0.24mm Optimal @Elegoo C 0.6 nozzle", + "instantiation": "true" +} diff --git a/resources/profiles/Elegoo/process/EC/0.28mm Extra Draft @Elegoo C 0.4 nozzle.json b/resources/profiles/Elegoo/process/EC/0.28mm Extra Draft @Elegoo C 0.4 nozzle.json new file mode 100644 index 0000000000..b6dab7d434 --- /dev/null +++ b/resources/profiles/Elegoo/process/EC/0.28mm Extra Draft @Elegoo C 0.4 nozzle.json @@ -0,0 +1,6 @@ +{ + "inherits": "0.20mm Standard @Elegoo C 0.4 nozzle", + "layer_height": "0.28", + "name": "0.28mm Extra Draft @Elegoo C 0.4 nozzle", + "instantiation": "true" +} diff --git a/resources/profiles/Elegoo/process/EC/0.30mm Standard @Elegoo C 0.6 nozzle.json b/resources/profiles/Elegoo/process/EC/0.30mm Standard @Elegoo C 0.6 nozzle.json new file mode 100644 index 0000000000..8421d8e308 --- /dev/null +++ b/resources/profiles/Elegoo/process/EC/0.30mm Standard @Elegoo C 0.6 nozzle.json @@ -0,0 +1,13 @@ +{ + "type": "process", + "name": "0.30mm Standard @Elegoo C 0.6 nozzle", + "inherits": "fdm_process_ecc_06030", + "from": "system", + "setting_id": "PEC06030", + "instantiation": "true", + "sparse_infill_pattern": "zig-zag", + "filename_format": "EC_{nozzle_diameter[0]}_{input_filename_base}_{filament_type[0]}{layer_height}_{print_time}.gcode", + "compatible_printers": [ + "Elegoo Centauri 0.6 nozzle" + ] +} \ No newline at end of file diff --git a/resources/profiles/Elegoo/process/EC/0.30mm Strength @Elegoo C 0.6 nozzle.json b/resources/profiles/Elegoo/process/EC/0.30mm Strength @Elegoo C 0.6 nozzle.json new file mode 100644 index 0000000000..b7829d73a1 --- /dev/null +++ b/resources/profiles/Elegoo/process/EC/0.30mm Strength @Elegoo C 0.6 nozzle.json @@ -0,0 +1,12 @@ +{ + "inherits": "0.30mm Standard @Elegoo C 0.6 nozzle", + "inner_wall_speed": "120", + "name": "0.30mm Strength @Elegoo C 0.6 nozzle", + "wall_sequence": "inner-outer-inner wall", + "reduce_crossing_wall": "1", + "outer_wall_speed": "80", + "sparse_infill_density": "15%", + "top_surface_speed": "120", + "wall_loops": "4", + "instantiation": "true" +} diff --git a/resources/profiles/Elegoo/process/EC/0.32mm Optimal @Elegoo C 0.8 nozzle.json b/resources/profiles/Elegoo/process/EC/0.32mm Optimal @Elegoo C 0.8 nozzle.json new file mode 100644 index 0000000000..ac37109ba6 --- /dev/null +++ b/resources/profiles/Elegoo/process/EC/0.32mm Optimal @Elegoo C 0.8 nozzle.json @@ -0,0 +1,6 @@ +{ + "inherits": "0.40mm Standard @Elegoo C 0.8 nozzle", + "layer_height": "0.32", + "name": "0.32mm Optimal @Elegoo C 0.8 nozzle", + "instantiation": "true" +} diff --git a/resources/profiles/Elegoo/process/EC/0.36mm Draft @Elegoo C 0.6 nozzle.json b/resources/profiles/Elegoo/process/EC/0.36mm Draft @Elegoo C 0.6 nozzle.json new file mode 100644 index 0000000000..efddf97035 --- /dev/null +++ b/resources/profiles/Elegoo/process/EC/0.36mm Draft @Elegoo C 0.6 nozzle.json @@ -0,0 +1,6 @@ +{ + "inherits": "0.30mm Standard @Elegoo C 0.6 nozzle", + "layer_height": "0.36", + "name": "0.36mm Draft @Elegoo C 0.6 nozzle", + "instantiation": "true" +} diff --git a/resources/profiles/Elegoo/process/EC/0.40mm Standard @Elegoo C 0.8 nozzle.json b/resources/profiles/Elegoo/process/EC/0.40mm Standard @Elegoo C 0.8 nozzle.json new file mode 100644 index 0000000000..b83167b57f --- /dev/null +++ b/resources/profiles/Elegoo/process/EC/0.40mm Standard @Elegoo C 0.8 nozzle.json @@ -0,0 +1,13 @@ +{ + "type": "process", + "name": "0.40mm Standard @Elegoo C 0.8 nozzle", + "inherits": "fdm_process_ecc_08040", + "from": "system", + "setting_id": "PEC08040", + "instantiation": "true", + "sparse_infill_pattern": "zig-zag", + "filename_format": "EC_{nozzle_diameter[0]}_{input_filename_base}_{filament_type[0]}{layer_height}_{print_time}.gcode", + "compatible_printers": [ + "Elegoo Centauri 0.8 nozzle" + ] +} \ No newline at end of file diff --git a/resources/profiles/Elegoo/process/EC/0.42mm Extra Draft @Elegoo C 0.6 nozzle.json b/resources/profiles/Elegoo/process/EC/0.42mm Extra Draft @Elegoo C 0.6 nozzle.json new file mode 100644 index 0000000000..46fca6e52e --- /dev/null +++ b/resources/profiles/Elegoo/process/EC/0.42mm Extra Draft @Elegoo C 0.6 nozzle.json @@ -0,0 +1,6 @@ +{ + "inherits": "0.30mm Standard @Elegoo C 0.6 nozzle", + "layer_height": "0.42", + "name": "0.42mm Extra Draft @Elegoo C 0.6 nozzle", + "instantiation": "true" +} diff --git a/resources/profiles/Elegoo/process/EC/0.48mm Draft @Elegoo C 0.8 nozzle.json b/resources/profiles/Elegoo/process/EC/0.48mm Draft @Elegoo C 0.8 nozzle.json new file mode 100644 index 0000000000..337e27e01a --- /dev/null +++ b/resources/profiles/Elegoo/process/EC/0.48mm Draft @Elegoo C 0.8 nozzle.json @@ -0,0 +1,6 @@ +{ + "inherits": "0.40mm Standard @Elegoo C 0.8 nozzle", + "layer_height": "0.48", + "name": "0.48mm Draft @Elegoo C 0.8 nozzle", + "instantiation": "true" +} diff --git a/resources/profiles/Elegoo/process/ECC/0.08mm Optimal @Elegoo CC 0.2 nozzle.json b/resources/profiles/Elegoo/process/ECC/0.08mm Optimal @Elegoo CC 0.2 nozzle.json new file mode 100644 index 0000000000..603c5b1198 --- /dev/null +++ b/resources/profiles/Elegoo/process/ECC/0.08mm Optimal @Elegoo CC 0.2 nozzle.json @@ -0,0 +1,7 @@ +{ + "elefant_foot_compensation": "0.05", + "inherits": "0.10mm Standard @Elegoo CC 0.2 nozzle", + "layer_height": "0.08", + "name": "0.08mm Optimal @Elegoo CC 0.2 nozzle", + "instantiation": "true" +} diff --git a/resources/profiles/Elegoo/process/ECC/0.10mm Standard @Elegoo CC 0.2 nozzle.json b/resources/profiles/Elegoo/process/ECC/0.10mm Standard @Elegoo CC 0.2 nozzle.json new file mode 100644 index 0000000000..751436c461 --- /dev/null +++ b/resources/profiles/Elegoo/process/ECC/0.10mm Standard @Elegoo CC 0.2 nozzle.json @@ -0,0 +1,14 @@ +{ + "type": "process", + "name": "0.10mm Standard @Elegoo CC 0.2 nozzle", + "inherits": "fdm_process_ecc_02010", + "from": "system", + "setting_id": "PECC02010", + "instantiation": "true", + "sparse_infill_pattern": "zig-zag", + "filename_format": "ECC_{nozzle_diameter[0]}_{input_filename_base}_{filament_type[0]}{layer_height}_{print_time}.gcode", + "elefant_foot_compensation": "0.15", + "compatible_printers": [ + "Elegoo Centauri Carbon 0.2 nozzle" + ] +} \ No newline at end of file diff --git a/resources/profiles/Elegoo/process/ECC/0.12mm Draft @Elegoo CC 0.2 nozzle.json b/resources/profiles/Elegoo/process/ECC/0.12mm Draft @Elegoo CC 0.2 nozzle.json new file mode 100644 index 0000000000..5636327c63 --- /dev/null +++ b/resources/profiles/Elegoo/process/ECC/0.12mm Draft @Elegoo CC 0.2 nozzle.json @@ -0,0 +1,6 @@ +{ + "inherits": "0.10mm Standard @Elegoo CC 0.2 nozzle", + "layer_height": "0.12", + "name": "0.12mm Draft @Elegoo CC 0.2 nozzle", + "instantiation": "true" +} diff --git a/resources/profiles/Elegoo/process/ECC/0.12mm Fine @Elegoo CC 0.4 nozzle.json b/resources/profiles/Elegoo/process/ECC/0.12mm Fine @Elegoo CC 0.4 nozzle.json new file mode 100644 index 0000000000..2823fe4c56 --- /dev/null +++ b/resources/profiles/Elegoo/process/ECC/0.12mm Fine @Elegoo CC 0.4 nozzle.json @@ -0,0 +1,7 @@ +{ + "inherits": "0.20mm Standard @Elegoo CC 0.4 nozzle", + "layer_height": "0.12", + "name": "0.12mm Fine @Elegoo CC 0.4 nozzle", + "wall_loops": "3", + "instantiation": "true" +} diff --git a/resources/profiles/Elegoo/process/ECC/0.14mm Extra Draft @Elegoo CC 0.2 nozzle.json b/resources/profiles/Elegoo/process/ECC/0.14mm Extra Draft @Elegoo CC 0.2 nozzle.json new file mode 100644 index 0000000000..cf33c7821d --- /dev/null +++ b/resources/profiles/Elegoo/process/ECC/0.14mm Extra Draft @Elegoo CC 0.2 nozzle.json @@ -0,0 +1,6 @@ +{ + "inherits": "0.10mm Standard @Elegoo CC 0.2 nozzle", + "layer_height": "0.14", + "name": "0.14mm Extra Draft @Elegoo CC 0.2 nozzle", + "instantiation": "true" +} diff --git a/resources/profiles/Elegoo/process/ECC/0.16mm Extra Fine @Elegoo CC 0.8 nozzle.json b/resources/profiles/Elegoo/process/ECC/0.16mm Extra Fine @Elegoo CC 0.8 nozzle.json new file mode 100644 index 0000000000..aece670af5 --- /dev/null +++ b/resources/profiles/Elegoo/process/ECC/0.16mm Extra Fine @Elegoo CC 0.8 nozzle.json @@ -0,0 +1,7 @@ +{ + "inherits": "0.40mm Standard @Elegoo CC 0.8 nozzle", + "initial_layer_print_height": "0.3", + "layer_height": "0.16", + "name": "0.16mm Extra Fine @Elegoo CC 0.8 nozzle", + "instantiation": "true" +} diff --git a/resources/profiles/Elegoo/process/ECC/0.16mm Optimal @Elegoo CC 0.4 nozzle.json b/resources/profiles/Elegoo/process/ECC/0.16mm Optimal @Elegoo CC 0.4 nozzle.json new file mode 100644 index 0000000000..c4c113a38c --- /dev/null +++ b/resources/profiles/Elegoo/process/ECC/0.16mm Optimal @Elegoo CC 0.4 nozzle.json @@ -0,0 +1,6 @@ +{ + "inherits": "0.20mm Standard @Elegoo CC 0.4 nozzle", + "layer_height": "0.16", + "name": "0.16mm Optimal @Elegoo CC 0.4 nozzle", + "instantiation": "true" +} diff --git a/resources/profiles/Elegoo/process/ECC/0.18mm Fine @Elegoo CC 0.6 nozzle.json b/resources/profiles/Elegoo/process/ECC/0.18mm Fine @Elegoo CC 0.6 nozzle.json new file mode 100644 index 0000000000..60a67ebcbc --- /dev/null +++ b/resources/profiles/Elegoo/process/ECC/0.18mm Fine @Elegoo CC 0.6 nozzle.json @@ -0,0 +1,6 @@ +{ + "inherits": "0.30mm Standard @Elegoo CC 0.6 nozzle", + "layer_height": "0.18", + "name": "0.18mm Fine @Elegoo CC 0.6 nozzle", + "instantiation": "true" +} diff --git a/resources/profiles/Elegoo/process/ECC/0.20mm Standard @Elegoo CC 0.4 nozzle.json b/resources/profiles/Elegoo/process/ECC/0.20mm Standard @Elegoo CC 0.4 nozzle.json new file mode 100644 index 0000000000..410b4f9143 --- /dev/null +++ b/resources/profiles/Elegoo/process/ECC/0.20mm Standard @Elegoo CC 0.4 nozzle.json @@ -0,0 +1,16 @@ + +{ + "type": "process", + "name": "0.20mm Standard @Elegoo CC 0.4 nozzle", + "inherits": "fdm_process_ecc_04020", + "from": "system", + "setting_id": "PECC04020", + "instantiation": "true", + "bottom_shell_layers": "3", + "bottom_shell_thickness": "0.6", + "sparse_infill_pattern": "zig-zag", + "filename_format": "ECC_{nozzle_diameter[0]}_{input_filename_base}_{filament_type[0]}{layer_height}_{print_time}.gcode", + "compatible_printers": [ + "Elegoo Centauri Carbon 0.4 nozzle" + ] +} diff --git a/resources/profiles/Elegoo/process/ECC/0.20mm Strength @Elegoo CC 0.4 nozzle.json b/resources/profiles/Elegoo/process/ECC/0.20mm Strength @Elegoo CC 0.4 nozzle.json new file mode 100644 index 0000000000..7082721b6c --- /dev/null +++ b/resources/profiles/Elegoo/process/ECC/0.20mm Strength @Elegoo CC 0.4 nozzle.json @@ -0,0 +1,13 @@ +{ + "inherits": "0.20mm Standard @Elegoo CC 0.4 nozzle", + "name": "0.20mm Strength @Elegoo CC 0.4 nozzle", + "wall_sequence": "inner-outer-inner wall", + "reduce_crossing_wall": "1", + "bottom_shell_layers": "5", + "outer_wall_speed": "120", + "print_flow_ratio": "0.95", + "sparse_infill_density": "20%", + "top_shell_layers": "6", + "wall_loops": "6", + "instantiation": "true" +} diff --git a/resources/profiles/Elegoo/process/ECC/0.24mm Draft @Elegoo CC 0.4 nozzle.json b/resources/profiles/Elegoo/process/ECC/0.24mm Draft @Elegoo CC 0.4 nozzle.json new file mode 100644 index 0000000000..31ff8f882f --- /dev/null +++ b/resources/profiles/Elegoo/process/ECC/0.24mm Draft @Elegoo CC 0.4 nozzle.json @@ -0,0 +1,6 @@ +{ + "inherits": "0.20mm Standard @Elegoo CC 0.4 nozzle", + "layer_height": "0.24", + "name": "0.24mm Draft @Elegoo CC 0.4 nozzle", + "instantiation": "true" +} diff --git a/resources/profiles/Elegoo/process/ECC/0.24mm Fine @Elegoo CC 0.8 nozzle.json b/resources/profiles/Elegoo/process/ECC/0.24mm Fine @Elegoo CC 0.8 nozzle.json new file mode 100644 index 0000000000..3280e7baa0 --- /dev/null +++ b/resources/profiles/Elegoo/process/ECC/0.24mm Fine @Elegoo CC 0.8 nozzle.json @@ -0,0 +1,7 @@ +{ + "inherits": "0.40mm Standard @Elegoo CC 0.8 nozzle", + "initial_layer_print_height": "0.3", + "layer_height": "0.24", + "name": "0.24mm Fine @Elegoo CC 0.8 nozzle", + "instantiation": "true" +} diff --git a/resources/profiles/Elegoo/process/ECC/0.24mm Optimal @Elegoo CC 0.6 nozzle.json b/resources/profiles/Elegoo/process/ECC/0.24mm Optimal @Elegoo CC 0.6 nozzle.json new file mode 100644 index 0000000000..35489b01b3 --- /dev/null +++ b/resources/profiles/Elegoo/process/ECC/0.24mm Optimal @Elegoo CC 0.6 nozzle.json @@ -0,0 +1,6 @@ +{ + "inherits": "0.30mm Standard @Elegoo CC 0.6 nozzle", + "layer_height": "0.24", + "name": "0.24mm Optimal @Elegoo CC 0.6 nozzle", + "instantiation": "true" +} diff --git a/resources/profiles/Elegoo/process/ECC/0.28mm Extra Draft @Elegoo CC 0.4 nozzle.json b/resources/profiles/Elegoo/process/ECC/0.28mm Extra Draft @Elegoo CC 0.4 nozzle.json new file mode 100644 index 0000000000..1e5b57eb9d --- /dev/null +++ b/resources/profiles/Elegoo/process/ECC/0.28mm Extra Draft @Elegoo CC 0.4 nozzle.json @@ -0,0 +1,6 @@ +{ + "inherits": "0.20mm Standard @Elegoo CC 0.4 nozzle", + "layer_height": "0.28", + "name": "0.28mm Extra Draft @Elegoo CC 0.4 nozzle", + "instantiation": "true" +} diff --git a/resources/profiles/Elegoo/process/ECC/0.30mm Standard @Elegoo CC 0.6 nozzle.json b/resources/profiles/Elegoo/process/ECC/0.30mm Standard @Elegoo CC 0.6 nozzle.json new file mode 100644 index 0000000000..0159917c78 --- /dev/null +++ b/resources/profiles/Elegoo/process/ECC/0.30mm Standard @Elegoo CC 0.6 nozzle.json @@ -0,0 +1,14 @@ + +{ + "type": "process", + "name": "0.30mm Standard @Elegoo CC 0.6 nozzle", + "inherits": "fdm_process_ecc_06030", + "from": "system", + "setting_id": "PECC06030", + "instantiation": "true", + "sparse_infill_pattern": "zig-zag", + "filename_format": "ECC_{nozzle_diameter[0]}_{input_filename_base}_{filament_type[0]}{layer_height}_{print_time}.gcode", + "compatible_printers": [ + "Elegoo Centauri Carbon 0.6 nozzle" + ] +} diff --git a/resources/profiles/Elegoo/process/ECC/0.30mm Strength @Elegoo CC 0.6 nozzle.json b/resources/profiles/Elegoo/process/ECC/0.30mm Strength @Elegoo CC 0.6 nozzle.json new file mode 100644 index 0000000000..025d46e3b0 --- /dev/null +++ b/resources/profiles/Elegoo/process/ECC/0.30mm Strength @Elegoo CC 0.6 nozzle.json @@ -0,0 +1,12 @@ +{ + "inherits": "0.30mm Standard @Elegoo CC 0.6 nozzle", + "inner_wall_speed": "120", + "name": "0.30mm Strength @Elegoo CC 0.6 nozzle", + "wall_sequence": "inner-outer-inner wall", + "reduce_crossing_wall": "1", + "outer_wall_speed": "80", + "sparse_infill_density": "15%", + "top_surface_speed": "120", + "wall_loops": "4", + "instantiation": "true" +} diff --git a/resources/profiles/Elegoo/process/ECC/0.32mm Optimal @Elegoo CC 0.8 nozzle.json b/resources/profiles/Elegoo/process/ECC/0.32mm Optimal @Elegoo CC 0.8 nozzle.json new file mode 100644 index 0000000000..c8950d4fd0 --- /dev/null +++ b/resources/profiles/Elegoo/process/ECC/0.32mm Optimal @Elegoo CC 0.8 nozzle.json @@ -0,0 +1,6 @@ +{ + "inherits": "0.40mm Standard @Elegoo CC 0.8 nozzle", + "layer_height": "0.32", + "name": "0.32mm Optimal @Elegoo CC 0.8 nozzle", + "instantiation": "true" +} diff --git a/resources/profiles/Elegoo/process/ECC/0.36mm Draft @Elegoo CC 0.6 nozzle.json b/resources/profiles/Elegoo/process/ECC/0.36mm Draft @Elegoo CC 0.6 nozzle.json new file mode 100644 index 0000000000..a65e5bdf60 --- /dev/null +++ b/resources/profiles/Elegoo/process/ECC/0.36mm Draft @Elegoo CC 0.6 nozzle.json @@ -0,0 +1,6 @@ +{ + "inherits": "0.30mm Standard @Elegoo CC 0.6 nozzle", + "layer_height": "0.36", + "name": "0.36mm Draft @Elegoo CC 0.6 nozzle", + "instantiation": "true" +} diff --git a/resources/profiles/Elegoo/process/ECC/0.40mm Standard @Elegoo CC 0.8 nozzle.json b/resources/profiles/Elegoo/process/ECC/0.40mm Standard @Elegoo CC 0.8 nozzle.json new file mode 100644 index 0000000000..f46bc25763 --- /dev/null +++ b/resources/profiles/Elegoo/process/ECC/0.40mm Standard @Elegoo CC 0.8 nozzle.json @@ -0,0 +1,14 @@ + +{ + "type": "process", + "name": "0.40mm Standard @Elegoo CC 0.8 nozzle", + "inherits": "fdm_process_ecc_08040", + "from": "system", + "setting_id": "PECC08040", + "instantiation": "true", + "sparse_infill_pattern": "zig-zag", + "filename_format": "ECC_{nozzle_diameter[0]}_{input_filename_base}_{filament_type[0]}{layer_height}_{print_time}.gcode", + "compatible_printers": [ + "Elegoo Centauri Carbon 0.8 nozzle" + ] +} diff --git a/resources/profiles/Elegoo/process/ECC/0.42mm Extra Draft @Elegoo CC 0.6 nozzle.json b/resources/profiles/Elegoo/process/ECC/0.42mm Extra Draft @Elegoo CC 0.6 nozzle.json new file mode 100644 index 0000000000..8c0270b34a --- /dev/null +++ b/resources/profiles/Elegoo/process/ECC/0.42mm Extra Draft @Elegoo CC 0.6 nozzle.json @@ -0,0 +1,6 @@ +{ + "inherits": "0.30mm Standard @Elegoo CC 0.6 nozzle", + "layer_height": "0.42", + "name": "0.42mm Extra Draft @Elegoo CC 0.6 nozzle", + "instantiation": "true" +} diff --git a/resources/profiles/Elegoo/process/ECC/0.48mm Draft @Elegoo CC 0.8 nozzle.json b/resources/profiles/Elegoo/process/ECC/0.48mm Draft @Elegoo CC 0.8 nozzle.json new file mode 100644 index 0000000000..fb9c99eb5f --- /dev/null +++ b/resources/profiles/Elegoo/process/ECC/0.48mm Draft @Elegoo CC 0.8 nozzle.json @@ -0,0 +1,6 @@ +{ + "inherits": "0.40mm Standard @Elegoo CC 0.8 nozzle", + "layer_height": "0.48", + "name": "0.48mm Draft @Elegoo CC 0.8 nozzle", + "instantiation": "true" +} diff --git a/resources/profiles/Elegoo/process/ECC/fdm_process_ecc.json b/resources/profiles/Elegoo/process/ECC/fdm_process_ecc.json new file mode 100644 index 0000000000..9bc0e0f1c5 --- /dev/null +++ b/resources/profiles/Elegoo/process/ECC/fdm_process_ecc.json @@ -0,0 +1,93 @@ +{ + "type": "process", + "name": "fdm_process_ecc", + "inherits": "fdm_process_ecc_common", + "from": "system", + "instantiation": "false", + "max_travel_detour_distance": "0", + "bottom_surface_pattern": "monotonic", + "bottom_shell_layers": "4", + "bridge_speed": "50", + "brim_object_gap": "0.1", + "compatible_printers_condition": "", + "draft_shield": "disabled", + "elefant_foot_compensation": "0.05", + "enable_arc_fitting": "1", + "outer_wall_acceleration": "5000", + "wall_infill_order": "inner wall/outer wall/infill", + "line_width": "0.42", + "internal_bridge_support_thickness": "0.8", + "initial_layer_acceleration": "500", + "initial_layer_line_width": "0.5", + "initial_layer_speed": "30", + "gap_infill_speed": "50", + "sparse_infill_speed": "250", + "ironing_flow": "10%", + "ironing_spacing": "0.15", + "ironing_speed": "30", + "ironing_type": "no ironing", + "layer_height": "0.2", + "filename_format": "{input_filename_base}_{filament_type[0]}{layer_height}_{print_time}.gcode", + "detect_overhang_wall": "1", + "overhang_1_4_speed": "0", + "overhang_2_4_speed": "50", + "overhang_3_4_speed": "30", + "overhang_4_4_speed": "10", + "only_one_wall_top": "1", + "inner_wall_speed": "150", + "seam_position": "aligned", + "skirt_height": "1", + "skirt_loops": "0", + "sparse_infill_density": "15%", + "sparse_infill_pattern": "cubic", + "top_bottom_infill_wall_overlap": "5%", + "infill_anchor": "400%", + "infill_anchor_max": "40", + "minimum_sparse_infill_area": "15", + "internal_solid_infill_line_width": "0.42", + "internal_solid_infill_speed": "150", + "initial_layer_infill_speed": "60", + "resolution": "0.012", + "support_type": "normal(auto)", + "support_style": "default", + "support_top_z_distance": "0.2", + "support_bottom_z_distance": "0.2", + "support_interface_bottom_layers": "2", + "support_interface_spacing": "0.5", + "support_expansion": "0", + "support_base_pattern_spacing": "2.5", + "support_speed": "150", + "support_threshold_angle": "30", + "support_object_xy_distance": "0.35", + "tree_support_branch_diameter": "2", + "tree_support_branch_angle": "45", + "tree_support_wall_count": "0", + "top_surface_pattern": "monotonicline", + "top_surface_acceleration": "2000", + "top_surface_speed": "200", + "top_shell_layers": "3", + "travel_speed": "500", + "wipe_tower_no_sparse_layers": "0", + "prime_tower_width": "35", + "wall_generator": "classic", + "compatible_printers": [], + "detect_narrow_internal_solid_infill": "1", + "extra_perimeters_on_overhangs": "0", + "seam_slope_conditional": "1", + "seam_slope_inner_walls": "1", + "accel_to_decel_enable": "0", + "precise_outer_wall": "0", + "seam_slope_min_length": "0", + "bridge_flow": "0.95", + "internal_bridge_flow": "0.95", + "role_based_wipe_speed": "0", + "seam_slope_type": "none", + "wipe_on_loops": "0", + "gcode_label_objects": "0", + "staggered_inner_seams": "0", + "wipe_before_external_loop": "0", + "exclude_object": "1", + "wipe_speed": "100%", + "print_flow_ratio": "0.97", + "wall_sequence": "inner wall/outer wall" +} diff --git a/resources/profiles/Elegoo/process/ECC/fdm_process_ecc_02010.json b/resources/profiles/Elegoo/process/ECC/fdm_process_ecc_02010.json new file mode 100644 index 0000000000..464c82d5f0 --- /dev/null +++ b/resources/profiles/Elegoo/process/ECC/fdm_process_ecc_02010.json @@ -0,0 +1,30 @@ +{ + "type": "process", + "name": "fdm_process_ecc_02010", + "inherits": "fdm_process_ecc", + "from": "system", + "instantiation": "false", + "layer_height": "0.1", + "initial_layer_print_height": "0.15", + "elefant_foot_compensation": "0.05", + "wall_loops": "4", + "bottom_shell_layers": "5", + "top_shell_layers": "7", + "bridge_flow": "1", + "line_width": "0.22", + "outer_wall_line_width": "0.22", + "initial_layer_line_width": "0.3", + "sparse_infill_line_width": "0.25", + "inner_wall_line_width": "0.22", + "internal_solid_infill_line_width": "0.22", + "support_line_width": "0.22", + "top_surface_line_width": "0.22", + "initial_layer_speed": "35", + "initial_layer_infill_speed": "60", + "sparse_infill_speed": "100", + "inner_wall_speed": "100", + "internal_solid_infill_speed": "100", + "is_custom_defined": "0", + "outer_wall_speed": "60", + "top_surface_speed": "80" +} \ No newline at end of file diff --git a/resources/profiles/Elegoo/process/ECC/fdm_process_ecc_04020.json b/resources/profiles/Elegoo/process/ECC/fdm_process_ecc_04020.json new file mode 100644 index 0000000000..f9fbc12e5f --- /dev/null +++ b/resources/profiles/Elegoo/process/ECC/fdm_process_ecc_04020.json @@ -0,0 +1,18 @@ +{ + "type": "process", + "name": "fdm_process_ecc_04020", + "inherits": "fdm_process_ecc", + "from": "system", + "instantiation": "false", + "elefant_foot_compensation": "0.1", + "top_shell_thickness": "1.0", + "bridge_flow": "1", + "initial_layer_speed": "50", + "initial_layer_infill_speed": "105", + "outer_wall_speed": "160", + "inner_wall_speed": "200", + "sparse_infill_speed": "200", + "internal_solid_infill_speed": "250", + "gap_infill_speed": "250", + "top_shell_layers": "5" +} \ No newline at end of file diff --git a/resources/profiles/Elegoo/process/ECC/fdm_process_ecc_06030.json b/resources/profiles/Elegoo/process/ECC/fdm_process_ecc_06030.json new file mode 100644 index 0000000000..48892929b6 --- /dev/null +++ b/resources/profiles/Elegoo/process/ECC/fdm_process_ecc_06030.json @@ -0,0 +1,26 @@ +{ + "type": "process", + "name": "fdm_process_ecc_06030", + "inherits": "fdm_process_ecc", + "from": "system", + "instantiation": "false", + "layer_height": "0.3", + "initial_layer_print_height": "0.3", + "elefant_foot_compensation": "0.15", + "bridge_flow": "1", + "line_width": "0.62", + "outer_wall_line_width": "0.62", + "initial_layer_line_width": "0.80", + "sparse_infill_line_width": "0.62", + "inner_wall_line_width": "0.62", + "internal_solid_infill_line_width": "0.62", + "support_line_width": "0.62", + "top_surface_line_width": "0.62", + "initial_layer_speed": "35", + "initial_layer_infill_speed": "55", + "gap_infill_speed": "80", + "sparse_infill_speed": "200", + "top_surface_speed": "150", + "bridge_speed": "30", + "overhang_3_4_speed": "25" +} \ No newline at end of file diff --git a/resources/profiles/Elegoo/process/ECC/fdm_process_ecc_08040.json b/resources/profiles/Elegoo/process/ECC/fdm_process_ecc_08040.json new file mode 100644 index 0000000000..da30cf4017 --- /dev/null +++ b/resources/profiles/Elegoo/process/ECC/fdm_process_ecc_08040.json @@ -0,0 +1,27 @@ +{ + "type": "process", + "name": "fdm_process_ecc_08040", + "inherits": "fdm_process_ecc", + "from": "system", + "instantiation": "false", + "layer_height": "0.4", + "initial_layer_print_height": "0.4", + "elefant_foot_compensation": "0.15", + "bridge_flow": "1", + "line_width": "0.82", + "outer_wall_line_width": "0.82", + "initial_layer_line_width": "0.82", + "sparse_infill_line_width": "0.82", + "inner_wall_line_width": "0.82", + "internal_solid_infill_line_width": "0.82", + "support_line_width": "0.82", + "top_surface_line_width": "0.82", + "initial_layer_speed": "35", + "initial_layer_infill_speed": "55", + "sparse_infill_speed": "100", + "top_surface_speed": "150", + "bridge_speed": "30", + "overhang_2_4_speed": "40", + "overhang_3_4_speed": "20", + "overhang_4_4_speed": "10" +} \ No newline at end of file diff --git a/resources/profiles/Elegoo/process/ECC/fdm_process_ecc_common.json b/resources/profiles/Elegoo/process/ECC/fdm_process_ecc_common.json new file mode 100644 index 0000000000..ffbd6580a5 --- /dev/null +++ b/resources/profiles/Elegoo/process/ECC/fdm_process_ecc_common.json @@ -0,0 +1,86 @@ +{ + "type": "process", + "name": "fdm_process_ecc_common", + "from": "system", + "instantiation": "false", + "adaptive_layer_height": "0", + "reduce_crossing_wall": "0", + "bridge_flow": "0.95", + "bridge_speed": "25", + "brim_width": "5", + "print_sequence": "by layer", + "default_acceleration": "10000", + "travel_acceleration": "0", + "inner_wall_acceleration": "0", + "bridge_no_support": "0", + "elefant_foot_compensation": "0.1", + "outer_wall_line_width": "0.42", + "outer_wall_speed": "120", + "line_width": "0.45", + "infill_direction": "45", + "sparse_infill_density": "15%", + "sparse_infill_pattern": "grid", + "initial_layer_line_width": "0.42", + "initial_layer_print_height": "0.2", + "initial_layer_speed": "20", + "gap_infill_speed": "30", + "infill_combination": "0", + "sparse_infill_line_width": "0.45", + "infill_wall_overlap": "15%", + "sparse_infill_speed": "50", + "overhang_speed_classic": "1", + "interface_shells": "0", + "detect_overhang_wall": "0", + "reduce_infill_retraction": "1", + "filename_format": "{input_filename_base}.gcode", + "wall_loops": "2", + "inner_wall_line_width": "0.45", + "inner_wall_speed": "40", + "raft_layers": "0", + "seam_position": "nearest", + "skirt_distance": "2", + "skirt_height": "2", + "minimum_sparse_infill_area": "0", + "internal_solid_infill_line_width": "0.45", + "internal_solid_infill_speed": "40", + "spiral_mode": "0", + "standby_temperature_delta": "-5", + "enable_support": "0", + "support_filament": "0", + "support_line_width": "0.42", + "support_interface_filament": "0", + "support_on_build_plate_only": "0", + "support_top_z_distance": "0.15", + "support_interface_loop_pattern": "0", + "support_interface_top_layers": "2", + "support_interface_spacing": "0", + "support_interface_speed": "80", + "support_interface_pattern": "auto", + "support_base_pattern": "default", + "support_base_pattern_spacing": "2", + "support_speed": "40", + "support_threshold_angle": "40", + "support_object_xy_distance": "0.5", + "tree_support_angle_slow": "30", + "tree_support_branch_angle_organic": "45", + "tree_support_branch_diameter_double_wall": "10", + "tree_support_branch_distance_organic": "5", + "tree_support_tip_diameter": "2", + "detect_thin_wall": "0", + "top_surface_line_width": "0.42", + "top_surface_speed": "30", + "travel_speed": "400", + "enable_prime_tower": "0", + "prime_tower_width": "60", + "xy_hole_compensation": "0", + "xy_contour_compensation": "0", + "role_based_wipe_speed": "1", + "detect_narrow_internal_solid_infill": "1", + "top_shell_thickness": "0.8", + "bottom_shell_thickness":"0.8", + "gap_fill_target": "everywhere", + "filter_out_gap_fill": "1", + "ensure_vertical_shell_thickness": "ensure_all", + "compatible_printers": [], + "slowdown_for_curled_perimeters": "0" +} diff --git a/src/libslic3r/Preset.cpp b/src/libslic3r/Preset.cpp index 7d6e76e344..a6d6501226 100644 --- a/src/libslic3r/Preset.cpp +++ b/src/libslic3r/Preset.cpp @@ -767,6 +767,8 @@ BedType Preset::get_default_bed_type(PresetBundle* preset_bundle) return BedType::btPC; } else if (model_id == "C11") { return BedType::btPEI; + }else if (model_id == "Elegoo-CC" || model_id == "Elegoo-C") {//set default bed type to PTE for Elegoo-CC + return BedType::btPTE; } return BedType::btPEI; } diff --git a/src/libslic3r/PrintConfig.cpp b/src/libslic3r/PrintConfig.cpp index 156fdb27ec..1c45054d38 100644 --- a/src/libslic3r/PrintConfig.cpp +++ b/src/libslic3r/PrintConfig.cpp @@ -88,6 +88,7 @@ static t_config_enum_values s_keys_map_PrintHostType { { "obico", htObico }, { "flashforge", htFlashforge }, { "simplyprint", htSimplyPrint }, + { "elegoolink", htElegooLink } }; CONFIG_OPTION_ENUM_DEFINE_STATIC_MAPS(PrintHostType) @@ -3618,6 +3619,7 @@ void PrintConfigDef::init_fff_params() def->enum_values.push_back("obico"); def->enum_values.push_back("flashforge"); def->enum_values.push_back("simplyprint"); + def->enum_values.push_back("elegoolink"); def->enum_labels.push_back("PrusaLink"); def->enum_labels.push_back("PrusaConnect"); def->enum_labels.push_back("Octo/Klipper"); @@ -3631,6 +3633,7 @@ void PrintConfigDef::init_fff_params() def->enum_labels.push_back("Obico"); def->enum_labels.push_back("Flashforge"); def->enum_labels.push_back("SimplyPrint"); + def->enum_labels.push_back("Elegoo Link"); def->mode = comAdvanced; def->cli = ConfigOptionDef::nocli; def->set_default_value(new ConfigOptionEnum(htOctoPrint)); diff --git a/src/libslic3r/PrintConfig.hpp b/src/libslic3r/PrintConfig.hpp index 96e5b1fc9c..02db0c061b 100644 --- a/src/libslic3r/PrintConfig.hpp +++ b/src/libslic3r/PrintConfig.hpp @@ -50,7 +50,7 @@ enum class NoiseType { }; enum PrintHostType { - htPrusaLink, htPrusaConnect, htOctoPrint, htDuet, htFlashAir, htAstroBox, htRepetier, htMKS, htESP3D, htCrealityPrint, htObico, htFlashforge, htSimplyPrint + htPrusaLink, htPrusaConnect, htOctoPrint, htDuet, htFlashAir, htAstroBox, htRepetier, htMKS, htESP3D, htCrealityPrint, htObico, htFlashforge, htSimplyPrint, htElegooLink }; enum AuthorizationType { diff --git a/src/slic3r/CMakeLists.txt b/src/slic3r/CMakeLists.txt index 7b755be595..1e5ae34510 100644 --- a/src/slic3r/CMakeLists.txt +++ b/src/slic3r/CMakeLists.txt @@ -569,6 +569,9 @@ set(SLIC3R_GUI_SOURCES GUI/Jobs/OAuthJob.hpp Utils/SimplyPrint.cpp Utils/SimplyPrint.hpp + Utils/ElegooLink.hpp + Utils/ElegooLink.cpp + Utils/WebSocketClient.hpp ) if (WIN32) diff --git a/src/slic3r/GUI/NotificationManager.cpp b/src/slic3r/GUI/NotificationManager.cpp index 08ef8c7493..c2152f97f5 100644 --- a/src/slic3r/GUI/NotificationManager.cpp +++ b/src/slic3r/GUI/NotificationManager.cpp @@ -304,10 +304,10 @@ void NotificationManager::PopNotification::render(GLCanvas3D& canvas, float init bbl_render_left_sign(imgui, win_size.x, win_size.y, win_pos.x, win_pos.y); render_left_sign(imgui); render_text(imgui, win_size.x, win_size.y, win_pos.x, win_pos.y); - render_close_button(imgui, win_size.x, win_size.y, win_pos.x, win_pos.y); m_minimize_b_visible = false; if (m_multiline && m_lines_count > 3) render_minimize_button(imgui, win_pos.x, win_pos.y); + render_close_button(imgui, win_size.x, win_size.y, win_pos.x, win_pos.y); // ORCA draw it after minimize button since its position related to minimize button } imgui.end(); diff --git a/src/slic3r/GUI/Plater.cpp b/src/slic3r/GUI/Plater.cpp index 4af1c8c5ef..f141755688 100644 --- a/src/slic3r/GUI/Plater.cpp +++ b/src/slic3r/GUI/Plater.cpp @@ -1307,8 +1307,9 @@ void Sidebar::update_all_preset_comboboxes() } } } else { - // Orca: combobox don't have the btDefault option, so we need to -1 - m_bed_type_list->SelectAndNotify(btPEI - 1); + // m_bed_type_list->SelectAndNotify(btPEI - 1); + BedType bed_type = preset_bundle.printers.get_edited_preset().get_default_bed_type(&preset_bundle); + m_bed_type_list->SelectAndNotify((int) bed_type - 1); m_bed_type_list->Disable(); } @@ -12660,38 +12661,58 @@ void Plater::send_gcode_legacy(int plate_idx, Export3mfProgressFn proFn, bool us } } - auto config = get_app_config(); - PrintHostSendDialog dlg(default_output_file, upload_job.printhost->get_post_upload_actions(), groups, storage_paths, storage_names, config->get_bool("open_device_tab_post_upload")); - if (dlg.ShowModal() == wxID_OK) { - config->set_bool("open_device_tab_post_upload", dlg.switch_to_device_tab()); - upload_job.switch_to_device_tab = dlg.switch_to_device_tab(); - upload_job.upload_data.upload_path = dlg.filename(); - upload_job.upload_data.post_action = dlg.post_action(); - upload_job.upload_data.group = dlg.group(); - upload_job.upload_data.storage = dlg.storage(); + { + auto preset_bundle = wxGetApp().preset_bundle; + const auto opt = physical_printer_config->option>("host_type"); + const auto host_type = opt != nullptr ? opt->value : htElegooLink; + auto config = get_app_config(); - // Show "Is printer clean" dialog for PrusaConnect - Upload and print. - if (std::string(upload_job.printhost->get_name()) == "PrusaConnect" && upload_job.upload_data.post_action == PrintHostPostUploadAction::StartPrint) { - GUI::MessageDialog dlg(nullptr, _L("Is the printer ready? Is the print sheet in place, empty and clean?"), _L("Upload and Print"), wxOK | wxCANCEL); - if (dlg.ShowModal() != wxID_OK) - return; + std::unique_ptr pDlg; + if (host_type == htElegooLink) { + pDlg = std::make_unique(default_output_file, upload_job.printhost->get_post_upload_actions(), groups, + storage_paths, storage_names, + config->get_bool("open_device_tab_post_upload")); + } else { + pDlg = std::make_unique(default_output_file, upload_job.printhost->get_post_upload_actions(), groups, + storage_paths, storage_names, config->get_bool("open_device_tab_post_upload")); } - if (use_3mf) { - // Process gcode - const int result = send_gcode(plate_idx, nullptr); - - if (result < 0) { - wxString msg = _L("Abnormal print file data. Please slice again"); - show_error(this, msg, false); - return; - } - - upload_job.upload_data.source_path = p->m_print_job_data._3mf_path; + pDlg->init(); + if (pDlg->ShowModal() != wxID_OK) { + return; } - p->export_gcode(fs::path(), false, std::move(upload_job)); + config->set_bool("open_device_tab_post_upload", pDlg->switch_to_device_tab()); + // PrintHostUpload upload_data; + upload_job.switch_to_device_tab = pDlg->switch_to_device_tab(); + upload_job.upload_data.upload_path = pDlg->filename(); + upload_job.upload_data.post_action = pDlg->post_action(); + upload_job.upload_data.group = pDlg->group(); + upload_job.upload_data.storage = pDlg->storage(); + upload_job.upload_data.extended_info = pDlg->extendedInfo(); } + + // Show "Is printer clean" dialog for PrusaConnect - Upload and print. + if (std::string(upload_job.printhost->get_name()) == "PrusaConnect" && upload_job.upload_data.post_action == PrintHostPostUploadAction::StartPrint) { + GUI::MessageDialog dlg(nullptr, _L("Is the printer ready? Is the print sheet in place, empty and clean?"), _L("Upload and Print"), wxOK | wxCANCEL); + if (dlg.ShowModal() != wxID_OK) + return; + } + + if (use_3mf) { + // Process gcode + const int result = send_gcode(plate_idx, nullptr); + + if (result < 0) { + wxString msg = _L("Abnormal print file data. Please slice again"); + show_error(this, msg, false); + return; + } + + upload_job.upload_data.source_path = p->m_print_job_data._3mf_path; + } + + p->export_gcode(fs::path(), false, std::move(upload_job)); } int Plater::send_gcode(int plate_idx, Export3mfProgressFn proFn) { diff --git a/src/slic3r/GUI/PrintHostDialogs.cpp b/src/slic3r/GUI/PrintHostDialogs.cpp index 14a5866635..86b43f3ee8 100644 --- a/src/slic3r/GUI/PrintHostDialogs.cpp +++ b/src/slic3r/GUI/PrintHostDialogs.cpp @@ -47,11 +47,22 @@ PrintHostSendDialog::PrintHostSendDialog(const fs::path &path, PrintHostPostUplo , post_upload_action(PrintHostPostUploadAction::None) , m_paths(storage_paths) , m_switch_to_device_tab(switch_to_device_tab) + , m_path(path) + , m_post_actions(post_actions) + , m_storage_names(storage_names) { #ifdef __APPLE__ txt_filename->OSXDisableAllSmartSubstitutions(); #endif - const AppConfig *app_config = wxGetApp().app_config; +} +void PrintHostSendDialog::init() +{ + const auto& path = m_path; + const auto& storage_paths = m_paths; + const auto& post_actions = m_post_actions; + const auto& storage_names = m_storage_names; + + const AppConfig* app_config = wxGetApp().app_config; auto *label_dir_hint = new wxStaticText(this, wxID_ANY, _L("Use forward slashes ( / ) as a directory separator if needed.")); label_dir_hint->Wrap(CONTENT_WIDTH * wxGetApp().em_unit()); @@ -614,4 +625,331 @@ bool PrintHostQueueDialog::load_user_data(int udt, std::vector& vector) } return true; } + +ElegooPrintHostSendDialog::ElegooPrintHostSendDialog(const fs::path& path, + PrintHostPostUploadActions post_actions, + const wxArrayString& groups, + const wxArrayString& storage_paths, + const wxArrayString& storage_names, + bool switch_to_device_tab) + : PrintHostSendDialog(path, post_actions, groups, storage_paths, storage_names, switch_to_device_tab) + , m_timeLapse(0) + , m_heatedBedLeveling(0) + , m_BedType(BedType::btPTE) +{} + +void ElegooPrintHostSendDialog::init() { + + auto preset_bundle = wxGetApp().preset_bundle; + auto model_id = preset_bundle->printers.get_edited_preset().get_printer_type(preset_bundle); + + if (!(model_id == "Elegoo-CC" || model_id == "Elegoo-C")) { + PrintHostSendDialog::init(); + return; + } + + const auto& path = m_path; + const auto& storage_paths = m_paths; + const auto& post_actions = m_post_actions; + const auto& storage_names = m_storage_names; + + this->SetMinSize(wxSize(500, 300)); + const AppConfig* app_config = wxGetApp().app_config; + + std::string uploadAndPrint = app_config->get("recent", CONFIG_KEY_UPLOADANDPRINT); + if (!uploadAndPrint.empty()) + post_upload_action = static_cast(std::stoi(uploadAndPrint)); + + std::string timeLapse = app_config->get("recent", CONFIG_KEY_TIMELAPSE); + if (!timeLapse.empty()) + m_timeLapse = std::stoi(timeLapse); + std::string heatedBedLeveling = app_config->get("recent", CONFIG_KEY_HEATEDBEDLEVELING); + if (!heatedBedLeveling.empty()) + m_heatedBedLeveling = std::stoi(heatedBedLeveling); + std::string bedType = app_config->get("recent", CONFIG_KEY_BEDTYPE); + if (!bedType.empty()) + m_BedType = static_cast(std::stoi(bedType)); + + auto* label_dir_hint = new wxStaticText(this, wxID_ANY, _L("Use forward slashes ( / ) as a directory separator if needed.")); + label_dir_hint->Wrap(CONTENT_WIDTH * wxGetApp().em_unit()); + + wxSizerFlags flags = wxSizerFlags().Border(wxRIGHT, 16).Expand(); + + content_sizer->Add(txt_filename, flags); + content_sizer->AddSpacer(4); + content_sizer->Add(label_dir_hint); + content_sizer->AddSpacer(VERT_SPACING); + + if (combo_groups != nullptr) { + // Repetier specific: Show a selection of file groups. + auto* label_group = new wxStaticText(this, wxID_ANY, _L("Group")); + content_sizer->Add(label_group); + content_sizer->Add(combo_groups, 0, wxBOTTOM, 2 * VERT_SPACING); + wxString recent_group = from_u8(app_config->get("recent", CONFIG_KEY_GROUP)); + if (!recent_group.empty()) + combo_groups->SetValue(recent_group); + } + + if (combo_storage != nullptr) { + // PrusaLink specific: User needs to choose a storage + auto* label_group = new wxStaticText(this, wxID_ANY, _L("Upload to storage") + ":"); + content_sizer->Add(label_group); + content_sizer->Add(combo_storage, 0, wxBOTTOM, 2 * VERT_SPACING); + combo_storage->SetValue(storage_names.front()); + wxString recent_storage = from_u8(app_config->get("recent", CONFIG_KEY_STORAGE)); + if (!recent_storage.empty()) + combo_storage->SetValue(recent_storage); + } else if (storage_names.GetCount() == 1) { + // PrusaLink specific: Show which storage has been detected. + auto* label_group = new wxStaticText(this, wxID_ANY, _L("Upload to storage") + ": " + storage_names.front()); + content_sizer->Add(label_group); + m_preselected_storage = m_paths.front(); + } + + wxString recent_path = from_u8(app_config->get("recent", CONFIG_KEY_PATH)); + if (recent_path.Length() > 0 && recent_path[recent_path.Length() - 1] != '/') { + recent_path += '/'; + } + const auto recent_path_len = recent_path.Length(); + recent_path += path.filename().wstring(); + wxString stem(path.stem().wstring()); + const auto stem_len = stem.Length(); + + txt_filename->SetValue(recent_path); + + { + auto checkbox_sizer = new wxBoxSizer(wxHORIZONTAL); + auto checkbox = new ::CheckBox(this, wxID_APPLY); + checkbox->SetValue(m_switch_to_device_tab); + checkbox->Bind(wxEVT_TOGGLEBUTTON, [this](wxCommandEvent& e) { + m_switch_to_device_tab = e.IsChecked(); + e.Skip(); + }); + checkbox_sizer->Add(checkbox, 0, wxALL | wxALIGN_CENTER, FromDIP(2)); + + auto checkbox_text = new wxStaticText(this, wxID_ANY, _L("Switch to Device tab after upload."), wxDefaultPosition, wxDefaultSize, 0); + checkbox_sizer->Add(checkbox_text, 0, wxALL | wxALIGN_CENTER, FromDIP(2)); + checkbox_text->SetFont(::Label::Body_13); + checkbox_text->SetForegroundColour(StateColor::darkModeColorFor(wxColour("#323A3D"))); + content_sizer->Add(checkbox_sizer); + content_sizer->AddSpacer(VERT_SPACING); + } + warning_text = new wxStaticText(this, wxID_ANY, + _L("The selected bed type does not match the file. Please confirm before starting the print."), + wxDefaultPosition, wxDefaultSize, 0); + uploadandprint_sizer = new wxBoxSizer(wxVERTICAL); + { + auto checkbox_sizer = new wxBoxSizer(wxHORIZONTAL); + auto checkbox = new ::CheckBox(this); + checkbox->SetValue(post_upload_action == PrintHostPostUploadAction::StartPrint); + checkbox->Bind(wxEVT_TOGGLEBUTTON, [this](wxCommandEvent& e) { + if (e.IsChecked()) { + post_upload_action = PrintHostPostUploadAction::StartPrint; + } else { + post_upload_action = PrintHostPostUploadAction::None; + } + refresh(); + e.Skip(); + }); + checkbox_sizer->Add(checkbox, 0, wxALL | wxALIGN_CENTER, FromDIP(2)); + + auto checkbox_text = new wxStaticText(this, wxID_ANY, _L("Upload and Print"), wxDefaultPosition, wxDefaultSize, 0); + checkbox_sizer->Add(checkbox_text, 0, wxALL | wxALIGN_CENTER, FromDIP(2)); + checkbox_text->SetFont(::Label::Body_13); + checkbox_text->SetForegroundColour(StateColor::darkModeColorFor(wxColour("#323A3D"))); + content_sizer->Add(checkbox_sizer); + content_sizer->AddSpacer(VERT_SPACING); + } + + { + auto checkbox_sizer = new wxBoxSizer(wxHORIZONTAL); + auto checkbox = new ::CheckBox(this); + checkbox->SetValue(m_timeLapse == 1); + checkbox->Bind(wxEVT_TOGGLEBUTTON, [this](wxCommandEvent& e) { + m_timeLapse = e.IsChecked() ? 1 : 0; + e.Skip(); + }); + checkbox_sizer->AddSpacer(16); + checkbox_sizer->Add(checkbox, 0, wxALL | wxALIGN_CENTER, FromDIP(2)); + + auto checkbox_text = new wxStaticText(this, wxID_ANY, _L("Time-lapse"), wxDefaultPosition, wxDefaultSize, 0); + checkbox_sizer->Add(checkbox_text, 0, wxALL | wxALIGN_CENTER, FromDIP(2)); + checkbox_text->SetFont(::Label::Body_13); + checkbox_text->SetForegroundColour(StateColor::darkModeColorFor(wxColour("#323A3D"))); + uploadandprint_sizer->Add(checkbox_sizer); + uploadandprint_sizer->AddSpacer(VERT_SPACING); + } + + { + auto checkbox_sizer = new wxBoxSizer(wxHORIZONTAL); + auto checkbox = new ::CheckBox(this); + checkbox->SetValue(m_heatedBedLeveling == 1); + checkbox->Bind(wxEVT_TOGGLEBUTTON, [this](wxCommandEvent& e) { + m_heatedBedLeveling = e.IsChecked() ? 1 : 0; + e.Skip(); + }); + checkbox_sizer->AddSpacer(16); + checkbox_sizer->Add(checkbox, 0, wxALL | wxALIGN_CENTER, FromDIP(2)); + + auto checkbox_text = new wxStaticText(this, wxID_ANY, _L("Heated Bed Leveling"), wxDefaultPosition, wxDefaultSize, 0); + checkbox_sizer->Add(checkbox_text, 0, wxALL | wxALIGN_CENTER, FromDIP(2)); + checkbox_text->SetFont(::Label::Body_13); + checkbox_text->SetForegroundColour(StateColor::darkModeColorFor(wxColour("#323A3D"))); + uploadandprint_sizer->Add(checkbox_sizer); + uploadandprint_sizer->AddSpacer(VERT_SPACING); + } + + { + auto radioBoxA = new ::RadioBox(this); + auto radioBoxB = new ::RadioBox(this); + if (m_BedType == BedType::btPC) + radioBoxB->SetValue(true); + else + radioBoxA->SetValue(true); + + radioBoxA->Bind(wxEVT_LEFT_DOWN, [this, radioBoxA, radioBoxB](wxMouseEvent& e) { + radioBoxA->SetValue(true); + radioBoxB->SetValue(false); + m_BedType = BedType::btPTE; + refresh(); + }); + radioBoxB->Bind(wxEVT_LEFT_DOWN, [this, radioBoxA, radioBoxB](wxMouseEvent& e) { + radioBoxA->SetValue(false); + radioBoxB->SetValue(true); + m_BedType = BedType::btPC; + refresh(); + }); + + { + auto radio_sizer = new wxBoxSizer(wxHORIZONTAL); + radio_sizer->AddSpacer(16); + radio_sizer->Add(radioBoxA, 0, wxALL | wxALIGN_CENTER, FromDIP(2)); + + auto checkbox_text = new wxStaticText(this, wxID_ANY, _L("Textured Build Plate (Side A)"), wxDefaultPosition, wxDefaultSize, 0); + radio_sizer->Add(checkbox_text, 0, wxALL | wxALIGN_CENTER, FromDIP(2)); + checkbox_text->SetFont(::Label::Body_13); + checkbox_text->SetForegroundColour(StateColor::darkModeColorFor(wxColour("#323A3D"))); + uploadandprint_sizer->Add(radio_sizer); + uploadandprint_sizer->AddSpacer(VERT_SPACING); + } + { + auto radio_sizer = new wxBoxSizer(wxHORIZONTAL); + radio_sizer->AddSpacer(16); + radio_sizer->Add(radioBoxB, 0, wxALL | wxALIGN_CENTER, FromDIP(2)); + + auto checkbox_text = new wxStaticText(this, wxID_ANY, _L("Smooth Build Plate (Side B)"), wxDefaultPosition, wxDefaultSize, 0); + radio_sizer->Add(checkbox_text, 0, wxALL | wxALIGN_CENTER, FromDIP(2)); + checkbox_text->SetFont(::Label::Body_13); + checkbox_text->SetForegroundColour(StateColor::darkModeColorFor(wxColour("#323A3D"))); + uploadandprint_sizer->Add(radio_sizer); + uploadandprint_sizer->AddSpacer(VERT_SPACING); + } + } + { + auto h_sizer = new wxBoxSizer(wxHORIZONTAL); + warning_text->SetFont(::Label::Body_13); + warning_text->SetForegroundColour(StateColor::darkModeColorFor(wxColour("#FF1001"))); + // wrapping the text + warning_text->Wrap(350); + h_sizer->AddSpacer(16); + h_sizer->Add(warning_text); + + uploadandprint_sizer->Add(h_sizer); + uploadandprint_sizer->AddSpacer(VERT_SPACING); + } + + content_sizer->Add(uploadandprint_sizer); + uploadandprint_sizer->Show(post_upload_action == PrintHostPostUploadAction::StartPrint); + warning_text->Show(post_upload_action == PrintHostPostUploadAction::StartPrint && appBedType() != m_BedType); + + uploadandprint_sizer->Layout(); + + if (size_t extension_start = recent_path.find_last_of('.'); extension_start != std::string::npos) + m_valid_suffix = recent_path.substr(extension_start); + // .gcode suffix control + auto validate_path = [this](const wxString& path) -> bool { + if (!path.Lower().EndsWith(m_valid_suffix.Lower())) { + MessageDialog msg_wingow(this, + wxString::Format(_L("Upload filename doesn't end with \"%s\". Do you wish to continue?"), + m_valid_suffix), + wxString(SLIC3R_APP_NAME), wxYES | wxNO); + if (msg_wingow.ShowModal() == wxID_NO) + return false; + } + return true; + }; + + auto* btn_ok = add_button(wxID_OK, true, _L("Upload")); + btn_ok->Bind(wxEVT_BUTTON, [this, validate_path](wxCommandEvent&) { + if (validate_path(txt_filename->GetValue())) { + // post_upload_action = PrintHostPostUploadAction::None; + EndDialog(wxID_OK); + } + }); + txt_filename->SetFocus(); + + add_button(wxID_CANCEL, false, _L("Cancel")); + finalize(); + +#ifdef __linux__ + // On Linux with GTK2 when text control lose the focus then selection (colored background) disappears but text color stay white + // and as a result the text is invisible with light mode + // see https://github.com/prusa3d/PrusaSlicer/issues/4532 + // Workaround: Unselect text selection explicitly on kill focus + txt_filename->Bind( + wxEVT_KILL_FOCUS, + [this](wxEvent& e) { + e.Skip(); + txt_filename->SetInsertionPoint(txt_filename->GetLastPosition()); + }, + txt_filename->GetId()); +#endif /* __linux__ */ + + Bind(wxEVT_SHOW, [=](const wxShowEvent&) { + // Another similar case where the function only works with EVT_SHOW + CallAfter, + // this time on Mac. + CallAfter([=]() { + txt_filename->SetInsertionPoint(0); + txt_filename->SetSelection(recent_path_len, recent_path_len + stem_len); + }); + }); +} + +void ElegooPrintHostSendDialog::EndModal(int ret) +{ + if (ret == wxID_OK) { + + AppConfig* app_config = wxGetApp().app_config; + app_config->set("recent", CONFIG_KEY_UPLOADANDPRINT, std::to_string(static_cast(post_upload_action))); + app_config->set("recent", CONFIG_KEY_TIMELAPSE, std::to_string(m_timeLapse)); + app_config->set("recent", CONFIG_KEY_HEATEDBEDLEVELING, std::to_string(m_heatedBedLeveling)); + app_config->set("recent", CONFIG_KEY_BEDTYPE, std::to_string(static_cast(m_BedType))); + } + + PrintHostSendDialog::EndModal(ret); +} + +BedType ElegooPrintHostSendDialog::appBedType() const +{ + std::string str_bed_type = wxGetApp().app_config->get("curr_bed_type"); + int bed_type_value = atoi(str_bed_type.c_str()); + return static_cast(bed_type_value); +} + +void ElegooPrintHostSendDialog::refresh() +{ + if (uploadandprint_sizer) { + if (post_upload_action == PrintHostPostUploadAction::StartPrint) { + uploadandprint_sizer->Show(true); + } else { + uploadandprint_sizer->Show(false); + } + } + if (warning_text) { + warning_text->Show(post_upload_action == PrintHostPostUploadAction::StartPrint && appBedType() != m_BedType); + } + this->Layout(); + this->Fit(); +} + }} diff --git a/src/slic3r/GUI/PrintHostDialogs.hpp b/src/slic3r/GUI/PrintHostDialogs.hpp index 8befa21d98..e648537ccb 100644 --- a/src/slic3r/GUI/PrintHostDialogs.hpp +++ b/src/slic3r/GUI/PrintHostDialogs.hpp @@ -12,7 +12,7 @@ #include "GUI_Utils.hpp" #include "MsgDialog.hpp" #include "../Utils/PrintHost.hpp" - +#include "libslic3r/PrintConfig.hpp" class wxButton; class wxTextCtrl; class wxChoice; @@ -27,6 +27,7 @@ class PrintHostSendDialog : public GUI::MsgDialog { public: PrintHostSendDialog(const boost::filesystem::path &path, PrintHostPostUploadActions post_actions, const wxArrayString& groups, const wxArrayString& storage_paths, const wxArrayString& storage_names, bool switch_to_device_tab); + virtual ~PrintHostSendDialog() {} boost::filesystem::path filename() const; PrintHostPostUploadAction post_action() const; std::string group() const; @@ -34,7 +35,10 @@ public: bool switch_to_device_tab() const {return m_switch_to_device_tab;} virtual void EndModal(int ret) override; -private: + virtual void init(); + virtual std::map extendedInfo() const { return {}; } + +protected: wxTextCtrl *txt_filename; wxComboBox *combo_groups; wxComboBox* combo_storage; @@ -43,6 +47,10 @@ private: wxString m_preselected_storage; wxArrayString m_paths; bool m_switch_to_device_tab; + + boost::filesystem::path m_path; + PrintHostPostUploadActions m_post_actions; + wxArrayString m_storage_names; }; @@ -131,6 +139,47 @@ private: bool load_user_data(int, std::vector&); }; +class ElegooPrintHostSendDialog : public PrintHostSendDialog +{ +public: + ElegooPrintHostSendDialog(const boost::filesystem::path& path, + PrintHostPostUploadActions post_actions, + const wxArrayString& groups, + const wxArrayString& storage_paths, + const wxArrayString& storage_names, + bool switch_to_device_tab); + + virtual void EndModal(int ret) override; + int timeLapse() const { return m_timeLapse; } + int heatedBedLeveling() const { return m_heatedBedLeveling; } + BedType bedType() const { return m_BedType; } + + virtual void init() override; + virtual std::map extendedInfo() const + { + return {{"bedType", std::to_string(static_cast(m_BedType))}, + {"timeLapse", std::to_string(m_timeLapse)}, + {"heatedBedLeveling", std::to_string(m_heatedBedLeveling)}}; + } + +private: + BedType appBedType() const; + void refresh(); + + const char* CONFIG_KEY_UPLOADANDPRINT = "elegoolink_upload_and_print"; + const char* CONFIG_KEY_TIMELAPSE = "elegoolink_timelapse"; + const char* CONFIG_KEY_HEATEDBEDLEVELING = "elegoolink_heated_bed_leveling"; + const char* CONFIG_KEY_BEDTYPE = "elegoolink_bed_type"; + +private: + wxStaticText* warning_text{nullptr}; + wxBoxSizer* uploadandprint_sizer{nullptr}; + + int m_timeLapse; + int m_heatedBedLeveling; + BedType m_BedType; +}; + wxDECLARE_EVENT(EVT_PRINTHOST_PROGRESS, PrintHostQueueDialog::Event); wxDECLARE_EVENT(EVT_PRINTHOST_ERROR, PrintHostQueueDialog::Event); wxDECLARE_EVENT(EVT_PRINTHOST_CANCEL, PrintHostQueueDialog::Event); diff --git a/src/slic3r/GUI/Tab.cpp b/src/slic3r/GUI/Tab.cpp index a5fdd2b1cc..3e710bed79 100644 --- a/src/slic3r/GUI/Tab.cpp +++ b/src/slic3r/GUI/Tab.cpp @@ -3636,13 +3636,29 @@ void TabFilament::toggle_options() { bool pa = m_config->opt_bool("enable_pressure_advance", 0); toggle_option("pressure_advance", pa); - // Orca: Enable the plates that should be visible when multi bed support is enabled or a BBL printer is selected - auto support_multi_bed_types = is_BBL_printer || cfg.opt_bool("support_multi_bed_types"); - toggle_line("supertack_plate_temp_initial_layer", support_multi_bed_types ); - toggle_line("cool_plate_temp_initial_layer", support_multi_bed_types ); - toggle_line("textured_cool_plate_temp_initial_layer", support_multi_bed_types); - toggle_line("eng_plate_temp_initial_layer", support_multi_bed_types); - toggle_line("textured_plate_temp_initial_layer", support_multi_bed_types); + + //Orca: Enable the plates that should be visible when multi bed support is enabled or a BBL printer is selected; otherwise, enable only the plate visible for the selected bed type. + DynamicConfig& proj_cfg = m_preset_bundle->project_config; + std::string bed_temp_1st_layer_key = ""; + if (proj_cfg.has("curr_bed_type")) + { + bed_temp_1st_layer_key = get_bed_temp_1st_layer_key(proj_cfg.opt_enum("curr_bed_type")); + } + + const std::vector bed_temp_keys = {"supertack_plate_temp_initial_layer", "cool_plate_temp_initial_layer", + "textured_cool_plate_temp_initial_layer", "eng_plate_temp_initial_layer", + "textured_plate_temp_initial_layer", "hot_plate_temp_initial_layer"}; + + bool support_multi_bed_types = std::find(bed_temp_keys.begin(), bed_temp_keys.end(), bed_temp_1st_layer_key) == + bed_temp_keys.end() || + is_BBL_printer || cfg.opt_bool("support_multi_bed_types"); + + for (const auto& key : bed_temp_keys) + { + toggle_line(key, support_multi_bed_types || bed_temp_1st_layer_key == key); + } + + // Orca: adaptive pressure advance and calibration model // If PA is not enabled, disable adaptive pressure advance and hide the model section diff --git a/src/slic3r/Utils/ElegooLink.cpp b/src/slic3r/Utils/ElegooLink.cpp new file mode 100644 index 0000000000..ecc30059bb --- /dev/null +++ b/src/slic3r/Utils/ElegooLink.cpp @@ -0,0 +1,863 @@ +#include "ElegooLink.hpp" + +#include +#include +#include +#include +#include +#include +#include +#include +#include +#include +#include +#include +#include +#include + +#include + +#include + +#include "slic3r/GUI/GUI.hpp" +#include "slic3r/GUI/I18N.hpp" +#include "slic3r/GUI/GUI_App.hpp" +#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; +#define MAX_UPLOAD_PACKAGE_LENGTH 1048576 //(1024*1024) + +namespace Slic3r { + + enum ElegooLinkCommand { + //get status + ELEGOO_GET_STATUS = 0, + //get properties + ELEGOO_GET_PROPERTIES = 1, + //start print + ELEGOO_START_PRINT = 128, + }; + + typedef enum + { + SDCP_PRINT_CTRL_ACK_OK = 0, // OK + SDCP_PRINT_CTRL_ACK_BUSY = 1 , // 设备忙 device is busy + SDCP_PRINT_CTRL_ACK_NOT_FOUND = 2, // 未找到目标文件 file not found + SDCP_PRINT_CTRL_ACK_MD5_FAILED = 3, // MD5校验失败 MD5 check failed + SDCP_PRINT_CTRL_ACK_FILEIO_FAILED = 4, // 文件读取失败 file I/O error + SDCP_PRINT_CTRL_ACK_INVLAID_RESOLUTION = 5, // 文件分辨率不匹配 file resolution is invalid + SDCP_PRINT_CTRL_ACK_UNKNOW_FORMAT = 6, // 无法识别的文件格式 file format is invalid + SDCP_PRINT_CTRL_ACK_UNKNOW_MODEL = 7, // 文件机型不匹配 file model is invalid + } ElegooLinkStartPrintAck; + + + namespace { + + std::string get_host_from_url(const std::string& url_in) + { + std::string url = url_in; + // add http:// if there is no scheme + size_t double_slash = url.find("//"); + if (double_slash == std::string::npos) + url = "http://" + url; + std::string out = url; + CURLU* hurl = curl_url(); + if (hurl) { + // Parse the input URL. + CURLUcode rc = curl_url_set(hurl, CURLUPART_URL, url.c_str(), 0); + if (rc == CURLUE_OK) { + // Replace the address. + char* host; + rc = curl_url_get(hurl, CURLUPART_HOST, &host, 0); + if (rc == CURLUE_OK) { + char* port; + rc = curl_url_get(hurl, CURLUPART_PORT, &port, 0); + if (rc == CURLUE_OK && port != nullptr) { + out = std::string(host) + ":" + port; + curl_free(port); + } else { + out = host; + curl_free(host); + } + } + else + BOOST_LOG_TRIVIAL(error) << "ElegooLink get_host_from_url: failed to get host form URL " << url; + } + else + BOOST_LOG_TRIVIAL(error) << "ElegooLink get_host_from_url: failed to parse URL " << url; + curl_url_cleanup(hurl); + } + else + BOOST_LOG_TRIVIAL(error) << "ElegooLink get_host_from_url: failed to allocate curl_url"; + return out; + } + + std::string get_host_from_url_no_port(const std::string& url_in) + { + std::string url = url_in; + // add http:// if there is no scheme + size_t double_slash = url.find("//"); + if (double_slash == std::string::npos) + url = "http://" + url; + std::string out = url; + CURLU* hurl = curl_url(); + if (hurl) { + // Parse the input URL. + CURLUcode rc = curl_url_set(hurl, CURLUPART_URL, url.c_str(), 0); + if (rc == CURLUE_OK) { + // Replace the address. + char* host; + rc = curl_url_get(hurl, CURLUPART_HOST, &host, 0); + if (rc == CURLUE_OK) { + out = host; + curl_free(host); + } + else + BOOST_LOG_TRIVIAL(error) << "ElegooLink get_host_from_url: failed to get host form URL " << url; + } + else + BOOST_LOG_TRIVIAL(error) << "ElegooLink get_host_from_url: failed to parse URL " << url; + curl_url_cleanup(hurl); + } + else + BOOST_LOG_TRIVIAL(error) << "ElegooLink get_host_from_url: failed to allocate curl_url"; + return out; + } + + #ifdef WIN32 + // Workaround for Windows 10/11 mDNS resolve issue, where two mDNS resolves in succession fail. + std::string substitute_host(const std::string& orig_addr, std::string sub_addr) + { + // put ipv6 into [] brackets + if (sub_addr.find(':') != std::string::npos && sub_addr.at(0) != '[') + sub_addr = "[" + sub_addr + "]"; + + #if 0 + //URI = scheme ":"["//"[userinfo "@"] host [":" port]] path["?" query]["#" fragment] + std::string final_addr = orig_addr; + // http + size_t double_dash = orig_addr.find("//"); + size_t host_start = (double_dash == std::string::npos ? 0 : double_dash + 2); + // userinfo + size_t at = orig_addr.find("@"); + host_start = (at != std::string::npos && at > host_start ? at + 1 : host_start); + // end of host, could be port(:), subpath(/) (could be query(?) or fragment(#)?) + // or it will be ']' if address is ipv6 ) + size_t potencial_host_end = orig_addr.find_first_of(":/", host_start); + // if there are more ':' it must be ipv6 + if (potencial_host_end != std::string::npos && orig_addr[potencial_host_end] == ':' && orig_addr.rfind(':') != potencial_host_end) { + size_t ipv6_end = orig_addr.find(']', host_start); + // DK: Uncomment and replace orig_addr.length() if we want to allow subpath after ipv6 without [] parentheses. + potencial_host_end = (ipv6_end != std::string::npos ? ipv6_end + 1 : orig_addr.length()); //orig_addr.find('/', host_start)); + } + size_t host_end = (potencial_host_end != std::string::npos ? potencial_host_end : orig_addr.length()); + // now host_start and host_end should mark where to put resolved addr + // check host_start. if its nonsense, lets just use original addr (or resolved addr?) + if (host_start >= orig_addr.length()) { + return final_addr; + } + final_addr.replace(host_start, host_end - host_start, sub_addr); + return final_addr; + #else + // Using the new CURL API for handling URL. https://everything.curl.dev/libcurl/url + // If anything fails, return the input unchanged. + std::string out = orig_addr; + CURLU *hurl = curl_url(); + if (hurl) { + // Parse the input URL. + CURLUcode rc = curl_url_set(hurl, CURLUPART_URL, orig_addr.c_str(), 0); + if (rc == CURLUE_OK) { + // Replace the address. + rc = curl_url_set(hurl, CURLUPART_HOST, sub_addr.c_str(), 0); + if (rc == CURLUE_OK) { + // Extract a string fromt the CURL URL handle. + char *url; + rc = curl_url_get(hurl, CURLUPART_URL, &url, 0); + if (rc == CURLUE_OK) { + out = url; + curl_free(url); + } else + BOOST_LOG_TRIVIAL(error) << "ElegooLink substitute_host: failed to extract the URL after substitution"; + } else + BOOST_LOG_TRIVIAL(error) << "ElegooLink substitute_host: failed to substitute host " << sub_addr << " in URL " << orig_addr; + } else + BOOST_LOG_TRIVIAL(error) << "ElegooLink substitute_host: failed to parse URL " << orig_addr; + curl_url_cleanup(hurl); + } else + BOOST_LOG_TRIVIAL(error) << "ElegooLink substitute_host: failed to allocate curl_url"; + return out; + #endif + } + #endif // WIN32 + std::string escape_string(const std::string& unescaped) + { + std::string ret_val; + CURL* curl = curl_easy_init(); + if (curl) { + char* decoded = curl_easy_escape(curl, unescaped.c_str(), unescaped.size()); + if (decoded) { + ret_val = std::string(decoded); + curl_free(decoded); + } + curl_easy_cleanup(curl); + } + return ret_val; + } + std::string escape_path_by_element(const boost::filesystem::path& path) + { + std::string ret_val = escape_string(path.filename().string()); + boost::filesystem::path parent(path.parent_path()); + while (!parent.empty() && parent.string() != "/") // "/" check is for case "/file.gcode" was inserted. Then boost takes "/" as parent_path. + { + ret_val = escape_string(parent.filename().string()) + "/" + ret_val; + parent = parent.parent_path(); + } + return ret_val; + } + + } //namespace + + + ElegooLink::ElegooLink(DynamicPrintConfig *config): + OctoPrint(config) { + + } + + const char* ElegooLink::get_name() const { return "ElegooLink"; } + + bool ElegooLink::elegoo_test(wxString& msg) const{ + + const char *name = get_name(); + bool res = true; + auto url = make_url(""); + // Here we do not have to add custom "Host" header - the url contains host filled by user and libCurl will set the header by itself. + auto http = Http::get(std::move(url)); + set_auth(http); + http.on_error([&](std::string body, std::string error, unsigned status) { + BOOST_LOG_TRIVIAL(error) << boost::format("%1%: Error getting version: %2%, HTTP %3%, body: `%4%`") % name % error % status % body; + res = false; + msg = format_error(body, error, status); + }) + .on_complete([&, this](std::string body, unsigned) { + BOOST_LOG_TRIVIAL(debug) << boost::format("%1%: Got version: %2%") % name % body; + // Check if the response contains "ELEGOO" in any case. + // This is a simple check to see if the response is from an ElegooLink server. + std::regex re("ELEGOO", std::regex::icase); + std::smatch match; + if (std::regex_search(body, match, re)) { + res = true; + } else { + msg = format_error(body, "ElegooLink not detected", 0); + res = false; + } + }) +#ifdef WIN32 + .ssl_revoke_best_effort(m_ssl_revoke_best_effort) + .on_ip_resolve([&](std::string address) { + // Workaround for Windows 10/11 mDNS resolve issue, where two mDNS resolves in succession fail. + // Remember resolved address to be reused at successive REST API call. + msg = GUI::from_u8(address); + }) +#endif // WIN32 + .perform_sync(); + return res; + } + bool ElegooLink::test(wxString &curl_msg) const{ + if(OctoPrint::test(curl_msg)){ + return true; + } + curl_msg=""; + return elegoo_test(curl_msg); + } + +#ifdef WIN32 + bool ElegooLink::elegoo_test_with_resolved_ip(wxString& msg) const + { + // Since the request is performed synchronously here, + // it is ok to refer to `msg` from within the closure + const char* name = get_name(); + bool res = true; + // Msg contains ip string. + auto url = substitute_host(make_url(""), GUI::into_u8(msg)); + msg.Clear(); + std::string host = get_host_from_url(m_host); + auto http = Http::get(url); // std::move(url)); + // "Host" header is necessary here. We have resolved IP address and subsituted it into "url" variable. + // And when creating Http object above, libcurl automatically includes "Host" header from address it got. + // Thus "Host" is set to the resolved IP instead of host filled by user. We need to change it back. + // Not changing the host would work on the most cases (where there is 1 service on 1 hostname) but would break when f.e. reverse + // proxy is used (issue #9734). Also when allow_ip_resolve = 0, this is not needed, but it should not break anything if it stays. + // https://www.rfc-editor.org/rfc/rfc7230#section-5.4 + http.header("Host", host); + set_auth(http); + http.on_error([&](std::string body, std::string error, unsigned status) { + BOOST_LOG_TRIVIAL(error) << boost::format("%1%: Error getting version at %2% : %3%, HTTP %4%, body: `%5%`") % name % url % + error % status % body; + res = false; + msg = format_error(body, error, status); + }) + .on_complete([&, this](std::string body, unsigned) { + // Check if the response contains "ELEGOO" in any case. + // This is a simple check to see if the response is from an ElegooLink server. + std::regex re("ELEGOO", std::regex::icase); + std::smatch match; + if (std::regex_search(body, match, re)) { + res = true; + } else { + msg = format_error(body, "ElegooLink not detected", 0); + res = false; + } + }) + .ssl_revoke_best_effort(m_ssl_revoke_best_effort) + .perform_sync(); + + return res; + } + bool ElegooLink::test_with_resolved_ip(wxString& msg) const + { + // Elegoo supports both otcoprint and Elegoo link + if (OctoPrint::test_with_resolved_ip(msg)) { + return true; + } + msg = ""; + return elegoo_test_with_resolved_ip(msg); + } +#endif // WIN32 + + + wxString ElegooLink::get_test_ok_msg() const + { + return _L("Connection to ElegooLink works correctly."); + } + + wxString ElegooLink::get_test_failed_msg(wxString& msg) const + { + return GUI::format_wxstr("%s: %s", _L("Could not connect to ElegooLink"), msg); + } + + #ifdef WIN32 + bool ElegooLink::upload_inner_with_resolved_ip(PrintHostUpload upload_data, ProgressFn prorgess_fn, ErrorFn error_fn, InfoFn info_fn, const boost::asio::ip::address& resolved_addr) const + { + wxString test_msg_or_host_ip = ""; + + info_fn(L"resolve", boost::nowide::widen(resolved_addr.to_string())); + // If test fails, test_msg_or_host_ip contains the error message. + // Otherwise on Windows it contains the resolved IP address of the host. + // Test_msg already contains resolved ip and will be cleared on start of test(). + test_msg_or_host_ip = GUI::from_u8(resolved_addr.to_string()); + //Elegoo supports both otcoprint and Elegoo link + if(OctoPrint::test_with_resolved_ip(test_msg_or_host_ip)){ + return OctoPrint::upload_inner_with_host(upload_data, prorgess_fn, error_fn, info_fn); + } + + test_msg_or_host_ip = GUI::from_u8(resolved_addr.to_string()); + if(!elegoo_test_with_resolved_ip(test_msg_or_host_ip)){ + error_fn(std::move(test_msg_or_host_ip)); + return false; + } + + + std::string url = substitute_host(make_url("uploadFile/upload"), resolved_addr.to_string()); + info_fn(L"resolve", boost::nowide::widen(url)); + + bool res = loopUpload(url, upload_data, prorgess_fn, error_fn, info_fn); + return res; + } + #endif //WIN32 + + bool ElegooLink::upload_inner_with_host(PrintHostUpload upload_data, ProgressFn prorgess_fn, ErrorFn error_fn, InfoFn info_fn) const + { + // If test fails, test_msg_or_host_ip contains the error message. + // Otherwise on Windows it contains the resolved IP address of the host. + wxString test_msg_or_host_ip; + //Elegoo supports both otcoprint and Elegoo link + if(OctoPrint::test(test_msg_or_host_ip)){ + return OctoPrint::upload_inner_with_host(upload_data, prorgess_fn, error_fn, info_fn); + } + test_msg_or_host_ip=""; + if(!elegoo_test(test_msg_or_host_ip)){ + error_fn(std::move(test_msg_or_host_ip)); + return false; + } + + std::string url; + #ifdef WIN32 + // Workaround for Windows 10/11 mDNS resolve issue, where two mDNS resolves in succession fail. + if (m_host.find("https://") == 0 || test_msg_or_host_ip.empty() || !GUI::get_app_config()->get_bool("allow_ip_resolve")) + #endif // _WIN32 + { + // If https is entered we assume signed ceritificate is being used + // IP resolving will not happen - it could resolve into address not being specified in cert + url = make_url("uploadFile/upload"); + } + #ifdef WIN32 + else { + // Workaround for Windows 10/11 mDNS resolve issue, where two mDNS resolves in succession fail. + // Curl uses easy_getinfo to get ip address of last successful transaction. + // If it got the address use it instead of the stored in "host" variable. + // This new address returns in "test_msg_or_host_ip" variable. + // Solves troubles of uploades failing with name address. + // in original address (m_host) replace host for resolved ip + info_fn(L"resolve", test_msg_or_host_ip); + url = substitute_host(make_url("uploadFile/upload"), GUI::into_u8(test_msg_or_host_ip)); + BOOST_LOG_TRIVIAL(info) << "Upload address after ip resolve: " << url; + } + #endif // _WIN32 + + bool res = loopUpload(url, upload_data, prorgess_fn, error_fn, info_fn); + return res; + } + + bool ElegooLink::validate_version_text(const boost::optional &version_text) const + { + return true; + } + bool ElegooLink::uploadPart(Http &http,std::string md5,std::string uuid,std::string path, + std::string filename,size_t filesize,size_t offset,size_t length, + ProgressFn prorgess_fn,ErrorFn error_fn,InfoFn info_fn)const + { + const char* name = get_name(); + bool result = false; + http.form_clear(); + http.form_add("Check", "1") + .form_add("S-File-MD5", md5) + .form_add("Offset", std::to_string(offset)) + .form_add("Uuid", uuid) + .form_add("TotalSize", std::to_string(filesize)) + .form_add_file("File", path, filename, offset, length) + .on_complete([&](std::string body, unsigned status) { + BOOST_LOG_TRIVIAL(debug) << boost::format("%1%: File uploaded: HTTP %2%: %3%") % name % status % body; + if (status == 200) { + try { + pt::ptree root; + std::istringstream is(body); + pt::read_json(is, root); + std::string code = root.get("code"); + if (code == "000000") { + // info_fn(L"complete", wxString()); + result = true; + } else { + // get error messages + pt::ptree messages = root.get_child("messages"); + std::string error_message = "ErrorCode : " + code + "\n"; + for (pt::ptree::value_type& message : messages) { + std::string field = message.second.get("field"); + std::string msg = message.second.get("message"); + error_message += field + ":" + msg + "\n"; + } + error_fn(wxString::FromUTF8(error_message)); + } + } catch (...) { + BOOST_LOG_TRIVIAL(error) << boost::format("%1%: Error parsing response: %2%") % name % body; + error_fn(wxString::FromUTF8("Error parsing response")); + } + } else { + error_fn(format_error(body, "upload failed", status)); + } + }) + .on_error([&](std::string body, std::string error, unsigned status) { + BOOST_LOG_TRIVIAL(error) << boost::format("%1%: Error uploading file: %2%, HTTP %3%, body: `%4%`") % name % error % status % + body; + error_fn(format_error(body, error, status)); + }) + .on_progress([&](Http::Progress progress, bool& cancel) { + // If upload is finished, do not call progress_fn + // on_complete will be called after some time, so we do not need to call it here + // Because some devices will call on_complete after the upload progress reaches 100%, + // so we need to process it here, based on on_complete + if (progress.ultotal == progress.ulnow) { + // Upload is finished + return; + } + prorgess_fn(std::move(progress), cancel); + if (cancel) { + // Upload was canceled + BOOST_LOG_TRIVIAL(info) << name << ": Upload canceled"; + } + }) +#ifdef WIN32 + .ssl_revoke_best_effort(m_ssl_revoke_best_effort) +#endif + .perform_sync(); + return result; + } + + bool ElegooLink::loopUpload(std::string url, PrintHostUpload upload_data, ProgressFn progress_fn, ErrorFn error_fn, InfoFn info_fn) const + { + const char* name = get_name(); + const auto upload_filename = upload_data.upload_path.filename().string(); + std::string source_path = upload_data.source_path.string(); + + // calc file size + std::ifstream file(source_path, std::ios::binary | std::ios::ate); + std::streamsize size = file.tellg(); + file.close(); + const std::string fileSize = std::to_string(size); + + // generate uuid + boost::uuids::random_generator generator; + boost::uuids::uuid uuid = generator(); + std::string uuid_string = to_string(uuid); + + std::string md5; + bbl_calc_md5(source_path, md5); + + auto http = Http::post(url); +#ifdef WIN32 + // "Host" header is necessary here. In the workaround above (two mDNS..) we have got IP address from test connection and subsituted + // it into "url" variable. And when creating Http object above, libcurl automatically includes "Host" header from address it got. + // Thus "Host" is set to the resolved IP instead of host filled by user. We need to change it back. Not changing the host would work + // on the most cases (where there is 1 service on 1 hostname) but would break when f.e. reverse proxy is used (issue #9734). Also + // when allow_ip_resolve = 0, this is not needed, but it should not break anything if it stays. + // https://www.rfc-editor.org/rfc/rfc7230#section-5.4 + std::string host = get_host_from_url(m_host); + http.header("Host", host); + http.header("Accept", "application/json, text/plain, */*"); +#endif // _WIN32 + set_auth(http); + + bool res = false; + const int packageCount = (size + MAX_UPLOAD_PACKAGE_LENGTH - 1) / MAX_UPLOAD_PACKAGE_LENGTH; + + for (size_t i = 0; i < packageCount; i++) { + BOOST_LOG_TRIVIAL(info) << boost::format("%1%: Uploading file %2%/%3%") % name % (i + 1) % packageCount; + const size_t offset = MAX_UPLOAD_PACKAGE_LENGTH * i; + size_t length = MAX_UPLOAD_PACKAGE_LENGTH; + // if it is the last package, the length is the remainder of the file size divided by MAX_UPLOAD_PACKAGE_LENGTH + if ((i == packageCount - 1) && (size % MAX_UPLOAD_PACKAGE_LENGTH > 0)) { + length = size % MAX_UPLOAD_PACKAGE_LENGTH; + } + res = uploadPart( + http, md5, uuid_string, source_path, upload_filename, size, offset, length, + [size, i, progress_fn](Http::Progress progress, bool& cancel) { + Http::Progress p(0, 0, size, i * MAX_UPLOAD_PACKAGE_LENGTH + progress.ulnow, progress.buffer); + progress_fn(p, cancel); + }, + error_fn, info_fn); + if (!res) { + break; + } + } + + if (res) { + if (upload_data.post_action == PrintHostPostUploadAction::StartPrint) { + // connect to websocket, since the upload is successful, the file will be printed + std::string wsUrl = get_host_from_url_no_port(m_host); + WebSocketClient client; + try { + client.connect(wsUrl, "3030", "/websocket"); + } catch (std::exception& e) { + const auto errorString = std::string(e.what()); + if (errorString.find("The WebSocket handshake was declined by the remote peer") != std::string::npos) { + // error_fn( + // _L("The number of printer connections has exceeded the limit. Please disconnect other connections, restart the " + // "printer and slicer, and then try again.")); + error_fn(_L("The file has been transferred, but some unknown errors occurred. Please check the device page for the file and try to start printing again.")); + } else { + error_fn(std::string("\n") + wxString::FromUTF8(e.what())); + } + return false; + } + std::string timeLapse = "0"; + std::string heatedBedLeveling = "0"; + std::string bedType = "0"; + timeLapse = upload_data.extended_info["timeLapse"]; + heatedBedLeveling = upload_data.extended_info["heatedBedLeveling"]; + bedType = upload_data.extended_info["bedType"]; + + std::this_thread::sleep_for(std::chrono::seconds(1)); + if (checkResult(client, error_fn)) { + // send print command + std::this_thread::sleep_for(std::chrono::seconds(1)); + res = print(client, timeLapse, heatedBedLeveling, bedType, upload_filename, error_fn); + }else{ + res = false; + } + } + } + return res; + } + + bool ElegooLink::upload(PrintHostUpload upload_data, ProgressFn prorgess_fn, ErrorFn error_fn, InfoFn info_fn) const + { + #ifndef WIN32 + return upload_inner_with_host(std::move(upload_data), prorgess_fn, error_fn, info_fn); + #else + std::string host = get_host_from_url(m_host); + + // decide what to do based on m_host - resolve hostname or upload to ip + std::vector resolved_addr; + boost::system::error_code ec; + boost::asio::ip::address host_ip = boost::asio::ip::make_address(host, ec); + if (!ec) { + resolved_addr.push_back(host_ip); + } else if ( GUI::get_app_config()->get_bool("allow_ip_resolve") && boost::algorithm::ends_with(host, ".local")){ + Bonjour("octoprint") + .set_hostname(host) + .set_retries(5) // number of rounds of queries send + .set_timeout(1) // after each timeout, if there is any answer, the resolving will stop + .on_resolve([&ra = resolved_addr](const std::vector& replies) { + for (const auto & rpl : replies) { + boost::asio::ip::address ip(rpl.ip); + ra.emplace_back(ip); + BOOST_LOG_TRIVIAL(info) << "Resolved IP address: " << rpl.ip; + } + }) + .resolve_sync(); + } + if (resolved_addr.empty()) { + // no resolved addresses - try system resolving + BOOST_LOG_TRIVIAL(error) << "ElegooLink failed to resolve hostname " << m_host << " into the IP address. Starting upload with system resolving."; + return upload_inner_with_host(std::move(upload_data), prorgess_fn, error_fn, info_fn); + } else if (resolved_addr.size() == 1) { + // one address resolved - upload there + return upload_inner_with_resolved_ip(std::move(upload_data), prorgess_fn, error_fn, info_fn, resolved_addr.front()); + } else if (resolved_addr.size() == 2 && resolved_addr[0].is_v4() != resolved_addr[1].is_v4()) { + // there are just 2 addresses and 1 is ip_v4 and other is ip_v6 + // try sending to both. (Then if both fail, show both error msg after second try) + wxString error_message; + if (!upload_inner_with_resolved_ip(std::move(upload_data), prorgess_fn + , [&msg = error_message, resolved_addr](wxString error) { msg = GUI::format_wxstr("%1%: %2%", resolved_addr.front(), error); } + , info_fn, resolved_addr.front()) + && + !upload_inner_with_resolved_ip(std::move(upload_data), prorgess_fn + , [&msg = error_message, resolved_addr](wxString error) { msg += GUI::format_wxstr("\n%1%: %2%", resolved_addr.back(), error); } + , info_fn, resolved_addr.back()) + ) { + + error_fn(error_message); + return false; + } + return true; + } else { + // There are multiple addresses - user needs to choose which to use. + size_t selected_index = resolved_addr.size(); + IPListDialog dialog(nullptr, boost::nowide::widen(m_host), resolved_addr, selected_index); + if (dialog.ShowModal() == wxID_OK && selected_index < resolved_addr.size()) { + return upload_inner_with_resolved_ip(std::move(upload_data), prorgess_fn, error_fn, info_fn, resolved_addr[selected_index]); + } + } + return false; + #endif // WIN32 + } + + bool ElegooLink::print(WebSocketClient& client, + std::string timeLapse, + std::string heatedBedLeveling, + std::string bedType, + const std::string filename, + ErrorFn error_fn) const + { + + // convert bedType to 0 or 1, 0 is PTE, 1 is PC + if (bedType == std::to_string((int)BedType::btPC)){ + bedType = "1"; + }else{ + bedType = "0"; + } + bool res = false; + // create a random UUID generator + boost::uuids::random_generator generator; + // generate a UUID + boost::uuids::uuid uuid = generator(); + std::string uuid_string = to_string(uuid); + try { + std::string requestID = uuid_string; + auto now = std::chrono::system_clock::now(); + auto duration = now.time_since_epoch(); + auto milliseconds = std::chrono::duration_cast(duration).count(); + std::string timestamp = std::to_string(milliseconds); + std::string jsonString = R"({ + "Id":"", + "Data":{ + "Cmd":)"+std::to_string(ElegooLinkCommand::ELEGOO_START_PRINT)+R"(, + "Data":{ + "Filename":"/local/)" + filename + R"(", + "StartLayer":0, + "Calibration_switch":)" + heatedBedLeveling + R"(, + "PrintPlatformType":)" + bedType + R"(, + "Tlp_Switch":)" + timeLapse + R"( + }, + "RequestID":")"+ uuid_string + R"(", + "MainboardID":"", + "TimeStamp":)" + timestamp + R"(, + "From":1 + } + })"; + std::cout << "send: " << jsonString << std::endl; + BOOST_LOG_TRIVIAL(info) << "start print, param: " << jsonString; + client.send(jsonString); + // wait 30s + auto start_time = std::chrono::steady_clock::now(); + do{ + std::string response = client.receive(); + std::cout << "Received: " << response << std::endl; + BOOST_LOG_TRIVIAL(info) << "Received: " << response; + + //sample response + // {"Id":"979d4C788A4a78bC777A870F1A02867A","Data":{"Cmd":128,"Data":{"Ack":1},"RequestID":"5223de52cc7642ae8d7924f9dd46f6ad","MainboardID":"1c7319d30105041800009c0000000000","TimeStamp":1735032553},"Topic":"sdcp/response/1c7319d30105041800009c0000000000"} + pt::ptree root; + std::istringstream is(response); + pt::read_json(is, root); + + auto data = root.get_child_optional("Data"); + if(!data){ + BOOST_LOG_TRIVIAL(info) << "wait for start print response"; + continue; + } + auto cmd = data->get_optional("Cmd"); + if(!cmd){ + BOOST_LOG_TRIVIAL(info) << "wait for start print response"; + continue; + } + if(*cmd == ElegooLinkCommand::ELEGOO_START_PRINT){ + auto _ack = data->get_optional("Data.Ack"); + if(!_ack){ + BOOST_LOG_TRIVIAL(error) << "start print failed, ack not found"; + error_fn(_L("Error code not found")); + break; + } + auto ack = static_cast(*_ack); + if(ack == ElegooLinkStartPrintAck::SDCP_PRINT_CTRL_ACK_OK){ + res = true; + }else{ + res = false; + BOOST_LOG_TRIVIAL(error) << "start print failed: ack: " << ack; + wxString error_message = ""; + switch(ack){ + case ElegooLinkStartPrintAck::SDCP_PRINT_CTRL_ACK_BUSY: + { + error_message =_L("The printer is busy, Please check the device page for the file and try to start printing again."); + break; + } + case ElegooLinkStartPrintAck::SDCP_PRINT_CTRL_ACK_NOT_FOUND: + { + error_message =_(L("The file is lost, please check and try again.")); + break; + } + case ElegooLinkStartPrintAck::SDCP_PRINT_CTRL_ACK_MD5_FAILED: + { + error_message =_(L("The file is corrupted, please check and try again.")); + break; + } + case ElegooLinkStartPrintAck::SDCP_PRINT_CTRL_ACK_FILEIO_FAILED: + case ElegooLinkStartPrintAck::SDCP_PRINT_CTRL_ACK_INVLAID_RESOLUTION: + case ElegooLinkStartPrintAck::SDCP_PRINT_CTRL_ACK_UNKNOW_FORMAT: + { + error_message =_(L("Transmission abnormality, please check and try again.")); + break; + } + case ElegooLinkStartPrintAck::SDCP_PRINT_CTRL_ACK_UNKNOW_MODEL: + { + error_message =_(L("The file does not match the printer, please check and try again.")); + break; + } + default: + { + error_message =_L("Unknown error"); + break; + } + } + + error_message += " " + wxString::Format(_L("Error code: %d"),ack); + error_fn(error_message); + } + break; + } + } while (std::chrono::steady_clock::now() - start_time < std::chrono::seconds(30)); + if (std::chrono::steady_clock::now() - start_time >= std::chrono::seconds(30)) { + res = false; + error_fn(_L("Start print timeout")); + } + } catch (const std::exception& e) { + std::cerr << "Error: " << e.what() << std::endl; + BOOST_LOG_TRIVIAL(error) << "start print error: " << e.what(); + error_fn(_L("Start print failed") +"\n" +GUI::from_u8(e.what())); + res=false; + } + return res; + } + + bool ElegooLink::checkResult(WebSocketClient& client, ErrorFn error_fn) const + { + bool res = true; + // create a random UUID generator + boost::uuids::random_generator generator; + // generate a UUID + boost::uuids::uuid uuid = generator(); + std::string uuid_string = to_string(uuid); + try { + std::string requestID = uuid_string; + auto now = std::chrono::system_clock::now(); + auto duration = now.time_since_epoch(); + auto milliseconds = std::chrono::duration_cast(duration).count(); + std::string timestamp = std::to_string(milliseconds); + std::string jsonString = R"({ + "Id":"", + "Data":{ + "Cmd":)" + + std::to_string(ElegooLinkCommand::ELEGOO_GET_STATUS) + R"(, + "Data":{}, + "RequestID":")" + + uuid_string + R"(", + "MainboardID":"", + "TimeStamp":)" + + timestamp + R"(, + "From":1 + } + })"; + std::cout << "send: " << jsonString << std::endl; + BOOST_LOG_TRIVIAL(info) << "start print, param: " << jsonString; + bool needWrite = true; + // wait 60s + auto start_time = std::chrono::steady_clock::now(); + do { + if (needWrite) { + client.send(jsonString); + needWrite = false; + } + std::string response = client.receive(); + std::cout << "Received: " << response << std::endl; + BOOST_LOG_TRIVIAL(info) << "Received: " << response; + pt::ptree root; + std::istringstream is(response); + pt::read_json(is, root); + auto status = root.get_child_optional("Status"); + if (status) { + auto currentStatus = status->get_child_optional("CurrentStatus"); + if (currentStatus) { + std::vector status; + for (auto& item : *currentStatus) { + status.push_back(item.second.get_value()); + } + if (std::find(status.begin(), status.end(), 8) != status.end()) { + // 8 is check file status, need to wait + needWrite = true; + // sleep 1s + std::this_thread::sleep_for(std::chrono::seconds(1)); + } else { + break; + } + } else { + break; + } + } + } while (std::chrono::steady_clock::now() - start_time < std::chrono::seconds(60)); + if (std::chrono::steady_clock::now() - start_time >= std::chrono::seconds(60)) { + res = false; + error_fn(_L("Start print timeout")); + } + } catch (const std::exception& e) { + std::cerr << "Error: " << e.what() << std::endl; + BOOST_LOG_TRIVIAL(error) << "start print error: " << e.what(); + error_fn(_L("Start print failed") + "\n" + GUI::from_u8(e.what())); + res = false; + } + return res; + } + } diff --git a/src/slic3r/Utils/ElegooLink.hpp b/src/slic3r/Utils/ElegooLink.hpp new file mode 100644 index 0000000000..b0c379c29f --- /dev/null +++ b/src/slic3r/Utils/ElegooLink.hpp @@ -0,0 +1,72 @@ +#ifndef slic3r_ElegooLink_hpp_ +#define slic3r_ElegooLink_hpp_ + +#include +#include +#include +#include + +#include "PrintHost.hpp" +#include "libslic3r/PrintConfig.hpp" +#include "OctoPrint.hpp" +#include "WebSocketClient.hpp" +namespace Slic3r { + +class DynamicPrintConfig; +class Http; + +class ElegooLink : public OctoPrint +{ +public: + ElegooLink(DynamicPrintConfig *config); + ~ElegooLink() override = default; + const char* get_name() const override; + virtual bool test(wxString &curl_msg) const override; + wxString get_test_ok_msg() const override; + wxString get_test_failed_msg(wxString& msg) const override; + bool upload(PrintHostUpload upload_data, ProgressFn prorgess_fn, ErrorFn error_fn, InfoFn info_fn) const override; + bool has_auto_discovery() const override { return false; } + bool can_test() const override { return true; } + PrintHostPostUploadActions get_post_upload_actions() const override { return PrintHostPostUploadAction::StartPrint; } +protected: +#ifdef WIN32 + virtual bool upload_inner_with_resolved_ip(PrintHostUpload upload_data, ProgressFn prorgess_fn, ErrorFn error_fn, InfoFn info_fn, const boost::asio::ip::address& resolved_addr) const; +#endif + virtual bool validate_version_text(const boost::optional &version_text) const; + virtual bool upload_inner_with_host(PrintHostUpload upload_data, ProgressFn prorgess_fn, ErrorFn error_fn, InfoFn info_fn) const; + +#ifdef WIN32 + virtual bool test_with_resolved_ip(wxString& curl_msg) const override; + bool elegoo_test_with_resolved_ip(wxString& curl_msg) const; +#endif + +private: + bool elegoo_test(wxString& curl_msg) const; + bool print(WebSocketClient& client, + std::string timeLapse, + std::string heatedBedLeveling, + std::string bedType, + const std::string filename, ErrorFn error_fn) const; + bool checkResult(WebSocketClient& client, + ErrorFn error_fn) const; + + bool loopUpload(std::string url, PrintHostUpload upload_data, + ProgressFn prorgess_fn, + ErrorFn error_fn, + InfoFn info_fn) const; + + bool uploadPart(Http &http, + std::string md5, + std::string uuid, + std::string path, + std::string filename, + size_t filesize, + size_t offset, + size_t length, + ProgressFn prorgess_fn, + ErrorFn error_fn, + InfoFn info_fn) const; +}; +} + +#endif diff --git a/src/slic3r/Utils/Http.cpp b/src/slic3r/Utils/Http.cpp index bfd9eab2f0..4127d3fd29 100644 --- a/src/slic3r/Utils/Http.cpp +++ b/src/slic3r/Utils/Http.cpp @@ -192,6 +192,11 @@ Http::priv::priv(const std::string &url) ::curl_easy_setopt(curl, CURLOPT_IPRESOLVE, CURL_IPRESOLVE_V4); ::curl_easy_setopt(curl, CURLOPT_SSL_VERIFYPEER, 0L); ::curl_easy_setopt(curl, CURLOPT_SSL_VERIFYHOST, 0L); + + // https://everything.curl.dev/http/post/expect100.html + // remove the Expect: header, it will add a second delay to each request, + // if the file is uploaded in packets, it will cause the upload time to be longer + headerlist = curl_slist_append(headerlist, "Expect:"); } Http::priv::~priv() @@ -599,6 +604,21 @@ Http& Http::ca_file(const std::string &name) return *this; } +Http& Http::form_clear() { + if (p) { + if (p->form) { + ::curl_formfree(p->form); + p->form = nullptr; + p->form_end = nullptr; + } + for (auto &f : p->form_files) { + f.ifs.close(); + } + p->form_files.clear(); + + } + return *this; +} Http& Http::form_add(const std::string &name, const std::string &contents) { diff --git a/src/slic3r/Utils/Http.hpp b/src/slic3r/Utils/Http.hpp index 872ec6cbdf..fbded8eab2 100644 --- a/src/slic3r/Utils/Http.hpp +++ b/src/slic3r/Utils/Http.hpp @@ -119,6 +119,7 @@ public: // See also ca_file_supported(). Http& ca_file(const std::string &filename); + Http& form_clear(); // Add a HTTP multipart form field Http& form_add(const std::string &name, const std::string &contents); // Add a HTTP multipart form file data contents, `name` is the name of the part diff --git a/src/slic3r/Utils/OctoPrint.hpp b/src/slic3r/Utils/OctoPrint.hpp index d9172f3225..ad7e8c411e 100644 --- a/src/slic3r/Utils/OctoPrint.hpp +++ b/src/slic3r/Utils/OctoPrint.hpp @@ -49,9 +49,8 @@ protected: virtual void set_auth(Http &http) const; std::string make_url(const std::string &path) const; -private: #ifdef WIN32 - bool test_with_resolved_ip(wxString& curl_msg) const; + virtual bool test_with_resolved_ip(wxString& curl_msg) const; #endif }; diff --git a/src/slic3r/Utils/PrintHost.cpp b/src/slic3r/Utils/PrintHost.cpp index 256b764133..097d26d4c0 100644 --- a/src/slic3r/Utils/PrintHost.cpp +++ b/src/slic3r/Utils/PrintHost.cpp @@ -26,6 +26,7 @@ #include "Obico.hpp" #include "Flashforge.hpp" #include "SimplyPrint.hpp" +#include "ElegooLink.hpp" namespace fs = boost::filesystem; using boost::optional; @@ -65,6 +66,7 @@ PrintHost* PrintHost::get_print_host(DynamicPrintConfig *config) case htObico: return new Obico(config); case htFlashforge: return new Flashforge(config); case htSimplyPrint: return new SimplyPrint(config); + case htElegooLink: return new ElegooLink(config); default: return nullptr; } } else { @@ -78,7 +80,16 @@ wxString PrintHost::format_error(const std::string &body, const std::string &err auto wxbody = wxString::FromUTF8(body.data()); return wxString::Format("HTTP %u: %s", status, wxbody); } else { - return wxString::FromUTF8(error.data()); + if (error.find("curl:Timeout was reached") != std::string::npos) { + return _L("Connection timed out. Please check if the printer and computer network are functioning properly, and confirm that they are on the same network."); + }else if(error.find("curl:Couldn't resolve host name")!= std::string::npos){ + return _L("The Hostname/IP/URL could not be parsed, please check it and try again."); + } else if (error.find("Connection was reset") != std::string::npos){ + return _L("File/data transfer interrupted. Please check the printer and network, then try it again."); + } + else { + return wxString::FromUTF8(error.data()); + } } } diff --git a/src/slic3r/Utils/PrintHost.hpp b/src/slic3r/Utils/PrintHost.hpp index 83bd730e42..2b5e300008 100644 --- a/src/slic3r/Utils/PrintHost.hpp +++ b/src/slic3r/Utils/PrintHost.hpp @@ -11,7 +11,7 @@ #include #include "Http.hpp" - +#include class wxArrayString; namespace Slic3r { @@ -37,6 +37,9 @@ struct PrintHostUpload std::string storage; PrintHostPostUploadAction post_action { PrintHostPostUploadAction::None }; + + // Some extended parameters for different upload methods. + std::map extended_info; }; class PrintHost diff --git a/src/slic3r/Utils/WebSocketClient.hpp b/src/slic3r/Utils/WebSocketClient.hpp new file mode 100644 index 0000000000..2660231794 --- /dev/null +++ b/src/slic3r/Utils/WebSocketClient.hpp @@ -0,0 +1,101 @@ +#ifndef _WEB_SOCKET_CLIENT_HPP_ +#define _WEB_SOCKET_CLIENT_HPP_ +#include +#include +#include +#include +#include +#include +#include +namespace beast = boost::beast; // from +namespace http = beast::http; // from +namespace websocket = beast::websocket; // from +namespace net = boost::asio; // from +using tcp = net::ip::tcp; // from + +class WebSocketClient { +public: +//服务器是ws://echo.websocket.org:80/websocket + WebSocketClient(): + resolver_(ioc_), ws_(ioc_),is_connect(false) { + + } + + ~WebSocketClient() { + if(!is_connect){ + return; + } + try { + // Close the WebSocket connection + ws_.close(websocket::close_code::normal); + } catch (const std::exception& e) { + std::cerr << "Error: " << e.what() << std::endl; + } + } + void connect(const std::string& host, const std::string& port, const std::string& path="/"){ + if(is_connect){ + return; + } + // Look up the domain name + auto const results = resolver_.resolve(host, port); + + // Make the connection on the IP address we get from a lookup + auto ep = net::connect(ws_.next_layer(), results); + std::string _host = host; + //if _host last char is '/', remove it + if(_host.size()>0&&_host[host.size()-1] == '/'){ + _host[host.size()-1] = '\0'; + } + + // _host += ':' + std::to_string(ep.port()); + // Set a decorator to change the User-Agent of the handshake + ws_.set_option(websocket::stream_base::decorator( + [](websocket::request_type& req) + { + req.set(http::field::user_agent,"ElegooSlicer"); + })); + // Perform the WebSocket handshake + ws_.handshake(_host, path); + is_connect = true; + } + + void send(const std::string& message){ + // Send a message + ws_.write(net::buffer(message)); + } + + std::string receive(int timeout = 0){ + // This buffer will hold the incoming message + beast::flat_buffer buffer; + + // Read a message into our buffer + ws_.read(buffer); + + // Return the message as a string + return beast::buffers_to_string(buffer.data()); + } + + +private: + net::io_context ioc_; + tcp::resolver resolver_; + websocket::stream ws_; + bool is_connect; +}; + +// int main() { +// try { +// WebSocketClient client("echo.websocket.org", "80"); + +// client.send("Hello, world!"); +// std::string response = client.receive(); + +// std::cout << "Received: " << response << std::endl; +// } catch (const std::exception& e) { +// std::cerr << "Error: " << e.what() << std::endl; +// return EXIT_FAILURE; +// } + +// return EXIT_SUCCESS; +// } +#endif // _WEB_SOCKET_CLIENT_HPP \ No newline at end of file