Cabinet furniture design tools workbench

Post here for help on using FreeCAD's graphical user interface (GUI).
Forum rules
and Helpful information
IMPORTANT: Please click here and read this first, before asking for help

Also, be nice to others! Read the FreeCAD code of conduct!
User avatar
Kunda1
Posts: 4755
Joined: Thu Jan 05, 2017 9:03 pm

Re: Cabinet furniture design tools workbench

Postby Kunda1 » Mon Apr 29, 2019 12:32 pm

iogui wrote:
Mon Apr 29, 2019 4:40 am
I'm not thinking in copying I'm thinking in references as a user experience. E.g. how is the user experience of a woodworker assembling with software x, y or w versus a woodworker assembling in FreeCAD? From a woodworker point of view, why to choose FreeCAD?
Again, I'm thinking in how to make this furniture workbench address the woodworker's needs. That's what a furniture workbench should do, isn't it?
Absolutely, from this type of thinking/discussion we can realize other workflows and UI/UX refinements. You can see this in the CIvil Engineering thread, specifically https://forum.freecadweb.org/viewtopic. ... 10#p302217
Want to contribute back to FC? Checkout:
#lowhangingfruit | Use the Source, Luke. | How to Help FreeCAD | How to report FC bugs and features
User avatar
yorik
Site Admin
Posts: 11371
Joined: Tue Feb 17, 2009 9:16 pm
Location: São Paulo, Brazil
Contact:

Re: Cabinet furniture design tools workbench

Postby yorik » Mon Apr 29, 2019 2:37 pm

I think indeed re-imagining a whole assembly solution is a gigantic task, as vocx says. Many have worked on this already and as we all know the matter is still far from solved.

But I also think in the specific case of furniture design, that matter can be extremely reduced and simplified, and a whole range of problems of assemblies (rotations, axiality, etc) are less important here. So we have a bigger array of possibilities. For example, the "driving box" approach we experimented some time ago was one way to attack it, which effectively makes all child parts "stick together", while it doesn't require a full assembly model to be developed.

I think the solution is there somewhere: How to design the system so without the need to reinvent the wheel and redesign some heavy assembly mechanism, we can make all components of a piece of furniture stay in place and even resize when the dimensions of the piece are changed or the piece is moved.

In assemblies, we usually have a "solver" algorithm, that is run everytime some data changes, and re-positions the whole chain of objects. Here we can have something far simpler, such as one object that controls the placement of all its children. Or, each child that calculates its placement depending on its parent. But then that prevents having children without such functionality (such as objects coming from other workbenches)
User avatar
iogui
Posts: 93
Joined: Tue Mar 19, 2019 3:44 pm
Location: São Paulo
Contact:

Re: Cabinet furniture design tools workbench

Postby iogui » Mon Apr 29, 2019 4:24 pm

