Sunday, November 16, 2025

Canva Affinity and Kicad 9: Graphical Madness for DiWhy Projects

Many thanks Elton at Otter Mods for turning me onto the many technologies described in this post.

============

When I look at professionally created front panels, surrounding knobs I often see these "goes to 11" gradients:

                             




What are these called? Dials? Tick marks? Gradients? I am not sure, but, I wanted to add them to my front panels. 

For this post I'll call them "dials".

Using the limited built-in graphics tools in Kicad 9 didn't get me far, but found I could import graphics into Kicad as footprints, which could then be turned into silkscreens and finally added to PCB's used as front panels. That would do!  

OK, how?

There are two imports methods in Kicad I could find:  

First, pretty easy: through Kicad's "User Interface" main menu I could turn PNG graphics into bitmaps, using the "Image Converter" tool. But its output was grainy.


Elton at Otter Mods, the resident Kicad expert in my geeky tech group, described a better way:

Use Affinity Designer to create SVG formatted files, then import the files into Kicad as footprints. Then, place the graphic footprints onto your front panels.

Today's post outlines the workflow we came up with to do this--this may be documented somewhere, but I couldn't find it, and ChatGPT was fully out to lunch.

CANVA AFFINITY 

First I needed to get Canva Affinity, Elton's choice for creating SVG graphics. 

Tough choice: Pay enormous bucks for an Adobe Creative Cloud subscription, complete with hidden fees, a confusing cloud presence, and terrible tech support? 

Nope. I have to deal with Adobe at my day job, and I hate these guys--so--screw Adobe with a red hot poker. Let's use Canva Affinity instead.




Good news: like Kicad 9, Canva Affinity is free. 

Or is it? I had to set up a Canva account, and last I heard the Canva guys aren't a 501C, but then again, someone has to buy lunchroom donuts and more important: keep the shareholders happy.  

So--holding my nose, I set up a "free" Canva account, downloaded Affinity, and installed it on my W11 PC. 

So far, so good.

After a few hours of trying out the "new" Affinity: it felt like a true Adobe killer, combining features found in Illustrator, Photoshop, and InDesign, in one mega-app. It can do most everything if not everything Adobe does, except perhaps grab you by your legs, flip you upside-down, shake the hell out of you, then pocket the change that falls out.

I focused on Affinity's VECTOR "Persona" which closely matched features found in illustrator.  

It had an Export > SVG feature--so far, so good.

CREATING THE DIAL

Knowing squat about Affinity vector I watched the video here, which looked a lot like what I wanted to do. 

An aside: I found that a lot of online documentation for Canva Affinity was out of date; it appeared that Affinity, like Microsoft, has no problem changing their UI early and often, like so many soiled chonies.  

Where's that chair again?
After an hour or so I ended up with this:




A few notes, because I won't remember any of this 2 days from now, and, did I already mention, that when it comes to getting help for this latest version of Affinity Designer, most online docs and ChatGPT is butt?

  • I chose a 120mm x 120mm artboard and made sure the diameter of the outer circle had a 100mm diameter. How to set up artboards and canvases in Affinity is covered in this video (but not the current UI). The 100mm diameter made the image size conversion (described below) easier to figure out.

  • I used grids/guides. Good video for that (for an earlier version of Affinity "Vector" but seems current) is here.  This added general sanity to the project. However, there does not appear top be a way to save a custom grid setup, which is unfortunate. Here are the settings used:


  • To make the tick marks, a good video for Affinity's Vector "power repeat" feature is here. I watched the entire video, and I should watch it again. I had to make sure to set the checkboxes and adjust rotate points as described in the vid or  I'd end up with an ugly mess. 
  • The repeat settings used for the big ticks:


  • I then created a smaller tick over the large one at 12 o'clock, dragged its rotation point to center (red line and green guide lines visible) and repeated with rotation of 7.5 and number of copies of 64. 

Couldn't find anywhere: how I created the gap between 7PM and 5PM at the bottom of the dial. 

By trial and error--everything I found online was out of date, since Affinity massively rearranged its UI, and ChatGPT was still out to lunch: 
  • Use the Affinity Vector knife tool
  • If you zoom in on the circle the knife tool becomes the scissor tool—yeh, I knew that.
  • make the start and end cuts on the arcs, where we need to get rid of parts of the circle, by left clicking with the scissor tool
  • From the main menu: vector > separate curves 
  • Using the move tool (not node tool!) click between 5 and 7; 
  • the arc to be deleted is boxed with a faint blue rectangle.
  • hit delete on your keyboard
  • Arc that was boxed is now gone
  • Use node tool to further clean up any ugliness.
Finally I exported the 100mm x 100mm dial using File > Export > Export > SVG > SVG (for export).

IMPORTING INTO KICAD

In Kicad 9 I used the footprint editor to create a new footprint library then a new footprint for the dial.  SVG's import: file > import > graphics.

Bammo, this dialog:



This seemed straightforward, until I discovered the "Import Scale" was linear but inaccurate. 

Meaning, if I set Import scale to .5 and imported a 100mm circle the resulting footprint was not a 50mm circle. Damn!

Not sure if this is documented anywhere--probably is, but, I couldn't it--from messing around I ended up crafting this formula:

X = Z/(A*3.08)

Where:

  • X is the # to use for Kicad import scale
  • Z is final size you want
  • A is the original size of SVG
Why 3.08?  No idea, I figured it might be PI, which got me close, but no, 3.08 yielded better results.  

For instance, for a 100mm diameter, and 25 mm output, I used this.

X = 25/(100*3.08)

X = .0811

BINGO.



For 100mm source, and 15mm target:

X = 15/(100 * 3.08) 

so x = .0487 to use for import scale, here’s what I got in Kicad. BUTTER!



I found that for smaller inputs (e.g., 50mm circle SVG instead of 100mm) the outputs drifted a bit, not sure why, but was still good enough. In general, I figured why not start with 100mm SVG's?

Before wrapping up--one more thing. Affinity allowed me to jump between "Vector" ("Illustrator") and "Pixel" ("Photoshop") mode. Great, it meant that I had more edit tools at my disposal.  But--I found that SVG's modified in Pixel mode often created a file that Kicad couldn't import. I found it best to do all the work in the Vector persona.

WHAT'S NEXT?

This whole SVG > Kicad thing can be used for more than dials. Line art?  Yep. Logos? Sure. Any single color 2D graphic import should work. 

I uploaded my footprints from this SVG > Kicad silk workflow into Github (here) and will try to keep the repo current.

PCBWAY, the sponsor of this geeky blog, has a service to do PCBs and other materials in 3 colors. Details here. (Also--please help this blog by checking out their site, here).  I figure Affinity and SVG export would be a great way to get into that. I'll cover this in a future post....

And of course, I will add dials and other graphics to future projects using the methods above.  

Overall, great fun, and many hours down the rabbit hole. 






No comments:

Post a Comment

Canva Affinity and Kicad 9: Graphical Madness for DiWhy Projects

Many thanks Elton at  Otter Mods  for turning me onto the many technologies described in this post. ============ When I look at professional...