3d modeling (freecad) how to reference features between bodies of the part design workbench

I can create a body of complex shape using sketches, pockets, pads, cutouts etc. What I can’t figure out is how to create separate body (preferably again using sketches) attached to a face of another body. For example a relay that has blue outer shell and black inner body and silver pins. I want them to be dependent on each other so that I can tweak dimensions and not have to realign everything manually. Inner body should realign itself when I tweak outer shell and pins should realign themselves to inner body bottom.
I think I achieved something like that in this PR using datum planes referencing needed faces and creating dependent copies of them for other bodies to base sketch on. But I’m not sure that is the easiest or right way to do that.

I will try that. Does it make bodies dependent or will I have to realign everything if some dimensions are changed later?

1 Like

Yes it might seem tempting to use features like faces of other bodies as the input for something else. This is however not how one works in 3d modeling.

The main reason why this breaks down is that there is no real way to have a guarantee that a particular face stays as is in the original body. (Not even expensive CAD tools manage to guarantee this.)

Read up on skeleton design flow if you want the full on details. Sadly this is not yet fully supported by freecad as one can not have reference objects referenced from different files.

The gist is that you separate the part that holds your parameters and the part that makes your model. In most cases this means you have some definition of a set of planes and sketches that you then reference to build up your model.
But you can also simply use a set of common parameters defined in a spreadsheet object.

And yes of course this workflow might be a bit too much for a static object like a relay. It is mainly meant for being able to easily change underlying parameters while your model does not break. (In a true skeletton workflow the idea is that not even your assembly will break as long as your changes to the skeleton are not too bad)

1 Like

For keeping constraints you would need to create bodies with sketches referenced to external geometries (i.e. other sketches) or use A2p WB (in that case you need to import part enabling ‘solid’ in preferences, for later step exporting)

1 Like

That’s a good googleable term, I’ll read up on it.

Freecad won’t allow me to reference geometry of a different body when creating a sketch.

That will essentially make a “dumb” copy, right? I won’t be able to tweak it’s underlying sketches anymore.
But a2p wb definitely seems useful.

Anyway I don’t want to derail the topic too much. It’s just hard to quickly pick up enough skills in freecad to do non trivial part models without watching/reading hours of tutorials good portion of which are outdated. You both already helped with giving me right terms to search for :slight_smile:

You need to copy that thing into the new body and select that you want it cross referenced.

1 Like

It would be handy if a FreeCad/KiCad expert could write a tutorial of how to make a rectangular or cylindrical black box with a few silver pins. A useful generic part.


I’m not the one that could help here :joy: … I made most of my models using scripts… so I use to mime what scripts do using Part wb and not Part Design wb (which should be the most suggested).
Anyway modelling in Part Design would lead to a single object (perfect to be exported to STEP), but you would need to apply colors to body faces…
With Part wb is instead easier to model (you can use primitives as cubes, cylinders or start from a sketch) i.e. pins and then the main body assigning colors to different objects; finally you can ‘fuse’ your objects to get a single object keeping colors. The union of the pins and body will be parametrically updated in case you would need to change i.e. pins position or body size etc…

1 Like

Use one body per color and at the end use the boolean operators to combined the bodies. No need to work on a face by face basis. (I personally use the part workbench boolean here as the part design boolean did not work in the past. Not sure how well that one works now.)

A tip: do not use realistic colors in the design stage. Use bright easy do identify colors and then assign realistic colors when exporting using stepup.

1 Like

Me too :smiley:

I am no expert but I could take a stab at it.
Some of my models are featured here Btw, using v5 now for 3 days (after some hiatus) and

  • BNC connectors
  • small omron relays (they have been added to official lib since)
  • DTDP switch on top
  • thumbwheel pot
  • blue RM-063 pots below it
  • red Murata trimmer caps

I can’t guarantee that I won’t teach any bad habits but my method gets ok results :slight_smile: and with some of advice above I think I can improve my technique too.

1 Like

here a video from Joko Engineering’s youtube channel (a professional CAD designer):

He is designing a mechanical part, but the techniques can be applied to mechanical electronic parts too.

Yes it might seem tempting to use features like faces of other bodies as the input for something else. This is however not how one works in 3d modeling.

What are you talking about? This is super common when designing in Solidwork or F360.

I grand you it is used. But not if you want to harness the full power of parametric design. It is the similar problem as using global variables in programming. If you use it you loose some of the more powerful features but it can be a trick to get something small out fast.

This is essentially what i hinted at above. It is fully ok to use this for something where you know that future changes are very minor. Like drawing a model for a standard part. Not if you want to design a full car with any part being made dependent on simulation results and manufacturing optimizers.