yorik wrote:
Mon Apr 29, 2019 2:37 pm
But I also think in the specific case of furniture design, that matter can be extremely reduced and simplified, and a whole range of problems of assemblies (rotations, axiality, etc) are less important here.
That's what I was thinking too. But...
yorik wrote:
Mon Apr 29, 2019 2:37 pm
But then that prevents having children without such functionality (such as objects coming from other workbenches)
I think that this would be too restrictive. We were talking about the panel feature as a minor unity for this workbench's constructions but as I've been searching and testing FreeCAD for furniture modeling I've came to the conclusion that we should be able to have any kind of FreeCAD feature inside this panel feature as long as it fits into it's panel thickness property. This would allow me to represent any kind of shape that can be constructed based on a piece of board (and to be able to correctly build a cutting plan from those panel parts). But I should be able to use as one part of my model something that is not built from a peace of board too, like something I've constructed from a solid wood, a peace of steel, glass, or any other material. So the model should have the ability to have as it's constituting parts any other kind of feature otherwise we would be restricting too much the furniture possibilities (that's a thing that happens in the Promob software that I've mentioned before and it is one of it's most known weaknesses).
yorik wrote:
Mon Apr 29, 2019 2:37 pm
I think indeed re-imagining a whole assembly solution is a gigantic task, as vocx says. Many have worked on this already and as we all know the matter is still far from solved.
Thinking about it, one thing came to my mind. And if we try to reuse one of those functionalities that has already been built in one of the assembly workbenches but adapting to the needs of the furniture modeling like, for example, using all the functionality of a2plus but without the need of having each separated part in a different file? I don't know if it is technically possible tough.
Be the change you want to see in the world. - Mahatma Gandhi
User avatar
yorik
Site Admin
Posts: 11371
Joined: Tue Feb 17, 2009 9:16 pm
Location: São Paulo, Brazil
Contact:

Re: Cabinet furniture design tools workbench

Postby yorik » Tue Apr 30, 2019 1:57 pm

iogui wrote:
Mon Apr 29, 2019 4:24 pm
Thinking about it, one thing came to my mind. And if we try to reuse one of those functionalities that has already been built in one of the assembly workbenches but adapting to the needs of the furniture modeling like, for example, using all the functionality of a2plus but without the need of having each separated part in a different file? I don't know if it is technically possible tough.
Yes that might be possible. It depends much on how A2+ is coded though. But indeed with a bit of luck the code to make parts stick together is separated from the code to import parts from external files, that might be usable in another WB.
Artis
Posts: 4
Joined: Wed Mar 13, 2019 8:31 am

Re: Cabinet furniture design tools workbench

Postby Artis » Mon May 13, 2019 11:45 am

vocx wrote:
Mon Apr 29, 2019 4:09 am
That's nice, but it doesn't really have to be that way. FreeCAD is a general purpose CAD modeler, and therefore it has to be sufficiently general so as to serve a wide base of users. I bet there are more users in the world that would like an alternative to commercial CAD modellers like SolidWorks and Catia, for complex engineering assembly, than there are users that would like a tool only for woodworking.

There is nothing that says that we should copy another software, not with free software. In particular, FreeCAD can explore different approaches because we have freedom. LibreOffice doesn't have to be a clone of Microsoft Office; it can take some ideas from them, but it can also innovate a be markedly different.
Well then, why do we have all the different workbenches? Does everybody work with sheet metal or design ship hulls, for example? And are all the features in these workbenches really unique or do they exist in similar software for a reason? I'm sorry if I got wrong impression but from what I read in this topic, yours is a surprisingly closed-minded approach to developing this awesome OS project.

I work with furniture projects daily and it would be great to have the ability to easily work with composite materials, parametric assemblies and BOMs in FreeCAD (I know some of it is possible somehow, I'm far from a power user). Others have mentioned great examples to source inspiration from – various SketchUp plugins, Woodwork for Inventor, Topsolid Wood and such.

Rock on, @iogui!
vocx
Posts: 715
Joined: Thu Oct 18, 2018 9:18 pm

Re: Cabinet furniture design tools workbench

Postby vocx » Mon May 13, 2019 2:51 pm

Artis wrote:
Mon May 13, 2019 11:45 am
Well then, why do we have all the different workbenches? Does everybody work with sheet metal or design ship hulls, for example? And are all the features in these workbenches really unique or do they exist in similar software for a reason? I'm sorry if I got wrong impression but from what I read in this topic, yours is a surprisingly closed-minded approach to developing this awesome OS project.

I work with furniture projects daily and it would be great to have the ability to easily work with composite materials, parametric assemblies and BOMs in FreeCAD (I know some of it is possible somehow, I'm far from a power user). Others have mentioned great examples to source inspiration from – various SketchUp plugins, Woodwork for Inventor, Topsolid Wood and such.

Rock on, @iogui!
Yes, you didn't get my point at all!
User avatar
iogui
Posts: 93
Joined: Tue Mar 19, 2019 3:44 pm
Location: São Paulo
Contact:

Re: Cabinet furniture design tools workbench

Postby iogui » Tue May 14, 2019 1:45 am

Artis wrote:
Mon May 13, 2019 11:45 am
Rock on, @iogui!
Don't worry, @Artis. We will keep going with this project. Unfortunately tough, as I can just work on it in my spare time, there will be times that I will be silent for some days as I'm too busy to look at it.

Just as @yorik previously said, we need a good plan before coding and we are still at this stage of the process: planning. That's why I've raised some issues that I think will allow us to have a more deep vision of the scope of this workbench and of the things I've noticed are more important from the perspective of the target users of this workbench (mainly the woodworkers if I'm not wrong).

Some posts before @vocx has said that it was a very subjective opinion when I've said that sketchup has an easy and very intuitive way a woodworker can assembly his furniture model and he was right about it. It is indeed a very subjective opinion. But that's not just my opinion as I'm talking based on what I've been observing from other woodworkers in more specialized forums and even from information obtained directly from woodworkers whom I speak personally. I have simulated use cases as a usability study and have compared what we have today in FreeCAD with what is possible in other softwares commonly used by woodworkers. This way I think it will be easier for me to be able to find out the main features we should address first and what are the things that can take away or attract a possible target user for using this workbench in FreeCAD. I've constantly brainstorming in order to understand what it needs to be done.

So far, the main conclusions I've reached are:
  • We need to find a better way for a woodworker to be able to assembly a furniture without too much effort in FreeCAD since the present available solutions seems to be inefficient for this use.
  • In order to be able do represent anything that can be done with a board piece we need to create a new feature called panel that will have some key properties in order to calculate a cutting plan.
  • This new panel feature will be like a container that will contain only one object inside it that can be represented with any kind of other FreeCAD feature (a solid, a part design body, some transformation in a solid or in a part design body and so on). This way this panel feature will be able to represent a simple cuboid, a cuboid with holes or grooves or any other kind of object that can be built with a piece of board (MDF, OSB, Plywood, and so on).
  • Those itens above are the starting point for this workbench in order to be minimally useful in a woodworker's perspective. So I think we should focus on it first.
  • Having a first version addressing those requirements as a prototype we can start thinking in all the other things that we talked before in this thread like the other zohozer's plans and the tool to build a cutting plan.
Artis wrote:
Mon May 13, 2019 11:45 am
I'm sorry if I got wrong impression but from what I read in this topic, yours is a surprisingly closed-minded approach to developing this awesome OS project.
Some of the things that @voxc said made me think that he wasn't fully understanding what I was saying but maybe that's just because he seems not to be from woodworking area and we are not making plans here to change FreeCAD core functionality. We're focused on this furniture workbench. Maybe it is just a communication issue.
@voxc has given some good tips for us and I think that even his objections are good points for us to think in order to improve our plans. It is good to have other point of views from someone with a different mindset.
Last edited by iogui on Sun May 19, 2019 2:05 am, edited 1 time in total.
Be the change you want to see in the world. - Mahatma Gandhi
User avatar
yorik
Site Admin
Posts: 11371
Joined: Tue Feb 17, 2009 9:16 pm
Location: São Paulo, Brazil
Contact:

Re: Cabinet furniture design tools workbench

Postby yorik » Tue May 14, 2019 2:08 pm

Agree with all this @iogui

Even more, some ideas need to"mature" a bit in one's mind... It happens often that you thin the best way to attack an issue is a certain way, but thinking better you find it's actually not the best way. Writing these ideas down on this forum helps a lot with that :D

The basic assumption - there is a "panel" object that is the base building block of all the furniture WB - seems very right to me. It might not cover 100% of the needs, but it will cover 99%. Which is efficient enough :) The remaining 1% is therefore indeed covered by allowing objects from other workbenches to be used in place of panels.

The panel object can start with something very simple, like the arch panel or the partdesign pad... You have one profile (or none, maybe just length and width properties), and you extrude it by a certain thickness in a certain direction. That would be enough to start playing.

Then the whole big problematic issue will be how to arrange the panels automatically. Indeed the first thing that comes to mind is a kind of assembly module. But as I said before, I think it might be overkill... Panels in a cabinet don't really need "free-form binding". On the contrary, they obey a pretty strict set of situations: side panels, back panels, top panels, shelves... If you think that someone would need to design a cabinet using a complete assembly module, and defining by hand the constraints between each set of panels, that would be a lot of work and not very practical...

Another idea crosses my mind now: Imagine drawing a cabinet "diagram" by hand, with the sketcher? Something like this:
Screenshot from 2019-05-14 11-05-11.png
Screenshot from 2019-05-14 11-05-11.png (171.02 KiB) Viewed 197 times
Then you'd be able to "attach" panels to a certain edge of the sketch... That could be an interesting way to proceed I think. Of course there we would have the problem of toponaming... That would need some serious testing.
User avatar
iogui
Posts: 93
Joined: Tue Mar 19, 2019 3:44 pm
Location: São Paulo
Contact:

Re: Cabinet furniture design tools workbench

Postby iogui » Wed May 15, 2019 1:04 am

yorik wrote:
Tue May 14, 2019 2:08 pm
The basic assumption - there is a "panel" object that is the base building block of all the furniture WB - seems very right to me. It might not cover 100% of the needs, but it will cover 99%. Which is efficient enough The remaining 1% is therefore indeed covered by allowing objects from other workbenches to be used in place of panels.
Yes!! I think that that's the way to go! This "panel" object can be the basis of the future "cabinet" feature (the zohozer's "driving shape volume") but we should not restrict it to be just a collection of panels, it may accept other FreeCAD features too as in real life you are not restricted to use just board pieces as parts of a furniture. But I think we can evolve this idea for a second step after the first prototype.
yorik wrote:
Tue May 14, 2019 2:08 pm
The panel object can start with something very simple, like the arch panel or the partdesign pad... You have one profile (or none, maybe just length and width properties), and you extrude it by a certain thickness in a certain direction. That would be enough to start playing.
I was thinking in some different ways we could let a user create a panel:
  • By just typing a button named "Panel" like we usually do in Part workbench to create a cube solid. With the object created with a default width, length and thickness the user can change it by typing new width and length or just stretching it like when you resize a window in your OS by placing the mouse on one of it's corners right clicking on the mouse and dragging .
  • By drawing a closed shape in sketcher like we usually do in part design inside a body to create a solid by padding it latter. This way the user just builds a closed shape and then (back in the furniture workbench) just click the "Panel" button having the sketch selected, the new panel is created based on the sketch shape like a pad with a default "length" that will be the default thickness property and if the user want's he can change it later.
  • By converting another shape in a panel by selecting for example a cube solid in the combo view and then clicking in some "create panel from..." button.
