Advanced Config Options

I recently learned about the hidden beta feature that enable importing SVG into KiCAD.

For those that don’t know this, in KiCAD’s config folder (%appdata/kicad% on Windows), you create a new file called kicad_advanced and add the line EnableSvgImport=1 to it to enable beta suppoort for importing SVG files into footprints.

This got me wondering if there were other ‘hidden’ settings that could be added to this file. I managed to find a couple files in the source that listed additional settings: include/advanced_config.h and common/advanced_config.cpp, but neither of these files have a lot of information on what the config options defined in them do. It provides a brief summary, but no information on how to actually utilize the options.

Is there any more documentation on what these functions do? I am aware that they are either not useful for an end user, or beta/unstable features, but I am just curious to play around and see what happens.

This is just for troubleshooting and messing around with by developers

The 5.1 source even says

Warning: enable svg import is currently only for developers.
3 Likes

That’ not 100% accurate. Some options were put there because users needed or wanted them.

/**
     * Save files in compact display mode
     * When is is not specified, points are written one per line
     */
    bool m_CompactSave;

IIRC this has nothing to do with troubleshooting or messing around, but Seth added it because some users may prefer having a vertically compact view when the file is viewed with a text editor. Otherwise each point in polygons take one line, making the file look considerably longer vertically. The default is better for line-by-line version control.

/**
     * The diameter of the drill marks on print and plot outputs (in mm), 
     * when the "Drill marks" option is set to "Small mark"
     */
    double m_SmallDrillMarkSize;

This was probably also a user request. Sometimes it’s easy to make a thing configurable but unfeasible to add it in the UI. There was some good use case for this one.

I may be wrong, but these ones evoked some vague memories about some discussions.

The important thing to remember with the Advanced Config options is that they may disappear or change at any point in the future.

2 Likes

We really should have real advanced settings separate from the “dont use this it may break your stuff settings”…

“real advanced settings” basically just means settings that exist in the JSON configs but aren’t shown in any GUI, I think. The “advanced config” file is definitely a “here be dragons” location for non-developers.

Oh I know its a “here be dragons” thing. The main reason I have not contributed to the main KiCAD development is that I don’t know C++, so I have had to contribute in other ways (Such as the cintegration scripts in the symbol and footprint repos).

Really, I was curious for a little bit more information on these settings. Some of them appeared to be about displaying debugging info for stuff like Routing and Copper pours, which I was interested in as it would give me more insight into how KiCAD works.

Yup if you put ShowRouterDebugGraphics=1 in you can see some more about how the PNS router is thinking about things (but understanding what all the debug graphics means requires research through the code)

The copper pour debugger is a bit more cranky because you have to set everything up for it (lots of layers, with the fill you want to debug on F.Cu but the zone itself on all copper layers). It then spits out the individual steps to the other copper layers so you can see the effect of each step.

But there’s no documentation for the steps outside the C++ code…