And additionally: fusion is at the very low end of MCAD products. Just watch the marble machine guys video where he has one of the autodesk guys basically telling him that he is pushing 360 maybe a bit too hard. (The suggestion made by the expert to get more out of it: switch to the skeleton workflow at least as far as fusion supports it.)
The video i mean: https://www.youtube.com/watch?v=9zL8pRDxPck

It seems that you can reference a Sketch from a different Body using a Draft-Clone of the Sketch and placing it into the Body you need to create linked to the first Sketch.
Using an External Reference to the Geometry of the Clone, your second Body structure can be linked to the first Body geometry, letting everything connected.
At the end you can make Part Boolean operations with bodies quite well, even with different colors, to get your single Object to be exported to Step for KiCAD.
Here a FreeCAD forum thread with a sample file I added.

1 Like

I beg to differ. Using Part Design, which means sketches, is a whole new world to learn. Part WB is immediately intuitive because you only give dimensions. I tried Maui’s Manipulator and it does what was promised, thank you. Now I can easily create simple parts within minutes.

Remember that I was talking about simple models which can be abstracted to one or three boxes and cylinders. No pins, no chamfers or roundings, just 90 degree corners.

Taking Sprig’s button, these are roughly the steps:

  • Create a cube, edit l/w/h.
  • Create a cylinder, edit radius/height.
  • Select the bottom of the cube and center it on X/Y with the aligner tools of Manipulator.
  • Select each of the two shapes and give them material or color.
  • Now it’s ready to be exported with StepUp.

Actually the most difficult part (excuse the pun) is learning how to use the aligner tools (presuming you already know how to use StepUp). Like the rest of FreeCAD, the UI isn’t the most intuitive. But with Part Design there would be no hope of completing this without following at least one full-blown tutorial. I have gone through some of them and already forgotten what I learned. It can’t happen with the Part WB.

1 Like

Yeah, this stuff is not trivial.

This would be great!

That was an interesting video. One great point made by the author is that it takes an investment in time and effort with no real clear idea if it will be worth it after all is said is done. As can be seen by my OP, I have a whopping total of four(4) 3D models that would complete most of my KiCad projects. It is very difficult for me to decide if I personally want to make that investment with my current knowledge base.

If I thought that I could watch a 5 minute video and know enough to do it myself, I’d do it. It is just that, at this point in time, I have no idea how deep the rabbit hole is. And, speculation by others is, that particular rabbit hole is not exactly expected to end just below the surface.

There are things that I can do efficiently and quickly due to my knowledge and experience; and things that I fully expect others on this forum to be able to much faster than me. The 3D modeling is one aspect of KiCad that I can not currently do quickly; but I expect that I have enough basic experience that I could eventually muddle through it.

I thought my post also shared some sorta cool parts with the forum users. The Keystone 3034 is really great product for providing battery power for small low current devices. The HDSM-281B is a very nicely done (hint:expensive) 7-Segment Display, with two(2) decimals, with blue illumination. And, the Omron B3SE switch is really impressive in quality/value and actual tactile feel; rated for 1 million clickys if I remember right.

Thanks for everyones replies to my OP.:+1:

That works but again copied sketch doesn’t track position of source sketch, although it tracks geometry changes which is better than independent copy, I suppose.
In my mind cross reference copy should do what I want. So if I have body with a shape A and there is a sketch S on one of it’s faces, if I create new empty body, set it as active, do pad operation while having S selected, choose to make cross-reference copy my expectation is that it will create new shape B in second body. Instead it creates shape A+B. And cross-reference copy is the only thing so far that I found that tracks both initial sketch geometry as well as it’s position.
Oh well.

1 Like

Do you mean External Geometry? If so can you use it to link a sketch in a different Body?
BTW … we need also your FC file :wink:

Some posts were split off so I’ll move actual model I created here.

Here you go, 3034 holder models
BatteryHolder_Keystone_3034_1x20mm.step (209.0 KB)
BatteryHolder_Keystone_3034_1x20mm.wrl (95.2 KB)

@maui here’s freecad file BatteryHolder_Keystone_3034_1x20mm.FCStd (314.6 KB)
I made the model by creating base sketch of the top face of the holder. Importing an image from datasheet was useful to overlay to get geometry of the sketch right. Then it’s just few bends using metal sheet workbench and some fillets.

I’ll make 7 segment display model later this week unless someone beats me to it.


Nice model :smiley:
Just a suggestion… start the model importing the footprint as first operation, then add the image and align/rotate it to the footprint. That will allow you to have the model aligned to its footprint since the start of the design and to have also some extra mechanical references from the footprint itself (i.e. pads silks etc).
EDIT @Rene_Poschl I think these latest two posts should be moved to the other thread … sorry :smiley: