Improves the use of the ShapeAppearance property for the Part workbench.
removes DiffuseColor property
adds Python compatibility using custom attributes
transitions DiffuseColor to ShapeAppearance on open
Improved UI elements for setting object appearance, and appearance per face
Lays the foundation for future texture support
In v0.22 a version number -1 is added to the material files to distinguish between old and new project file.
But v0.21 doesn't know about this version number and interprets it as number of elements instead.
Because this value is assigned to an unsigned type the value becomes 2**32 - 1. Now trying to create a container of this size requires > 280 GB
of RAM. On most systems FreeCAD new handler will jump in and raises a memory exception to stop the allocation. But an other systems with
plenty of RAM it's tried to allocate the memory and then may crash at some point.
This PR fixes this regression. It puts the version number to the MaterialList XML element as an optional attribute.
With this change FreeCAD v0.22 is still able to load projects that have been created prior to this change.
Additionally FreeCAD v0.21 can again load project files without crashing.
For more details see: https://forum.freecad.org/viewtopic.php?t=87268
* Fixed a mistake made in getSubObjectListFlatten()
* Applied modifications according to review comments
Signed-off-by: CalligaroV <vincenzo.calligaro@gmail.com>
* Formatted and refactored code imported for the DocumentObject class
* Formatted and refactored code imported for the SubObjectT class
Signed-off-by: CalligaroV <vincenzo.calligaro@gmail.com>
* Added test for SubObjectT::hasSubObject()
* Added test for SubObjectT::hasSubElement()
* Added test for SubObjectT::normalize()
* Added test for SubObjectT::normalized()
Signed-off-by: CalligaroV <vincenzo.calligaro@gmail.com>
* Added SubObjectT methods normalize(), normalized(), hasSubObject() and hasSubElement()
* Updated DocumentObject::getSubObjectList()
* Applied modifications to make the code compile