Jump to content

Help generating printer definition and variant/quality (Simple question to any expert)


Recommended Posts

Posted · Help generating printer definition and variant/quality (Simple question to any expert)


I am going to generate some profiles for a mini-kossel (Micromake D1) and was curious about where the default setting are for the profiles.

I can overwrite them in my variant configs for nozzles but that seems the wrong place for infill and support changes.  I would like to "override" some of the more basic features in my machine definition file.


Ex machine.)

        "infill_pattern": {
            "default_value": "gyroid"

When i do this there is no change to the default 'Grid' selection in any of the profiles...  when i check the quality folder the default quality profiles just have the [metadata] and no values other than layer/speed...

I see in the quality folders lots of setting which are onerous because there is a profile for each material, variant, and quality.  This is getting cubic quickly...

Searching https://github.com/Ultimaker/Cura/wiki/Profiles-&-Settings I was expecting something hidden in material or intent, but found nothing...



1.)  So where are the default profile values stored if not machine, intent, or quality?  (Is there a cache under appdata i need to clear for a machine update?)

2.)  If I make one quality setting for my machine definition everything goes sideways...  Do i need to make a quality definition for every variant and default quality type before Cura will function?  I would like to cut down on the number of quality selections.  I saw the "has_machine_quality": true and expected that to not default the normal so if i have only one quality that should be the only option in the pull down.

3.)  Is there a way to set layer height based on nozzle size using equations in quality file?  ( I would prefer Quality = 1/4 nozzle diam, Standard = 1/2, Fast 3/4) as my default line height based on nozzle) That way i don't have to make 4x the quality files for variant + quality settings for the 4 standard Revo nozzles.

4.) Is Cura 5.0 going to break all of this?