The key properties I see in the panel object are: width, length and thickness (Just to start. Then we can add grain orientation as well. But in the first prototype this property will have no use.)
yorik wrote:
Tue May 14, 2019 2:08 pm
Then the whole big problematic issue will be how to arrange the panels automatically. Indeed the first thing that comes to mind is a kind of assembly module. But as I said before, I think it might be overkill... Panels in a cabinet don't really need "free-form binding". On the contrary, they obey a pretty strict set of situations: side panels, back panels, top panels, shelves... If you think that someone would need to design a cabinet using a complete assembly module, and defining by hand the constraints between each set of panels, that would be a lot of work and not very practical...
I agree that this is the real challenge. I think we have to stress better this idea because we can easily make the same error of the Promob software here. On Promob it is really easy to build a cabinet module but it is a little bit plastered and you simply can't do nontraditional cabinet in it. Mainly when you want a cabinet with rounded shapes you can't do it. Many of the Brazilian woodworkers do use Promob because it is easy to use but when they need to do those kind of different things they tend to avoid Promob and use Sketchup instead.

I think we should try to make things really easy for one who just wants to build traditional cuboid modules shaped cabinet but we should provide ways for one to build a more complex furniture too, then we could allow people do what they can do in booth those mentioned software but without having to change softwares to do it.

