Jump to content
Ultimaker Community of 3D Printing Experts

Cuq

Member
  • Posts

    240
  • Joined

  • Last visited

  • Days Won

    3

Everything posted by Cuq

  1. 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
  2. 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')
  3. New feature already mentionned on the Cura Github : https://github.com/Ultimaker/Cura/issues/6954#issuecomment-576047725
  4. 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
  5. 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
  6. 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,
  7. 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
  8. 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.
  9. Any news about this possibility to store in one place and share such type of Posprocessing scripts ?
  10. 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 😞
  11. 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")
  12. 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
  13. 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 ?
  14. 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
  15. 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...