FC v0.17dev: Part Design Next Usecases and Best practices

Post here for help on using FreeCAD's graphical user interface (GUI).
User avatar
NormandC
Posts: 12294
Joined: Sat Feb 06, 2010 9:52 pm
Location: Québec, Canada

Re: FC v0.17dev: Part Design Next Usecases and Best practices

Postby NormandC » Wed Nov 09, 2016 2:32 am

Hi Chris and freecad-heini-1,

chrisb wrote:I have this model for a car's door lock, which I would like to discuss here in order to learn how to improve stability in terms of parametrization. And so I would like to hear your recommendations how to achieve this task.
It has a linear dependency graph and is supposed to be fully parametric. However, it brakes very easyly, even if I make only tiny changes.

Somehow I missed your post.

The topological naming issue remains in PartDesignNext, nothing has changed on that point, and unless many developers join ezzieyguywuf's work and combine all their energies on the problem (which is not realistic IMHO), I doubt anything will change by the time 0.17 is released sometime next year. But astute use of PartDesignNext's new stuff and possibly expressions and spreadsheet will help reduce the effects of topological naming problems. I believe it could be bypassed entirely if not for procedural features such as Chamfer, Draft and Fillet. At least in v0.17, these 3 types of features now can be edited to change edge/face selection, so if a PartDesign Fillet fails you can fix it rather than delete and redo it again.

Basically, you need to stop mapping sketches to faces - entirely! Place your sketches on standard planes, or on custom datum planes. And when creating datum geometry, do not base it on the part topology, base it on standard planes/axes and/or sketches. I think it's also worth pursuing a "master sketch" approach, since you can now create external geometry linked to an other sketch. I assume (maybe wrongly) that sketches may not suffer as much from the topological naming issue.

For really complex models, it may also be wise to work with separate bodies, that you'll combine at the end into a single part. Use of Shapebinders will allow links between them, but it may induce instability.

So, forget the nice linear dependency graph. It's what causes the models to break in the first place.

One thing that is still true: leave fillets, chamfers and drafts for the very end. In your doorlock.FCStd file, the second feature in the tree is a chamfer and toward the bottom of the tree you mixed a pocket with fillets. That's bad practice.

Also, I would not add the holes into the very first sketch. This adds a lot more faces to the first Pad, and consequently raises the chances that the face numbering could change after edits. In parametric design, it is considered good practice to first work on the basic shape of the model, then add holes, and finally add chamfers and fillets.

But all this is theoretical, it needs to be put to the test. ;)
User avatar
NormandC
Posts: 12294
Joined: Sat Feb 06, 2010 9:52 pm
Location: Québec, Canada

Re: FC v0.17dev: Part Design Next Usecases and Best practices

Postby NormandC » Wed Nov 09, 2016 4:22 am

I took the time to remake the model in 0.17. Wherever possible I simply copied sketches and mapped them to standard planes (the ones under BodyOrigin), but for reasons I don't understand I couldn't remap some sketches, and copying them created new datum planes. In those case I redrew the sketches from scratch.

NormandC wrote:toward the bottom of the tree you mixed a pocket with fillets. That's bad practice.

I found out that this was unavoidable, otherwise the fillet on the slopped edge cannot be done if the pocket cuts it first.

Some points :
  • I removed the holes from the PadBasePlate Sketch.
  • SketchBlock is mapped to DatumPlane rather than on top of the base plate. DatumPlane is offset from the XY_Plane; the offset value in Z is a formula linked to PadBasePlate's length (Pad.Length).
  • I created a new sketch with a pocket for the holes (only on one side). I mapped the sketch to DatumPlane. I created a Mirrored feature of the pocket.
  • I created a second datum plane (DatumPlane001) on which I mapped SketchSlitTop. The datum plane is offset from XZ_Plane using Expressions again with a formula (Sketch006.Constraints.BlockWidth / 2).
My model is probably not fully "topological naming-proof", but it should be pretty robust. Do test it out, and let me know if there are breakages. And don't hesitate to ask questions on my modelling choices! I won't pretend that what I did was the best method, I too am learning the new work flow. :)
Attachments
doorlock_fc017_normandc1.fcstd
(356.81 KiB) Downloaded 58 times
FC017_chrisb_doorlock_01.png
FC017_chrisb_doorlock_01.png (23.59 KiB) Viewed 1137 times
chrisb
Posts: 1886
Joined: Tue Mar 17, 2015 9:14 am

