dprojects / Woodworking

This is Woodworking workbench for FreeCAD
MIT License
200 stars 17 forks source link

Further enhancement of magic drill etc retaining expressions. #39

Closed flashydave closed 7 months ago

flashydave commented 7 months ago

An interesting related problem to this recently closed issue is where you might want to keep the hole locations relative to the face upon which they were initially associated so that if that face is resized in X and Y or moves in the Z axis then the holes move accordingly based on the rules that defined where they initially placed.

Maybe there is an argument for X and Y remaining unchanged but I'm not sure you would often want the holes to stay in the same position if you change the face Z value.

I dont know if that is possible as I suspect might you lose that upon the cube to pad construction based on what the dialogue values where at the time. However if they could retain some essence of the spreadsheet expression from the face then any small adjustments can be made with a lot less manual editing of constraints.

Maybe something for some further development of the original issue fix?

Thanks

dprojects commented 7 months ago

I'm not sure you would often want the holes to stay in the same position if you change the face Z value.

Yes, the hole should not sink inside the object but should start from surface. But... this is rather complicated to implement, I guess. You need to add special expression to the sketch hole position. If this is not urgent issue I would rather postpone it. Keep it open.

flashydave commented 7 months ago

Appreciate your help Darek! I need to look at the code more deeply to see if I can assist in any way. I'm a retired professional Software Engineer with many years of experience developing real time mission critical systems. I still feel the need to write code or fix issues when I get the time!

By all means postpone to when you can give it some attention.

dprojects commented 7 months ago

Maybe in the future I will add bounding feature and this issue will be solved by this feature. I am more into quick non-bounding modeling instead of one brick like PartDesign. I think this is more flexible and more powerful approach instead of brick and parametric everything. I think only repeatable furniture should be parametrized.

flashydave commented 7 months ago

My use case was designing a slatted clothes airer where there were multiple shelves each containing slats. Overall there were more than 250 screws. The idea to parameterise things (only the overall size of the airer with fixed sized screws) was to be flexible in the implementation once we had decided the size required.

I did wonder if you could simply import the underlying formulae into your dialog window form text boxes (even if they had an element of extra computation like working out the centre lines) and then that gives the user whether to overwrite with fixed dimensions or readly tweak the formulae presented to suite the design. What took the time for me at least was finding where those previously computed dimensions ended up being replaced by the fixed amounts by your original magic drill or dowels and hand editing them. I lost count of the overall #edits but it was many hours work with ample opportunity for mistakes.

flashydave commented 7 months ago

Here is the file for your interest. Airer.tar.gz The slats in free space are purely because you cant dynamically change the #panels in the design - so I just move the ones I dont want (driven by the spreadsheet) out of the way!

dprojects commented 7 months ago

I would rather recommend different design approach.

Look at the example I attached, your model has many the same elements, so there is no need to create so many Pads and add expressions. You can use the power of Links and Clones, but please be careful because not all combinations are supported by the BOM report (for example if you use Clone for shelf instead of Link).

However, you can hide the base panel inside LinkGroup container and Clone the LinkGroup. Thanks to it you can change the LinkGroup content, add dowels and all changes will be automatically populated to all other panels. Also you can add and move any shelf very quickly. If you change the shelf content all other will be changed too.

exmple: Airer_simple.FCStd.zip

flashydave commented 7 months ago

Thats neat! FreeCAD can be quite a steep learning curve when working out the best way to construct things. I guess I got bogged down a little following the docs for implementing the holes and screws at the detailed level and missed the point that the features are nestable and you can simply clone things at the higher level too.

Hopefully with my example and your improvement other people might learn something too. Maybe another video....!!

Thanks for your help.

dprojects commented 7 months ago

Yes, Clones and Links allow to avoid the inventing expressions process, makes design quicker and parametric on-the-flow. At magicMove you can also copy panel as Clone or Link with offset, so you can make such shelf with 5 clicks.

dprojects commented 7 months ago

There is also video: https://www.youtube.com/watch?v=DjRe8LMTWM4

flashydave commented 7 months ago

I like your videos! Thanks

On 02:46, Wed 24 Jan 24, Darek L wrote:

There is also video: https://www.youtube.com/watch?v=DjRe8LMTWM4

-- Reply to this email directly or view it on GitHub: https://github.com/dprojects/Woodworking/issues/39#issuecomment-1907875133 You are receiving this because you authored the thread.

Message ID: @.***>

dprojects commented 7 months ago

Hello again, I was looking at this issue related to follow face by holes after resize and I guess the holes should not be bounded with face. I know it is usually desired while you resize panel but it might be complicated to make it automatic. You can always bound the sketches with expressions but if you don't have sketches bounded you can move it and adjust after any resize...

Look at this video: Adjust holes after resize

Feel free to re-open this issue if you still think it is essential and should be done or there is not solved issue. Thanks !