My use case: In PD WB, I want to draw two cubes, one being on top of the other. The first cube is in its own body, padded from a sketch. The second cube is in a different body, and can then be made in a number of different ways, but it should change shape/position dependent on the first cube sketch / pad length. Simple use case but you can see where I'm going with this.
- Select the face where the other cube should be created > create a new shape binder > create a new sketch > use the shape binder as attachment > import the external geometry of the cube from the shape binder edges > sketch the outline of the cube (coincident to the imported geometry) > pad it.
- Select the face where the other cube should be created > create a new datum plane > make a dependent copy > create a new sketch > import the external geometry of the cube from the referencepad (a shapebinder object, which was created along with the datum plane) > sketch the outline of the cube (coincident to the imported geometry) > pad it.
- Select the face where the other cube should be created > create a new sketch > make a dependent copy > import the external geometry of the cube from the referencepad (no datum plane created, just a shapebinder object) > sketch the outline of the cube (coincident to the imported geometry) > pad it.
Looking at the dependency graph, there is no real difference compared to the three methods. Is anyone more safe than the other with respect to propagating changes / not breaking the model? Are there more robust methods to do such a thing?
From this thread (more specifically, this post by NormandC I (think...) I've learned that these three methods are not very robust.
Better is to use datum planes referenced from a part's origin axes/planes. And I thought datum planes were safer over directly sketching on faces, but I was wrong...By selecting the face of the object, you are making the datum line dependent on geometry subject to change. You're trying to avoid the pitfalls of the topological naming issue, but at the same time you're willingly throwing yourself into the pit. So no, it is not the right solution.
How can I do such a thing in my case? I don't see how I can create a new plane as a sketch plane for the second cube, which will change it's z-offset depending of the pad height of the first cube. And how the x-y geometry of the 2nd cube can be referenced. I hope that comes across understandable...
I find it hard to figure this stuff out - by the time I've realised I've done something not so clever/flexible, I'm too far in my model. And if I start with a basic example (such as described or attached), I don't (yet) have the needed complexity to see if the full model is stable enough, and can withstand changing of old features without breaking the model. Or I just don't know enough yet - I don't pretent to know anything about toponaming issues, but I know that such problems exist, and I would like to do my best to avoid such pitfalls asap.
Appreciate any and all tips, discussion, reading material, etc! Like NormandC said in that post, "The pit. You in it. So, yeah."
In the attached model, I want to be able to either change the dimensions in the Body_BottomSketch, or the pad length of the Body_Bottom, such that the Body_Middle will change its shape according to the changes in the sketch, and its offset according to the pad length.
Maybe my question (or lack of understanding) is probably also related to the order of features added in a Body, and there being a linear structure to adding new features. In my example there is a clear part creation order, and I can change the features of older parts without breaking newer parts. But this is not always the case. I'm confusing myself now...
OS: Windows 10 (10.0)
Word size of OS: 64-bit
Word size of FreeCAD: 64-bit
Version: 0.19.16699 (Git)
Build type: Release
Python version: 3.6.8
Qt version: 5.12.1
Coin version: 4.0.0a
OCC version: 7.3.0
Locale: English/United States (en_US)