Re: FC v0.17dev: Part Design Next Usecases and Best practices

Postby chrisb » Wed Nov 09, 2016 7:46 am

NormandC wrote:I took the time to remake the model in 0.17
Normand, Thank you very much for your comments - and the redesigned model!
I have now a better understanding of how to handle Part Desing Next. And even more: I have learned more about how to avoid the topological naming problem: First the big picture, then the details. Until now I have tried to keep the number of sketches as small as possible, thus putting everything possible in a plane. This lead me naturally to the holes in the first plane.
I knew that fillets should be applied last and that's what I recommend to others - and that's how I had done it in the first place. Alas, the object broke. The model I have uploaded here is by far not the first one, I had to redesign it several times. And these intermediate fillets worked.
With the knowledge I have now I think I would have reached the target much faster and clearer.
So for me the essence of Part Design Next is that it is easier to think big, i.e. use datum planes - which are usually a rough abstraction of the model - rather then the details of the model itself.
bernhardb
Posts: 5
Joined: Thu May 05, 2016 3:13 pm

Re: FC v0.17dev: Part Design Next Usecases and Best practices

Postby bernhardb » Sat Mar 04, 2017 12:57 pm

Hi,

I design model boats with freecad. With the "old" workflow I had no problems:
- Draw the frames as scatches and pad them
- Draw sketches on the surface of the pad to create pockets for the keel, chine, shere and so on
- Create keel... by reusing these sketches for a loft in the part workbench.

With the new workflow, I think, every frame should be a single body, right? Then facebinders should be used to get the faces of the frames and put there the sketches for the loft? And here start for me the difficulties, see the picture:
beispiel.jpg
beispiel.jpg (130.96 KiB) Viewed 340 times

The facebinder are not placed on the frames, but - in a other plane - placed all together over each other. So, it is not possible to create a loft between them.
Is this wanted or am I simply to early in the developement-phase of FC 0.17?
(Used FreeCad-Version: AppImage for Linux from 2017-01-20)

Attached the model file.
Thanks in advance!
Attachments
test1.fcstd
(31.77 KiB) Downloaded 7 times
chrisb
Posts: 1886
Joined: Tue Mar 17, 2015 9:14 am

Re: FC v0.17dev: Part Design Next Usecases and Best practices

Postby chrisb » Sat Mar 04, 2017 11:34 pm

I think you can work within one body almost as you did before. Sweeps and Lofts (yes there are lofts, only the help text is that of sweep) are performed in Part Design now, not in Part.
I you want to combine several modelled objects, you might rather use the new Part construct from the Part Design Workbench.
ickby
Posts: 2464
Joined: Wed Oct 05, 2011 7:36 am

Re: FC v0.17dev: Part Design Next Usecases and Best practices

Postby ickby » Sun Mar 05, 2017 8:12 am

I supose that you made all your sketches in the origin planes of your body and than moved the body to have it in the right position. When you than use facebinder in annother body it puts the sketch in the same local position: at the orgin planes. Facebinder does ignore the body placement.

So to make your modeling workflow work again i suggest to make the sketches in the first body not at a origin plane but move it inside the body to the correct location. Than using facebinder should work. As another small tipp: shapebinder does work on sketches too, and this is most likely more stable than using a pad face.

Note that we are aware of this "issue", but are unsure if we can change that to make facebinder work with global placements. It would be nice, but we need to find out if technically possible.
bernhardb
Posts: 5
Joined: Thu May 05, 2016 3:13 pm

Re: FC v0.17dev: Part Design Next Usecases and Best practices

Postby bernhardb » Sun Mar 05, 2017 12:30 pm

Does lofting really work in the new workbench already? If I start lofting with the version 0.17R9747 from 20.01.2017 (appimage for linux offered on the download page) I ket the following dialog:

beispiel2.jpg
beispiel2.jpg (135.12 KiB) Viewed 281 times


