Align components in layout

The single most painful thing in Upverter, IMHO, right now, is aligning precisely a bunch of components in a layout. Buttons to:

  • Align top
  • align bottom
  • align middle
  • align left
  • align right
  • align center
  • distribute horizontally
  • distribute vertically

Would be a huge help.

Hey Gavrilo, I have some follow-up questions to make sure I understand you completely:

  1. Right now we have the snap-guides which let you precisely snap-and-align components to one another on the layout. Can you give us more detail on what you’d like beyond this and why this isn’t sufficient?
  2. For distribute vertically/horizontally, does this mean you want to select a bunch of components, enter how much spacing should be between then, click GO, and the tool will space them out exactly?
  3. Also, what’s the real-life scenario for which this feature would be useful to you? It will help us understand how to best implement a solution.



Hi Anandh,

I had problems with that several times, but it was a major pain in the backside in this particular project:

We have 56 groups of components arranged in a quincunx grid. Snap guides helped to some extent but required multiple re-setting of the grid dimensions. Being able to set different X and Y grid dimensions would have helped to some extent.

As for the distribution, I have in mind exactly how this is handled in software such as keynote. Draw a bunch of rectangles, select them all. “Align top” will give all of them the same Y coordinate. “Distribute horizontally” will distribute all the shapes regularly, between the leftmost and the rightmost one.

The project which I included before had some major placing constraints. However, as a designer with (I guess) slight OCD, I also like my components to be neatly arranged, and fiddling with snap-guide dimensions simply does not cut it with respect to a good align function.

I had a very similar experience on a project last week. We discussed it, and opened a task for it - I think @adam_rakoff is working on a fix. That said this thread will be hugely helpful for him actually building it. Thanks!

My list is long and growing every day, but this is definitely something I’ll be looking at in the near future. Any specific requests for UI are always welcome and I’ll keep this forum updated as progress is made.

Hey @zak

What’s happening with this issue about alignment (and spacing) in PCB layout? I’m finding it’s taking a lot of time to do what I think should be easy.

The required geometry for my layout for my PCB will result in a long-thin and sparse board. Laying out the schematic wasn’t a problem, but have a look at how much work I’ve had to do to get the PCB layout straight!

Since I’m planning to have prototype done on a laser, controlling the width of the inter-trace gaps is important to controlling costs. This seems quite difficult with Upverter in it’s current state.

From my point of view, this wouldn’t even require the alignment commands that @gavrilo_bozovic suggested, even something as simple as being able to control the grid spacing on the PCB Layout view, and a snap-to-grid feature would make a lot of difference.

Linear Mic Board by BurtHarris b49d4d307a83d274 - Upverter

P.S: Anyone know how to make the above embedding show the PCB layout view instead of schematic?

@BurtHarris: Actually snap to grid already exists, you just have to change “snap” to “grid” and not “guides” in the bottom right corner, but it becomes very unwieldy when you have different pitches on the X and Y axes, plus requires calculating each time the origin of the grid to match the placement of other components.

And that’s if you just have all (or most of) the components aligned to the same grid. If you just have 10 resistors with similar functionalities that you want neatly aligned and equally spaced, fiddling with the grid to achieve it is a major pain.

@zak: would you care explaining why this is so complicated? I may be missing something but since components have their position as properties, aligning and distributing a selection does not seem to be an excessively difficult task. For instance, “align top” requires only finding the maximal y coordinate among the selected components, and applying it to all of them. “distribute horizontally” requires finding the minimal and maximal x coordinate among the selected components, sorting them in respect to x coordinate, and then setting the x coordinate of each component as Xmin + i * (Xmax - Xmin)/(N-1), with i being the index of the component, after sorting by x coordinate, and N being the number of selected components.

any news on this tying to do this with 300plus leds

1 Like