And we also may allow any other furniture creation that can't be framed (or named) as a cabinet like a table or a chair for example. (In the table maybe just the top will be a panel feature). How to let one assembly the chair from it's slats? I do agree that many of the work of a modern woodworker is building cabinet but there are other things that they build also.

As an example these days I've been working on an easel to expose mandalas for sale:
cavalete-mandas-60.png
mandas easel
cavalete-mandas-60.png (27.02 KiB) Viewed 173 times
The model was made in FreeCAD and assembled in the hard way by manually moving and adjusting the x, y and z coordinates of each part (fortunately that's an easy model. A furniture can really get more complex).
The joints of the parts of this structure is done by using the mortise and tenon technique as it can be seen in the following tech drawings (also done on FreeCAD):
planos-cavalete-mandalas-60.pdf
mandalas easel tech drawings
(844.99 KiB) Downloaded 12 times
How to easily assembly this kind of wood work without having different files for each part?
Be the change you want to see in the world. - Mahatma Gandhi
User avatar
iogui
Posts: 93
Joined: Tue Mar 19, 2019 3:44 pm
Location: São Paulo
Contact:

Re: Cabinet furniture design tools workbench

Postby iogui » Wed May 15, 2019 2:28 am

yorik wrote:
Tue May 14, 2019 2:08 pm
Another idea crosses my mind now: Imagine drawing a cabinet "diagram" by hand, with the sketcher? Something like this:
yorik wrote:
Tue May 14, 2019 2:08 pm
Then you'd be able to "attach" panels to a certain edge of the sketch... That could be an interesting way to proceed I think. Of course there we would have the problem of toponaming... That would need some serious testing.
That's really nice but I see this as a second step. We should think about this just when we already have our first prototype working with a basic panel feature working as it should be based on it. This should be used to build the cabinet feature or "driving shape volume" as mentioned by @zohozer.
But again that are some challenges here. As an example:

By drawing this sketch (and assuming a thickness of 3 for each panel):
exemplo-sketcher-cabinet.png
sketcher cabinet example
exemplo-sketcher-cabinet.png (9.76 KiB) Viewed 168 times

The resulting cabinet should be like that...
exemplo1-cabinet.png
cabinet example 1
exemplo1-cabinet.png (19.89 KiB) Viewed 163 times

Or like that?...
exemplo2-cabinet.png
cabinet example 2
exemplo2-cabinet.png (22.96 KiB) Viewed 163 times

Or like that?...
exemplo3-cabinet.png
cabinet example 3
exemplo3-cabinet.png (15.69 KiB) Viewed 163 times

There are yet another possibilities. But that's just a kind of brainstorming for discussing further.
Again I think we should let it to a second step and focus now on more basic functionalities (I would use the word features but it would be a little confusing by the way people use to use the word "feature" on FreeCAD).
Last edited by iogui on Sun May 19, 2019 2:03 am, edited 1 time in total.
Be the change you want to see in the world. - Mahatma Gandhi