Jump to content

Cuq

Expert
  • Posts

    675
  • Joined

  • Last visited

  • Days Won

    18

Everything posted by Cuq

  1. je sais pas si c'est la dernière mais c'est le paramètre "Nombre de ligne de la paroi du support" Mettre à 0
  2. Je pense plutôt que cette option n'est active que si tu n'as pas de Support (classique) d'activé ... Après si tu utilises les supports arborescent , tu dois désactiver l'option Support classique donc peut être logique qu'elle devienne active aussi à ce moment là ?
  3. Tu peux dans la config de cura modifier les 25mm si tu veux imprimer des pièces plus hautes . C'est une sécurité mais rien n’empêche de forcer ce paramètre. En impression "un à la fois" l'ordre n'est pas aléatoire mais correspond à l'ordre dans le quel les pièces ont été rajouté. Donc ça permet justement de placer les pièces de manière à éviter les collisions C'est ordre est fixe sauf si justement Cura détecte une collision d'une zone de pièce par rapport à la zone de tete défini dans les paramètre. Dans ce cas il va proposer un ordre qui "évite" cette collision. Dans tous les cas en impression "Un a la fois" Il est préférable de bien comprendre ce que l'on fait et simuler les enchaînement avant de lancer un print à l'aveugle
  4. Depuis la version 2.3.0 le Settings Guide est aussi dispo en français ( je pense depuis 4.6) si le texte n’apparaît pas directement en français il faut lui indiquer la langue. Une fois la langue choisi elle restera active
  5. l'ajout de ces codes sur les ecrans LCD se fait via les scripts de post traitement . Tu vas dans Extensions -> Post-traitement -> Modifier le G-code et tu rajoutes les scripts déjà fournis comme Display Filnename and Layer on LCD (Affiche ce que tu demandes) ou Display Remaining Time : Qui lui va afficher le temps restant. Il existe aussi sur le Groupe Facebook Cura3D francophone une version de script DisplayPrintInfoOnLcd.py qui fait les deux ( affichage layer et temps restant)
  6. Il met à Zero si tu as l'option " Supprimer les premières couches vides" dans Correction .. sinon il laisse les couches là où elle sont
  7. 2 possibilités .. soit tu rajoute en fin de fichier Gcode la liste des variables existantes. tu trouvera une version dans le poste suivant https://community.ultimaker.com/topic/23303-your-current-settings-in-a-text-file-here-it-is/ Ou alors tu as des scripts de post -traitement qui existe sur le groupe facebook Cura3d Francophone qui fait ça . Ce pourra etre une base pour ton propre script
  8. Really efficient ? I've tested the plugin without this plugin 17s to start CURA 4.6.1 with this plugin 15s so the benefits of 2s are very limited in my case.
  9. Hello I'm using in my Python scripts a function which seems to be obsolet in the new release of Cura : extrud = list(Application.getInstance().getGlobalContainerStack().extruders.values()) How to modify this code to get a valid Syntex ? Best regards,
  10. Ok Finaly As I prefer to not generate anything I will use : if relativeextrusion == False: # Logger.log('d', 'Gcode must be generate in relative extrusion mode') Message('Gcode must be generate in relative extrusion mode', title = catalog.i18nc("@info:title", "Post Processing")).show() return None In case of wrong setting, I will get just the error message , No file generated, No message in relation of a generated file, No risk to print something which is not correct or can generate inappropriated extruder instructions. Thanks again for your help @ahoeben
  11. That's a good question and you can certainly help me on this point. I can use just "return" like : return('; Gcode must be generate in relative extrusion') In this case this return will generate an error 'TypeError: 'str' object does not support item assignment' but the advantage No Gcode Will be generated and I will get just the Error Message . But it's not a 'Clean Solution' Or I can also return the data with just one line. But how to resize the data item ? data.resize(0) data[0] = '; Gcode must be generate in relative extrusion' return data
  12. Thanks @ahoeben , finaly it was just a problem of speed, the message was displayed but as extra messages were displayed, I wasn't seen the message in the Cura software. I 'solved' this issue by adding a Raise instruction to stop the script: from ..Script import Script from UM.Logger import Logger from UM.Application import Application from cura.Settings.ExtruderManager import ExtruderManager from UM.Message import Message from UM.i18n import i18nCatalog import re #To perform the search and replace. catalog = i18nCatalog("cura") ... extrud = list(Application.getInstance().getGlobalContainerStack().extruders.values()) infillpattern = extrud[extruder_id].getProperty("infill_pattern", "value") relativeextrusion = extrud[extruder_id].getProperty("relative_extrusion", "value") if relativeextrusion == False: # Logger.log('d', 'Logger: Gcode must be generate in relative extrusion') Message('Message : Gcode must be generate in relative extrusion', title = catalog.i18nc("@info:title", "Post Processing")).show() raise SyntaxError('SyntaxError : Gcode must be generate in relative extrusion')
  13. New feature already mentionned on the Cura Github : https://github.com/Ultimaker/Cura/issues/6954#issuecomment-576047725
  14. Hello, Is it possible to display a message in a Python Cura Postprocessing PlugIn Script. I know how to add a log text via : from UM.Logger import Logger Logger.log('d', "Error" ) I have tried from UM.Logger import Logger from UM.Message import Message from UM.i18n import i18nCatalog catalog = i18nCatalog("cura") Message("Error\n", title = catalog.i18nc("@info:title", "Post Processing")).show() But it doesn't work
  15. This question is certainly for @ghostkeeper . Is there a solution to translate the PlugIn 'Cura setting guide' into our native language ? Best regards, Edit : I have made an 'official' Feature request on the Github site
  16. Hello, Is there an option or a parameter to reduce or limit the size of the cura.log file ? After a while the file become very bigger and I don't want to delete manually this file every time. Best regards,
  17. Hello I'm looking for a documenation concerning the different property we can get via this function. Up to now I was mainly getting the Value and the Label but I want to know if it's also possible to get the unit and other different informations. Best regards, Cuq
  18. Thanks a lot for your work @burtoogle, I like your new Schwarz D pattern. The Gyroïde pattern is already nice but the Schwarz D pattern are faster and it generate less wobbling movements. On the other hand I am not convinced by the Schwarz P(rimimitif) pattern.
  19. Any news about this possibility to store in one place and share such type of Posprocessing scripts ?
  20. Hello @nallath and @ahoeben , Thanks for your help , None of these solutions seems to work, If it's just a word I've got a translation but a complex label is not translated. Tested : from UM.i18n import i18nCatalog catalog = i18nCatalog("cura") untranslated_label = Application.getInstance().getGlobalContainerStack().getProperty("layer_height", "label") translated_label = catalog.i18n(untranslated_label) and from UM.i18n import i18nCatalog catalog = i18nCatalog("cura") untranslated_label = Application.getInstance().getGlobalContainerStack().getProperty("layer_height", "label") translated_label = catalog.i18nc("@label", untranslated_label) with the same result 😞
  21. Hello, I'm looking for a solution to get the translation of a label parameter. I can get the label or the description inthe default langage but I don't know how to get it the the right translated text. # layer_height GetVal = Application.getInstance().getGlobalContainerStack().getProperty("layer_height", "value") GetLabel = Application.getInstance().getGlobalContainerStack().getProperty("layer_height", "label")
  22. Thank you @ahoeben !!!! That's OK : Profile name Material name Quality # add extruder specific data to slice info extruders = list(Application.getInstance().getGlobalContainerStack().extruders.values()) # Profile GetValStr = extruders[0].qualityChanges.getMetaData().get("name", "") GetLabel = "Profile" replace_string = replace_string + "\n; " + GetLabel + " : " + GetValStr # Material GetValStr = extruders[0].material.getMetaData().get("material", "") GetLabel = "Material" replace_string = replace_string + "\n; " + GetLabel + " : " + GetValStr # Quality GetValStr = extruders[0].quality.getMetaData().get("name", "") GetLabel = "Quality" replace_string = replace_string + "\n; " + GetLabel + " : " + GetValStr
  23. Ok step by step I'm closer to my goal to get the Material name I'm using this code : # add extruder specific data to slice info extruders = list(Application.getInstance().getGlobalContainerStack().extruders.values()) GetValStr = extruders[0].material.getMetaData().get("material", "") Does anyone of you knows how to get the Profil name ?
  24. For the the majority of these parameters ( material_print_temperature, machine_nozzle_size , material_diameter etc ) . GetProperty function retrun the right values. GetVal = Application.getInstance().getGlobalContainerStack().getProperty("machine_nozzle_size", "value") But I don't find any parameter for the profil name and the material base. GetValStr = Application.getInstance().getGlobalContainerStack().extruders[0].material.getMetaData().get("material", "") Doesn't seems to be a valide solution
  25. Hello, I'm trying to create my own postprocessing script. The goal of the script is to add at the beginning of the GCode file different comments to keep the print profile. For the print parameter I don't have anny problem to get the values , but I don"t know how to get the Name of the profile and the initial material name. I'have made a test with a command line like : GetValStr = Application.getInstance().getGlobalContainerStack().material.getMetaData().get("material", "") but this line return an empty value. hereafter the actual sample code import re #To perform the search and replace. from ..Script import Script from UM.Application import Application #To get the current printer's settings. ## Performs a search-and-replace on all g-code. # # Due to technical limitations, the search can't cross the border between layers. class Documentation(Script): def getSettingDataString(self): return """{ "name": "Documentation parametres", "key": "Documentation", "metadata": {}, "version": 2, "settings": { "search": { "label": "Search", "description": "All occurrences of this text will get replaced by the parameter list.", "type": "str", "default_value": ";FLAVOR:Marlin" } } }""" def execute(self, data): search_string = self.getSettingValueByKey("search") search_regex = re.compile(search_string) replace_string = search_string replace_string = replace_string + "\n;==============================================\n; Documentation\n;==============================================" # machine_nozzle_size GetVal = Application.getInstance().getGlobalContainerStack().getProperty("machine_nozzle_size", "value") GetLabel = Application.getInstance().getGlobalContainerStack().getProperty("machine_nozzle_size", "label") replace_string = replace_string + "\n; " + GetLabel + " : {Val} mm".format(Val = GetVal) # material_guid GetValStr = Application.getInstance().getGlobalContainerStack().material.getMetaData().get("material", "") GetLabel = Application.getInstance().getGlobalContainerStack().getProperty("material_guid", "label") replace_string = replace_string + "\n; " + GetLabel + " : " + GetValStr # layer_height GetVal = Application.getInstance().getGlobalContainerStack().getProperty("layer_height", "value") GetLabel = Application.getInstance().getGlobalContainerStack().getProperty("layer_height", "label") replace_string = replace_string + "\n; " + GetLabel + " : {Val} mm".format(Val = GetVal) # line_width GetVal = Application.getInstance().getGlobalContainerStack().getProperty("line_width", "value") GetLabel = Application.getInstance().getGlobalContainerStack().getProperty("line_width", "label") replace_string = replace_string + "\n; " + GetLabel + " : {Val} mm".format(Val = GetVal) # material_print_temperature GetVal = Application.getInstance().getGlobalContainerStack().getProperty("material_print_temperature", "value") GetLabel = Application.getInstance().getGlobalContainerStack().getProperty("material_print_temperature", "label") replace_string = replace_string + "\n; " + GetLabel + " : {Val}°C".format(Val = GetVal) # speed_print GetVal = Application.getInstance().getGlobalContainerStack().getProperty("speed_print", "value") GetLabel = Application.getInstance().getGlobalContainerStack().getProperty("speed_print", "label") replace_string = replace_string + "\n; " + GetLabel + " : {Val} mm/s".format(Val = GetVal) # speed_infill GetVal = Application.getInstance().getGlobalContainerStack().getProperty("speed_infill", "value") GetLabel = Application.getInstance().getGlobalContainerStack().getProperty("speed_infill", "label") replace_string = replace_string + "\n; " + GetLabel + " : {Val} mm/s".format(Val = GetVal) # material_flow GetVal = Application.getInstance().getGlobalContainerStack().getProperty("material_flow", "value") GetLabel = Application.getInstance().getGlobalContainerStack().getProperty("material_flow", "label") replace_string = replace_string + "\n; " + GetLabel + " : {Val} %".format(Val = GetVal) # retraction_enable GetVal = Application.getInstance().getGlobalContainerStack().getProperty("retraction_enable", "value") GetLabel = Application.getInstance().getGlobalContainerStack().getProperty("retraction_enable", "label") replace_string = replace_string + "\n; " + GetLabel + " : [{Val}]".format(Val = GetVal) # retraction_speed GetVal = Application.getInstance().getGlobalContainerStack().getProperty("retraction_speed", "value") GetLabel = Application.getInstance().getGlobalContainerStack().getProperty("retraction_speed", "label") replace_string = replace_string + "\n; " + GetLabel + " : {Val}".format(Val = GetVal) # support_enable GetVal = Application.getInstance().getGlobalContainerStack().getProperty("support_enable", "value") GetLabel = Application.getInstance().getGlobalContainerStack().getProperty("support_enable", "label") replace_string = replace_string + "\n; " + GetLabel + " : [{Val}]".format(Val = GetVal) # support_type GetValStr = Application.getInstance().getGlobalContainerStack().getProperty("support_type", "value") GetLabel = Application.getInstance().getGlobalContainerStack().getProperty("support_type", "label") replace_string = replace_string + "\n; " + GetLabel + " : " + GetValStr # infill_sparse_density GetVal = Application.getInstance().getGlobalContainerStack().getProperty("infill_sparse_density", "value") GetLabel = Application.getInstance().getGlobalContainerStack().getProperty("infill_sparse_density", "label") replace_string = replace_string + "\n; " + GetLabel + " : {Val} %".format(Val = GetVal) # infill_pattern GetValStr = Application.getInstance().getGlobalContainerStack().getProperty("infill_pattern", "value") GetLabel = Application.getInstance().getGlobalContainerStack().getProperty("infill_pattern", "label") replace_string = replace_string + "\n; " + GetLabel + " : " + GetValStr # material_diameter GetVal = Application.getInstance().getGlobalContainerStack().getProperty("material_diameter", "value") GetLabel = Application.getInstance().getGlobalContainerStack().getProperty("material_diameter", "label") replace_string = replace_string + "\n; " + GetLabel + " : {Val} mm".format(Val = GetVal) # ironing_enabled GetVal = Application.getInstance().getGlobalContainerStack().getProperty("ironing_enabled", "value") GetLabel = Application.getInstance().getGlobalContainerStack().getProperty("ironing_enabled", "label") replace_string = replace_string + "\n; " + GetLabel + " : [{Val}]".format(Val = GetVal) # adhesion_type GetValStr = Application.getInstance().getGlobalContainerStack().getProperty("adhesion_type", "value") GetLabel = Application.getInstance().getGlobalContainerStack().getProperty("adhesion_type", "label") replace_string = replace_string + "\n; " + GetLabel + " : " + GetValStr # Fin de commentaire replace_string = replace_string + "\n;==============================================" for layer_number, layer in enumerate(data): data[layer_number] = re.sub(search_regex, replace_string, layer) #Replace all. return data
×
×
  • Create New...