Hi, bejant. Thanks for taking the time to read my ramblings and comment on them. I appreciate it.
bejant wrote:I want my CAD software to remember how my model is constructed.
FreeCAD does this because it is a
"Parametric CAD modeler" but there are a couple exceptions [...]
If a shape is repeated in three places, I want to be able to modify that shape in one place [...]
Draft WB > Clone does this.
If a face is rectangular, I want to know that its edges will remain parallel [...]
This already exists in FreeCAD [...]
Yes, I get that FreeCAD *can* already do pretty much all these things, and I already love FreeCAD because of this approach. If it wasn't already so great I wouldn't be here!
But I think you've slightly missed my point. I'm not asking how to accomplish each of these steps using FreeCAD right now, or saying it can't. Rather, I'm setting the scene for how I would *really* like my CAD program (maybe FreeCAD, but could be something else) to work, so that designing things would be delightful. Ok, *more* delightful if you already love it. I'm thinking about how to make this kind of workflow easy and quick, and imagining what sort of user interfaces could make it so.
I'm a software engineer, and for fun I'd like to enhance FreeCAD, and what I find most interesting is seeing the longer term picture, even if we call that "dreaming", and then figuring out how we might eventually get there.
bejant wrote:[...]
Does FreeCAD provide a way to create and place two or more independent clones [...]
Yes (already answered).
Oops, I somehow failed to find "Draft Clone" when I last looked for it, and so asked this dumb question both here and in
a forum topic. However the forum topic became interesting because it revealed that simply cloning an object doesn't automatically ensure all changes show up in the clones, only some kinds of changes: we need to wrap a "Body" container around the object in order to add e.g. a fillet *inside* the body so it is cloned. I'm interested to explore what kind of user interface would make this task quicker, for example.
So I've added this text instead:
Basic repetition like this requires the ability to clone a compound object. FreeCAD has the "Part Clone" operation which does this. However, a complication arises when I later modify the original. Many modifications, e.g. "fillet", are done by wrapping the object with a transformed version of itself. The clones remain clones of the original object and so don't reflect that modification. One existing way to overcome this is to wrap the object in a container such as "PartDesign Body" (though it has restrictions) and clone the container; then the fillet can be made inside the container and so is reflected by the clones. Another possible design could be that the "Fillet" tool offers to update the clones to point to the new Fillet object instead of the original if the user so chooses.
We need to think clearly about the notion of "the original". If my table has four legs, I might designate one as the original and the other three as clones. Then if I want to modify them all in the same way I need to easily find the original, and make changes to it in such a way that the changes are reflected in the clones. Alternatively I could make an abstract (hidden) original, and make four clones of that. The abstract, hidden "original" might then be called a template. If I want to make a unique modification on each leg, this approach might be easier to work with, because the difference between the template and the first leg is completely clear, and I can easily choose whether I'm making a change to the template or to a particular instance.
Thanks to your feedback, I hope that's better.
bejant wrote:That's about as far as I got, but I think you need to learn FreeCAD a bit more in order to better understand what needs to be improved upon in the future...
Do *you* have your own visions of the longer term future for FreeCAD, or for what you would like a not-yet-invented CAD system to do for you, that might or might not be possible one day in FreeCAD? I'd really love to hear them.