I will continue to muddle around trying to get something working...  thanks in advance to anyone who can answer and takes pity on this lost non-coder using notepad.

  • Link to post
    Share on other sites

    Posted (edited) · Help generating printer definition and variant/quality (Simple question to any expert)

    Many (if not all) of the settings are contained in "fdmprinter.def.json".  I'll use my Ender as an example as I'm most familiar with it.

    At the top of the creality_ender3pro.def.json file is a line "inherits": "creality_base",.

    OK I open creality_base.def.json and there is a line "inherits": "fdmprinter".  Progress.


    So all the settings in the fdmprinter.def.json go to the creality_base file which is much smaller and where there is a section for "overrides".  Any settings in the "fdm" file that don't fit the Creality line of printers get changed in the overrides section.  The final file "creality_ender3pro.def.json" is specific to my printer and also has an overrides section.  Those final overrides tweak the settings for my particular machine.


    The "kossel_mini.def.json" file has an overrides section.  That is where you want to put your changes to settings.  In line 1988 of fdmprinter.def.json you will find the section dealing with the infill types and yes the "default_value": "grid" is in there.  If you were to add (properly formatted and punctuated) lines to the override section in your machine definition file:

              "default_value": "gyroid"

    Then when you start Cura it will be read in.

    I keep copies of my personalized Ender files in a folder and when I update Cura I overwrite the stock Cura files with my own files.  So I can do things like add up to 4 extruders on any Creality printer because I've customized the creality_base.def.json file.  I have my personalized Start and End gcodes in there as well.  Those are "machine specific" things.


    If you changes are "preferences" (like Gyroid instead of Grid) then an easier way to do it is with Settings Profiles.  When you have the settings in the Custom view then Profiles become available.  Clicking on the active profile will open a drop down list and at the bottom are some options.  One is "Create Profile from Current Settings/Overrides".  Then you get to name it.  I have one for PLA fast, PLA slow, PETG, and TPU.  The speeds, temperatures, infill type, etc. are all in there.  No matter how I make changes for a particular model if I click on PLA Fast I get that set of defaults and I can start customizing for another model.  Those profiles carry over from version to version where custom machine definition changes do not.



    Edited by GregValiant
  • Link to post
    Share on other sites

    Posted (edited) · Help generating printer definition and variant/quality (Simple question to any expert)

    Thanks Greg...

    I just have to ask the question to then find out my answer later. I understood the inheritance but failed on the syntax
    Correct answer is strings in data file need '' as well as ' ...  actually am shamelessly copying flying bears file.  They use as defaults what i would as well.  Thank you flying bears.


            "infill_pattern": {
                "default_value": "'gyroid'"


    Have you had any luck on making a quality default profile for your machine defaults.

    I added to my machine definition:

    "has_machine_quality": true,
     "preferred_quality_type": "normal",

    I made a folder in quality called micromake_d1 copied all the base profiles and then changed definition = micromake_d1.

    Cleared all the speed properties issues that were causing me problems under values that were overriding my values but when i start Cura it goes sideways.  My material selection is orange and my profiles all say "Not supported".  I did not think i would need to add individual profiles for each material/quality if i did not state "has materials" in the machine definition.


    now i can fix this issue in my personal install by just modifying the defaults quality for fdmprinter, but i want something that can merge into the Cura base and I imagine Cura does not want me modifying that file...  I am concerned that what Cura wants is a file for each material/nozzle/quality setting and that  not a data structure that is non-trivial to set defaults.

    Edited by LucidWolf
  • Link to post
    Share on other sites

    Posted · Help generating printer definition and variant/quality (Simple question to any expert)

    Just to add I was able to get the Not supported cleared by adding individual quality files for:

    • PLA
    • All four nozzles
    • 2/3 Quality (layer heights)

    Using flyingbear values as a reference, but as expected switching to ABS back to Not Supported...  What i would like is a quality setting that says (Material = any).

    Or some simple way to overide the .cfg that link to fdmprinter in the quality folder.

    For now i am going to just purge all the speed values in fdmprinter files so they don't mess up my machine defaults and my material defaults and it only sets line height.


    (Note: Would love to have line height just set by some fraction of nozzle height like i manually do in my home brew user profiles.  That is probably another thread topic so i started that.)


    I love this program and I don't want this to be too negative on the developers but I see some "why does my printer act differently after update" threads and its because the machine definitions were purged and never added back.  I can see why manufacturers/users don't add there printers back if Cura designers think requiring a x^3 material, variant, layer matrix as necessary to modify even the most basic of quality settings is required. 

    Why even have the default stack profile if the code gate keeps on the quality settings when you add custom quality defaults.  I actually think the print settings are pretty well laid out but they just need to allow a fail safe in the printer file that just does not care if you don't have a specific material to quality to nozzle like the baseline fdmprinter.


    I still feel like I am doing something wrong based on the fact that that i have to enter all that data just to get a custom quality default, so if I am wrong i will happily eat my words above.


    Also while Cura 5.0 is beta what would be nice if there was some sort of queue on the print settings telling us where the default value is coming from.  I used colors but would probably be better to use the icons you already have for the color blind.  (User override is no icon because we already have the revert symbol. ^^)



    • Like 1
    Link to post
    Share on other sites

    Posted · Help generating printer definition and variant/quality (Simple question to any expert)

    You've gone way beyond me here.  I try to keep it simple.

    I have custom materials that are set to what I actually print.  Diameters, preferred temperatures, retraction settings, etc.

    I own 1 printer but I have 3 printers installed in Cura.

    If I'm printing PETG then I select my "PETG Ender 3 Pro".  The difference is in the StartUp Gcode where the purge line speeds and flow have been adjusted for my preferences for PETG.  There is also a "Search and Replace" that is specific to my retraction and retract distance for PETG.  (Post-Processor plugins attach to the printer so that works).

    Then I have a Settings Profile for PETG that gives me my preferred speeds, flow rates, etc.

    I did the same thing for TPU.  When I print it I use the "TPU Ender 3 Pro", my TPU Material, and my TPU Settings Profile.


    That has worked for me and it's easier for me to keep straight in my head.  Any modifications I make during the course of a Cura session (things that are model specific) I either toss out when I'm done, or I save a Project File that will re-create everything I did.


    Because I load so many 3mf Project Files that were generated by other people (here and on GitHub) I found it necessary to have my own set of printer definition files that have my overrides so I have something to revert to if my installed definitions get overwritten.  I've have my own simple "installer" that copies my files into any new installation of Cura.  It's something that works for me and yes, there is some maintenance involved in doing that.


    Changing the FDMPrinter.def.json file will lead to BAD JU-JU down the road.  I got caught in that trap once and it won't happen again.



  • Link to post
    Share on other sites

    Posted · Help generating printer definition and variant/quality (Simple question to any expert)

    Greetings Greg,


    Yeah this is just me trying to get better before I upgrade a less savvy user.  I told them to hold off on upgrading back on Cura 0.15 since it was still new and did not have all the stuff they expected, and they held to that belief for 1/2 a decade.  ^^

    Will probably leap frog them to Cura 5.0 and Klipper.  I never thought to just save my profiles in the 3mf files themself somewhere.  I might just start doing that to keep the profile list clutter down. 


    I have 2 printers(delta kinematics) but use 7 different machines in Cura based on nozzle/material then the list of dummy user profiles all {printer name}_{Nozzle Size}_{Material}_{Intent}, but i could purge about 75% of them and only focus on intent if the settings stack just worked after a slight change to the quality profiles.  I am not concerned with 100% verified values because each printer/material/nozzle combo is its own special snowflake so i will adjust those with a user override and now save it in a 3mf file.   I use that custom print name plugin to keep it all straight in the octoprint server.


    I will say that so far just overwriting the base fdm profiles in the program files quality section to what i want for quality is working swimmingly, I imagine the risk is much lower than messing with FDMPrinter.def.json. I will probably only need to modify the quality profiles this one time till i get my list of standard profiles saved in a 3mf files.

  • Link to post
    Share on other sites

    Posted (edited) · Help generating printer definition and variant/quality (Simple question to any expert)

    Sorry to necro but it has been a year without any good solution I found.  I am now updating my Ultibots with a Revo so am updating the machine profile.  I see there was a solution to setting layer height by nozzle, but I still cant find a simple way to overwrite the default quality settings for a machine without just manually overwriting the defaults for fdmprinter since i have two printers that i want to slice with Cura that will be a problem...

    Here is my machine metadata in ultibots_D300VSp.def.json


        "metadata": {
            "visible": true,
            "author": "LucidWolf",
            "manufacturer": "Ultibots",
            "file_formats": "text/x-gcode",
            "platform": "ultibots_D300VSp_platform.stl",
            "first_start_actions": ["MachineSettingsAction"],
                "0": "ultibots_D300VSp_extruder_0"
            "has_machine_quality": true,
            "has_variants": true,
            "variants_name": "Nozzle Size"


    If I set has machine quality = false everything works but I am using the quality profiles from fdmprinter in the root of the quality folder.


    Per the guide I make a folder called ultibots_D300VSp in the quality folder.

    I copied the standard quality files to this folder and replaced the definition to match mine as shown and turn on machine has quality.   There should be no issues it should just be using these files now and not the default.


    For example my new generic "course" setting:


    version = 4
    name = Coarse
    definition = ultibots_D300VSp
    setting_version = 20
    type = quality
    quality_type = coarse
    weight = -3
    global_quality = True
    layer_height = 0.4


    When I load my printer I have Nozzle options because the variants are working but i get Not supported...

    What am i doing wrong?  I just want my own quality defaults so I can optimize them for the machine, let alone begin making quality variants per nozzle size.


    For reference here is an example of a variant file:

    name = 0.6mm Nozzle
    version = 4
    definition = ultibots_D300VSp
    setting_version = 20
    type = variant
    hardware_type = nozzle
    machine_nozzle_size = 0.6


    Edited by LucidWolf
  • Link to post
    Share on other sites

    Posted · Help generating printer definition and variant/quality (Simple question to any expert)

    I might have figured out the issue that was driving me crazy.  Even if the files are in a different directory Cura does not like repetitive names? 


    So copy and pasting from other printers quality or the global quality files without giving a unique name will cause conflict because Cura is not tracking to the full path just the file name.. is that a true statement developers?


    As before you need to have some blank file linking a material/nozzle to a quality profile.  The values for that can be blank and you can keep values in a separate quality file that just has a nozzle or a material and the weight determines the value that wins... Is that a true statement developers?


    Thanks in advance for any confirmations.

  • Link to post
    Share on other sites

    Posted · Help generating printer definition and variant/quality (Simple question to any expert)

    You are right ... files are not supposed to be necessarily store in a folder by printer reference. They can be in the same directory by definition type (quality, variant , extruder ... ) so name must be uniq

  • Link to post
    Share on other sites

    Posted · Help generating printer definition and variant/quality (Simple question to any expert)

    At this point I will just once again copy the Creality way that "trouch" did.

    So any nozzle(variant)/material has a single quality file that is empty for setting other than to make Cura have a profile.

    Then in the global profile I add my settings so that my printer.json is clean and all the nitty gritty for quality is in the quality cfg files.

    My main workaround will just be to add the speed and fan properties into some custom materials from fieldofView's material settings plugin.  I just find it silly that with nozzles/variants i have to replicate so much, when i would prefer a material setting and a variant setting and let the program mix them based on stack.


    I could just be doing it wrong as well...  seems i do it wrong almost annually now based on this necro.  ^^


    Thanks for the verification.

  • Link to post
    Share on other sites

    Create an account or sign in to comment

    You need to be a member in order to leave a comment

    Create an account

    Sign up for a new account in our community. It's easy!

    Register a new account

    Sign in

    Already have an account? Sign in here.

    Sign In Now
    • Our picks

      • S-Line Firmware 8.3.0 was released Nov. 20th on the "Latest" firmware branch.
        (Sorry, was out of office when this released)

        This update is for...
        All UltiMaker S series  
        New features
        Temperature status. During print preparation, the temperatures of the print cores and build plate will be shown on the display. This gives a better indication of the progress and remaining wait time. Save log files in paused state. It is now possible to save the printer's log files to USB if the currently active print job is paused. Previously, the Dump logs to USB option was only enabled if the printer was in idle state. Confirm print removal via Digital Factory. If the printer is connected to the Digital Factory, it is now possible to confirm the removal of a previous print job via the Digital Factory interface. This is useful in situations where the build plate is clear, but the operator forgot to select Confirm removal on the printer’s display. Visit this page for more information about this feature.
          • Like
        • 0 replies
      • Ultimaker Cura 5.6 stable released
        Cura now supports Method series printers!
        A year after the merger of Ultimaker and MakerBotQQ, we have unlocked the ability for users of our Method series printers to slice files using UltiMaker Cura. As of this release, users can find profiles for our Method and Method XL printers, as well as material profiles for ABS-R, ABS-CF, and RapidRinse. Meaning it’s now possible to use either Cura or the existing cloud-slicing software CloudPrint when printing with these printers or materials
        • 48 replies
    • Create New...