That seems quite similar to the dialog of sweeping. The dialog for lofting should allow to select/deselect multiple sketches like in the part design... After clicking the first of the offered sketch names, the application crashes.

However, with these sketches I can build lofts inside the "part" - workbench. But doing so, there is no much point in changing to the new workflow, or do I miss something?
User avatar
NormandC
Posts: 12294
Joined: Sat Feb 06, 2010 9:52 pm
Location: Québec, Canada

Re: FC v0.17dev: Part Design Next Usecases and Best practices

Postby NormandC » Sun Mar 05, 2017 12:40 pm

bernhardb wrote:Does lofting really work in the new workbench already? If I start lofting with the version 0.17R9747 from 20.01.2017 (appimage for linux offered on the download page)

That build is rather old, it was provided by the AppImage main developer, but nobody has volunteered to take charge of them since...

Could you post your FreeCAD data anyway, as requested in the forum rules (link in pinkish/reddish box at the top)? I'd like to know what's your Linux distro (it looks like OpenSUSE but I'm not sure).

bernhardb wrote:Does lofting really work in the new workbench already?

Yes.

bernhardb wrote:The dialog for lofting should allow to select/deselect multiple sketches like in the part design... After clicking the first of the offered sketch names, the application crashes.

It's a bug, obviously. What works is first selecting a single sketch before launching the tool. Next, the Loft parameters show an empty white window. You need to click "Add section", then select the sketch in the 3D view; repeat for each sketch. A preview of the loft feature will appear in translucent yellow in the 3D view (Subtractive loft shows translucent red). It's pretty cool. :)

OS: Ubuntu 16.04.2 LTS
Word size of OS: 64-bit
Word size of FreeCAD: 64-bit
Version: 0.17.10410 (Git)
Build type: None
Branch: master
Hash: 404debb9f2b05991b93c77fbb0f29e12257e4a83
Python version: 2.7.12
Qt version: 4.8.7
Coin version: 4.0.0a
OCC version: 6.8.0.oce-0.17
Attachments
FC017_AdditiveLoft_01.png
FC017_AdditiveLoft_01.png (60.84 KiB) Viewed 274 times
bernhardb
Posts: 5
Joined: Thu May 05, 2016 3:13 pm

Re: FC v0.17dev: Part Design Next Usecases and Best practices

Postby bernhardb » Sun Mar 05, 2017 1:04 pm

Thanks, this helps!

Could you post your FreeCAD data anyway, as requested in the forum rules (link in pinkish/reddish box at the top)? I'd like to know what's your Linux distro (it looks like OpenSUSE but I'm not sure).


Sorry, my mistake:

OS: "openSUSE 13.2 (Harlequin) (x86_64)"
Word size of OS: 64-bit
Word size of FreeCAD: 64-bit
Version: 0.17.9747 (Git)
Build type: None
Branch: master
Hash: f5c0f579cbd7ce668727f8835946e4e9abc0eec6
Python version: 2.7.6
Qt version: 4.8.6
Coin version: 4.0.0a
OCC version: 6.8.0.oce-0.17

There is for OpenSuse a build of the 0.17-tree available (2017-01-29), but it seems, that this build is not quite compatible with my quite old linux distro, so I switched to the appimage.
User avatar
NormandC
Posts: 12294
Joined: Sat Feb 06, 2010 9:52 pm
Location: Québec, Canada

Re: FC v0.17dev: Part Design Next Usecases and Best practices

Postby NormandC » Sun Mar 05, 2017 1:11 pm

@ ickby
It would be really nice to "import" a linked copy of an existing body into a new body to either use as base solid or a "3D shapebinder".

Here's a use case for such a feature. For quite a long time I've been wanting to model an acoustic guitar, but with all the real parts separate. A guitar body is made of several parts: the main parts are top, back and sides, each divided in half. With a cutaway model, the parts are not symmetric. Then there are the other parts some of them not visible/recessed: the sound hole rosette, top purfling (decorative strip along the perimeter), inner bracing, bridge, etc.

All these parts need to fit together. So it seems to me that for at least the main parts, it could be useful to create a master body that represents the guitar body as a solid; then import it into other bodies and cut it to create the desired part.

Does that make sense?