Looking forward to post 0.21 release, I want to start a discussion thread to cover how Materials should work, without constraining it to how they work now, or changes proposed previously. This may mean refactoring code that is external to materials like architecture and FEM, and any external workbenches.
Yes, I have read this thread: https://devtalk.freecad.org/t/material-improvements/14445/1 I haven’t built and tested the code yet, but I will shortly. I don’t want to comment on all the ideas in this build until I’ve had a chance to play with it.
I have some ideas for how things should work, but I’m keeping an open mind here. Some ideas may be discarded, while others merely need enhancement.
A summary of what I’m thinking, and some of this has been covered before elsewhere:
-
If it has a shape, it can have a material. Setting the material should be a matter of right clicking. Material properties are inherited, but overridable. Multi-material objects should also be handled and there a number of options for that. The physical properties of the material should automatically be applied where appropriate. For example, mass, center of gravity, etc. should be set when the material is set.
-
The default appearance should be that of the material, unless overridden. Obviously that means it should be possible to be overridden. Appearance workflows will need to be integrated with the materials. That means the materials in the appearance dialog should use the same materials available in FEM, for example. Cards can be created to replace the hard coded appearance values.
-
Where possible, it should be transparent to the user. For example, materials are assigned to the objects. Documents should not require Material dictionaries in the project tree. This could be an optional feature, or perhaps a summary table produced by a right click or menu option. I wouldn’t read this bullet as a requirement so much as a goal. This is an area where I’m keeping an open mind.
-
One source for materials. Everything is specified in a card. As I understand it the previous attempt used an object that allowed for multiple data sources. I still need to look into this to understand it properly but this seems to be undesirable to me.
-
Material Cards need to be enhanced. For example, some physical properties may vary with temperature. It should be possible to specify properties for specific value ranges. Default values for those ranges should be specifiable in the material configuration: STP, NTP, or customizable values, etc. Similarly direction should be specifiable. For example, carbon fiber direction, or wood grain directions.
-
Saving material properties in the document should be optional, configurable via preferences. This should help with bullet 3
-
Some types of import/exports can be enhanced to include material information
These are just thoughts and open to discussion. I’ll be first to admit that there’s a lot I don’t know. Rants are welcome. What else would you like to see?
Some other information I’d like to know before beginning:
-
What workbenches currently use materials? (e.g. Arch, FEM, etc.)
-
What EXTERNAL workbenches use materials?
-
What imports/exports use or could use material information?