From 332bf7ed08ea66801450ba4c0ef16749ce0f971a Mon Sep 17 00:00:00 2001 From: David Carter Date: Mon, 6 Nov 2023 20:06:58 -0500 Subject: [PATCH] Material: Continued Material enahncements Continues the work of the material subsystem improvements. Several important items are included in this merge. In terms of new capabilities, this merge adds List and MultiLineString as valid property types, complete with editing dialogs. This will help with backwards compatibility for external workbenches, such as Render. Stability has been a big focus. New unit tests help to verify features work as expected. Bugs have been fixed and crashes avoided. Material cards have had a renaming to their tree structure. For example, 'StandardMeterials' is redundant, so this was renamed to 'Standard'. The cards themselves are more compliant fully passing the yamllint tests. More soon. --- src/Mod/Material/App/MaterialLibrary.cpp | 13 +- src/Mod/Material/App/MaterialLibrary.h | 5 +- src/Mod/Material/App/MaterialLoader.cpp | 48 +- src/Mod/Material/App/MaterialLoader.h | 9 +- src/Mod/Material/App/MaterialManager.cpp | 4 +- src/Mod/Material/App/MaterialPyImpl.cpp | 12 +- src/Mod/Material/App/MaterialValue.cpp | 70 ++- src/Mod/Material/App/MaterialValue.h | 17 +- src/Mod/Material/App/Materials.cpp | 486 ++++++++++-------- src/Mod/Material/App/Materials.h | 122 +++-- src/Mod/Material/App/ModelLoader.cpp | 8 +- src/Mod/Material/App/ModelLoader.h | 2 +- src/Mod/Material/App/ModelManager.cpp | 4 +- src/Mod/Material/App/ModelManager.h | 1 - src/Mod/Material/App/ModelUuids.cpp | 3 + src/Mod/Material/App/ModelUuids.h | 2 + src/Mod/Material/CMakeLists.txt | 262 +++++----- src/Mod/Material/Gui/AppMatGui.cpp | 3 +- src/Mod/Material/Gui/Array2D.cpp | 2 +- src/Mod/Material/Gui/Array3D.h | 1 + src/Mod/Material/Gui/ArrayModel.cpp | 1 - src/Mod/Material/Gui/CMakeLists.txt | 12 + src/Mod/Material/Gui/ListEdit.cpp | 196 +++++++ src/Mod/Material/Gui/ListEdit.h | 82 +++ src/Mod/Material/Gui/ListEdit.ui | 67 +++ src/Mod/Material/Gui/ListModel.cpp | 142 +++++ src/Mod/Material/Gui/ListModel.h | 69 +++ src/Mod/Material/Gui/MaterialDelegate.cpp | 94 +++- src/Mod/Material/Gui/MaterialDelegate.h | 2 + src/Mod/Material/Gui/MaterialSave.cpp | 3 +- src/Mod/Material/Gui/MaterialTreeView.h | 0 src/Mod/Material/Gui/MaterialsEditor.cpp | 45 +- src/Mod/Material/Gui/MaterialsEditor.h | 2 + src/Mod/Material/Gui/ModelSelect.cpp | 10 +- src/Mod/Material/Gui/Resources/Material.qrc | 2 + src/Mod/Material/Gui/Resources/icons/list.svg | 68 +++ .../Gui/Resources/icons/multiline.svg | 48 ++ src/Mod/Material/Gui/TextEdit.cpp | 94 ++++ src/Mod/Material/Gui/TextEdit.h | 66 +++ src/Mod/Material/Gui/TextEdit.ui | 67 +++ .../Materials/Appearance/Aluminum.FCMat | 1 + .../Materials/Appearance/Brass.FCMat | 1 + .../Materials/Appearance/Bronze.FCMat | 1 + .../Materials/Appearance/Chrome.FCMat | 1 + .../Materials/Appearance/Copper.FCMat | 1 + .../Appearance/DefaultAppearance.FCMat | 1 + .../Materials/Appearance/Emerald.FCMat | 1 + .../Resources/Materials/Appearance/Gold.FCMat | 1 + .../Resources/Materials/Appearance/Jade.FCMat | 1 + .../Materials/Appearance/Metalized.FCMat | 1 + .../Materials/Appearance/NeonGNC.FCMat | 1 + .../Materials/Appearance/NeonPHC.FCMat | 1 + .../Materials/Appearance/Obsidian.FCMat | 1 + .../Materials/Appearance/Pewter.FCMat | 1 + .../Materials/Appearance/Plaster.FCMat | 1 + .../Materials/Appearance/Plastic.FCMat | 1 + .../Resources/Materials/Appearance/Ruby.FCMat | 1 + .../Materials/Appearance/Satin.FCMat | 1 + .../Materials/Appearance/ShinyPlastic.FCMat | 1 + .../Materials/Appearance/Silver.FCMat | 1 + .../Materials/Appearance/Steel.FCMat | 1 + .../Materials/Appearance/Stone.FCMat | 1 + .../{FluidMaterial => Fluid}/Air.FCMat | 1 + .../{FluidMaterial => Fluid}/Argon.FCMat | 1 + .../Carbon_dioxide.FCMat | 1 + .../{FluidMaterial => Fluid}/Nitrogen.FCMat | 1 + .../{FluidMaterial => Fluid}/None.FCMat | 1 + .../{FluidMaterial => Fluid}/Water.FCMat | 1 + .../Aggregate/Concrete-EN-C35_45.FCMat | 1 + .../Aggregate/Concrete-Generic.FCMat | 1 + .../Aggregate/Reinforcement-FIB-B500.FCMat | 1 + .../Carbon/Graphite.FCMat | 1 + .../Glass/Glass-E-GlassFibre.FCMat | 1 + .../Glass/Glass-Generic.FCMat | 1 + .../Glass/Glass-S2-GlassFibre.FCMat | 1 + .../Metal/Alloys/Invar-Generic.FCMat | 1 + .../Metal/Aluminum/AlMg3F24.FCMat | 1 + .../Metal/Aluminum/AlMgSi1F31.FCMat | 1 + .../Metal/Aluminum/AlZn4-5Mg1F35.FCMat | 1 + .../Metal/Aluminum/Aluminum-6061-T6.FCMat | 1 + .../Metal/Aluminum/Aluminum-Generic.FCMat | 1 + .../Metal/Copper/Copper-Generic.FCMat | 1 + .../Metal/Iron/Iron-Generic.FCMat | 1 + .../Metal/Steel/CalculiX-Steel.FCMat | 1 + .../Metal/Steel/Steel-15CrNi6.FCMat | 1 + .../Metal/Steel/Steel-17CrNiMo6.FCMat | 1 + .../Metal/Steel/Steel-1C22.FCMat | 1 + .../Metal/Steel/Steel-1C35.FCMat | 1 + .../Metal/Steel/Steel-1C45.FCMat | 1 + .../Metal/Steel/Steel-1C60.FCMat | 1 + .../Metal/Steel/Steel-20NiCrMo2.FCMat | 1 + .../Metal/Steel/Steel-28Mn6.FCMat | 1 + .../Metal/Steel/Steel-2C10.FCMat | 1 + .../Metal/Steel/Steel-30CrNiMo8.FCMat | 1 + .../Metal/Steel/Steel-34CrNiMo6.FCMat | 1 + .../Metal/Steel/Steel-36CrNiMo4.FCMat | 1 + .../Metal/Steel/Steel-36NiCrMo16.FCMat | 1 + .../Metal/Steel/Steel-3C15.FCMat | 1 + .../Metal/Steel/Steel-3C22.FCMat | 1 + .../Metal/Steel/Steel-3C35.FCMat | 1 + .../Metal/Steel/Steel-3V45.FCMat | 1 + .../Metal/Steel/Steel-C10.FCMat | 1 + .../Metal/Steel/Steel-C15.FCMat | 1 + .../Metal/Steel/Steel-C22E.FCMat | 1 + .../Metal/Steel/Steel-C25E.FCMat | 1 + .../Metal/Steel/Steel-C30E.FCMat | 1 + .../Metal/Steel/Steel-C40E.FCMat | 1 + .../Metal/Steel/Steel-C50E.FCMat | 1 + .../Metal/Steel/Steel-C55E.FCMat | 1 + .../Metal/Steel/Steel-C60E.FCMat | 1 + .../Metal/Steel/Steel-E295-GC.FCMat | 1 + .../Metal/Steel/Steel-E295.FCMat | 1 + .../Metal/Steel/Steel-E335-GC.FCMat | 1 + .../Metal/Steel/Steel-E335.FCMat | 1 + .../Metal/Steel/Steel-E360-GC.FCMat | 1 + .../Metal/Steel/Steel-E360.FCMat | 1 + .../Metal/Steel/Steel-EN-GJL-100.FCMat | 1 + .../Metal/Steel/Steel-EN-GJL-150.FCMat | 1 + .../Metal/Steel/Steel-EN-GJL-200.FCMat | 1 + .../Metal/Steel/Steel-EN-GJL-250.FCMat | 1 + .../Metal/Steel/Steel-EN-GJL-300.FCMat | 1 + .../Metal/Steel/Steel-EN-GJL-350.FCMat | 1 + .../Metal/Steel/Steel-EN-GJMB-350-10.FCMat | 1 + .../Metal/Steel/Steel-EN-GJMB-550-4.FCMat | 1 + .../Metal/Steel/Steel-EN-GJMB-650-2.FCMat | 1 + .../Metal/Steel/Steel-EN-GJMW-350-4.FCMat | 1 + .../Metal/Steel/Steel-EN-GJMW-360-12.FCMat | 1 + .../Metal/Steel/Steel-EN-GJMW-400-5.FCMat | 1 + .../Metal/Steel/Steel-EN-GJMW-450-7.FCMat | 1 + .../Metal/Steel/Steel-EN-GJS-400-15.FCMat | 1 + .../Metal/Steel/Steel-EN-GJS-500-7.FCMat | 1 + .../Metal/Steel/Steel-EN-GJS-600-3.FCMat | 1 + .../Metal/Steel/Steel-EN-GJS-700-2.FCMat | 1 + .../Metal/Steel/Steel-EN-GJS-800-1.FCMat | 1 + .../Metal/Steel/Steel-G16Mn5.FCMat | 1 + .../Metal/Steel/Steel-G200.FCMat | 1 + .../Metal/Steel/Steel-G20Mn5.FCMat | 1 + .../Metal/Steel/Steel-G230.FCMat | 1 + .../Metal/Steel/Steel-G260.FCMat | 1 + .../Metal/Steel/Steel-G300.FCMat | 1 + .../Metal/Steel/Steel-G30Mn5.FCMat | 1 + .../Metal/Steel/Steel-Generic.FCMat | 1 + .../Metal/Steel/Steel-S185.FCMat | 1 + .../Metal/Steel/Steel-S235JO.FCMat | 1 + .../Metal/Steel/Steel-S235JR.FCMat | 1 + .../Metal/Steel/Steel-S235JRG1.FCMat | 1 + .../Metal/Steel/Steel-S260NC.FCMat | 1 + .../Metal/Steel/Steel-S275JO.FCMat | 1 + .../Metal/Steel/Steel-S275JR.FCMat | 1 + .../Metal/Steel/Steel-S275N.FCMat | 1 + .../Metal/Steel/Steel-S335JO.FCMat | 1 + .../Metal/Steel/Steel-S335JR.FCMat | 1 + .../Metal/Steel/Steel-S335N.FCMat | 1 + .../Metal/Steel/Steel-S340MC.FCMat | 1 + .../Metal/Steel/Steel-S355J2G3.FCMat | 1 + .../Metal/Steel/Steel-S380MC.FCMat | 1 + .../Metal/Steel/Steel-S420MC.FCMat | 1 + .../Metal/Steel/Steel-S420N.FCMat | 1 + .../Metal/Steel/Steel-S460MC.FCMat | 1 + .../Metal/Steel/Steel-S460N.FCMat | 1 + .../Metal/Steel/Steel-S500MC.FCMat | 1 + .../Metal/Steel/Steel-S550MC.FCMat | 1 + .../Metal/Steel/Steel-S690MC.FCMat | 1 + .../Metal/Steel/Steel-St-37-2K.FCMat | 1 + .../Metal/Steel/Steel-St-E-255.FCMat | 1 + .../Metal/Steel/Steel-St-E-315.FCMat | 1 + .../Metal/Steel/Steel-St-E-380.FCMat | 1 + .../Metal/Steel/Steel-St-E-460.FCMat | 1 + .../Metal/Steel/Steel-St-E-500.FCMat | 1 + .../Metal/Steel/Steel-X2CrNiMoN17-13-3.FCMat | 1 + .../Metal/Steel/Steel-X2CrNiN24-4.FCMat | 1 + .../Metal/Steel/Steel-X39CrMo17-1.FCMat | 1 + .../Metal/Steel/Steel-X3CrNiMo13-14.FCMat | 1 + .../Metal/Steel/Steel-X5CrNi18-10.FCMat | 1 + .../Metal/Steel/Steel-X5CrNiMo17-12-2.FCMat | 1 + .../Metal/Steel/Steel-X6CrNiTi18-10.FCMat | 1 + .../Metal/Titanium/Ti-6Al-4V.FCMat | 1 + .../Thermoplast/ABS-Generic.FCMat | 1 + .../Thermoplast/Acrylic-Glass-Generic.FCMat | 1 + .../Thermoplast/PA6-Generic.FCMat | 1 + .../Thermoplast/PET-Generic.FCMat | 1 + .../Thermoplast/PLA-Generic.FCMat | 1 + .../Thermoplast/PP-Generic.FCMat | 1 + .../Thermoplast/PTFE-Generic.FCMat | 1 + .../Thermoplast/PVC-Generic.FCMat | 1 + .../Wood/Wood-Generic.FCMat | 1 + .../Materials/Test/Test Material.FCMat | 55 ++ .../Models/Mechanical/HypotheticalExample.yml | 41 -- .../Resources/Models/Test/Test Model.yml | 139 +++++ .../Material/materialtests/TestMaterials.py | 37 +- tests/src/Mod/Material/App/CMakeLists.txt | 1 + tests/src/Mod/Material/App/Model.cpp | 140 ----- .../Mod/Material/App/TestMaterialCards.cpp | 178 +++++++ .../Mod/Material/App/TestMaterialValue.cpp | 11 +- tests/src/Mod/Material/App/TestMaterials.cpp | 6 +- 195 files changed, 2198 insertions(+), 700 deletions(-) create mode 100644 src/Mod/Material/Gui/ListEdit.cpp create mode 100644 src/Mod/Material/Gui/ListEdit.h create mode 100644 src/Mod/Material/Gui/ListEdit.ui create mode 100644 src/Mod/Material/Gui/ListModel.cpp create mode 100644 src/Mod/Material/Gui/ListModel.h delete mode 100644 src/Mod/Material/Gui/MaterialTreeView.h create mode 100644 src/Mod/Material/Gui/Resources/icons/list.svg create mode 100644 src/Mod/Material/Gui/Resources/icons/multiline.svg create mode 100644 src/Mod/Material/Gui/TextEdit.cpp create mode 100644 src/Mod/Material/Gui/TextEdit.h create mode 100644 src/Mod/Material/Gui/TextEdit.ui rename src/Mod/Material/Resources/Materials/{FluidMaterial => Fluid}/Air.FCMat (99%) rename src/Mod/Material/Resources/Materials/{FluidMaterial => Fluid}/Argon.FCMat (99%) rename src/Mod/Material/Resources/Materials/{FluidMaterial => Fluid}/Carbon_dioxide.FCMat (99%) rename src/Mod/Material/Resources/Materials/{FluidMaterial => Fluid}/Nitrogen.FCMat (99%) rename src/Mod/Material/Resources/Materials/{FluidMaterial => Fluid}/None.FCMat (99%) rename src/Mod/Material/Resources/Materials/{FluidMaterial => Fluid}/Water.FCMat (99%) rename src/Mod/Material/Resources/Materials/{StandardMaterial => Standard}/Aggregate/Concrete-EN-C35_45.FCMat (99%) rename src/Mod/Material/Resources/Materials/{StandardMaterial => Standard}/Aggregate/Concrete-Generic.FCMat (99%) rename src/Mod/Material/Resources/Materials/{StandardMaterial => Standard}/Aggregate/Reinforcement-FIB-B500.FCMat (99%) rename src/Mod/Material/Resources/Materials/{StandardMaterial => Standard}/Carbon/Graphite.FCMat (99%) rename src/Mod/Material/Resources/Materials/{StandardMaterial => Standard}/Glass/Glass-E-GlassFibre.FCMat (99%) rename src/Mod/Material/Resources/Materials/{StandardMaterial => Standard}/Glass/Glass-Generic.FCMat (99%) rename src/Mod/Material/Resources/Materials/{StandardMaterial => Standard}/Glass/Glass-S2-GlassFibre.FCMat (99%) rename src/Mod/Material/Resources/Materials/{StandardMaterial => Standard}/Metal/Alloys/Invar-Generic.FCMat (99%) rename src/Mod/Material/Resources/Materials/{StandardMaterial => Standard}/Metal/Aluminum/AlMg3F24.FCMat (99%) rename src/Mod/Material/Resources/Materials/{StandardMaterial => Standard}/Metal/Aluminum/AlMgSi1F31.FCMat (99%) rename src/Mod/Material/Resources/Materials/{StandardMaterial => Standard}/Metal/Aluminum/AlZn4-5Mg1F35.FCMat (99%) rename src/Mod/Material/Resources/Materials/{StandardMaterial => Standard}/Metal/Aluminum/Aluminum-6061-T6.FCMat (99%) rename src/Mod/Material/Resources/Materials/{StandardMaterial => Standard}/Metal/Aluminum/Aluminum-Generic.FCMat (99%) rename src/Mod/Material/Resources/Materials/{StandardMaterial => Standard}/Metal/Copper/Copper-Generic.FCMat (99%) rename src/Mod/Material/Resources/Materials/{StandardMaterial => Standard}/Metal/Iron/Iron-Generic.FCMat (99%) rename src/Mod/Material/Resources/Materials/{StandardMaterial => Standard}/Metal/Steel/CalculiX-Steel.FCMat (99%) rename src/Mod/Material/Resources/Materials/{StandardMaterial => Standard}/Metal/Steel/Steel-15CrNi6.FCMat (99%) rename src/Mod/Material/Resources/Materials/{StandardMaterial => Standard}/Metal/Steel/Steel-17CrNiMo6.FCMat (99%) rename src/Mod/Material/Resources/Materials/{StandardMaterial => Standard}/Metal/Steel/Steel-1C22.FCMat (99%) rename src/Mod/Material/Resources/Materials/{StandardMaterial => Standard}/Metal/Steel/Steel-1C35.FCMat (99%) rename src/Mod/Material/Resources/Materials/{StandardMaterial => Standard}/Metal/Steel/Steel-1C45.FCMat (99%) rename src/Mod/Material/Resources/Materials/{StandardMaterial => Standard}/Metal/Steel/Steel-1C60.FCMat (99%) rename src/Mod/Material/Resources/Materials/{StandardMaterial => Standard}/Metal/Steel/Steel-20NiCrMo2.FCMat (99%) rename src/Mod/Material/Resources/Materials/{StandardMaterial => Standard}/Metal/Steel/Steel-28Mn6.FCMat (99%) rename src/Mod/Material/Resources/Materials/{StandardMaterial => Standard}/Metal/Steel/Steel-2C10.FCMat (99%) rename src/Mod/Material/Resources/Materials/{StandardMaterial => Standard}/Metal/Steel/Steel-30CrNiMo8.FCMat (99%) rename src/Mod/Material/Resources/Materials/{StandardMaterial => Standard}/Metal/Steel/Steel-34CrNiMo6.FCMat (99%) rename src/Mod/Material/Resources/Materials/{StandardMaterial => Standard}/Metal/Steel/Steel-36CrNiMo4.FCMat (99%) rename src/Mod/Material/Resources/Materials/{StandardMaterial => Standard}/Metal/Steel/Steel-36NiCrMo16.FCMat (99%) rename src/Mod/Material/Resources/Materials/{StandardMaterial => Standard}/Metal/Steel/Steel-3C15.FCMat (99%) rename src/Mod/Material/Resources/Materials/{StandardMaterial => Standard}/Metal/Steel/Steel-3C22.FCMat (99%) rename src/Mod/Material/Resources/Materials/{StandardMaterial => Standard}/Metal/Steel/Steel-3C35.FCMat (99%) rename src/Mod/Material/Resources/Materials/{StandardMaterial => Standard}/Metal/Steel/Steel-3V45.FCMat (99%) rename src/Mod/Material/Resources/Materials/{StandardMaterial => Standard}/Metal/Steel/Steel-C10.FCMat (99%) rename src/Mod/Material/Resources/Materials/{StandardMaterial => Standard}/Metal/Steel/Steel-C15.FCMat (99%) rename src/Mod/Material/Resources/Materials/{StandardMaterial => Standard}/Metal/Steel/Steel-C22E.FCMat (99%) rename src/Mod/Material/Resources/Materials/{StandardMaterial => Standard}/Metal/Steel/Steel-C25E.FCMat (99%) rename src/Mod/Material/Resources/Materials/{StandardMaterial => Standard}/Metal/Steel/Steel-C30E.FCMat (99%) rename src/Mod/Material/Resources/Materials/{StandardMaterial => Standard}/Metal/Steel/Steel-C40E.FCMat (99%) rename src/Mod/Material/Resources/Materials/{StandardMaterial => Standard}/Metal/Steel/Steel-C50E.FCMat (99%) rename src/Mod/Material/Resources/Materials/{StandardMaterial => Standard}/Metal/Steel/Steel-C55E.FCMat (99%) rename src/Mod/Material/Resources/Materials/{StandardMaterial => Standard}/Metal/Steel/Steel-C60E.FCMat (99%) rename src/Mod/Material/Resources/Materials/{StandardMaterial => Standard}/Metal/Steel/Steel-E295-GC.FCMat (99%) rename src/Mod/Material/Resources/Materials/{StandardMaterial => Standard}/Metal/Steel/Steel-E295.FCMat (99%) rename src/Mod/Material/Resources/Materials/{StandardMaterial => Standard}/Metal/Steel/Steel-E335-GC.FCMat (99%) rename src/Mod/Material/Resources/Materials/{StandardMaterial => Standard}/Metal/Steel/Steel-E335.FCMat (99%) rename src/Mod/Material/Resources/Materials/{StandardMaterial => Standard}/Metal/Steel/Steel-E360-GC.FCMat (99%) rename src/Mod/Material/Resources/Materials/{StandardMaterial => Standard}/Metal/Steel/Steel-E360.FCMat (99%) rename src/Mod/Material/Resources/Materials/{StandardMaterial => Standard}/Metal/Steel/Steel-EN-GJL-100.FCMat (99%) rename src/Mod/Material/Resources/Materials/{StandardMaterial => Standard}/Metal/Steel/Steel-EN-GJL-150.FCMat (99%) rename src/Mod/Material/Resources/Materials/{StandardMaterial => Standard}/Metal/Steel/Steel-EN-GJL-200.FCMat (99%) rename src/Mod/Material/Resources/Materials/{StandardMaterial => Standard}/Metal/Steel/Steel-EN-GJL-250.FCMat (99%) rename src/Mod/Material/Resources/Materials/{StandardMaterial => Standard}/Metal/Steel/Steel-EN-GJL-300.FCMat (99%) rename src/Mod/Material/Resources/Materials/{StandardMaterial => Standard}/Metal/Steel/Steel-EN-GJL-350.FCMat (99%) rename src/Mod/Material/Resources/Materials/{StandardMaterial => Standard}/Metal/Steel/Steel-EN-GJMB-350-10.FCMat (99%) rename src/Mod/Material/Resources/Materials/{StandardMaterial => Standard}/Metal/Steel/Steel-EN-GJMB-550-4.FCMat (99%) rename src/Mod/Material/Resources/Materials/{StandardMaterial => Standard}/Metal/Steel/Steel-EN-GJMB-650-2.FCMat (99%) rename src/Mod/Material/Resources/Materials/{StandardMaterial => Standard}/Metal/Steel/Steel-EN-GJMW-350-4.FCMat (99%) rename src/Mod/Material/Resources/Materials/{StandardMaterial => Standard}/Metal/Steel/Steel-EN-GJMW-360-12.FCMat (99%) rename src/Mod/Material/Resources/Materials/{StandardMaterial => Standard}/Metal/Steel/Steel-EN-GJMW-400-5.FCMat (99%) rename src/Mod/Material/Resources/Materials/{StandardMaterial => Standard}/Metal/Steel/Steel-EN-GJMW-450-7.FCMat (99%) rename src/Mod/Material/Resources/Materials/{StandardMaterial => Standard}/Metal/Steel/Steel-EN-GJS-400-15.FCMat (99%) rename src/Mod/Material/Resources/Materials/{StandardMaterial => Standard}/Metal/Steel/Steel-EN-GJS-500-7.FCMat (99%) rename src/Mod/Material/Resources/Materials/{StandardMaterial => Standard}/Metal/Steel/Steel-EN-GJS-600-3.FCMat (99%) rename src/Mod/Material/Resources/Materials/{StandardMaterial => Standard}/Metal/Steel/Steel-EN-GJS-700-2.FCMat (99%) rename src/Mod/Material/Resources/Materials/{StandardMaterial => Standard}/Metal/Steel/Steel-EN-GJS-800-1.FCMat (99%) rename src/Mod/Material/Resources/Materials/{StandardMaterial => Standard}/Metal/Steel/Steel-G16Mn5.FCMat (99%) rename src/Mod/Material/Resources/Materials/{StandardMaterial => Standard}/Metal/Steel/Steel-G200.FCMat (99%) rename src/Mod/Material/Resources/Materials/{StandardMaterial => Standard}/Metal/Steel/Steel-G20Mn5.FCMat (99%) rename src/Mod/Material/Resources/Materials/{StandardMaterial => Standard}/Metal/Steel/Steel-G230.FCMat (99%) rename src/Mod/Material/Resources/Materials/{StandardMaterial => Standard}/Metal/Steel/Steel-G260.FCMat (99%) rename src/Mod/Material/Resources/Materials/{StandardMaterial => Standard}/Metal/Steel/Steel-G300.FCMat (99%) rename src/Mod/Material/Resources/Materials/{StandardMaterial => Standard}/Metal/Steel/Steel-G30Mn5.FCMat (99%) rename src/Mod/Material/Resources/Materials/{StandardMaterial => Standard}/Metal/Steel/Steel-Generic.FCMat (99%) rename src/Mod/Material/Resources/Materials/{StandardMaterial => Standard}/Metal/Steel/Steel-S185.FCMat (99%) rename src/Mod/Material/Resources/Materials/{StandardMaterial => Standard}/Metal/Steel/Steel-S235JO.FCMat (99%) rename src/Mod/Material/Resources/Materials/{StandardMaterial => Standard}/Metal/Steel/Steel-S235JR.FCMat (99%) rename src/Mod/Material/Resources/Materials/{StandardMaterial => Standard}/Metal/Steel/Steel-S235JRG1.FCMat (99%) rename src/Mod/Material/Resources/Materials/{StandardMaterial => Standard}/Metal/Steel/Steel-S260NC.FCMat (99%) rename src/Mod/Material/Resources/Materials/{StandardMaterial => Standard}/Metal/Steel/Steel-S275JO.FCMat (99%) rename src/Mod/Material/Resources/Materials/{StandardMaterial => Standard}/Metal/Steel/Steel-S275JR.FCMat (99%) rename src/Mod/Material/Resources/Materials/{StandardMaterial => Standard}/Metal/Steel/Steel-S275N.FCMat (99%) rename src/Mod/Material/Resources/Materials/{StandardMaterial => Standard}/Metal/Steel/Steel-S335JO.FCMat (99%) rename src/Mod/Material/Resources/Materials/{StandardMaterial => Standard}/Metal/Steel/Steel-S335JR.FCMat (99%) rename src/Mod/Material/Resources/Materials/{StandardMaterial => Standard}/Metal/Steel/Steel-S335N.FCMat (99%) rename src/Mod/Material/Resources/Materials/{StandardMaterial => Standard}/Metal/Steel/Steel-S340MC.FCMat (99%) rename src/Mod/Material/Resources/Materials/{StandardMaterial => Standard}/Metal/Steel/Steel-S355J2G3.FCMat (99%) rename src/Mod/Material/Resources/Materials/{StandardMaterial => Standard}/Metal/Steel/Steel-S380MC.FCMat (99%) rename src/Mod/Material/Resources/Materials/{StandardMaterial => Standard}/Metal/Steel/Steel-S420MC.FCMat (99%) rename src/Mod/Material/Resources/Materials/{StandardMaterial => Standard}/Metal/Steel/Steel-S420N.FCMat (99%) rename src/Mod/Material/Resources/Materials/{StandardMaterial => Standard}/Metal/Steel/Steel-S460MC.FCMat (99%) rename src/Mod/Material/Resources/Materials/{StandardMaterial => Standard}/Metal/Steel/Steel-S460N.FCMat (99%) rename src/Mod/Material/Resources/Materials/{StandardMaterial => Standard}/Metal/Steel/Steel-S500MC.FCMat (99%) rename src/Mod/Material/Resources/Materials/{StandardMaterial => Standard}/Metal/Steel/Steel-S550MC.FCMat (99%) rename src/Mod/Material/Resources/Materials/{StandardMaterial => Standard}/Metal/Steel/Steel-S690MC.FCMat (99%) rename src/Mod/Material/Resources/Materials/{StandardMaterial => Standard}/Metal/Steel/Steel-St-37-2K.FCMat (99%) rename src/Mod/Material/Resources/Materials/{StandardMaterial => Standard}/Metal/Steel/Steel-St-E-255.FCMat (99%) rename src/Mod/Material/Resources/Materials/{StandardMaterial => Standard}/Metal/Steel/Steel-St-E-315.FCMat (99%) rename src/Mod/Material/Resources/Materials/{StandardMaterial => Standard}/Metal/Steel/Steel-St-E-380.FCMat (99%) rename src/Mod/Material/Resources/Materials/{StandardMaterial => Standard}/Metal/Steel/Steel-St-E-460.FCMat (99%) rename src/Mod/Material/Resources/Materials/{StandardMaterial => Standard}/Metal/Steel/Steel-St-E-500.FCMat (99%) rename src/Mod/Material/Resources/Materials/{StandardMaterial => Standard}/Metal/Steel/Steel-X2CrNiMoN17-13-3.FCMat (99%) rename src/Mod/Material/Resources/Materials/{StandardMaterial => Standard}/Metal/Steel/Steel-X2CrNiN24-4.FCMat (99%) rename src/Mod/Material/Resources/Materials/{StandardMaterial => Standard}/Metal/Steel/Steel-X39CrMo17-1.FCMat (99%) rename src/Mod/Material/Resources/Materials/{StandardMaterial => Standard}/Metal/Steel/Steel-X3CrNiMo13-14.FCMat (99%) rename src/Mod/Material/Resources/Materials/{StandardMaterial => Standard}/Metal/Steel/Steel-X5CrNi18-10.FCMat (99%) rename src/Mod/Material/Resources/Materials/{StandardMaterial => Standard}/Metal/Steel/Steel-X5CrNiMo17-12-2.FCMat (99%) rename src/Mod/Material/Resources/Materials/{StandardMaterial => Standard}/Metal/Steel/Steel-X6CrNiTi18-10.FCMat (99%) rename src/Mod/Material/Resources/Materials/{StandardMaterial => Standard}/Metal/Titanium/Ti-6Al-4V.FCMat (99%) rename src/Mod/Material/Resources/Materials/{StandardMaterial => Standard}/Thermoplast/ABS-Generic.FCMat (99%) rename src/Mod/Material/Resources/Materials/{StandardMaterial => Standard}/Thermoplast/Acrylic-Glass-Generic.FCMat (99%) rename src/Mod/Material/Resources/Materials/{StandardMaterial => Standard}/Thermoplast/PA6-Generic.FCMat (99%) rename src/Mod/Material/Resources/Materials/{StandardMaterial => Standard}/Thermoplast/PET-Generic.FCMat (99%) rename src/Mod/Material/Resources/Materials/{StandardMaterial => Standard}/Thermoplast/PLA-Generic.FCMat (99%) rename src/Mod/Material/Resources/Materials/{StandardMaterial => Standard}/Thermoplast/PP-Generic.FCMat (99%) rename src/Mod/Material/Resources/Materials/{StandardMaterial => Standard}/Thermoplast/PTFE-Generic.FCMat (99%) rename src/Mod/Material/Resources/Materials/{StandardMaterial => Standard}/Thermoplast/PVC-Generic.FCMat (99%) rename src/Mod/Material/Resources/Materials/{StandardMaterial => Standard}/Wood/Wood-Generic.FCMat (99%) create mode 100644 src/Mod/Material/Resources/Materials/Test/Test Material.FCMat delete mode 100644 src/Mod/Material/Resources/Models/Mechanical/HypotheticalExample.yml create mode 100644 src/Mod/Material/Resources/Models/Test/Test Model.yml delete mode 100644 tests/src/Mod/Material/App/Model.cpp create mode 100644 tests/src/Mod/Material/App/TestMaterialCards.cpp diff --git a/src/Mod/Material/App/MaterialLibrary.cpp b/src/Mod/Material/App/MaterialLibrary.cpp index 32f00934ae..5ccfa03466 100644 --- a/src/Mod/Material/App/MaterialLibrary.cpp +++ b/src/Mod/Material/App/MaterialLibrary.cpp @@ -42,9 +42,6 @@ using namespace Materials; TYPESYSTEM_SOURCE(Materials::MaterialLibrary, LibraryBase) -MaterialLibrary::MaterialLibrary() -{} - MaterialLibrary::MaterialLibrary(const QString& libraryName, const QString& dir, const QString& icon, @@ -232,15 +229,16 @@ std::shared_ptr MaterialLibrary::saveMaterial(std::shared_ptrsetName(info.baseName()); material->setLibrary(getptr()); material->setDirectory(getRelativePath(path)); - material->save(stream, saveAsCopy, saveInherited); + material->save(stream, overwrite, saveAsCopy, saveInherited); } return addMaterial(material, path); @@ -338,7 +336,7 @@ MaterialLibrary::getMaterialTree() const // Empty folders aren't included in _materialPathMap, so we add them by looking at the file // system auto folderList = MaterialLoader::getMaterialFolders(*this); - for (auto folder : *folderList) { + for (auto& folder : *folderList) { QStringList list = folder.split(QString::fromStdString("/")); // Start at the root @@ -364,9 +362,6 @@ MaterialLibrary::getMaterialTree() const TYPESYSTEM_SOURCE(Materials::MaterialExternalLibrary, MaterialLibrary::MaterialLibrary) -MaterialExternalLibrary::MaterialExternalLibrary() -{} - MaterialExternalLibrary::MaterialExternalLibrary(const QString& libraryName, const QString& dir, const QString& icon, diff --git a/src/Mod/Material/App/MaterialLibrary.h b/src/Mod/Material/App/MaterialLibrary.h index c0df47b6bb..73a554ad61 100644 --- a/src/Mod/Material/App/MaterialLibrary.h +++ b/src/Mod/Material/App/MaterialLibrary.h @@ -31,7 +31,6 @@ #include #include - #include "Materials.h" #include "Model.h" #include "ModelLibrary.h" @@ -48,7 +47,7 @@ class MaterialsExport MaterialLibrary: public LibraryBase, TYPESYSTEM_HEADER_WITH_OVERRIDE(); public: - MaterialLibrary(); + MaterialLibrary() = default; MaterialLibrary(const MaterialLibrary&) = delete; MaterialLibrary(const QString& libraryName, const QString& dir, @@ -106,7 +105,7 @@ class MaterialsExport MaterialExternalLibrary: public MaterialLibrary TYPESYSTEM_HEADER_WITH_OVERRIDE(); public: - MaterialExternalLibrary(); + MaterialExternalLibrary() = default; MaterialExternalLibrary(const QString& libraryName, const QString& dir, const QString& icon, diff --git a/src/Mod/Material/App/MaterialLoader.cpp b/src/Mod/Material/App/MaterialLoader.cpp index 620a32a2a4..a6b7a1f75f 100644 --- a/src/Mod/Material/App/MaterialLoader.cpp +++ b/src/Mod/Material/App/MaterialLoader.cpp @@ -43,10 +43,7 @@ using namespace Materials; -MaterialEntry::MaterialEntry() -{} - -MaterialEntry::MaterialEntry(std::shared_ptr library, +MaterialEntry::MaterialEntry(const std::shared_ptr& library, const QString& modelName, const QString& dir, const QString& modelUuid) @@ -56,7 +53,7 @@ MaterialEntry::MaterialEntry(std::shared_ptr library, , _uuid(modelUuid) {} -MaterialYamlEntry::MaterialYamlEntry(std::shared_ptr library, +MaterialYamlEntry::MaterialYamlEntry(const std::shared_ptr& library, const QString& modelName, const QString& dir, const QString& modelUuid, @@ -78,6 +75,17 @@ QString MaterialYamlEntry::yamlValue(const YAML::Node& node, return QString::fromStdString(defaultValue); } +std::shared_ptr> MaterialYamlEntry::readList(const YAML::Node& node) +{ + auto list = std::make_shared>(); + for (auto it = node.begin(); it != node.end(); it++) { + QVariant nodeName = QString::fromStdString(it->as()); + list->append(nodeName); + } + + return list; +} + std::shared_ptr MaterialYamlEntry::read2DArray(const YAML::Node& node) { // Base::Console().Log("Read 2D Array\n"); @@ -86,8 +94,8 @@ std::shared_ptr MaterialYamlEntry::read2DArray(const YAML::Node if (node.size() == 2) { // Get the default - Base::Quantity defaultValue = - Base::Quantity::parse(QString::fromStdString(node[0].as())); + Base::Quantity defaultValue( + Base::Quantity::parse(QString::fromStdString(node[0].as()))); array2d->setDefault(QVariant::fromValue(defaultValue)); auto yamlArray = node[1]; @@ -115,8 +123,8 @@ std::shared_ptr MaterialYamlEntry::read3DArray(const YAML::Node if (node.size() == 2) { // Get the default - Base::Quantity defaultValue = - Base::Quantity::parse(QString::fromStdString(node[0].as())); + Base::Quantity defaultValue( + Base::Quantity::parse(QString::fromStdString(node[0].as()))); array3d->setDefault(QVariant::fromValue(defaultValue)); auto yamlArray = node[1]; @@ -207,7 +215,12 @@ void MaterialYamlEntry::addToTree( auto type = prop->getType(); try { - if (type == MaterialValue::Array2D) { + if (type == MaterialValue::List) { + auto list = readList(itp->second); + finalModel->setPhysicalValue(QString::fromStdString(propertyName), + list); + } + else if (type == MaterialValue::Array2D) { auto array2d = read2DArray(itp->second); finalModel->setPhysicalValue(QString::fromStdString(propertyName), array2d); @@ -259,7 +272,12 @@ void MaterialYamlEntry::addToTree( auto type = prop->getType(); try { - if (type == MaterialValue::Array2D) { + if (type == MaterialValue::List) { + auto list = readList(itp->second); + finalModel->setAppearanceValue(QString::fromStdString(propertyName), + list); + } + else if (type == MaterialValue::Array2D) { auto array2d = read2DArray(itp->second); finalModel->setAppearanceValue(QString::fromStdString(propertyName), array2d); @@ -305,12 +323,6 @@ MaterialLoader::MaterialLoader( loadLibraries(); } -/* - * Destroys the object and frees any allocated resources - */ -MaterialLoader::~MaterialLoader() -{} - void MaterialLoader::addLibrary(std::shared_ptr model) { _libraryList->push_back(model); @@ -483,8 +495,6 @@ void MaterialLoader::loadLibrary(std::shared_ptr library) QFileInfo file(pathname); if (file.isFile()) { if (file.suffix().toStdString() == "FCMat") { - QString libraryName = file.baseName(); - auto model = getMaterialFromPath(library, file.canonicalFilePath()); if (model) { (*_materialEntryMap)[model->getUUID()] = model; diff --git a/src/Mod/Material/App/MaterialLoader.h b/src/Mod/Material/App/MaterialLoader.h index 427d348630..61a6c9b9a8 100644 --- a/src/Mod/Material/App/MaterialLoader.h +++ b/src/Mod/Material/App/MaterialLoader.h @@ -37,8 +37,8 @@ namespace Materials class MaterialEntry { public: - MaterialEntry(); - MaterialEntry(std::shared_ptr library, + MaterialEntry() = default; + MaterialEntry(const std::shared_ptr& library, const QString& modelName, const QString& dir, const QString& modelUuid); @@ -74,7 +74,7 @@ protected: class MaterialYamlEntry: public MaterialEntry { public: - MaterialYamlEntry(std::shared_ptr library, + MaterialYamlEntry(const std::shared_ptr& library, const QString& modelName, const QString& dir, const QString& modelUuid, @@ -98,6 +98,7 @@ private: QString yamlValue(const YAML::Node& node, const std::string& key, const std::string& defaultValue); + std::shared_ptr> readList(const YAML::Node& node); std::shared_ptr read2DArray(const YAML::Node& node); std::shared_ptr read3DArray(const YAML::Node& node); @@ -109,7 +110,7 @@ class MaterialLoader public: MaterialLoader(std::shared_ptr>> materialMap, std::shared_ptr>> libraryList); - virtual ~MaterialLoader(); + ~MaterialLoader() = default; std::shared_ptr>> getMaterialLibraries(); static std::shared_ptr> getMaterialFolders(const MaterialLibrary& library); diff --git a/src/Mod/Material/App/MaterialManager.cpp b/src/Mod/Material/App/MaterialManager.cpp index 0ee411d917..131f1b09b3 100644 --- a/src/Mod/Material/App/MaterialManager.cpp +++ b/src/Mod/Material/App/MaterialManager.cpp @@ -123,7 +123,7 @@ std::shared_ptr MaterialManager::getMaterialByPath(const QString& path { QString cleanPath = QDir::cleanPath(path); - for (auto library : *_libraryList) { + for (auto& library : *_libraryList) { // Base::Console().Log("MaterialManager::getMaterialByPath() Checking library '%s'->'%s'\n", // library->getName().toStdString().c_str(), // library->getDirectory().toStdString().c_str()); @@ -189,7 +189,7 @@ bool MaterialManager::exists(std::shared_ptr library, const QSt std::shared_ptr MaterialManager::getLibrary(const QString& name) const { - for (auto library : *_libraryList) { + for (auto& library : *_libraryList) { if (library->getName() == name) { return library; } diff --git a/src/Mod/Material/App/MaterialPyImpl.cpp b/src/Mod/Material/App/MaterialPyImpl.cpp index b59d51f404..3067b139f9 100644 --- a/src/Mod/Material/App/MaterialPyImpl.cpp +++ b/src/Mod/Material/App/MaterialPyImpl.cpp @@ -360,22 +360,22 @@ static PyObject* _pyObjectFromVariant(const QVariant& value) if (value.userType() == qMetaTypeId()) { return new Base::QuantityPy(new Base::Quantity(value.value())); } - else if (value.userType() == QMetaType::Double) { + if (value.userType() == QMetaType::Double) { return PyFloat_FromDouble(value.toDouble()); } - else if (value.userType() == QMetaType::Float) { + if (value.userType() == QMetaType::Float) { return PyFloat_FromDouble(value.toFloat()); } - else if (value.userType() == QMetaType::Int) { + if (value.userType() == QMetaType::Int) { return PyLong_FromLong(value.toInt()); } - else if (value.userType() == QMetaType::Long) { + if (value.userType() == QMetaType::Long) { return PyLong_FromLong(value.toInt()); } - else if (value.userType() == QMetaType::Bool) { + if (value.userType() == QMetaType::Bool) { return Py::new_reference_to(Py::Boolean(value.toBool())); } - else if (value.userType() == QMetaType::QString) { + if (value.userType() == QMetaType::QString) { return PyUnicode_FromString(value.toString().toStdString().c_str()); } diff --git a/src/Mod/Material/App/MaterialValue.cpp b/src/Mod/Material/App/MaterialValue.cpp index a756a00945..2d2d00df01 100644 --- a/src/Mod/Material/App/MaterialValue.cpp +++ b/src/Mod/Material/App/MaterialValue.cpp @@ -26,6 +26,7 @@ #include #include +#include #include #include @@ -83,10 +84,18 @@ bool MaterialValue::operator==(const MaterialValue& other) const return (_valueType == other._valueType) && (_value == other._value); } +QString MaterialValue::escapeString(const QString& source) +{ + QString res = source; + res.replace(QString::fromStdString("\\"), QString::fromStdString("\\\\")); + res.replace(QString::fromStdString("\""), QString::fromStdString("\\\"")); + return res; +} + void MaterialValue::setInitialValue(ValueType inherited) { -#if QT_VERSION < QT_VERSION_CHECK(6,0,0) - if (_valueType == String) { +#if QT_VERSION < QT_VERSION_CHECK(6, 0, 0) + if (_valueType == String || _valueType == MultiLineString) { _value = QVariant(static_cast(QMetaType::QString)); } else if (_valueType == Boolean) { @@ -110,11 +119,8 @@ void MaterialValue::setInitialValue(ValueType inherited) else if (_valueType == Image) { _value = QVariant(static_cast(QMetaType::QString)); } - else if (_valueType == List) { - _value = QVariant(static_cast(QMetaType::QString)); - } #else - if (_valueType == String) { + if (_valueType == String || _valueType == MultiLineString) { _value = QVariant(QMetaType(QMetaType::QString)); } else if (_valueType == Boolean) { @@ -138,15 +144,16 @@ void MaterialValue::setInitialValue(ValueType inherited) else if (_valueType == Image) { _value = QVariant(QMetaType(QMetaType::QString)); } - else if (_valueType == List) { - _value = QVariant(QMetaType(QMetaType::QString)); - } #endif else if (_valueType == Quantity) { Base::Quantity qu; qu.setInvalid(); _value = QVariant::fromValue(qu); } + else if (_valueType == List) { + auto list = QList(); + _value = QVariant::fromValue(list); + } else if (_valueType == Array2D) { if (_valueType != inherited) { throw InvalidMaterialType("Initializing a regular material value as a 2D Array"); @@ -168,6 +175,11 @@ void MaterialValue::setInitialValue(ValueType inherited) } } +void MaterialValue::setList(const QList& value) +{ + _value = QVariant::fromValue(value); +} + bool MaterialValue::isNull() const { if (_value.isNull()) { @@ -178,12 +190,16 @@ bool MaterialValue::isNull() const return !_value.value().isValid(); } + if (_valueType == List) { + return _value.value>().isEmpty(); + } + return false; } const QString MaterialValue::getYAMLString() const { - QString yaml = QString::fromStdString("\""); + QString yaml; if (!isNull()) { if (getType() == MaterialValue::Quantity) { Base::Quantity quantity = getValue().value(); @@ -195,11 +211,27 @@ const QString MaterialValue::getYAMLString() const yaml += QString(QString::fromStdString("%1")).arg(value.toFloat(), 0, 'g', 6); } } + else if (getType() == MaterialValue::MultiLineString) { + yaml = QString::fromStdString(">2"); + auto list = getValue().toString().split(QRegExp(QString::fromStdString("[\r\n]")), + Qt::SkipEmptyParts); + for (auto& it : list) { + yaml += QString::fromStdString("\n ") + it; + } + return yaml; + } + else if (getType() == MaterialValue::List) { + for (auto& it : getList()) { + yaml += QString::fromStdString("\n - \"") + escapeString(it.toString()) + + QString::fromStdString("\""); + } + return yaml; + } else { yaml += getValue().toString(); } } - yaml += QString::fromStdString("\""); + yaml = QString::fromStdString("\"") + escapeString(yaml) + QString::fromStdString("\""); return yaml; } @@ -239,9 +271,9 @@ Material2DArray& Material2DArray::operator=(const Material2DArray& other) void Material2DArray::deepCopy(const Material2DArray& other) { // Deep copy - for (auto row : other._rows) { + for (auto& row : other._rows) { std::vector v; - for (auto col : *row) { + for (auto& col : *row) { QVariant newVariant(col); v.push_back(newVariant); } @@ -335,7 +367,7 @@ const QVariant Material2DArray::getValue(int row, int column) const void Material2DArray::dumpRow(std::shared_ptr> row) const { Base::Console().Log("row: "); - for (auto column : *row) { + for (auto& column : *row) { Base::Console().Log("'%s' ", column.toString().toStdString().c_str()); } Base::Console().Log("\n"); @@ -343,7 +375,7 @@ void Material2DArray::dumpRow(std::shared_ptr> row) const void Material2DArray::dump() const { - for (auto row : _rows) { + for (auto& row : _rows) { dumpRow(row); } } @@ -367,7 +399,7 @@ const QString Material2DArray::getYAMLString() const // Next the array contents yaml += QString::fromStdString(" - ["); bool firstRow = true; - for (auto row : _rows) { + for (auto& row : _rows) { if (!firstRow) { // Each row is on its own line, padded for correct indentation yaml += QString::fromStdString(",\n") + pad; @@ -378,7 +410,7 @@ const QString Material2DArray::getYAMLString() const yaml += QString::fromStdString("["); bool first = true; - for (auto column : *row) { + for (auto& column : *row) { if (!first) { // TODO: Fix for arrays with too many columns to fit on a single line yaml += QString::fromStdString(", "); @@ -698,7 +730,7 @@ const QString Material3DArray::getYAMLString() const bool firstRow = true; auto rows = getTable(depth); - for (auto row : *rows) { + for (auto& row : *rows) { if (!firstRow) { // Each row is on its own line, padded for correct indentation yaml += QString::fromStdString(",\n") + pad2; @@ -709,7 +741,7 @@ const QString Material3DArray::getYAMLString() const yaml += QString::fromStdString("["); bool first = true; - for (auto column : *row) { + for (auto& column : *row) { if (!first) { // TODO: Fix for arrays with too many columns to fit on a single line yaml += QString::fromStdString(", "); diff --git a/src/Mod/Material/App/MaterialValue.h b/src/Mod/Material/App/MaterialValue.h index ceaaf2682f..12b7f066a7 100644 --- a/src/Mod/Material/App/MaterialValue.h +++ b/src/Mod/Material/App/MaterialValue.h @@ -54,10 +54,11 @@ public: Color = 10, Image = 11, File = 12, - URL = 13 + URL = 13, + MultiLineString = 14 }; MaterialValue(); - MaterialValue(const MaterialValue& other); + explicit MaterialValue(const MaterialValue& other); explicit MaterialValue(ValueType type); virtual ~MaterialValue() = default; @@ -73,10 +74,18 @@ public: return _valueType; } - const QVariant getValue() const + QVariant getValue() const { return _value; } + QList getList() + { + return _value.value>(); + } + const QList getList() const + { + return _value.value>(); + } virtual bool isNull() const; virtual const QVariant getValueAt(const QVariant& value) const @@ -88,8 +97,10 @@ public: { _value = value; } + void setList(const QList& value); virtual const QString getYAMLString() const; + static QString escapeString(const QString& source); protected: MaterialValue(ValueType type, ValueType inherited); diff --git a/src/Mod/Material/App/Materials.cpp b/src/Mod/Material/App/Materials.cpp index b567d9fad3..142370292f 100644 --- a/src/Mod/Material/App/Materials.cpp +++ b/src/Mod/Material/App/Materials.cpp @@ -42,20 +42,21 @@ using namespace Materials; TYPESYSTEM_SOURCE(Materials::MaterialProperty, Materials::ModelProperty) +int const MaterialProperty::PRECISION = 6; + MaterialProperty::MaterialProperty() { _valuePtr = std::make_shared(MaterialValue::None); } -MaterialProperty::MaterialProperty(const ModelProperty& property) - : ModelProperty(property) +MaterialProperty::MaterialProperty(const ModelProperty& other) + : ModelProperty(other) , _valuePtr(nullptr) { setType(getPropertyType()); - auto columns = property.getColumns(); - for (std::vector::const_iterator it = columns.begin(); it != columns.end(); - it++) { - MaterialProperty prop(*it); + auto columns = other.getColumns(); + for (auto& it : columns) { + MaterialProperty prop(it); addColumn(prop); } @@ -67,7 +68,7 @@ MaterialProperty::MaterialProperty(const ModelProperty& property) } } -void MaterialProperty::copyValuePtr(std::shared_ptr value) +void MaterialProperty::copyValuePtr(const std::shared_ptr& value) { if (value->getType() == MaterialValue::Array2D) { _valuePtr = @@ -84,16 +85,16 @@ void MaterialProperty::copyValuePtr(std::shared_ptr value) MaterialProperty::MaterialProperty(const MaterialProperty& other) : ModelProperty(other) + , _modelUUID(other._modelUUID) { - _modelUUID = other._modelUUID; copyValuePtr(other._valuePtr); - for (auto it = other._columns.begin(); it != other._columns.end(); it++) { - _columns.push_back(*it); + for (auto& it : other._columns) { + _columns.push_back(it); } } -MaterialProperty::MaterialProperty(std::shared_ptr other) +MaterialProperty::MaterialProperty(const std::shared_ptr& other) : MaterialProperty(*other) {} @@ -102,7 +103,12 @@ void MaterialProperty::setModelUUID(const QString& uuid) _modelUUID = uuid; } -const QVariant MaterialProperty::getValue() const +QVariant MaterialProperty::getValue() +{ + return _valuePtr->getValue(); +} + +QVariant MaterialProperty::getValue() const { return _valuePtr->getValue(); } @@ -112,31 +118,31 @@ std::shared_ptr MaterialProperty::getMaterialValue() return _valuePtr; } -const std::shared_ptr MaterialProperty::getMaterialValue() const +std::shared_ptr MaterialProperty::getMaterialValue() const { return _valuePtr; } -const QString MaterialProperty::getString() const +QString MaterialProperty::getString() const { if (isNull()) { - return QString(); + return {}; } if (getType() == MaterialValue::Quantity) { - Base::Quantity quantity = getValue().value(); + auto quantity = getValue().value(); return quantity.getUserString(); } - else if (getType() == MaterialValue::Float) { + if (getType() == MaterialValue::Float) { auto value = getValue(); if (value.isNull()) { - return QString(); + return {}; } - return QString(QString::fromStdString("%1")).arg(value.toFloat(), 0, 'g', 6); + return QString(QString::fromStdString("%1")).arg(value.toFloat(), 0, 'g', PRECISION); } return getValue().toString(); } -const QString MaterialProperty::getYAMLString() const +QString MaterialProperty::getYAMLString() const { return _valuePtr->getYAMLString(); } @@ -179,6 +185,9 @@ void MaterialProperty::setType(const QString& type) else if (type == QString::fromStdString("List")) { _valuePtr = std::make_shared(MaterialValue::List); } + else if (type == QString::fromStdString("MultiLineString")) { + _valuePtr = std::make_shared(MaterialValue::MultiLineString); + } else if (type == QString::fromStdString("2DArray")) { _valuePtr = std::make_shared(); } @@ -188,8 +197,8 @@ void MaterialProperty::setType(const QString& type) else { // Error. Throw something _valuePtr = std::make_shared(MaterialValue::None); - std::string stringType = type.toStdString(); - std::string name = getName().toStdString(); + // std::string stringType = type.toStdString(); - useful for debugging since we can't see + // std::string name = getName().toStdString(); throw UnknownValueType(); } } @@ -240,19 +249,19 @@ QVariant MaterialProperty::getColumnNull(int column) const switch (valueType) { case MaterialValue::Quantity: { - Base::Quantity q = Base::Quantity(0, getColumnUnits(column)); - return QVariant::fromValue(q); + Base::Quantity quant = Base::Quantity(0, getColumnUnits(column)); + return QVariant::fromValue(quant); } case MaterialValue::Float: case MaterialValue::Integer: - return QVariant(0); + return 0; default: break; } - return QVariant(QString()); + return QString(); } void MaterialProperty::setValue(const QVariant& value) @@ -274,11 +283,9 @@ void MaterialProperty::setValue(const QString& value) else if (_valuePtr->getType() == MaterialValue::URL) { setURL(value); } - else if (_valuePtr->getType() == MaterialValue::Array2D) { - //_valuePtr->setValue(QVariant(std::make_shared())); - } - else if (_valuePtr->getType() == MaterialValue::Array3D) { - //_valuePtr = std::make_shared(); + else if (_valuePtr->getType() == MaterialValue::Array2D + || _valuePtr->getType() == MaterialValue::Array3D) { + // This value can't be directly assigned } else if (_valuePtr->getType() == MaterialValue::Quantity) { // Base::Console().Log("\tParse quantity '%s'\n", value.toStdString().c_str()); @@ -298,7 +305,7 @@ void MaterialProperty::setValue(const QString& value) } } -void MaterialProperty::setValue(std::shared_ptr value) +void MaterialProperty::setValue(const std::shared_ptr& value) { _valuePtr = value; } @@ -323,8 +330,7 @@ void MaterialProperty::setBoolean(int value) void MaterialProperty::setBoolean(const QString& value) { - // _valueType = MaterialValue::Boolean; - bool boolean; + bool boolean = false; std::string val = value.toStdString(); if ((val == "true") || (val == "True")) { boolean = true; @@ -374,6 +380,11 @@ void MaterialProperty::setQuantity(const QString& value) setQuantity(Base::Quantity::parse(value)); } +void MaterialProperty::setList(const QList& value) +{ + _valuePtr->setList(value); +} + void MaterialProperty::setURL(const QString& value) { _valuePtr->setValue(QVariant(value)); @@ -391,8 +402,8 @@ MaterialProperty& MaterialProperty::operator=(const MaterialProperty& other) copyValuePtr(other._valuePtr); _columns.clear(); - for (auto it = other._columns.begin(); it != other._columns.end(); it++) { - _columns.push_back(*it); + for (auto& it : other._columns) { + _columns.push_back(it); } return *this; @@ -417,7 +428,7 @@ Material::Material() , _editState(ModelEdit_None) {} -Material::Material(std::shared_ptr library, +Material::Material(const std::shared_ptr& library, const QString& directory, const QString& uuid, const QString& name) @@ -444,29 +455,29 @@ Material::Material(const Material& other) , _dereferenced(other._dereferenced) , _editState(other._editState) { - for (auto it = other._tags.begin(); it != other._tags.end(); it++) { - _tags.push_back(*it); + for (auto& it : other._tags) { + _tags.push_back(it); } - for (auto it = other._physicalUuids.begin(); it != other._physicalUuids.end(); it++) { - _physicalUuids.push_back(*it); + for (auto& it : other._physicalUuids) { + _physicalUuids.push_back(it); } - for (auto it = other._appearanceUuids.begin(); it != other._appearanceUuids.end(); it++) { - _appearanceUuids.push_back(*it); + for (auto& it : other._appearanceUuids) { + _appearanceUuids.push_back(it); } - for (auto it = other._allUuids.begin(); it != other._allUuids.end(); it++) { - _allUuids.push_back(*it); + for (auto& it : other._allUuids) { + _allUuids.push_back(it); } - for (auto it = other._physical.begin(); it != other._physical.end(); it++) { - MaterialProperty prop(it->second); - _physical[it->first] = std::make_shared(prop); + for (auto& it : other._physical) { + MaterialProperty prop(it.second); + _physical[it.first] = std::make_shared(prop); } - for (auto it = other._appearance.begin(); it != other._appearance.end(); it++) { - MaterialProperty prop(it->second); - _appearance[it->first] = std::make_shared(prop); + for (auto& it : other._appearance) { + MaterialProperty prop(it.second); + _appearance[it.first] = std::make_shared(prop); } } -const QString Material::getAuthorAndLicense() const +QString Material::getAuthorAndLicense() const { QString authorAndLicense; @@ -486,7 +497,7 @@ const QString Material::getAuthorAndLicense() const void Material::addModel(const QString& uuid) { - for (QString modelUUID : _allUuids) { + for (QString& modelUUID : _allUuids) { if (modelUUID == uuid) { return; } @@ -499,19 +510,14 @@ void Material::addModel(const QString& uuid) try { auto model = manager.getModel(uuid); auto inheritance = model->getInheritance(); - for (auto inherits = inheritance.begin(); inherits != inheritance.end(); inherits++) { - addModel(*inherits); + for (auto& inherits : inheritance) { + addModel(inherits); } } catch (ModelNotFound const&) { } } -void Material::removeModel(const QString& uuid) -{ - Q_UNUSED(uuid); -} - void Material::clearModels() { _physicalUuids.clear(); @@ -592,20 +598,20 @@ void Material::addPhysical(const QString& uuid) auto model = manager.getModel(uuid); auto& inheritance = model->getInheritance(); - for (auto it = inheritance.begin(); it != inheritance.end(); it++) { + for (auto& it : inheritance) { // Inherited models may already have the properties, so just // remove the uuid - removeUUID(_physicalUuids, *it); + removeUUID(_physicalUuids, it); } _physicalUuids.push_back(uuid); addModel(uuid); setEditStateExtend(); - for (auto it = model->begin(); it != model->end(); it++) { - QString propertyName = it->first; + for (auto& it : *model) { + QString propertyName = it.first; if (!hasPhysicalProperty(propertyName)) { - ModelProperty property = static_cast(it->second); + ModelProperty property = static_cast(it.second); try { _physical[propertyName] = std::make_shared(property); @@ -630,8 +636,8 @@ void Material::removePhysical(const QString& uuid) // If it's an inherited model, do nothing bool inherited = true; - for (auto it = _physicalUuids.begin(); it != _physicalUuids.end(); it++) { - if (*it == uuid) { + for (auto& it : _physicalUuids) { + if (it == uuid) { inherited = false; break; } @@ -646,15 +652,15 @@ void Material::removePhysical(const QString& uuid) auto model = manager.getModel(uuid); auto& inheritance = model->getInheritance(); - for (auto it = inheritance.begin(); it != inheritance.end(); it++) { - removeUUID(_physicalUuids, *it); - removeUUID(_allUuids, *it); + for (auto& it : inheritance) { + removeUUID(_physicalUuids, it); + removeUUID(_allUuids, it); } removeUUID(_physicalUuids, uuid); removeUUID(_allUuids, uuid); - for (auto it = model->begin(); it != model->end(); it++) { - _physical.erase(it->first); + for (auto& it : *model) { + _physical.erase(it.first); } setEditStateAlter(); @@ -675,20 +681,20 @@ void Material::addAppearance(const QString& uuid) auto model = manager.getModel(uuid); auto& inheritance = model->getInheritance(); - for (auto it = inheritance.begin(); it != inheritance.end(); it++) { + for (auto& it : inheritance) { // Inherited models may already have the properties, so just // remove the uuid - removeUUID(_appearanceUuids, *it); + removeUUID(_appearanceUuids, it); } _appearanceUuids.push_back(uuid); addModel(uuid); setEditStateExtend(); - for (auto it = model->begin(); it != model->end(); it++) { - QString propertyName = it->first; + for (auto& it : *model) { + QString propertyName = it.first; if (!hasAppearanceProperty(propertyName)) { - ModelProperty property = static_cast(it->second); + ModelProperty property = static_cast(it.second); _appearance[propertyName] = std::make_shared(property); } @@ -706,8 +712,8 @@ void Material::removeAppearance(const QString& uuid) // If it's an inherited model, do nothing bool inherited = true; - for (auto it = _appearanceUuids.begin(); it != _appearanceUuids.end(); it++) { - if (*it == uuid) { + for (auto& it : _appearanceUuids) { + if (it == uuid) { inherited = false; break; } @@ -722,15 +728,15 @@ void Material::removeAppearance(const QString& uuid) auto model = manager.getModel(uuid); auto& inheritance = model->getInheritance(); - for (auto it = inheritance.begin(); it != inheritance.end(); it++) { - removeUUID(_appearanceUuids, *it); - removeUUID(_allUuids, *it); + for (auto& it : inheritance) { + removeUUID(_appearanceUuids, it); + removeUUID(_allUuids, it); } removeUUID(_appearanceUuids, uuid); removeUUID(_allUuids, uuid); - for (auto it = model->begin(); it != model->end(); it++) { - _appearance.erase(it->first); + for (auto& it : *model) { + _appearance.erase(it.first); } setEditStateAlter(); @@ -790,20 +796,27 @@ void Material::setPhysicalValue(const QString& name, double value) _physical[name]->setFloat(value); } -void Material::setPhysicalValue(const QString& name, const Base::Quantity value) +void Material::setPhysicalValue(const QString& name, const Base::Quantity& value) { setPhysicalEditState(name); _physical[name]->setQuantity(value); } -void Material::setPhysicalValue(const QString& name, std::shared_ptr value) +void Material::setPhysicalValue(const QString& name, const std::shared_ptr& value) { setPhysicalEditState(name); _physical[name]->setValue(value); } +void Material::setPhysicalValue(const QString& name, const std::shared_ptr>& value) +{ + setPhysicalEditState(name); + + _physical[name]->setList(*value); +} + void Material::setAppearanceValue(const QString& name, const QString& value) { setAppearanceEditState(name); @@ -811,13 +824,21 @@ void Material::setAppearanceValue(const QString& name, const QString& value) _appearance[name]->setValue(value); // may not be a string type, conversion may be required } -void Material::setAppearanceValue(const QString& name, std::shared_ptr value) +void Material::setAppearanceValue(const QString& name, const std::shared_ptr& value) { setAppearanceEditState(name); _appearance[name]->setValue(value); } +void Material::setAppearanceValue(const QString& name, + const std::shared_ptr>& value) +{ + setPhysicalEditState(name); + + _appearance[name]->setList(*value); +} + std::shared_ptr Material::getPhysicalProperty(const QString& name) { try { @@ -828,7 +849,7 @@ std::shared_ptr Material::getPhysicalProperty(const QString& n } } -const std::shared_ptr Material::getPhysicalProperty(const QString& name) const +std::shared_ptr Material::getPhysicalProperty(const QString& name) const { try { return _physical.at(name); @@ -848,7 +869,7 @@ std::shared_ptr Material::getAppearanceProperty(const QString& } } -const std::shared_ptr Material::getAppearanceProperty(const QString& name) const +std::shared_ptr Material::getAppearanceProperty(const QString& name) const { try { return _appearance.at(name); @@ -858,9 +879,9 @@ const std::shared_ptr Material::getAppearanceProperty(const QS } } -const QVariant +QVariant Material::getValue(const std::map>& propertyList, - const QString& name) const + const QString& name) { try { return propertyList.at(name)->getValue(); @@ -870,28 +891,29 @@ Material::getValue(const std::map>& p } } -const QString +QString Material::getValueString(const std::map>& propertyList, - const QString& name) const + const QString& name) { try { - auto property = propertyList.at(name); + const auto& property = propertyList.at(name); if (property->isNull()) { - return QString(); + return {}; } if (property->getType() == MaterialValue::Quantity) { auto value = property->getValue(); if (value.isNull()) { - return QString(); + return {}; } return value.value().getUserString(); } - else if (property->getType() == MaterialValue::Float) { + if (property->getType() == MaterialValue::Float) { auto value = property->getValue(); if (value.isNull()) { - return QString(); + return {}; } - return QString(QString::fromStdString("%1")).arg(value.toFloat(), 0, 'g', 6); + return QString(QString::fromStdString("%1")) + .arg(value.toFloat(), 0, 'g', MaterialProperty::PRECISION); } return property->getValue().toString(); } @@ -900,32 +922,32 @@ Material::getValueString(const std::map(); } -const QString Material::getPhysicalValueString(const QString& name) const +QString Material::getPhysicalValueString(const QString& name) const { return getValueString(_physical, name); } -const QVariant Material::getAppearanceValue(const QString& name) const +QVariant Material::getAppearanceValue(const QString& name) const { return getValue(_appearance, name); } -const Base::Quantity Material::getAppearanceQuantity(const QString& name) const +Base::Quantity Material::getAppearanceQuantity(const QString& name) const { return getValue(_appearance, name).value(); } -const QString Material::getAppearanceValueString(const QString& name) const +QString Material::getAppearanceValueString(const QString& name) const { return getValueString(_appearance, name); } @@ -1007,8 +1029,8 @@ bool Material::isPhysicalModelComplete(const QString& uuid) const try { auto model = manager.getModel(uuid); - for (auto it = model->begin(); it != model->end(); it++) { - QString propertyName = it->first; + for (auto& it : *model) { + QString propertyName = it.first; auto property = getPhysicalProperty(propertyName); if (property->isNull()) { @@ -1033,8 +1055,8 @@ bool Material::isAppearanceModelComplete(const QString& uuid) const try { auto model = manager.getModel(uuid); - for (auto it = model->begin(); it != model->end(); it++) { - QString propertyName = it->first; + for (auto& it : *model) { + QString propertyName = it.first; auto property = getAppearanceProperty(propertyName); if (property->isNull()) { @@ -1053,21 +1075,21 @@ void Material::saveGeneral(QTextStream& stream) const { stream << "General:\n"; stream << " UUID: \"" << _uuid << "\"\n"; - stream << " Name: \"" << _name << "\"\n"; + stream << " Name: \"" << MaterialValue::escapeString(_name) << "\"\n"; if (!_author.isEmpty()) { - stream << " Author: \"" << _author << "\"\n"; + stream << " Author: \"" << MaterialValue::escapeString(_author) << "\"\n"; } if (!_license.isEmpty()) { - stream << " License: \"" << _license << "\"\n"; + stream << " License: \"" << MaterialValue::escapeString(_license) << "\"\n"; } if (!_description.isEmpty()) { - stream << " Description: \"" << _description << "\"\n"; + stream << " Description: \"" << MaterialValue::escapeString(_description) << "\"\n"; } if (!_url.isEmpty()) { - stream << " SourceURL: \"" << _url << "\"\n"; + stream << " SourceURL: \"" << MaterialValue::escapeString(_url) << "\"\n"; } if (!_reference.isEmpty()) { - stream << " ReferenceSource: \"" << _reference << "\"\n"; + stream << " ReferenceSource: \"" << MaterialValue::escapeString(_reference) << "\"\n"; } } @@ -1088,11 +1110,11 @@ void Material::saveInherits(QTextStream& stream) const } } -bool Material::modelChanged(const std::shared_ptr parent, - const std::shared_ptr model) const +bool Material::modelChanged(const std::shared_ptr& parent, + const std::shared_ptr& model) const { - for (auto itp = model->begin(); itp != model->end(); itp++) { - QString propertyName = itp->first; + for (auto& it : *model) { + QString propertyName = it.first; auto property = getPhysicalProperty(propertyName); try { auto parentProperty = parent->getPhysicalProperty(propertyName); @@ -1109,11 +1131,11 @@ bool Material::modelChanged(const std::shared_ptr parent, return false; } -bool Material::modelAppearanceChanged(const std::shared_ptr parent, - const std::shared_ptr model) const +bool Material::modelAppearanceChanged(const std::shared_ptr& parent, + const std::shared_ptr& model) const { - for (auto itp = model->begin(); itp != model->end(); itp++) { - QString propertyName = itp->first; + for (auto& it : *model) { + QString propertyName = it.first; auto property = getAppearanceProperty(propertyName); try { auto parentProperty = parent->getAppearanceProperty(propertyName); @@ -1132,49 +1154,51 @@ bool Material::modelAppearanceChanged(const std::shared_ptr parent, void Material::saveModels(QTextStream& stream, bool saveInherited) const { - if (!_physical.empty()) { - ModelManager modelManager; - MaterialManager materialManager; + if (_physical.empty()) { + return; + } - bool inherited = saveInherited && (_parentUuid.size() > 0); - std::shared_ptr parent; - if (inherited) { - try { - parent = materialManager.getMaterial(_parentUuid); - } - catch (const MaterialNotFound&) { - inherited = false; - } + ModelManager modelManager; + MaterialManager materialManager; + + bool inherited = saveInherited && (_parentUuid.size() > 0); + std::shared_ptr parent; + if (inherited) { + try { + parent = materialManager.getMaterial(_parentUuid); } + catch (const MaterialNotFound&) { + inherited = false; + } + } - bool headerPrinted = false; - for (auto itm = _physicalUuids.begin(); itm != _physicalUuids.end(); itm++) { - auto model = modelManager.getModel(*itm); - if (!inherited || modelChanged(parent, model)) { - if (!headerPrinted) { - stream << "Models:\n"; - headerPrinted = true; + bool headerPrinted = false; + for (auto& itm : _physicalUuids) { + auto model = modelManager.getModel(itm); + if (!inherited || modelChanged(parent, model)) { + if (!headerPrinted) { + stream << "Models:\n"; + headerPrinted = true; + } + stream << " " << MaterialValue::escapeString(model->getName()) << ":\n"; + stream << " UUID: \"" << model->getUUID() << "\"\n"; + for (const auto& it : *model) { + QString propertyName = it.first; + std::shared_ptr property = getPhysicalProperty(propertyName); + std::shared_ptr parentProperty; + try { + if (inherited) { + parentProperty = parent->getPhysicalProperty(propertyName); + } + } + catch (const PropertyNotFound&) { + Base::Console().Log("Material::saveModels Property not found '%s'\n", + propertyName.toStdString().c_str()); } - stream << " " << model->getName() << ":\n"; - stream << " UUID: \"" << model->getUUID() << "\"\n"; - for (auto itp = model->begin(); itp != model->end(); itp++) { - QString propertyName = itp->first; - std::shared_ptr property = getPhysicalProperty(propertyName); - std::shared_ptr parentProperty; - try { - if (inherited) { - parentProperty = parent->getPhysicalProperty(propertyName); - } - } - catch (const PropertyNotFound&) { - Base::Console().Log("Material::saveModels Property not found '%s'\n", - propertyName.toStdString().c_str()); - } - if (!inherited || (*property != *parentProperty)) { - if (!property->isNull()) { - stream << " " << *property << "\n"; - } + if (!inherited || !parentProperty || (*property != *parentProperty)) { + if (!property->isNull()) { + stream << " " << *property << "\n"; } } } @@ -1184,48 +1208,49 @@ void Material::saveModels(QTextStream& stream, bool saveInherited) const void Material::saveAppearanceModels(QTextStream& stream, bool saveInherited) const { - if (!_appearance.empty()) { - ModelManager modelManager; - MaterialManager materialManager; + if (_appearance.empty()) { + return; + } - bool inherited = saveInherited && (_parentUuid.size() > 0); - std::shared_ptr parent; - if (inherited) { - try { - parent = materialManager.getMaterial(_parentUuid); - } - catch (const MaterialNotFound&) { - inherited = false; - } + ModelManager modelManager; + MaterialManager materialManager; + + bool inherited = saveInherited && (_parentUuid.size() > 0); + std::shared_ptr parent; + if (inherited) { + try { + parent = materialManager.getMaterial(_parentUuid); } + catch (const MaterialNotFound&) { + inherited = false; + } + } - bool headerPrinted = false; - for (auto itm = _appearanceUuids.begin(); itm != _appearanceUuids.end(); itm++) { - auto model = modelManager.getModel(*itm); - if (!inherited || modelAppearanceChanged(parent, model)) { - if (!headerPrinted) { - stream << "AppearanceModels:\n"; - headerPrinted = true; + bool headerPrinted = false; + for (auto& itm : _appearanceUuids) { + auto model = modelManager.getModel(itm); + if (!inherited || modelAppearanceChanged(parent, model)) { + if (!headerPrinted) { + stream << "AppearanceModels:\n"; + headerPrinted = true; + } + stream << " " << MaterialValue::escapeString(model->getName()) << ":\n"; + stream << " UUID: \"" << model->getUUID() << "\"\n"; + for (const auto& it : *model) { + QString propertyName = it.first; + std::shared_ptr property = getAppearanceProperty(propertyName); + std::shared_ptr parentProperty; + try { + if (inherited) { + parentProperty = parent->getAppearanceProperty(propertyName); + } + } + catch (const PropertyNotFound&) { } - stream << " " << model->getName() << ":\n"; - stream << " UUID: \"" << model->getUUID() << "\"\n"; - for (auto itp = model->begin(); itp != model->end(); itp++) { - QString propertyName = itp->first; - std::shared_ptr property = - getAppearanceProperty(propertyName); - std::shared_ptr parentProperty; - try { - if (inherited) { - parentProperty = parent->getAppearanceProperty(propertyName); - } - } - catch (const PropertyNotFound&) { - } - if (!inherited || (*property != *parentProperty)) { - if (!property->isNull()) { - stream << " " << *property << "\n"; - } + if (!inherited || !parentProperty || (*property != *parentProperty)) { + if (!property->isNull()) { + stream << " " << *property << "\n"; } } } @@ -1242,29 +1267,29 @@ QString Material::getModelByName(const QString& name) const { ModelManager manager; - for (auto it = _allUuids.begin(); it != _allUuids.end(); it++) { + for (auto& it : _allUuids) { try { - auto model = manager.getModel(*it); + auto model = manager.getModel(it); if (model->getName() == name) { - return *it; + return it; } } catch (ModelNotFound const&) { } } - return QString(); + return {}; } -void Material::save(QTextStream& stream, bool saveAsCopy, bool saveInherited) +void Material::save(QTextStream& stream, bool overwrite, bool saveAsCopy, bool saveInherited) { if (saveInherited && !saveAsCopy) { // Check to see if we're an original or if we're already in the list of models MaterialManager materialManager; - if (materialManager.exists(_uuid)) { + if (materialManager.exists(_uuid) && !overwrite) { // Make a new version based on the current setParentUUID(_uuid); - newUuid(); + // newUuid(); } } @@ -1277,6 +1302,13 @@ void Material::save(QTextStream& stream, bool saveAsCopy, bool saveInherited) saveInherited = true; } } + else { + if (!overwrite) { + // Creating a new derived model when overwriting sets itself as a parent, + // that will no longer exist because it's been overwritten + newUuid(); + } + } stream << "---\n"; stream << "# File created by " << QString::fromStdString(App::Application::Config()["ExeName"]) @@ -1311,32 +1343,32 @@ Material& Material::operator=(const Material& other) _editState = other._editState; _tags.clear(); - for (auto it = other._tags.begin(); it != other._tags.end(); it++) { - _tags.push_back(*it); + for (auto& it : other._tags) { + _tags.push_back(it); } _physicalUuids.clear(); - for (auto it = other._physicalUuids.begin(); it != other._physicalUuids.end(); it++) { - _physicalUuids.push_back(*it); + for (auto& it : other._physicalUuids) { + _physicalUuids.push_back(it); } _appearanceUuids.clear(); - for (auto it = other._appearanceUuids.begin(); it != other._appearanceUuids.end(); it++) { - _appearanceUuids.push_back(*it); + for (auto& it : other._appearanceUuids) { + _appearanceUuids.push_back(it); } _allUuids.clear(); - for (auto it = other._allUuids.begin(); it != other._allUuids.end(); it++) { - _allUuids.push_back(*it); + for (auto& it : other._allUuids) { + _allUuids.push_back(it); } // Create copies of the properties rather than modify the originals _physical.clear(); - for (auto it = other._physical.begin(); it != other._physical.end(); it++) { - MaterialProperty prop(it->second); - _physical[it->first] = std::make_shared(prop); + for (auto& it : other._physical) { + MaterialProperty prop(it.second); + _physical[it.first] = std::make_shared(prop); } _appearance.clear(); - for (auto it = other._appearance.begin(); it != other._appearance.end(); it++) { - MaterialProperty prop(it->second); - _appearance[it->first] = std::make_shared(prop); + for (auto& it : other._appearance) { + MaterialProperty prop(it.second); + _appearance[it.first] = std::make_shared(prop); } return *this; @@ -1351,11 +1383,11 @@ QStringList Material::normalizeModels(const QStringList& models) ModelManager manager; - for (auto uuid : models) { + for (auto& uuid : models) { auto model = manager.getModel(uuid); bool found = false; - for (auto childUuid : models) { + for (auto& childUuid : models) { if (uuid != childUuid) { auto childModel = manager.getModel(childUuid); if (childModel->inherits(childUuid)) { @@ -1377,16 +1409,16 @@ QStringList Material::normalizeModels(const QStringList& models) * Set or change the base material for the current material, updating the properties as * required. */ -void Material::updateInheritance([[maybe_unused]]const QString& parent) +void Material::updateInheritance([[maybe_unused]] const QString& parent) {} /* * Return a list of models that are defined in the parent material but not in this one */ -QStringList Material::inheritedMissingModels(const Material& parent) +QStringList Material::inheritedMissingModels(const Material& parent) const { QStringList missing; - for (auto uuid : parent._allUuids) { + for (auto& uuid : parent._allUuids) { if (!hasModel(uuid)) { missing << uuid; } @@ -1398,10 +1430,10 @@ QStringList Material::inheritedMissingModels(const Material& parent) /* * Return a list of models that are defined in this model but not the parent */ -QStringList Material::inheritedAddedModels(const Material& parent) +QStringList Material::inheritedAddedModels(const Material& parent) const { QStringList added; - for (auto uuid : _allUuids) { + for (auto& uuid : _allUuids) { if (!parent.hasModel(uuid)) { added << uuid; } @@ -1413,5 +1445,5 @@ QStringList Material::inheritedAddedModels(const Material& parent) /* * Return a list of properties that have different values from the parent material */ -void Material::inheritedPropertyDiff([[maybe_unused]]const QString& parent) +void Material::inheritedPropertyDiff([[maybe_unused]] const QString& parent) {} diff --git a/src/Mod/Material/App/Materials.h b/src/Mod/Material/App/Materials.h index 0749c6684f..c1c0d7c1fc 100644 --- a/src/Mod/Material/App/Materials.h +++ b/src/Mod/Material/App/Materials.h @@ -34,6 +34,7 @@ #include +#include "MaterialValue.h" #include "Model.h" namespace Materials @@ -47,9 +48,9 @@ class MaterialsExport MaterialProperty: public ModelProperty public: MaterialProperty(); - MaterialProperty(const MaterialProperty& property); - explicit MaterialProperty(const ModelProperty& property); - explicit MaterialProperty(std::shared_ptr property); + MaterialProperty(const MaterialProperty& other); + explicit MaterialProperty(const ModelProperty& other); + explicit MaterialProperty(const std::shared_ptr& other); ~MaterialProperty() override = default; MaterialValue::ValueType getType() const @@ -58,15 +59,24 @@ public: } const QString getModelUUID() const; - const QVariant getValue() const; + QVariant getValue(); + QVariant getValue() const; + QList getList() + { + return _valuePtr->getList(); + } + QList getList() const + { + return _valuePtr->getList(); + } bool isNull() const { return _valuePtr->isNull(); } std::shared_ptr getMaterialValue(); - const std::shared_ptr getMaterialValue() const; - const QString getString() const; - const QString getYAMLString() const; + std::shared_ptr getMaterialValue() const; + QString getString() const; + QString getYAMLString() const; bool getBoolean() const; int getInt() const; double getFloat() const; @@ -83,7 +93,7 @@ public: void setPropertyType(const QString& type) override; void setValue(const QVariant& value); void setValue(const QString& value); - void setValue(std::shared_ptr value); + void setValue(const std::shared_ptr& value); void setString(const QString& value); void setBoolean(bool value); void setBoolean(int value); @@ -95,14 +105,12 @@ public: void setQuantity(const Base::Quantity& value); void setQuantity(double value, const QString& units); void setQuantity(const QString& value); + void setList(const QList& value); void setURL(const QString& value); MaterialProperty& operator=(const MaterialProperty& other); - friend QTextStream& operator<<(QTextStream& output, const MaterialProperty& property) - { - output << property.getName() << ": " << property.getYAMLString(); - return output; - } + friend QTextStream& operator<<(QTextStream& output, const MaterialProperty& property); + bool operator==(const MaterialProperty& other) const; bool operator!=(const MaterialProperty& other) const { @@ -111,10 +119,13 @@ public: // void save(QTextStream& stream); + // Define precision for displaying floating point values + static int const PRECISION; + protected: void setType(const QString& type); // void setType(MaterialValue::ValueType type) { _valueType = type; } - void copyValuePtr(std::shared_ptr value); + void copyValuePtr(const std::shared_ptr& value); void addColumn(MaterialProperty& column) { @@ -140,7 +151,7 @@ public: }; Material(); - Material(std::shared_ptr library, + Material(const std::shared_ptr& library, const QString& directory, const QString& uuid, const QString& name); @@ -151,40 +162,40 @@ public: { return _library; } - const QString getDirectory() const + QString getDirectory() const { return _directory; } - const QString getUUID() const + QString getUUID() const { return _uuid; } - const QString getName() const + QString getName() const { return _name; } - const QString getAuthorAndLicense() const; - const QString getAuthor() const + QString getAuthorAndLicense() const; + QString getAuthor() const { return _author; } - const QString getLicense() const + QString getLicense() const { return _license; } - const QString getParentUUID() const + QString getParentUUID() const { return _parentUuid; } - const QString getDescription() const + QString getDescription() const { return _description; } - const QString getURL() const + QString getURL() const { return _url; } - const QString getReference() const + QString getReference() const { return _reference; } @@ -205,7 +216,7 @@ public: return &_appearanceUuids; } - void setLibrary(std::shared_ptr library) + void setLibrary(const std::shared_ptr& library) { _library = library; } @@ -259,22 +270,24 @@ public: void setPhysicalValue(const QString& name, const QString& value); void setPhysicalValue(const QString& name, int value); void setPhysicalValue(const QString& name, double value); - void setPhysicalValue(const QString& name, const Base::Quantity value); - void setPhysicalValue(const QString& name, std::shared_ptr value); + void setPhysicalValue(const QString& name, const Base::Quantity& value); + void setPhysicalValue(const QString& name, const std::shared_ptr& value); + void setPhysicalValue(const QString& name, const std::shared_ptr>& value); void setAppearanceValue(const QString& name, const QString& value); - void setAppearanceValue(const QString& name, std::shared_ptr value); + void setAppearanceValue(const QString& name, const std::shared_ptr& value); + void setAppearanceValue(const QString& name, const std::shared_ptr>& value); std::shared_ptr getPhysicalProperty(const QString& name); - const std::shared_ptr getPhysicalProperty(const QString& name) const; + std::shared_ptr getPhysicalProperty(const QString& name) const; std::shared_ptr getAppearanceProperty(const QString& name); - const std::shared_ptr getAppearanceProperty(const QString& name) const; - const QVariant getPhysicalValue(const QString& name) const; - const Base::Quantity getPhysicalQuantity(const QString& name) const; - const QString getPhysicalValueString(const QString& name) const; - const QVariant getAppearanceValue(const QString& name) const; - const Base::Quantity getAppearanceQuantity(const QString& name) const; - const QString getAppearanceValueString(const QString& name) const; + std::shared_ptr getAppearanceProperty(const QString& name) const; + QVariant getPhysicalValue(const QString& name) const; + Base::Quantity getPhysicalQuantity(const QString& name) const; + QString getPhysicalValueString(const QString& name) const; + QVariant getAppearanceValue(const QString& name) const; + Base::Quantity getAppearanceQuantity(const QString& name) const; + QString getAppearanceValueString(const QString& name) const; bool hasPhysicalProperty(const QString& name) const; bool hasAppearanceProperty(const QString& name) const; @@ -312,7 +325,7 @@ public: /* * Normalize models by removing any inherited models */ - QStringList normalizeModels(const QStringList& models); + static QStringList normalizeModels(const QStringList& models); /* * Set or change the base material for the current material, updating the properties as @@ -322,36 +335,35 @@ public: /* * Return a list of models that are defined in the parent material but not in this one */ - QStringList inheritedMissingModels(const Material& parent); + QStringList inheritedMissingModels(const Material& parent) const; /* * Return a list of models that are defined in this model but not the parent */ - QStringList inheritedAddedModels(const Material& parent); + QStringList inheritedAddedModels(const Material& parent) const; /* * Return a list of properties that have different values from the parent material */ void inheritedPropertyDiff(const QString& parent); - void save(QTextStream& stream, bool saveAsCopy, bool saveInherited); + void save(QTextStream& stream, bool overwrite, bool saveAsCopy, bool saveInherited); Material& operator=(const Material& other); protected: void addModel(const QString& uuid); - void removeModel(const QString& uuid); - void removeUUID(QStringList& uuidList, const QString& uuid); + static void removeUUID(QStringList& uuidList, const QString& uuid); - const QVariant + static QVariant getValue(const std::map>& propertyList, - const QString& name) const; - const QString + const QString& name); + static QString getValueString(const std::map>& propertyList, - const QString& name) const; + const QString& name); - bool modelChanged(const std::shared_ptr parent, - const std::shared_ptr model) const; - bool modelAppearanceChanged(const std::shared_ptr parent, - const std::shared_ptr model) const; + bool modelChanged(const std::shared_ptr& parent, + const std::shared_ptr& model) const; + bool modelAppearanceChanged(const std::shared_ptr& parent, + const std::shared_ptr& model) const; void saveGeneral(QTextStream& stream) const; void saveInherits(QTextStream& stream) const; void saveModels(QTextStream& stream, bool saveInherited) const; @@ -378,7 +390,13 @@ private: ModelEdit _editState; }; -typedef FolderTreeNode MaterialTreeNode; +inline QTextStream& operator<<(QTextStream& output, const MaterialProperty& property) +{ + output << MaterialValue::escapeString(property.getName()) << ": " << property.getYAMLString(); + return output; +} + +using MaterialTreeNode = FolderTreeNode; } // namespace Materials diff --git a/src/Mod/Material/App/ModelLoader.cpp b/src/Mod/Material/App/ModelLoader.cpp index ecf3fb1d77..3976f2a28c 100644 --- a/src/Mod/Material/App/ModelLoader.cpp +++ b/src/Mod/Material/App/ModelLoader.cpp @@ -37,7 +37,7 @@ using namespace Materials; -ModelEntry::ModelEntry(std::shared_ptr library, +ModelEntry::ModelEntry(const std::shared_ptr& library, const QString& baseName, const QString& modelName, const QString& dir, @@ -228,8 +228,6 @@ void ModelLoader::addToTree(std::shared_ptr model, auto directory = model->getDirectory(); auto uuid = model->getUUID(); - QString version = yamlValue(yamlModel["General"], "Version", ""); - QString description = yamlValue(yamlModel[base], "Description", ""); QString url = yamlValue(yamlModel[base], "URL", ""); QString doi = yamlValue(yamlModel[base], "DOI", ""); @@ -273,7 +271,7 @@ void ModelLoader::addToTree(std::shared_ptr model, // Base::Console().Log("Reading columns\n"); // Read the columns auto cols = yamlProp["Columns"]; - for (auto col : cols) { + for (const auto& col : cols) { std::string colName = col.first.as(); // Base::Console().Log("\tColumns '%s'\n", colName.c_str()); @@ -316,8 +314,6 @@ void ModelLoader::loadLibrary(std::shared_ptr library) QFileInfo file(pathname); if (file.isFile()) { if (file.suffix().toStdString() == "yml") { - QString libraryName = file.baseName(); - try { auto model = getModelFromPath(library, file.canonicalFilePath()); (*_modelEntryMap)[model->getUUID()] = model; diff --git a/src/Mod/Material/App/ModelLoader.h b/src/Mod/Material/App/ModelLoader.h index 9db76092b3..3497510993 100644 --- a/src/Mod/Material/App/ModelLoader.h +++ b/src/Mod/Material/App/ModelLoader.h @@ -36,7 +36,7 @@ namespace Materials class ModelEntry { public: - ModelEntry(std::shared_ptr library, + ModelEntry(const std::shared_ptr& library, const QString& baseName, const QString& modelName, const QString& dir, diff --git a/src/Mod/Material/App/ModelManager.cpp b/src/Mod/Material/App/ModelManager.cpp index 88d4e85012..799be693fb 100644 --- a/src/Mod/Material/App/ModelManager.cpp +++ b/src/Mod/Material/App/ModelManager.cpp @@ -99,7 +99,7 @@ std::shared_ptr ModelManager::getModelByPath(const QString& path) const { QString cleanPath = QDir::cleanPath(path); - for (auto library : *_libraryList) { + for (auto& library : *_libraryList) { // Base::Console().Log("ModelManager::getModelByPath() Checking library '%s'->'%s'\n", // library->getName().toStdString().c_str(), // library->getDirectory().toStdString().c_str()); @@ -127,7 +127,7 @@ std::shared_ptr ModelManager::getModelByPath(const QString& path, const Q std::shared_ptr ModelManager::getLibrary(const QString& name) const { - for (auto library : *_libraryList) { + for (auto& library : *_libraryList) { if (library->getName() == name) { return library; } diff --git a/src/Mod/Material/App/ModelManager.h b/src/Mod/Material/App/ModelManager.h index 9d64ea49a9..9ded3b3c78 100644 --- a/src/Mod/Material/App/ModelManager.h +++ b/src/Mod/Material/App/ModelManager.h @@ -33,7 +33,6 @@ #include "Model.h" #include "ModelLibrary.h" - namespace Materials { diff --git a/src/Mod/Material/App/ModelUuids.cpp b/src/Mod/Material/App/ModelUuids.cpp index 78c02ace68..270eb6f9a6 100644 --- a/src/Mod/Material/App/ModelUuids.cpp +++ b/src/Mod/Material/App/ModelUuids.cpp @@ -68,3 +68,6 @@ const QString ModelUUIDs::ModelUUID_Rendering_Advanced = QString::fromStdString("c880f092-cdae-43d6-a24b-55e884aacbbf"); const QString ModelUUIDs::ModelUUID_Rendering_Vector = QString::fromStdString("fdf5a80e-de50-4157-b2e5-b6e5f88b680e"); + +const QString ModelUUIDs::ModelUUID_Test_Material = + QString::fromStdString("c6c64159-19c1-40b5-859c-10561f20f979"); diff --git a/src/Mod/Material/App/ModelUuids.h b/src/Mod/Material/App/ModelUuids.h index db667940db..97b82fe91f 100644 --- a/src/Mod/Material/App/ModelUuids.h +++ b/src/Mod/Material/App/ModelUuids.h @@ -65,6 +65,8 @@ public: static const QString ModelUUID_Rendering_Texture; static const QString ModelUUID_Rendering_Advanced; static const QString ModelUUID_Rendering_Vector; + + static const QString ModelUUID_Test_Material; }; } // namespace Materials diff --git a/src/Mod/Material/CMakeLists.txt b/src/Mod/Material/CMakeLists.txt index 03beeb66c3..79db6e584c 100644 --- a/src/Mod/Material/CMakeLists.txt +++ b/src/Mod/Material/CMakeLists.txt @@ -32,133 +32,133 @@ SET(Material_Icon_Files # collect all the material cards: # FILE( GLOB MaterialLib_Files ./StandardMaterial/*.FCMat ./StandardMaterial/*.txt ) SET(MaterialLib_Files - Resources/Materials/StandardMaterial/Aggregate/Concrete-EN-C35_45.FCMat - Resources/Materials/StandardMaterial/Aggregate/Concrete-Generic.FCMat - Resources/Materials/StandardMaterial/Aggregate/Reinforcement-FIB-B500.FCMat - Resources/Materials/StandardMaterial/Carbon/Graphite.FCMat - Resources/Materials/StandardMaterial/Glass/Glass-E-GlassFibre.FCMat - Resources/Materials/StandardMaterial/Glass/Glass-Generic.FCMat - Resources/Materials/StandardMaterial/Glass/Glass-S2-GlassFibre.FCMat - Resources/Materials/StandardMaterial/Metal/Alloys/Invar-Generic.FCMat - Resources/Materials/StandardMaterial/Metal/Aluminum/AlMg3F24.FCMat - Resources/Materials/StandardMaterial/Metal/Aluminum/AlMgSi1F31.FCMat - Resources/Materials/StandardMaterial/Metal/Aluminum/Aluminum-6061-T6.FCMat - Resources/Materials/StandardMaterial/Metal/Aluminum/Aluminum-Generic.FCMat - Resources/Materials/StandardMaterial/Metal/Aluminum/AlZn4-5Mg1F35.FCMat - Resources/Materials/StandardMaterial/Metal/Copper/Copper-Generic.FCMat - Resources/Materials/StandardMaterial/Metal/Iron/Iron-Generic.FCMat - Resources/Materials/StandardMaterial/Metal/Steel/CalculiX-Steel.FCMat - Resources/Materials/StandardMaterial/Metal/Steel/Steel-15CrNi6.FCMat - Resources/Materials/StandardMaterial/Metal/Steel/Steel-17CrNiMo6.FCMat - Resources/Materials/StandardMaterial/Metal/Steel/Steel-1C22.FCMat - Resources/Materials/StandardMaterial/Metal/Steel/Steel-1C35.FCMat - Resources/Materials/StandardMaterial/Metal/Steel/Steel-1C45.FCMat - Resources/Materials/StandardMaterial/Metal/Steel/Steel-1C60.FCMat - Resources/Materials/StandardMaterial/Metal/Steel/Steel-20NiCrMo2.FCMat - Resources/Materials/StandardMaterial/Metal/Steel/Steel-28Mn6.FCMat - Resources/Materials/StandardMaterial/Metal/Steel/Steel-2C10.FCMat - Resources/Materials/StandardMaterial/Metal/Steel/Steel-30CrNiMo8.FCMat - Resources/Materials/StandardMaterial/Metal/Steel/Steel-34CrNiMo6.FCMat - Resources/Materials/StandardMaterial/Metal/Steel/Steel-36CrNiMo4.FCMat - Resources/Materials/StandardMaterial/Metal/Steel/Steel-36NiCrMo16.FCMat - Resources/Materials/StandardMaterial/Metal/Steel/Steel-3C15.FCMat - Resources/Materials/StandardMaterial/Metal/Steel/Steel-3C22.FCMat - Resources/Materials/StandardMaterial/Metal/Steel/Steel-3C35.FCMat - Resources/Materials/StandardMaterial/Metal/Steel/Steel-3V45.FCMat - Resources/Materials/StandardMaterial/Metal/Steel/Steel-C10.FCMat - Resources/Materials/StandardMaterial/Metal/Steel/Steel-C15.FCMat - Resources/Materials/StandardMaterial/Metal/Steel/Steel-C22E.FCMat - Resources/Materials/StandardMaterial/Metal/Steel/Steel-C25E.FCMat - Resources/Materials/StandardMaterial/Metal/Steel/Steel-C30E.FCMat - Resources/Materials/StandardMaterial/Metal/Steel/Steel-C40E.FCMat - Resources/Materials/StandardMaterial/Metal/Steel/Steel-C50E.FCMat - Resources/Materials/StandardMaterial/Metal/Steel/Steel-C55E.FCMat - Resources/Materials/StandardMaterial/Metal/Steel/Steel-C60E.FCMat - Resources/Materials/StandardMaterial/Metal/Steel/Steel-E295-GC.FCMat - Resources/Materials/StandardMaterial/Metal/Steel/Steel-E295.FCMat - Resources/Materials/StandardMaterial/Metal/Steel/Steel-E335-GC.FCMat - Resources/Materials/StandardMaterial/Metal/Steel/Steel-E335.FCMat - Resources/Materials/StandardMaterial/Metal/Steel/Steel-E360-GC.FCMat - Resources/Materials/StandardMaterial/Metal/Steel/Steel-E360.FCMat - Resources/Materials/StandardMaterial/Metal/Steel/Steel-EN-GJL-100.FCMat - Resources/Materials/StandardMaterial/Metal/Steel/Steel-EN-GJL-150.FCMat - Resources/Materials/StandardMaterial/Metal/Steel/Steel-EN-GJL-200.FCMat - Resources/Materials/StandardMaterial/Metal/Steel/Steel-EN-GJL-250.FCMat - Resources/Materials/StandardMaterial/Metal/Steel/Steel-EN-GJL-300.FCMat - Resources/Materials/StandardMaterial/Metal/Steel/Steel-EN-GJL-350.FCMat - Resources/Materials/StandardMaterial/Metal/Steel/Steel-EN-GJMB-350-10.FCMat - Resources/Materials/StandardMaterial/Metal/Steel/Steel-EN-GJMB-550-4.FCMat - Resources/Materials/StandardMaterial/Metal/Steel/Steel-EN-GJMB-650-2.FCMat - Resources/Materials/StandardMaterial/Metal/Steel/Steel-EN-GJMW-350-4.FCMat - Resources/Materials/StandardMaterial/Metal/Steel/Steel-EN-GJMW-360-12.FCMat - Resources/Materials/StandardMaterial/Metal/Steel/Steel-EN-GJMW-400-5.FCMat - Resources/Materials/StandardMaterial/Metal/Steel/Steel-EN-GJMW-450-7.FCMat - Resources/Materials/StandardMaterial/Metal/Steel/Steel-EN-GJS-400-15.FCMat - Resources/Materials/StandardMaterial/Metal/Steel/Steel-EN-GJS-500-7.FCMat - Resources/Materials/StandardMaterial/Metal/Steel/Steel-EN-GJS-600-3.FCMat - Resources/Materials/StandardMaterial/Metal/Steel/Steel-EN-GJS-700-2.FCMat - Resources/Materials/StandardMaterial/Metal/Steel/Steel-EN-GJS-800-1.FCMat - Resources/Materials/StandardMaterial/Metal/Steel/Steel-G16Mn5.FCMat - Resources/Materials/StandardMaterial/Metal/Steel/Steel-G200.FCMat - Resources/Materials/StandardMaterial/Metal/Steel/Steel-G20Mn5.FCMat - Resources/Materials/StandardMaterial/Metal/Steel/Steel-G230.FCMat - Resources/Materials/StandardMaterial/Metal/Steel/Steel-G260.FCMat - Resources/Materials/StandardMaterial/Metal/Steel/Steel-G300.FCMat - Resources/Materials/StandardMaterial/Metal/Steel/Steel-G30Mn5.FCMat - Resources/Materials/StandardMaterial/Metal/Steel/Steel-Generic.FCMat - Resources/Materials/StandardMaterial/Metal/Steel/Steel-S185.FCMat - Resources/Materials/StandardMaterial/Metal/Steel/Steel-S235JO.FCMat - Resources/Materials/StandardMaterial/Metal/Steel/Steel-S235JR.FCMat - Resources/Materials/StandardMaterial/Metal/Steel/Steel-S235JRG1.FCMat - Resources/Materials/StandardMaterial/Metal/Steel/Steel-S260NC.FCMat - Resources/Materials/StandardMaterial/Metal/Steel/Steel-S275JO.FCMat - Resources/Materials/StandardMaterial/Metal/Steel/Steel-S275JR.FCMat - Resources/Materials/StandardMaterial/Metal/Steel/Steel-S275N.FCMat - Resources/Materials/StandardMaterial/Metal/Steel/Steel-S335JO.FCMat - Resources/Materials/StandardMaterial/Metal/Steel/Steel-S335JR.FCMat - Resources/Materials/StandardMaterial/Metal/Steel/Steel-S335N.FCMat - Resources/Materials/StandardMaterial/Metal/Steel/Steel-S340MC.FCMat - Resources/Materials/StandardMaterial/Metal/Steel/Steel-S355J2G3.FCMat - Resources/Materials/StandardMaterial/Metal/Steel/Steel-S380MC.FCMat - Resources/Materials/StandardMaterial/Metal/Steel/Steel-S420MC.FCMat - Resources/Materials/StandardMaterial/Metal/Steel/Steel-S420N.FCMat - Resources/Materials/StandardMaterial/Metal/Steel/Steel-S460MC.FCMat - Resources/Materials/StandardMaterial/Metal/Steel/Steel-S460N.FCMat - Resources/Materials/StandardMaterial/Metal/Steel/Steel-S500MC.FCMat - Resources/Materials/StandardMaterial/Metal/Steel/Steel-S550MC.FCMat - Resources/Materials/StandardMaterial/Metal/Steel/Steel-S690MC.FCMat - Resources/Materials/StandardMaterial/Metal/Steel/Steel-St-37-2K.FCMat - Resources/Materials/StandardMaterial/Metal/Steel/Steel-St-E-255.FCMat - Resources/Materials/StandardMaterial/Metal/Steel/Steel-St-E-315.FCMat - Resources/Materials/StandardMaterial/Metal/Steel/Steel-St-E-380.FCMat - Resources/Materials/StandardMaterial/Metal/Steel/Steel-St-E-460.FCMat - Resources/Materials/StandardMaterial/Metal/Steel/Steel-St-E-500.FCMat - Resources/Materials/StandardMaterial/Metal/Steel/Steel-X2CrNiMoN17-13-3.FCMat - Resources/Materials/StandardMaterial/Metal/Steel/Steel-X2CrNiN24-4.FCMat - Resources/Materials/StandardMaterial/Metal/Steel/Steel-X39CrMo17-1.FCMat - Resources/Materials/StandardMaterial/Metal/Steel/Steel-X3CrNiMo13-14.FCMat - Resources/Materials/StandardMaterial/Metal/Steel/Steel-X5CrNi18-10.FCMat - Resources/Materials/StandardMaterial/Metal/Steel/Steel-X5CrNiMo17-12-2.FCMat - Resources/Materials/StandardMaterial/Metal/Steel/Steel-X6CrNiTi18-10.FCMat - Resources/Materials/StandardMaterial/Metal/Titanium/Ti-6Al-4V.FCMat - Resources/Materials/StandardMaterial/Thermoplast/ABS-Generic.FCMat - Resources/Materials/StandardMaterial/Thermoplast/Acrylic-Glass-Generic.FCMat - Resources/Materials/StandardMaterial/Thermoplast/PA6-Generic.FCMat - Resources/Materials/StandardMaterial/Thermoplast/PET-Generic.FCMat - Resources/Materials/StandardMaterial/Thermoplast/PLA-Generic.FCMat - Resources/Materials/StandardMaterial/Thermoplast/PP-Generic.FCMat - Resources/Materials/StandardMaterial/Thermoplast/PTFE-Generic.FCMat - Resources/Materials/StandardMaterial/Thermoplast/PVC-Generic.FCMat - Resources/Materials/StandardMaterial/Wood/Wood-Generic.FCMat + Resources/Materials/Standard/Aggregate/Concrete-EN-C35_45.FCMat + Resources/Materials/Standard/Aggregate/Concrete-Generic.FCMat + Resources/Materials/Standard/Aggregate/Reinforcement-FIB-B500.FCMat + Resources/Materials/Standard/Carbon/Graphite.FCMat + Resources/Materials/Standard/Glass/Glass-E-GlassFibre.FCMat + Resources/Materials/Standard/Glass/Glass-Generic.FCMat + Resources/Materials/Standard/Glass/Glass-S2-GlassFibre.FCMat + Resources/Materials/Standard/Metal/Alloys/Invar-Generic.FCMat + Resources/Materials/Standard/Metal/Aluminum/AlMg3F24.FCMat + Resources/Materials/Standard/Metal/Aluminum/AlMgSi1F31.FCMat + Resources/Materials/Standard/Metal/Aluminum/Aluminum-6061-T6.FCMat + Resources/Materials/Standard/Metal/Aluminum/Aluminum-Generic.FCMat + Resources/Materials/Standard/Metal/Aluminum/AlZn4-5Mg1F35.FCMat + Resources/Materials/Standard/Metal/Copper/Copper-Generic.FCMat + Resources/Materials/Standard/Metal/Iron/Iron-Generic.FCMat + Resources/Materials/Standard/Metal/Steel/CalculiX-Steel.FCMat + Resources/Materials/Standard/Metal/Steel/Steel-15CrNi6.FCMat + Resources/Materials/Standard/Metal/Steel/Steel-17CrNiMo6.FCMat + Resources/Materials/Standard/Metal/Steel/Steel-1C22.FCMat + Resources/Materials/Standard/Metal/Steel/Steel-1C35.FCMat + Resources/Materials/Standard/Metal/Steel/Steel-1C45.FCMat + Resources/Materials/Standard/Metal/Steel/Steel-1C60.FCMat + Resources/Materials/Standard/Metal/Steel/Steel-20NiCrMo2.FCMat + Resources/Materials/Standard/Metal/Steel/Steel-28Mn6.FCMat + Resources/Materials/Standard/Metal/Steel/Steel-2C10.FCMat + Resources/Materials/Standard/Metal/Steel/Steel-30CrNiMo8.FCMat + Resources/Materials/Standard/Metal/Steel/Steel-34CrNiMo6.FCMat + Resources/Materials/Standard/Metal/Steel/Steel-36CrNiMo4.FCMat + Resources/Materials/Standard/Metal/Steel/Steel-36NiCrMo16.FCMat + Resources/Materials/Standard/Metal/Steel/Steel-3C15.FCMat + Resources/Materials/Standard/Metal/Steel/Steel-3C22.FCMat + Resources/Materials/Standard/Metal/Steel/Steel-3C35.FCMat + Resources/Materials/Standard/Metal/Steel/Steel-3V45.FCMat + Resources/Materials/Standard/Metal/Steel/Steel-C10.FCMat + Resources/Materials/Standard/Metal/Steel/Steel-C15.FCMat + Resources/Materials/Standard/Metal/Steel/Steel-C22E.FCMat + Resources/Materials/Standard/Metal/Steel/Steel-C25E.FCMat + Resources/Materials/Standard/Metal/Steel/Steel-C30E.FCMat + Resources/Materials/Standard/Metal/Steel/Steel-C40E.FCMat + Resources/Materials/Standard/Metal/Steel/Steel-C50E.FCMat + Resources/Materials/Standard/Metal/Steel/Steel-C55E.FCMat + Resources/Materials/Standard/Metal/Steel/Steel-C60E.FCMat + Resources/Materials/Standard/Metal/Steel/Steel-E295-GC.FCMat + Resources/Materials/Standard/Metal/Steel/Steel-E295.FCMat + Resources/Materials/Standard/Metal/Steel/Steel-E335-GC.FCMat + Resources/Materials/Standard/Metal/Steel/Steel-E335.FCMat + Resources/Materials/Standard/Metal/Steel/Steel-E360-GC.FCMat + Resources/Materials/Standard/Metal/Steel/Steel-E360.FCMat + Resources/Materials/Standard/Metal/Steel/Steel-EN-GJL-100.FCMat + Resources/Materials/Standard/Metal/Steel/Steel-EN-GJL-150.FCMat + Resources/Materials/Standard/Metal/Steel/Steel-EN-GJL-200.FCMat + Resources/Materials/Standard/Metal/Steel/Steel-EN-GJL-250.FCMat + Resources/Materials/Standard/Metal/Steel/Steel-EN-GJL-300.FCMat + Resources/Materials/Standard/Metal/Steel/Steel-EN-GJL-350.FCMat + Resources/Materials/Standard/Metal/Steel/Steel-EN-GJMB-350-10.FCMat + Resources/Materials/Standard/Metal/Steel/Steel-EN-GJMB-550-4.FCMat + Resources/Materials/Standard/Metal/Steel/Steel-EN-GJMB-650-2.FCMat + Resources/Materials/Standard/Metal/Steel/Steel-EN-GJMW-350-4.FCMat + Resources/Materials/Standard/Metal/Steel/Steel-EN-GJMW-360-12.FCMat + Resources/Materials/Standard/Metal/Steel/Steel-EN-GJMW-400-5.FCMat + Resources/Materials/Standard/Metal/Steel/Steel-EN-GJMW-450-7.FCMat + Resources/Materials/Standard/Metal/Steel/Steel-EN-GJS-400-15.FCMat + Resources/Materials/Standard/Metal/Steel/Steel-EN-GJS-500-7.FCMat + Resources/Materials/Standard/Metal/Steel/Steel-EN-GJS-600-3.FCMat + Resources/Materials/Standard/Metal/Steel/Steel-EN-GJS-700-2.FCMat + Resources/Materials/Standard/Metal/Steel/Steel-EN-GJS-800-1.FCMat + Resources/Materials/Standard/Metal/Steel/Steel-G16Mn5.FCMat + Resources/Materials/Standard/Metal/Steel/Steel-G200.FCMat + Resources/Materials/Standard/Metal/Steel/Steel-G20Mn5.FCMat + Resources/Materials/Standard/Metal/Steel/Steel-G230.FCMat + Resources/Materials/Standard/Metal/Steel/Steel-G260.FCMat + Resources/Materials/Standard/Metal/Steel/Steel-G300.FCMat + Resources/Materials/Standard/Metal/Steel/Steel-G30Mn5.FCMat + Resources/Materials/Standard/Metal/Steel/Steel-Generic.FCMat + Resources/Materials/Standard/Metal/Steel/Steel-S185.FCMat + Resources/Materials/Standard/Metal/Steel/Steel-S235JO.FCMat + Resources/Materials/Standard/Metal/Steel/Steel-S235JR.FCMat + Resources/Materials/Standard/Metal/Steel/Steel-S235JRG1.FCMat + Resources/Materials/Standard/Metal/Steel/Steel-S260NC.FCMat + Resources/Materials/Standard/Metal/Steel/Steel-S275JO.FCMat + Resources/Materials/Standard/Metal/Steel/Steel-S275JR.FCMat + Resources/Materials/Standard/Metal/Steel/Steel-S275N.FCMat + Resources/Materials/Standard/Metal/Steel/Steel-S335JO.FCMat + Resources/Materials/Standard/Metal/Steel/Steel-S335JR.FCMat + Resources/Materials/Standard/Metal/Steel/Steel-S335N.FCMat + Resources/Materials/Standard/Metal/Steel/Steel-S340MC.FCMat + Resources/Materials/Standard/Metal/Steel/Steel-S355J2G3.FCMat + Resources/Materials/Standard/Metal/Steel/Steel-S380MC.FCMat + Resources/Materials/Standard/Metal/Steel/Steel-S420MC.FCMat + Resources/Materials/Standard/Metal/Steel/Steel-S420N.FCMat + Resources/Materials/Standard/Metal/Steel/Steel-S460MC.FCMat + Resources/Materials/Standard/Metal/Steel/Steel-S460N.FCMat + Resources/Materials/Standard/Metal/Steel/Steel-S500MC.FCMat + Resources/Materials/Standard/Metal/Steel/Steel-S550MC.FCMat + Resources/Materials/Standard/Metal/Steel/Steel-S690MC.FCMat + Resources/Materials/Standard/Metal/Steel/Steel-St-37-2K.FCMat + Resources/Materials/Standard/Metal/Steel/Steel-St-E-255.FCMat + Resources/Materials/Standard/Metal/Steel/Steel-St-E-315.FCMat + Resources/Materials/Standard/Metal/Steel/Steel-St-E-380.FCMat + Resources/Materials/Standard/Metal/Steel/Steel-St-E-460.FCMat + Resources/Materials/Standard/Metal/Steel/Steel-St-E-500.FCMat + Resources/Materials/Standard/Metal/Steel/Steel-X2CrNiMoN17-13-3.FCMat + Resources/Materials/Standard/Metal/Steel/Steel-X2CrNiN24-4.FCMat + Resources/Materials/Standard/Metal/Steel/Steel-X39CrMo17-1.FCMat + Resources/Materials/Standard/Metal/Steel/Steel-X3CrNiMo13-14.FCMat + Resources/Materials/Standard/Metal/Steel/Steel-X5CrNi18-10.FCMat + Resources/Materials/Standard/Metal/Steel/Steel-X5CrNiMo17-12-2.FCMat + Resources/Materials/Standard/Metal/Steel/Steel-X6CrNiTi18-10.FCMat + Resources/Materials/Standard/Metal/Titanium/Ti-6Al-4V.FCMat + Resources/Materials/Standard/Thermoplast/ABS-Generic.FCMat + Resources/Materials/Standard/Thermoplast/Acrylic-Glass-Generic.FCMat + Resources/Materials/Standard/Thermoplast/PA6-Generic.FCMat + Resources/Materials/Standard/Thermoplast/PET-Generic.FCMat + Resources/Materials/Standard/Thermoplast/PLA-Generic.FCMat + Resources/Materials/Standard/Thermoplast/PP-Generic.FCMat + Resources/Materials/Standard/Thermoplast/PTFE-Generic.FCMat + Resources/Materials/Standard/Thermoplast/PVC-Generic.FCMat + Resources/Materials/Standard/Wood/Wood-Generic.FCMat ) SET(FluidMaterial_Files - Resources/Materials/FluidMaterial/None.FCMat - Resources/Materials/FluidMaterial/Air.FCMat - Resources/Materials/FluidMaterial/Argon.FCMat - Resources/Materials/FluidMaterial/Carbon_dioxide.FCMat - Resources/Materials/FluidMaterial/Nitrogen.FCMat - Resources/Materials/FluidMaterial/Water.FCMat + Resources/Materials/Fluid/None.FCMat + Resources/Materials/Fluid/Air.FCMat + Resources/Materials/Fluid/Argon.FCMat + Resources/Materials/Fluid/Carbon_dioxide.FCMat + Resources/Materials/Fluid/Nitrogen.FCMat + Resources/Materials/Fluid/Water.FCMat ) SET(AppearanceLib_Files @@ -186,6 +186,10 @@ SET(AppearanceLib_Files Resources/Materials/Appearance/Stone.FCMat ) +SET(MaterialTestLib_Files + "Resources/Materials/Test/Test Material.FCMat" +) + SET(MaterialModel_Files Resources/Models/Architectural/Architectural.yml Resources/Models/Costs/Costs.yml @@ -202,6 +206,7 @@ SET(MaterialModel_Files Resources/Models/Rendering/BasicRendering.yml Resources/Models/Rendering/TextureRendering.yml Resources/Models/Rendering/VectorRendering.yml + "Resources/Models/Test/Test Model.yml" Resources/Models/Thermal/Thermal.yml ) @@ -261,6 +266,9 @@ ADD_CUSTOM_TARGET(FluidMaterialLib ALL ADD_CUSTOM_TARGET(AppearanceLib ALL SOURCES ${AppearanceLib_Files} ) +ADD_CUSTOM_TARGET(MaterialTestLib ALL + SOURCES ${MaterialTestLib_Files} +) ADD_CUSTOM_TARGET(MaterialModelLib ALL SOURCES ${MaterialModel_Files} ) @@ -279,6 +287,10 @@ fc_target_copy_resource(AppearanceLib ${CMAKE_CURRENT_SOURCE_DIR} ${CMAKE_BINARY_DIR}/${CMAKE_INSTALL_DATADIR}/Mod/Material/ ${AppearanceLib_Files}) +fc_target_copy_resource(MaterialTestLib + ${CMAKE_CURRENT_SOURCE_DIR} + ${CMAKE_BINARY_DIR}/${CMAKE_INSTALL_DATADIR}/Mod/Material/ + ${MaterialTestLib_Files}) fc_target_copy_resource(MaterialModelLib ${CMAKE_CURRENT_SOURCE_DIR} ${CMAKE_BINARY_DIR}/${CMAKE_INSTALL_DATADIR}/Mod/Material/ @@ -294,7 +306,7 @@ INSTALL( DESTINATION Mod/Material/materialtests ) -foreach(file ${MaterialLib_Files} ${FluidMaterial_Files} ${AppearanceLib_Files} ${MaterialModel_Files}) +foreach(file ${MaterialLib_Files} ${FluidMaterial_Files} ${AppearanceLib_Files} ${MaterialTestLib_Files} ${MaterialModel_Files}) get_filename_component(filepath ${file} DIRECTORY) INSTALL( FILES ${file} diff --git a/src/Mod/Material/Gui/AppMatGui.cpp b/src/Mod/Material/Gui/AppMatGui.cpp index b424067ca3..ee972b41f9 100644 --- a/src/Mod/Material/Gui/AppMatGui.cpp +++ b/src/Mod/Material/Gui/AppMatGui.cpp @@ -56,8 +56,7 @@ public: initialize("This module is the MatGui module."); // register with Python } - ~Module() override - {} + ~Module() = default; private: }; diff --git a/src/Mod/Material/Gui/Array2D.cpp b/src/Mod/Material/Gui/Array2D.cpp index 799dec92f2..194b5dfd36 100644 --- a/src/Mod/Material/Gui/Array2D.cpp +++ b/src/Mod/Material/Gui/Array2D.cpp @@ -99,7 +99,7 @@ void Array2D::setupDefault() try { const Materials::MaterialProperty& column1 = _property->getColumn(0); - QString label = tr("Default ") + column1.getName(); + QString label(tr("Default ") + column1.getName()); ui->labelDefault->setText(label); if (column1.getPropertyType() == QString::fromStdString("Quantity")) { ui->editDefault->setMinimum(std::numeric_limits::min()); diff --git a/src/Mod/Material/Gui/Array3D.h b/src/Mod/Material/Gui/Array3D.h index 3ea9ccf216..28903b31b9 100644 --- a/src/Mod/Material/Gui/Array3D.h +++ b/src/Mod/Material/Gui/Array3D.h @@ -26,6 +26,7 @@ #include #include #include + #include namespace MatGui diff --git a/src/Mod/Material/Gui/ArrayModel.cpp b/src/Mod/Material/Gui/ArrayModel.cpp index 8c1156faeb..7c420a3495 100644 --- a/src/Mod/Material/Gui/ArrayModel.cpp +++ b/src/Mod/Material/Gui/ArrayModel.cpp @@ -21,7 +21,6 @@ #include "PreCompiled.h" #ifndef _PreComp_ -#include #endif #include diff --git a/src/Mod/Material/Gui/CMakeLists.txt b/src/Mod/Material/Gui/CMakeLists.txt index 78b6fa0638..f464cfdcf3 100644 --- a/src/Mod/Material/Gui/CMakeLists.txt +++ b/src/Mod/Material/Gui/CMakeLists.txt @@ -40,9 +40,11 @@ set(MatGui_UIC_SRCS Array2D.ui Array3D.ui DlgSettingsMaterial.ui + ListEdit.ui MaterialSave.ui MaterialsEditor.ui ModelSelect.ui + TextEdit.ui ) SET(MatGui_SRCS @@ -63,6 +65,11 @@ SET(MatGui_SRCS DlgSettingsMaterial.cpp DlgSettingsMaterial.h DlgSettingsMaterial.ui + ListModel.cpp + ListModel.h + ListEdit.cpp + ListEdit.h + ListEdit.ui MaterialDelegate.cpp MaterialDelegate.h MaterialSave.cpp @@ -76,6 +83,9 @@ SET(MatGui_SRCS ModelSelect.ui PreCompiled.cpp PreCompiled.h + TextEdit.cpp + TextEdit.h + TextEdit.ui Workbench.cpp Workbench.h ) @@ -87,8 +97,10 @@ if(FREECAD_USE_PCH) endif(FREECAD_USE_PCH) SET(MatGuiIcon_SVG + Resources/icons/list.svg Resources/icons/Materials_Edit.svg Resources/icons/MaterialWorkbench.svg + Resources/icons/multiline.svg Resources/icons/preferences-material.svg Resources/icons/preview-rendered.svg Resources/icons/preview-vector.svg diff --git a/src/Mod/Material/Gui/ListEdit.cpp b/src/Mod/Material/Gui/ListEdit.cpp new file mode 100644 index 0000000000..415b8886f8 --- /dev/null +++ b/src/Mod/Material/Gui/ListEdit.cpp @@ -0,0 +1,196 @@ +/*************************************************************************** + * Copyright (c) 2023 David Carter * + * * + * This file is part of FreeCAD. * + * * + * FreeCAD is free software: you can redistribute it and/or modify it * + * under the terms of the GNU Lesser General Public License as * + * published by the Free Software Foundation, either version 2.1 of the * + * License, or (at your option) any later version. * + * * + * FreeCAD is distributed in the hope that it will be useful, but * + * WITHOUT ANY WARRANTY; without even the implied warranty of * + * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU * + * Lesser General Public License for more details. * + * * + * You should have received a copy of the GNU Lesser General Public * + * License along with FreeCAD. If not, see * + * . * + * * + **************************************************************************/ + +#include "PreCompiled.h" +#ifndef _PreComp_ +#include +#endif + +#include + +#include + +#include +#include + +#include "ArrayDelegate.h" +#include "ArrayModel.h" +#include "ListEdit.h" +#include "ListModel.h" +#include "ui_ListEdit.h" + + +using namespace MatGui; + +/* TRANSLATOR MatGui::ListEdit */ + +ListEdit::ListEdit(const QString& propertyName, + std::shared_ptr material, + QWidget* parent) + : QDialog(parent) + , ui(new Ui_ListEdit) + , _material(material) +{ + ui->setupUi(this); + + if (material->hasPhysicalProperty(propertyName)) { + _property = material->getPhysicalProperty(propertyName); + } + else if (material->hasAppearanceProperty(propertyName)) { + _property = material->getAppearanceProperty(propertyName); + } + else { + Base::Console().Log("Property '%s' not found\n", propertyName.toStdString().c_str()); + _property = nullptr; + } + if (_property) { + Base::Console().Log("Value type %d\n", + static_cast(_property->getMaterialValue()->getType())); + _value = _property->getList(); + } + else { + Base::Console().Log("No value loaded\n"); + } + // if (_value) { + // Base::Console().Log("Value type %d\n", static_cast(_value->getType())); + // } + + setupListView(); + + // ui->listView->setContextMenuPolicy(Qt::CustomContextMenu); + // connect(ui->listView, &QWidget::customContextMenuRequested, this, &ListEdit::onContextMenu); + + // _deleteAction.setText(tr("Delete row")); + // _deleteAction.setShortcut(Qt::Key_Delete); + // connect(&_deleteAction, &QAction::triggered, this, &ListEdit::onDelete); + // ui->listView->addAction(&_deleteAction); + + connect(ui->standardButtons, &QDialogButtonBox::accepted, this, &ListEdit::accept); + connect(ui->standardButtons, &QDialogButtonBox::rejected, this, &ListEdit::reject); +} + +void ListEdit::setColumnDelegates(QListView* list) +{ + int length = _property->columns(); + for (int i = 0; i < length; i++) { + const Materials::MaterialProperty& column = _property->getColumn(i); + list->setItemDelegateForColumn( + i, + new ArrayDelegate(column.getType(), column.getUnits(), this)); + } +} + +void ListEdit::setupListView() +{ + if (_property == nullptr) { + return; + } + + auto list = ui->listView; + auto model = new ListModel(_property, _value, this); + list->setModel(model); + // table->setEditTriggers(QAbstractItemView::AllEditTriggers); + list->setSelectionMode(QAbstractItemView::SingleSelection); + + // setColumnWidths(list); + // setColumnDelegates(list); + connect(model, &QAbstractItemModel::dataChanged, this, &ListEdit::onDataChanged); +} + +void ListEdit::onDataChanged(const QModelIndex& topLeft, + const QModelIndex& bottomRight, + const QVector& roles) +{ + Q_UNUSED(topLeft) + Q_UNUSED(bottomRight) + Q_UNUSED(roles) + + _material->setEditStateAlter(); +} + +bool ListEdit::newRow(const QModelIndex& index) +{ + ListModel* model = static_cast(ui->listView->model()); + return model->newRow(index); +} + +void ListEdit::onDelete(bool checked) +{ + Q_UNUSED(checked) + + Base::Console().Log("ListEdit::onDelete()\n"); + QItemSelectionModel* selectionModel = ui->listView->selectionModel(); + if (!selectionModel->hasSelection() || newRow(selectionModel->currentIndex())) { + Base::Console().Log("\tNothing selected\n"); + return; + } + + int res = confirmDelete(); + if (res == QMessageBox::Cancel) { + return; + } +} + +int ListEdit::confirmDelete() +{ + QMessageBox box(this); + box.setIcon(QMessageBox::Question); + box.setWindowTitle(QObject::tr("Confirm Delete")); + + QString prompt = QObject::tr("Are you sure you want to delete the row?"); + box.setText(prompt); + + box.setStandardButtons(QMessageBox::Ok | QMessageBox::Cancel); + box.setDefaultButton(QMessageBox::Cancel); + box.setEscapeButton(QMessageBox::Cancel); + + int res = QMessageBox::Cancel; + box.adjustSize(); // Silence warnings from Qt on Windows + switch (box.exec()) { + case QMessageBox::Ok: + deleteSelected(); + res = QMessageBox::Ok; + break; + } + + return res; +} + +void ListEdit::deleteSelected() +{ + ListModel* model = static_cast(ui->listView->model()); + QItemSelectionModel* selectionModel = ui->listView->selectionModel(); + auto index = selectionModel->currentIndex(); + model->deleteRow(index); +} + +void ListEdit::accept() +{ + _property->setList(_value); + QDialog::accept(); +} + +void ListEdit::reject() +{ + QDialog::reject(); +} + +#include "moc_ListEdit.cpp" diff --git a/src/Mod/Material/Gui/ListEdit.h b/src/Mod/Material/Gui/ListEdit.h new file mode 100644 index 0000000000..af1d6ad8d8 --- /dev/null +++ b/src/Mod/Material/Gui/ListEdit.h @@ -0,0 +1,82 @@ +/*************************************************************************** + * Copyright (c) 2023 David Carter * + * * + * This file is part of FreeCAD. * + * * + * FreeCAD is free software: you can redistribute it and/or modify it * + * under the terms of the GNU Lesser General Public License as * + * published by the Free Software Foundation, either version 2.1 of the * + * License, or (at your option) any later version. * + * * + * FreeCAD is distributed in the hope that it will be useful, but * + * WITHOUT ANY WARRANTY; without even the implied warranty of * + * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU * + * Lesser General Public License for more details. * + * * + * You should have received a copy of the GNU Lesser General Public * + * License along with FreeCAD. If not, see * + * . * + * * + **************************************************************************/ + +#ifndef MATGUI_LISTEDIT_H +#define MATGUI_LISTEDIT_H + +#include + +#include +#include +#include +#include +#include +#include +#include + +#include + +#include "ListModel.h" + +namespace MatGui +{ + +class Ui_ListEdit; + +class ListEdit: public QDialog +{ + Q_OBJECT + +public: + ListEdit(const QString& propertyName, + std::shared_ptr material, + QWidget* parent = nullptr); + ~ListEdit() override = default; + + void onDataChanged(const QModelIndex& topLeft, + const QModelIndex& bottomRight, + const QVector& roles = QVector()); + void defaultValueChanged(const Base::Quantity& value); + void onDelete(bool checked); + void onContextMenu(const QPoint& pos); + + void accept() override; + void reject() override; + +private: + std::unique_ptr ui; + std::shared_ptr _material; + std::shared_ptr _property; + QList _value; + + QAction _deleteAction; + + void setColumnDelegates(QListView* list); + void setupListView(); + + bool newRow(const QModelIndex& index); + int confirmDelete(); + void deleteSelected(); +}; + +} // namespace MatGui + +#endif // MATGUI_LISTEDIT_H diff --git a/src/Mod/Material/Gui/ListEdit.ui b/src/Mod/Material/Gui/ListEdit.ui new file mode 100644 index 0000000000..55b634faed --- /dev/null +++ b/src/Mod/Material/Gui/ListEdit.ui @@ -0,0 +1,67 @@ + + + MatGui::ListEdit + + + + 0 + 0 + 400 + 300 + + + + List Edit + + + + + + + + + Qt::Horizontal + + + QDialogButtonBox::Cancel|QDialogButtonBox::Ok + + + + + + + + + standardButtons + accepted() + MatGui::ListEdit + accept() + + + 248 + 254 + + + 157 + 274 + + + + + standardButtons + rejected() + MatGui::ListEdit + reject() + + + 316 + 260 + + + 286 + 274 + + + + + diff --git a/src/Mod/Material/Gui/ListModel.cpp b/src/Mod/Material/Gui/ListModel.cpp new file mode 100644 index 0000000000..1f977fe13d --- /dev/null +++ b/src/Mod/Material/Gui/ListModel.cpp @@ -0,0 +1,142 @@ +/*************************************************************************** + * Copyright (c) 2023 David Carter * + * * + * This file is part of FreeCAD. * + * * + * FreeCAD is free software: you can redistribute it and/or modify it * + * under the terms of the GNU Lesser General Public License as * + * published by the Free Software Foundation, either version 2.1 of the * + * License, or (at your option) any later version. * + * * + * FreeCAD is distributed in the hope that it will be useful, but * + * WITHOUT ANY WARRANTY; without even the implied warranty of * + * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU * + * Lesser General Public License for more details. * + * * + * You should have received a copy of the GNU Lesser General Public * + * License along with FreeCAD. If not, see * + * . * + * * + **************************************************************************/ + +#include "PreCompiled.h" +#ifndef _PreComp_ +#endif + +#include + +#include +#include +#include + +#include +#include + +#include "ListModel.h" + + +using namespace MatGui; + +/* TRANSLATOR MatGui::ArrayModel */ + +ListModel::ListModel() +{} + +ListModel::ListModel(std::shared_ptr property, + QList& value, + QObject* parent) + : QAbstractListModel(parent) + , _property(property) + , _valuePtr(&value) +{} + +int ListModel::rowCount(const QModelIndex& parent) const +{ + if (parent.isValid()) { + return 0; // No children + } + + return _valuePtr->size() + 1; // Will always have 1 empty row +} + +bool ListModel::newRow(const QModelIndex& index) const +{ + return (index.row() == _valuePtr->size()); +} + +void ListModel::deleteRow(const QModelIndex& index) +{ + removeRows(index.row(), 1); + Q_EMIT dataChanged(index, index); +} + +QVariant ListModel::data(const QModelIndex& index, int role) const +{ + if (role == Qt::DisplayRole) { + if (index.row() < _valuePtr->size()) { + return _valuePtr->at(index.row()); + } + } + + return QVariant(); +} + +QVariant ListModel::headerData(int section, Qt::Orientation orientation, int role) const +{ + // if (role == Qt::DisplayRole) { + // if (orientation == Qt::Horizontal) { + // const Materials::MaterialProperty& column = _property->getColumn(section); + // return QVariant(column.getName()); + // } + // else if (orientation == Qt::Vertical) { + // // Vertical header + // if (section == (rowCount() - 1)) { + // return QVariant(QString::fromStdString("*")); + // } + // return QVariant(section + 1); + // } + // } + + return QAbstractListModel::headerData(section, orientation, role); +} + +bool ListModel::setData(const QModelIndex& index, const QVariant& value, int role) +{ + Q_UNUSED(role); + + if (index.row() == _valuePtr->size()) { + insertRows(index.row(), 1); + } + (*_valuePtr)[index.row()] = value; + + Q_EMIT dataChanged(index, index); + return true; +} + +Qt::ItemFlags ListModel::flags(const QModelIndex& index) const +{ + return (QAbstractListModel::flags(index) | Qt::ItemIsEditable); +} + + +// Resizing functions +bool ListModel::insertRows(int row, int count, const QModelIndex& parent) +{ + beginInsertRows(parent, row, row + count - 1); + + QVariant newRow = QString(); + _valuePtr->insert(row, newRow); + + endInsertRows(); + + return false; +} + +bool ListModel::removeRows(int row, int count, const QModelIndex& parent) +{ + beginRemoveRows(parent, row, row + count - 1); + + _valuePtr->removeAt(row); + + return false; +} diff --git a/src/Mod/Material/Gui/ListModel.h b/src/Mod/Material/Gui/ListModel.h new file mode 100644 index 0000000000..99f7a79b7e --- /dev/null +++ b/src/Mod/Material/Gui/ListModel.h @@ -0,0 +1,69 @@ +/*************************************************************************** + * Copyright (c) 2023 David Carter * + * * + * This file is part of FreeCAD. * + * * + * FreeCAD is free software: you can redistribute it and/or modify it * + * under the terms of the GNU Lesser General Public License as * + * published by the Free Software Foundation, either version 2.1 of the * + * License, or (at your option) any later version. * + * * + * FreeCAD is distributed in the hope that it will be useful, but * + * WITHOUT ANY WARRANTY; without even the implied warranty of * + * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU * + * Lesser General Public License for more details. * + * * + * You should have received a copy of the GNU Lesser General Public * + * License along with FreeCAD. If not, see * + * . * + * * + **************************************************************************/ + +#ifndef MATGUI_LISTMODEL_H +#define MATGUI_LISTMODEL_H + +#include + +#include +#include +#include +#include +#include + +#include +#include + +namespace MatGui +{ + +class ListModel: public QAbstractListModel +{ +public: + ListModel(); + ListModel(std::shared_ptr property, + QList& value, + QObject* parent = nullptr); + ~ListModel() override = default; + + // Overridden virtual functions + int rowCount(const QModelIndex& parent = QModelIndex()) const override; + bool newRow(const QModelIndex& index) const; + void deleteRow(const QModelIndex& index); + QVariant data(const QModelIndex& index, int role = Qt::DisplayRole) const override; + QVariant + headerData(int section, Qt::Orientation orientation, int role = Qt::DisplayRole) const override; + bool setData(const QModelIndex& index, const QVariant& value, int role = Qt::EditRole) override; + Qt::ItemFlags flags(const QModelIndex& index) const override; + + // Resizing functions + bool insertRows(int row, int count, const QModelIndex& parent = QModelIndex()) override; + bool removeRows(int row, int count, const QModelIndex& parent = QModelIndex()) override; + +private: + std::shared_ptr _property; + QList* _valuePtr; +}; + +} // namespace MatGui + +#endif // MATGUI_LISTMODEL_H diff --git a/src/Mod/Material/Gui/MaterialDelegate.cpp b/src/Mod/Material/Gui/MaterialDelegate.cpp index ee9d4b7144..f451ac58d3 100644 --- a/src/Mod/Material/Gui/MaterialDelegate.cpp +++ b/src/Mod/Material/Gui/MaterialDelegate.cpp @@ -49,8 +49,10 @@ #include "Array2D.h" #include "Array3D.h" +#include "ListEdit.h" #include "MaterialDelegate.h" #include "MaterialSave.h" +#include "TextEdit.h" using namespace MatGui; @@ -92,6 +94,18 @@ bool MaterialDelegate::editorEvent(QEvent* event, // Mark as handled return true; } + else if (type == "MultiLineString") { + Base::Console().Log("Edit List\n"); + showMultiLineString(propertyName, item); + // Mark as handled + return true; + } + else if (type == "List") { + Base::Console().Log("Edit List\n"); + showListModal(propertyName, item); + // Mark as handled + return true; + } else if (type == "2DArray") { Base::Console().Log("Edit 2DArray\n"); showArray2DModal(propertyName, item); @@ -145,6 +159,43 @@ void MaterialDelegate::showColorModal(QStandardItem* item, QString propertyName) dlg->exec(); } +void MaterialDelegate::showListModal(const QString& propertyName, QStandardItem* item) +{ + auto material = item->data().value>(); + auto dlg = new ListEdit(propertyName, material); + + dlg->setAttribute(Qt::WA_DeleteOnClose); + + dlg->adjustSize(); + + connect(dlg, &QDialog::finished, this, [&](int result) { + if (result == QDialog::Accepted) { + Base::Console().Log("Accepted\n"); + } + }); + + dlg->exec(); +} + +void MaterialDelegate::showMultiLineString(const QString& propertyName, QStandardItem* item) +{ + auto material = item->data().value>(); + TextEdit* dlg = new TextEdit(propertyName, material); + + dlg->setAttribute(Qt::WA_DeleteOnClose); + + dlg->adjustSize(); + + connect(dlg, &QDialog::finished, this, [&](int result) { + if (result == QDialog::Accepted) { + Base::Console().Log("Accepted\n"); + } + }); + + dlg->exec(); +} + + void MaterialDelegate::showArray2DModal(const QString& propertyName, QStandardItem* item) { auto material = item->data().value>(); @@ -234,6 +285,38 @@ void MaterialDelegate::paint(QPainter* painter, painter->restore(); return; } + else if (type == "MultiLineString") { + painter->save(); + + QImage table(QString::fromStdString(":/icons/multiline.svg")); + QRect target(option.rect); + if (target.width() > target.height()) { + target.setWidth(target.height()); + } + else { + target.setHeight(target.width()); + } + painter->drawImage(target, table, table.rect()); + + painter->restore(); + return; + } + else if (type == "List") { + painter->save(); + + QImage table(QString::fromStdString(":/icons/list.svg")); + QRect target(option.rect); + if (target.width() > target.height()) { + target.setWidth(target.height()); + } + else { + target.setHeight(target.width()); + } + painter->drawImage(target, table, table.rect()); + + painter->restore(); + return; + } else if (type == "2DArray" || type == "3DArray") { // painter->save(); @@ -280,7 +363,8 @@ QSize MaterialDelegate::sizeHint(const QStyleOptionViewItem& option, const QMode if (type == "Color") { return QSize(75, 23); // Standard QPushButton size } - else if (type == "2DArray" || type == "3DArray") { + else if (type == "2DArray" || type == "3DArray" || type == "MultiLineString" + || type == "List") { return QSize(23, 23); } @@ -387,14 +471,14 @@ QWidget* MaterialDelegate::createWidget(QWidget* parent, QWidget* widget = nullptr; std::string type = propertyType.toStdString(); - if (type == "String" || type == "URL" || type == "Vector") { + if (type == "String" || type == "URL" || type == "List") { widget = new Gui::PrefLineEdit(parent); } else if ((type == "Integer") || (type == "Int")) { - Gui::UIntSpinBox* spinner = new Gui::UIntSpinBox(parent); + Gui::IntSpinBox* spinner = new Gui::IntSpinBox(parent); spinner->setMinimum(0); - spinner->setMaximum(UINT_MAX); - spinner->setValue(propertyValue.toUInt()); + spinner->setMaximum(INT_MAX); + spinner->setValue(propertyValue.toInt()); widget = spinner; } else if (type == "Float") { diff --git a/src/Mod/Material/Gui/MaterialDelegate.h b/src/Mod/Material/Gui/MaterialDelegate.h index 294c520fd3..0d389c7113 100644 --- a/src/Mod/Material/Gui/MaterialDelegate.h +++ b/src/Mod/Material/Gui/MaterialDelegate.h @@ -73,6 +73,8 @@ private: const QString& propertyUnits) const; QRgb parseColor(const QString& color) const; void showColorModal(QStandardItem* item, QString propertyName); + void showListModal(const QString& propertyName, QStandardItem* item); + void showMultiLineString(const QString& propertyName, QStandardItem* item); void showArray2DModal(const QString& propertyName, QStandardItem* item); void showArray3DModal(const QString& propertyName, QStandardItem* item); }; diff --git a/src/Mod/Material/Gui/MaterialSave.cpp b/src/Mod/Material/Gui/MaterialSave.cpp index 853c973ea2..df344b7ea8 100644 --- a/src/Mod/Material/Gui/MaterialSave.cpp +++ b/src/Mod/Material/Gui/MaterialSave.cpp @@ -287,7 +287,7 @@ void MaterialSave::reject() void MaterialSave::setLibraries() { auto libraries = _manager.getMaterialLibraries(); - for (auto library : *libraries) { + for (auto& library : *libraries) { if (!library->isReadOnly()) { QVariant libraryVariant; libraryVariant.setValue(library); @@ -345,7 +345,6 @@ void MaterialSave::addMaterials( node->setFlags(Qt::ItemIsSelectable | Qt::ItemIsEnabled | Qt::ItemIsDragEnabled | Qt::ItemIsDropEnabled | Qt::ItemIsEditable); addExpanded(tree, &parent, node); - auto treeMap = nodePtr->getFolder(); addMaterials(*node, treeMap, folderIcon, icon); } diff --git a/src/Mod/Material/Gui/MaterialTreeView.h b/src/Mod/Material/Gui/MaterialTreeView.h deleted file mode 100644 index e69de29bb2..0000000000 diff --git a/src/Mod/Material/Gui/MaterialsEditor.cpp b/src/Mod/Material/Gui/MaterialsEditor.cpp index c3c15c6b2a..91b059da9e 100644 --- a/src/Mod/Material/Gui/MaterialsEditor.cpp +++ b/src/Mod/Material/Gui/MaterialsEditor.cpp @@ -77,6 +77,14 @@ MaterialsEditor::MaterialsEditor(QWidget* parent) createPreviews(); setMaterialDefaults(); + // Reset to previous size + auto param = App::GetApplication().GetParameterGroupByPath( + "User parameter:BaseApp/Preferences/Mod/Material/Editor"); + auto width = param->GetInt("EditorWidth", 835); + auto height = param->GetInt("EditorHeight", 542); + + resize(width, height); + ui->buttonURL->setIcon(QIcon(QString::fromStdString(":/icons/internet-web-browser.svg"))); connect(ui->standardButtons->button(QDialogButtonBox::Ok), @@ -166,7 +174,7 @@ void MaterialsEditor::saveFavorites() // Add the current values param->SetInt("Favorites", _favorites.size()); int j = 0; - for (auto favorite : _favorites) { + for (auto& favorite : _favorites) { QString key = QString::fromLatin1("FAV%1").arg(j); param->SetASCII(key.toStdString().c_str(), favorite.toStdString()); @@ -203,7 +211,7 @@ void MaterialsEditor::removeFavorite(const QString& uuid) bool MaterialsEditor::isFavorite(const QString& uuid) const { - for (auto it : _favorites) { + for (auto& it : _favorites) { if (it == uuid) { return true; } @@ -246,7 +254,7 @@ void MaterialsEditor::saveRecents() } param->SetInt("Recent", size); int j = 0; - for (auto recent : _recents) { + for (auto& recent : _recents) { QString key = QString::fromLatin1("MRU%1").arg(j); param->SetASCII(key.toStdString().c_str(), recent.toStdString()); @@ -283,7 +291,7 @@ void MaterialsEditor::addRecent(const QString& uuid) bool MaterialsEditor::isRecent(const QString& uuid) const { - for (auto it : _recents) { + for (auto& it : _recents) { if (it == uuid) { return true; } @@ -546,14 +554,42 @@ void MaterialsEditor::saveMaterial() void MaterialsEditor::accept() { addRecent(_material->getUUID()); + saveWindow(); QDialog::accept(); } void MaterialsEditor::reject() { + saveWindow(); QDialog::reject(); } +void MaterialsEditor::saveWindow() +{ + auto param = App::GetApplication().GetParameterGroupByPath( + "User parameter:BaseApp/Preferences/Mod/Material/Editor"); + param->SetInt("EditorWidth", width()); + param->SetInt("EditorHeight", height()); + + // int count = param->GetInt("Favorites", 0); + // for (int i = 0; i < count; i++) { + // QString key = QString::fromLatin1("FAV%1").arg(i); + // QString uuid = QString::fromStdString(param->GetASCII(key.toStdString().c_str(), "")); + // _favorites.push_back(uuid); + // } +} + +// def storeSize(self): +// "stores the widget size" +// #store widths +// p = FreeCAD.ParamGet("User parameter:BaseApp/Preferences/Mod/Material") +// p.SetInt("MaterialEditorWidth", self.widget.width()) +// p.SetInt("MaterialEditorHeight", self.widget.height()) +// root = self.widget.treeView.model().invisibleRootItem() +// for gg in range(root.rowCount()): +// group = root.child(gg) +// p.SetBool("TreeExpand"+group.text(), self.widget.treeView.isExpanded(group.index())) + // QIcon MaterialsEditor::errorIcon(const QIcon &icon) const { // auto pixmap = icon.pixmap(); // } @@ -631,7 +667,6 @@ void MaterialsEditor::createPhysicalTree() // connect(selectionModel, // &QItemSelectionModel::selectionChanged, // this, - // &MaterialsEditor::onSelectPhysicalProperty); } void MaterialsEditor::createPreviews() diff --git a/src/Mod/Material/Gui/MaterialsEditor.h b/src/Mod/Material/Gui/MaterialsEditor.h index 1addd48314..94bc86d48a 100644 --- a/src/Mod/Material/Gui/MaterialsEditor.h +++ b/src/Mod/Material/Gui/MaterialsEditor.h @@ -106,6 +106,8 @@ private: std::list _recents; int _recentMax; + void saveWindow(); + void getFavorites(); void saveFavorites(); void addFavorite(const QString& uuid); diff --git a/src/Mod/Material/Gui/ModelSelect.cpp b/src/Mod/Material/Gui/ModelSelect.cpp index ffd0e60502..61b9543d2e 100644 --- a/src/Mod/Material/Gui/ModelSelect.cpp +++ b/src/Mod/Material/Gui/ModelSelect.cpp @@ -104,7 +104,7 @@ void ModelSelect::saveFavorites() // Add the current values param->SetInt("Favorites", _favorites.size()); int j = 0; - for (auto favorite : _favorites) { + for (auto& favorite : _favorites) { QString key = QString::fromLatin1("FAV%1").arg(j); param->SetASCII(key.toStdString().c_str(), favorite.toStdString()); @@ -132,7 +132,7 @@ void ModelSelect::removeFavorite(const QString& uuid) bool ModelSelect::isFavorite(const QString& uuid) const { - for (auto it : _favorites) { + for (auto& it : _favorites) { if (it == uuid) { return true; } @@ -175,7 +175,7 @@ void ModelSelect::saveRecents() } param->SetInt("Recent", size); int j = 0; - for (auto recent : _recents) { + for (auto& recent : _recents) { QString key = QString::fromLatin1("MRU%1").arg(j); param->SetASCII(key.toStdString().c_str(), recent.toStdString()); @@ -203,7 +203,7 @@ void ModelSelect::addRecent(const QString& uuid) bool ModelSelect::isRecent(const QString& uuid) const { - for (auto it : _recents) { + for (auto& it : _recents) { if (it == uuid) { return true; } @@ -340,7 +340,7 @@ void ModelSelect::fillTree() addRecents(lib); auto libraries = getModelManager().getModelLibraries(); - for (auto library : *libraries) { + for (auto& library : *libraries) { lib = new QStandardItem(library->getName()); lib->setFlags(Qt::ItemIsEnabled | Qt::ItemIsDragEnabled | Qt::ItemIsDropEnabled); addExpanded(tree, model, lib); diff --git a/src/Mod/Material/Gui/Resources/Material.qrc b/src/Mod/Material/Gui/Resources/Material.qrc index 467818d552..787acf876c 100644 --- a/src/Mod/Material/Gui/Resources/Material.qrc +++ b/src/Mod/Material/Gui/Resources/Material.qrc @@ -1,7 +1,9 @@ + icons/list.svg icons/MaterialWorkbench.svg icons/Materials_Edit.svg + icons/multiline.svg icons/preferences-material.svg icons/preview-rendered.svg icons/preview-vector.svg diff --git a/src/Mod/Material/Gui/Resources/icons/list.svg b/src/Mod/Material/Gui/Resources/icons/list.svg new file mode 100644 index 0000000000..73e381cb6a --- /dev/null +++ b/src/Mod/Material/Gui/Resources/icons/list.svg @@ -0,0 +1,68 @@ + + + + + + + + + + + + + + + + + + + diff --git a/src/Mod/Material/Gui/Resources/icons/multiline.svg b/src/Mod/Material/Gui/Resources/icons/multiline.svg new file mode 100644 index 0000000000..f79e5cb56e --- /dev/null +++ b/src/Mod/Material/Gui/Resources/icons/multiline.svg @@ -0,0 +1,48 @@ + + + + + + + + + + + + + + + + + diff --git a/src/Mod/Material/Gui/TextEdit.cpp b/src/Mod/Material/Gui/TextEdit.cpp new file mode 100644 index 0000000000..fab8df8f10 --- /dev/null +++ b/src/Mod/Material/Gui/TextEdit.cpp @@ -0,0 +1,94 @@ +/*************************************************************************** + * Copyright (c) 2023 David Carter * + * * + * This file is part of FreeCAD. * + * * + * FreeCAD is free software: you can redistribute it and/or modify it * + * under the terms of the GNU Lesser General Public License as * + * published by the Free Software Foundation, either version 2.1 of the * + * License, or (at your option) any later version. * + * * + * FreeCAD is distributed in the hope that it will be useful, but * + * WITHOUT ANY WARRANTY; without even the implied warranty of * + * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU * + * Lesser General Public License for more details. * + * * + * You should have received a copy of the GNU Lesser General Public * + * License along with FreeCAD. If not, see * + * . * + * * + **************************************************************************/ + +#include "PreCompiled.h" +#ifndef _PreComp_ +#include +#endif + +#include + +#include + +#include +#include + +#include "TextEdit.h" +#include "ui_TextEdit.h" + + +using namespace MatGui; + +/* TRANSLATOR MatGui::TextEdit */ + +TextEdit::TextEdit(const QString& propertyName, + std::shared_ptr material, + QWidget* parent) + : QDialog(parent) + , ui(new Ui_TextEdit) + , _material(material) +{ + ui->setupUi(this); + + if (material->hasPhysicalProperty(propertyName)) { + _property = material->getPhysicalProperty(propertyName); + } + else if (material->hasAppearanceProperty(propertyName)) { + _property = material->getAppearanceProperty(propertyName); + } + else { + Base::Console().Log("Property '%s' not found\n", propertyName.toStdString().c_str()); + _property = nullptr; + } + if (_property) { + Base::Console().Log("Value type %d\n", + static_cast(_property->getMaterialValue()->getType())); + _value = _property->getString(); + } + else { + Base::Console().Log("No value loaded\n"); + _value = QString(); + } + + ui->textEdit->setText(_value); + ui->textEdit->setAcceptRichText(false); + ui->textEdit->setWordWrapMode(QTextOption::NoWrap); + + connect(ui->standardButtons, &QDialogButtonBox::accepted, this, &TextEdit::accept); + connect(ui->standardButtons, &QDialogButtonBox::rejected, this, &TextEdit::reject); +} + +void TextEdit::accept() +{ + QString newText = ui->textEdit->toPlainText(); + if (newText != _value) { + _property->setValue(ui->textEdit->toPlainText()); + _material->setEditStateAlter(); + } + QDialog::accept(); +} + +void TextEdit::reject() +{ + QDialog::reject(); +} + +#include "moc_TextEdit.cpp" diff --git a/src/Mod/Material/Gui/TextEdit.h b/src/Mod/Material/Gui/TextEdit.h new file mode 100644 index 0000000000..f505d645d5 --- /dev/null +++ b/src/Mod/Material/Gui/TextEdit.h @@ -0,0 +1,66 @@ +/*************************************************************************** + * Copyright (c) 2023 David Carter * + * * + * This file is part of FreeCAD. * + * * + * FreeCAD is free software: you can redistribute it and/or modify it * + * under the terms of the GNU Lesser General Public License as * + * published by the Free Software Foundation, either version 2.1 of the * + * License, or (at your option) any later version. * + * * + * FreeCAD is distributed in the hope that it will be useful, but * + * WITHOUT ANY WARRANTY; without even the implied warranty of * + * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU * + * Lesser General Public License for more details. * + * * + * You should have received a copy of the GNU Lesser General Public * + * License along with FreeCAD. If not, see * + * . * + * * + **************************************************************************/ + +#ifndef MATGUI_TEXTEDIT_H +#define MATGUI_TEXTEDIT_H + +#include + +#include +#include +#include +#include +#include +#include +#include + +#include + +#include "ArrayModel.h" + +namespace MatGui +{ + +class Ui_TextEdit; + +class TextEdit: public QDialog +{ + Q_OBJECT + +public: + TextEdit(const QString& propertyName, + std::shared_ptr material, + QWidget* parent = nullptr); + ~TextEdit() override = default; + + void accept() override; + void reject() override; + +private: + std::unique_ptr ui; + std::shared_ptr _material; + std::shared_ptr _property; + QString _value; +}; + +} // namespace MatGui + +#endif // MATGUI_TEXTEDIT_H diff --git a/src/Mod/Material/Gui/TextEdit.ui b/src/Mod/Material/Gui/TextEdit.ui new file mode 100644 index 0000000000..c369fc5e17 --- /dev/null +++ b/src/Mod/Material/Gui/TextEdit.ui @@ -0,0 +1,67 @@ + + + MatGui::TextEdit + + + + 0 + 0 + 400 + 300 + + + + Text Edit + + + + + + + + + Qt::Horizontal + + + QDialogButtonBox::Cancel|QDialogButtonBox::Ok + + + + + + + + + standardButtons + accepted() + MatGui::TextEdit + accept() + + + 248 + 254 + + + 157 + 274 + + + + + standardButtons + rejected() + MatGui::TextEdit + reject() + + + 316 + 260 + + + 286 + 274 + + + + + diff --git a/src/Mod/Material/Resources/Materials/Appearance/Aluminum.FCMat b/src/Mod/Material/Resources/Materials/Appearance/Aluminum.FCMat index df4bfa6d55..b5890f0c7d 100644 --- a/src/Mod/Material/Resources/Materials/Appearance/Aluminum.FCMat +++ b/src/Mod/Material/Resources/Materials/Appearance/Aluminum.FCMat @@ -1,3 +1,4 @@ +--- # File created by ConvertFCMat.py General: UUID: "d1f317f0-5ffa-4798-8ab3-af2ff0b5182c" diff --git a/src/Mod/Material/Resources/Materials/Appearance/Brass.FCMat b/src/Mod/Material/Resources/Materials/Appearance/Brass.FCMat index 7c84d933f4..9e9a4f71f3 100644 --- a/src/Mod/Material/Resources/Materials/Appearance/Brass.FCMat +++ b/src/Mod/Material/Resources/Materials/Appearance/Brass.FCMat @@ -1,3 +1,4 @@ +--- # File created by ConvertFCMat.py General: UUID: "4151e19c-fd6a-4ca4-83d4-d5e17d76cb9c" diff --git a/src/Mod/Material/Resources/Materials/Appearance/Bronze.FCMat b/src/Mod/Material/Resources/Materials/Appearance/Bronze.FCMat index 18f0b94a57..cf899fce5d 100644 --- a/src/Mod/Material/Resources/Materials/Appearance/Bronze.FCMat +++ b/src/Mod/Material/Resources/Materials/Appearance/Bronze.FCMat @@ -1,3 +1,4 @@ +--- # File created by ConvertFCMat.py General: UUID: "ae194589-02d4-4e9b-98a7-f523f660d510" diff --git a/src/Mod/Material/Resources/Materials/Appearance/Chrome.FCMat b/src/Mod/Material/Resources/Materials/Appearance/Chrome.FCMat index 646c2d8891..092797a77f 100644 --- a/src/Mod/Material/Resources/Materials/Appearance/Chrome.FCMat +++ b/src/Mod/Material/Resources/Materials/Appearance/Chrome.FCMat @@ -1,3 +1,4 @@ +--- # File created by ConvertFCMat.py General: UUID: "a9544b88-dde7-4d05-9bdb-c008a4e88dc1" diff --git a/src/Mod/Material/Resources/Materials/Appearance/Copper.FCMat b/src/Mod/Material/Resources/Materials/Appearance/Copper.FCMat index 2e04a10667..d9032713a2 100644 --- a/src/Mod/Material/Resources/Materials/Appearance/Copper.FCMat +++ b/src/Mod/Material/Resources/Materials/Appearance/Copper.FCMat @@ -1,3 +1,4 @@ +--- # File created by ConvertFCMat.py General: UUID: "524cad9b-b841-4037-9851-badeca7dcee2" diff --git a/src/Mod/Material/Resources/Materials/Appearance/DefaultAppearance.FCMat b/src/Mod/Material/Resources/Materials/Appearance/DefaultAppearance.FCMat index 9c6eb2f497..44ce8d6970 100644 --- a/src/Mod/Material/Resources/Materials/Appearance/DefaultAppearance.FCMat +++ b/src/Mod/Material/Resources/Materials/Appearance/DefaultAppearance.FCMat @@ -1,3 +1,4 @@ +--- # File created by ConvertFCMat.py General: UUID: "5dbb7be6-8b63-479b-ab4c-87be02ead973" diff --git a/src/Mod/Material/Resources/Materials/Appearance/Emerald.FCMat b/src/Mod/Material/Resources/Materials/Appearance/Emerald.FCMat index 519b79bdd6..a48d5dea8b 100644 --- a/src/Mod/Material/Resources/Materials/Appearance/Emerald.FCMat +++ b/src/Mod/Material/Resources/Materials/Appearance/Emerald.FCMat @@ -1,3 +1,4 @@ +--- # File created by ConvertFCMat.py General: UUID: "54def35f-a6bf-472e-8410-dc9fb4b143cf" diff --git a/src/Mod/Material/Resources/Materials/Appearance/Gold.FCMat b/src/Mod/Material/Resources/Materials/Appearance/Gold.FCMat index 4805837cf3..f1dec2bc15 100644 --- a/src/Mod/Material/Resources/Materials/Appearance/Gold.FCMat +++ b/src/Mod/Material/Resources/Materials/Appearance/Gold.FCMat @@ -1,3 +1,4 @@ +--- # File created by ConvertFCMat.py General: UUID: "85257e2c-be3f-40a1-b03f-0bd4ba58ca08" diff --git a/src/Mod/Material/Resources/Materials/Appearance/Jade.FCMat b/src/Mod/Material/Resources/Materials/Appearance/Jade.FCMat index af9b12ceeb..cfb5fc91e8 100644 --- a/src/Mod/Material/Resources/Materials/Appearance/Jade.FCMat +++ b/src/Mod/Material/Resources/Materials/Appearance/Jade.FCMat @@ -1,3 +1,4 @@ +--- # File created by ConvertFCMat.py General: UUID: "cddfa21f-0715-49dd-b35b-951c076fa52c" diff --git a/src/Mod/Material/Resources/Materials/Appearance/Metalized.FCMat b/src/Mod/Material/Resources/Materials/Appearance/Metalized.FCMat index 9c9d2feb2d..156f9243ee 100644 --- a/src/Mod/Material/Resources/Materials/Appearance/Metalized.FCMat +++ b/src/Mod/Material/Resources/Materials/Appearance/Metalized.FCMat @@ -1,3 +1,4 @@ +--- # File created by ConvertFCMat.py General: UUID: "d149a177-07f1-4e53-9bad-0b5bf0663600" diff --git a/src/Mod/Material/Resources/Materials/Appearance/NeonGNC.FCMat b/src/Mod/Material/Resources/Materials/Appearance/NeonGNC.FCMat index 00a226c0ca..fd3a0e6d54 100644 --- a/src/Mod/Material/Resources/Materials/Appearance/NeonGNC.FCMat +++ b/src/Mod/Material/Resources/Materials/Appearance/NeonGNC.FCMat @@ -1,3 +1,4 @@ +--- # File created by ConvertFCMat.py General: UUID: "c0341eef-0897-4fcf-a7f7-eddf1a2600a5" diff --git a/src/Mod/Material/Resources/Materials/Appearance/NeonPHC.FCMat b/src/Mod/Material/Resources/Materials/Appearance/NeonPHC.FCMat index ea1473d575..fd68737f48 100644 --- a/src/Mod/Material/Resources/Materials/Appearance/NeonPHC.FCMat +++ b/src/Mod/Material/Resources/Materials/Appearance/NeonPHC.FCMat @@ -1,3 +1,4 @@ +--- # File created by ConvertFCMat.py General: UUID: "add2d6b2-c8fb-4777-a80a-52bae97300ae" diff --git a/src/Mod/Material/Resources/Materials/Appearance/Obsidian.FCMat b/src/Mod/Material/Resources/Materials/Appearance/Obsidian.FCMat index 3496efb8ea..7fcfacb3d9 100644 --- a/src/Mod/Material/Resources/Materials/Appearance/Obsidian.FCMat +++ b/src/Mod/Material/Resources/Materials/Appearance/Obsidian.FCMat @@ -1,3 +1,4 @@ +--- # File created by ConvertFCMat.py General: UUID: "a004c270-7d2c-4898-bec6-b1120edacea9" diff --git a/src/Mod/Material/Resources/Materials/Appearance/Pewter.FCMat b/src/Mod/Material/Resources/Materials/Appearance/Pewter.FCMat index b263611987..cba68a4d1f 100644 --- a/src/Mod/Material/Resources/Materials/Appearance/Pewter.FCMat +++ b/src/Mod/Material/Resources/Materials/Appearance/Pewter.FCMat @@ -1,3 +1,4 @@ +--- # File created by ConvertFCMat.py General: UUID: "a61853b9-ec9f-403e-9726-0a938731aecd" diff --git a/src/Mod/Material/Resources/Materials/Appearance/Plaster.FCMat b/src/Mod/Material/Resources/Materials/Appearance/Plaster.FCMat index d969f84f02..364174637f 100644 --- a/src/Mod/Material/Resources/Materials/Appearance/Plaster.FCMat +++ b/src/Mod/Material/Resources/Materials/Appearance/Plaster.FCMat @@ -1,3 +1,4 @@ +--- # File created by ConvertFCMat.py General: UUID: "569dccb6-c64b-4dd0-9d3c-1b78f40ad1a5" diff --git a/src/Mod/Material/Resources/Materials/Appearance/Plastic.FCMat b/src/Mod/Material/Resources/Materials/Appearance/Plastic.FCMat index efcc9df554..350229f4b7 100644 --- a/src/Mod/Material/Resources/Materials/Appearance/Plastic.FCMat +++ b/src/Mod/Material/Resources/Materials/Appearance/Plastic.FCMat @@ -1,3 +1,4 @@ +--- # File created by ConvertFCMat.py General: UUID: "a74622cd-0e2d-4a96-b8c4-fefcc82ac694" diff --git a/src/Mod/Material/Resources/Materials/Appearance/Ruby.FCMat b/src/Mod/Material/Resources/Materials/Appearance/Ruby.FCMat index eac38bb236..84957fbcb3 100644 --- a/src/Mod/Material/Resources/Materials/Appearance/Ruby.FCMat +++ b/src/Mod/Material/Resources/Materials/Appearance/Ruby.FCMat @@ -1,3 +1,4 @@ +--- # File created by ConvertFCMat.py General: UUID: "953261a0-cc48-41f8-a3f9-7b20ae3f9b56" diff --git a/src/Mod/Material/Resources/Materials/Appearance/Satin.FCMat b/src/Mod/Material/Resources/Materials/Appearance/Satin.FCMat index 211f1441df..0a3e217070 100644 --- a/src/Mod/Material/Resources/Materials/Appearance/Satin.FCMat +++ b/src/Mod/Material/Resources/Materials/Appearance/Satin.FCMat @@ -1,3 +1,4 @@ +--- # File created by ConvertFCMat.py General: UUID: "951b54ae-86b6-46d2-b452-60bd6a3ba1bb" diff --git a/src/Mod/Material/Resources/Materials/Appearance/ShinyPlastic.FCMat b/src/Mod/Material/Resources/Materials/Appearance/ShinyPlastic.FCMat index 221be76449..9ed8046d50 100644 --- a/src/Mod/Material/Resources/Materials/Appearance/ShinyPlastic.FCMat +++ b/src/Mod/Material/Resources/Materials/Appearance/ShinyPlastic.FCMat @@ -1,3 +1,4 @@ +--- # File created by ConvertFCMat.py General: UUID: "591c4c4a-22ba-4a9a-869d-e5610107d69a" diff --git a/src/Mod/Material/Resources/Materials/Appearance/Silver.FCMat b/src/Mod/Material/Resources/Materials/Appearance/Silver.FCMat index dbdedc9a27..b81a27c0cf 100644 --- a/src/Mod/Material/Resources/Materials/Appearance/Silver.FCMat +++ b/src/Mod/Material/Resources/Materials/Appearance/Silver.FCMat @@ -1,3 +1,4 @@ +--- # File created by ConvertFCMat.py General: UUID: "62839fb0-d854-4b44-92df-b7249213de49" diff --git a/src/Mod/Material/Resources/Materials/Appearance/Steel.FCMat b/src/Mod/Material/Resources/Materials/Appearance/Steel.FCMat index bc9e1acc99..4f9d87e579 100644 --- a/src/Mod/Material/Resources/Materials/Appearance/Steel.FCMat +++ b/src/Mod/Material/Resources/Materials/Appearance/Steel.FCMat @@ -1,3 +1,4 @@ +--- # File created by ConvertFCMat.py General: UUID: "4b849c55-6b3a-4f75-a055-40c0d0324596" diff --git a/src/Mod/Material/Resources/Materials/Appearance/Stone.FCMat b/src/Mod/Material/Resources/Materials/Appearance/Stone.FCMat index 74436298ba..42e3361f93 100644 --- a/src/Mod/Material/Resources/Materials/Appearance/Stone.FCMat +++ b/src/Mod/Material/Resources/Materials/Appearance/Stone.FCMat @@ -1,3 +1,4 @@ +--- # File created by ConvertFCMat.py General: UUID: "a9f54d61-cc98-46df-8734-b0543ceb4e45" diff --git a/src/Mod/Material/Resources/Materials/FluidMaterial/Air.FCMat b/src/Mod/Material/Resources/Materials/Fluid/Air.FCMat similarity index 99% rename from src/Mod/Material/Resources/Materials/FluidMaterial/Air.FCMat rename to src/Mod/Material/Resources/Materials/Fluid/Air.FCMat index 025c280566..810584ac49 100644 --- a/src/Mod/Material/Resources/Materials/FluidMaterial/Air.FCMat +++ b/src/Mod/Material/Resources/Materials/Fluid/Air.FCMat @@ -1,3 +1,4 @@ +--- # File created by ConvertFCMat.py General: UUID: "94370b96-c97e-4a3f-83b2-11d7461f7da7" diff --git a/src/Mod/Material/Resources/Materials/FluidMaterial/Argon.FCMat b/src/Mod/Material/Resources/Materials/Fluid/Argon.FCMat similarity index 99% rename from src/Mod/Material/Resources/Materials/FluidMaterial/Argon.FCMat rename to src/Mod/Material/Resources/Materials/Fluid/Argon.FCMat index 235f07091c..a4cfd2c195 100644 --- a/src/Mod/Material/Resources/Materials/FluidMaterial/Argon.FCMat +++ b/src/Mod/Material/Resources/Materials/Fluid/Argon.FCMat @@ -1,3 +1,4 @@ +--- # File created by ConvertFCMat.py General: UUID: "e359c5b5-eae2-42b1-9ef6-edde21d706ee" diff --git a/src/Mod/Material/Resources/Materials/FluidMaterial/Carbon_dioxide.FCMat b/src/Mod/Material/Resources/Materials/Fluid/Carbon_dioxide.FCMat similarity index 99% rename from src/Mod/Material/Resources/Materials/FluidMaterial/Carbon_dioxide.FCMat rename to src/Mod/Material/Resources/Materials/Fluid/Carbon_dioxide.FCMat index fdfc5a94c9..c9535fe16b 100644 --- a/src/Mod/Material/Resources/Materials/FluidMaterial/Carbon_dioxide.FCMat +++ b/src/Mod/Material/Resources/Materials/Fluid/Carbon_dioxide.FCMat @@ -1,3 +1,4 @@ +--- # File created by ConvertFCMat.py General: UUID: "ef0e4040-a498-48c3-a87b-e996bfd89195" diff --git a/src/Mod/Material/Resources/Materials/FluidMaterial/Nitrogen.FCMat b/src/Mod/Material/Resources/Materials/Fluid/Nitrogen.FCMat similarity index 99% rename from src/Mod/Material/Resources/Materials/FluidMaterial/Nitrogen.FCMat rename to src/Mod/Material/Resources/Materials/Fluid/Nitrogen.FCMat index d7c81bea31..e54734c87f 100644 --- a/src/Mod/Material/Resources/Materials/FluidMaterial/Nitrogen.FCMat +++ b/src/Mod/Material/Resources/Materials/Fluid/Nitrogen.FCMat @@ -1,3 +1,4 @@ +--- # File created by ConvertFCMat.py General: UUID: "8d02a797-5e0a-4e40-803a-75fc66de8de6" diff --git a/src/Mod/Material/Resources/Materials/FluidMaterial/None.FCMat b/src/Mod/Material/Resources/Materials/Fluid/None.FCMat similarity index 99% rename from src/Mod/Material/Resources/Materials/FluidMaterial/None.FCMat rename to src/Mod/Material/Resources/Materials/Fluid/None.FCMat index 8497cd58bb..7cb03480f4 100644 --- a/src/Mod/Material/Resources/Materials/FluidMaterial/None.FCMat +++ b/src/Mod/Material/Resources/Materials/Fluid/None.FCMat @@ -1,3 +1,4 @@ +--- # File created by ConvertFCMat.py General: UUID: "944a8018-09bf-48f6-a7b3-aa8f6a00a310" diff --git a/src/Mod/Material/Resources/Materials/FluidMaterial/Water.FCMat b/src/Mod/Material/Resources/Materials/Fluid/Water.FCMat similarity index 99% rename from src/Mod/Material/Resources/Materials/FluidMaterial/Water.FCMat rename to src/Mod/Material/Resources/Materials/Fluid/Water.FCMat index 6f0fe7c6dc..3c72c32c5f 100644 --- a/src/Mod/Material/Resources/Materials/FluidMaterial/Water.FCMat +++ b/src/Mod/Material/Resources/Materials/Fluid/Water.FCMat @@ -1,3 +1,4 @@ +--- # File created by ConvertFCMat.py General: UUID: "7e5559d5-be15-4571-a72f-20c39edd41cf" diff --git a/src/Mod/Material/Resources/Materials/StandardMaterial/Aggregate/Concrete-EN-C35_45.FCMat b/src/Mod/Material/Resources/Materials/Standard/Aggregate/Concrete-EN-C35_45.FCMat similarity index 99% rename from src/Mod/Material/Resources/Materials/StandardMaterial/Aggregate/Concrete-EN-C35_45.FCMat rename to src/Mod/Material/Resources/Materials/Standard/Aggregate/Concrete-EN-C35_45.FCMat index 281b959ca6..320142958a 100644 --- a/src/Mod/Material/Resources/Materials/StandardMaterial/Aggregate/Concrete-EN-C35_45.FCMat +++ b/src/Mod/Material/Resources/Materials/Standard/Aggregate/Concrete-EN-C35_45.FCMat @@ -1,3 +1,4 @@ +--- # File created by ConvertFCMat.py General: UUID: "dba76940-a910-4a3b-ab73-a9f412ac69d9" diff --git a/src/Mod/Material/Resources/Materials/StandardMaterial/Aggregate/Concrete-Generic.FCMat b/src/Mod/Material/Resources/Materials/Standard/Aggregate/Concrete-Generic.FCMat similarity index 99% rename from src/Mod/Material/Resources/Materials/StandardMaterial/Aggregate/Concrete-Generic.FCMat rename to src/Mod/Material/Resources/Materials/Standard/Aggregate/Concrete-Generic.FCMat index 72e4c9af4a..e1e7659cbe 100644 --- a/src/Mod/Material/Resources/Materials/StandardMaterial/Aggregate/Concrete-Generic.FCMat +++ b/src/Mod/Material/Resources/Materials/Standard/Aggregate/Concrete-Generic.FCMat @@ -1,3 +1,4 @@ +--- # File created by ConvertFCMat.py General: UUID: "26042aa5-56e6-4d99-8b63-dd8b9ea5a37a" diff --git a/src/Mod/Material/Resources/Materials/StandardMaterial/Aggregate/Reinforcement-FIB-B500.FCMat b/src/Mod/Material/Resources/Materials/Standard/Aggregate/Reinforcement-FIB-B500.FCMat similarity index 99% rename from src/Mod/Material/Resources/Materials/StandardMaterial/Aggregate/Reinforcement-FIB-B500.FCMat rename to src/Mod/Material/Resources/Materials/Standard/Aggregate/Reinforcement-FIB-B500.FCMat index 70e70e1916..c3ce9e15ee 100644 --- a/src/Mod/Material/Resources/Materials/StandardMaterial/Aggregate/Reinforcement-FIB-B500.FCMat +++ b/src/Mod/Material/Resources/Materials/Standard/Aggregate/Reinforcement-FIB-B500.FCMat @@ -1,3 +1,4 @@ +--- # File created by ConvertFCMat.py General: UUID: "57507cd4-d22f-4d86-9794-fdb1ec8cd098" diff --git a/src/Mod/Material/Resources/Materials/StandardMaterial/Carbon/Graphite.FCMat b/src/Mod/Material/Resources/Materials/Standard/Carbon/Graphite.FCMat similarity index 99% rename from src/Mod/Material/Resources/Materials/StandardMaterial/Carbon/Graphite.FCMat rename to src/Mod/Material/Resources/Materials/Standard/Carbon/Graphite.FCMat index 5983299e4a..5ec38d2800 100644 --- a/src/Mod/Material/Resources/Materials/StandardMaterial/Carbon/Graphite.FCMat +++ b/src/Mod/Material/Resources/Materials/Standard/Carbon/Graphite.FCMat @@ -1,3 +1,4 @@ +--- # File created by ConvertFCMat.py General: UUID: "5c67b675-69a2-4782-902a-bb90c3952f07" diff --git a/src/Mod/Material/Resources/Materials/StandardMaterial/Glass/Glass-E-GlassFibre.FCMat b/src/Mod/Material/Resources/Materials/Standard/Glass/Glass-E-GlassFibre.FCMat similarity index 99% rename from src/Mod/Material/Resources/Materials/StandardMaterial/Glass/Glass-E-GlassFibre.FCMat rename to src/Mod/Material/Resources/Materials/Standard/Glass/Glass-E-GlassFibre.FCMat index 862f02108f..408a331117 100644 --- a/src/Mod/Material/Resources/Materials/StandardMaterial/Glass/Glass-E-GlassFibre.FCMat +++ b/src/Mod/Material/Resources/Materials/Standard/Glass/Glass-E-GlassFibre.FCMat @@ -1,3 +1,4 @@ +--- # File created by ConvertFCMat.py General: UUID: "a02bf9d7-6e3e-4e36-881b-10779ee9f706" diff --git a/src/Mod/Material/Resources/Materials/StandardMaterial/Glass/Glass-Generic.FCMat b/src/Mod/Material/Resources/Materials/Standard/Glass/Glass-Generic.FCMat similarity index 99% rename from src/Mod/Material/Resources/Materials/StandardMaterial/Glass/Glass-Generic.FCMat rename to src/Mod/Material/Resources/Materials/Standard/Glass/Glass-Generic.FCMat index 9074cfe621..3cc2c24c4a 100644 --- a/src/Mod/Material/Resources/Materials/StandardMaterial/Glass/Glass-Generic.FCMat +++ b/src/Mod/Material/Resources/Materials/Standard/Glass/Glass-Generic.FCMat @@ -1,3 +1,4 @@ +--- # File created by ConvertFCMat.py General: UUID: "3e3a3e13-04a4-410e-8e36-bbd83ca66847" diff --git a/src/Mod/Material/Resources/Materials/StandardMaterial/Glass/Glass-S2-GlassFibre.FCMat b/src/Mod/Material/Resources/Materials/Standard/Glass/Glass-S2-GlassFibre.FCMat similarity index 99% rename from src/Mod/Material/Resources/Materials/StandardMaterial/Glass/Glass-S2-GlassFibre.FCMat rename to src/Mod/Material/Resources/Materials/Standard/Glass/Glass-S2-GlassFibre.FCMat index 70daa6df5b..b29283fd78 100644 --- a/src/Mod/Material/Resources/Materials/StandardMaterial/Glass/Glass-S2-GlassFibre.FCMat +++ b/src/Mod/Material/Resources/Materials/Standard/Glass/Glass-S2-GlassFibre.FCMat @@ -1,3 +1,4 @@ +--- # File created by ConvertFCMat.py General: UUID: "0c4943e0-248b-4df9-88d9-3b4dd84dfc68" diff --git a/src/Mod/Material/Resources/Materials/StandardMaterial/Metal/Alloys/Invar-Generic.FCMat b/src/Mod/Material/Resources/Materials/Standard/Metal/Alloys/Invar-Generic.FCMat similarity index 99% rename from src/Mod/Material/Resources/Materials/StandardMaterial/Metal/Alloys/Invar-Generic.FCMat rename to src/Mod/Material/Resources/Materials/Standard/Metal/Alloys/Invar-Generic.FCMat index 80fce39425..d9030ae0d5 100644 --- a/src/Mod/Material/Resources/Materials/StandardMaterial/Metal/Alloys/Invar-Generic.FCMat +++ b/src/Mod/Material/Resources/Materials/Standard/Metal/Alloys/Invar-Generic.FCMat @@ -1,3 +1,4 @@ +--- # File created by ConvertFCMat.py General: UUID: "27745e16-2a10-4c8e-bd22-59971806909c" diff --git a/src/Mod/Material/Resources/Materials/StandardMaterial/Metal/Aluminum/AlMg3F24.FCMat b/src/Mod/Material/Resources/Materials/Standard/Metal/Aluminum/AlMg3F24.FCMat similarity index 99% rename from src/Mod/Material/Resources/Materials/StandardMaterial/Metal/Aluminum/AlMg3F24.FCMat rename to src/Mod/Material/Resources/Materials/Standard/Metal/Aluminum/AlMg3F24.FCMat index b7a7da8f77..1c1cc5f067 100644 --- a/src/Mod/Material/Resources/Materials/StandardMaterial/Metal/Aluminum/AlMg3F24.FCMat +++ b/src/Mod/Material/Resources/Materials/Standard/Metal/Aluminum/AlMg3F24.FCMat @@ -1,3 +1,4 @@ +--- # File created by ConvertFCMat.py General: UUID: "0051bddf-6f62-4406-b8c9-569322880564" diff --git a/src/Mod/Material/Resources/Materials/StandardMaterial/Metal/Aluminum/AlMgSi1F31.FCMat b/src/Mod/Material/Resources/Materials/Standard/Metal/Aluminum/AlMgSi1F31.FCMat similarity index 99% rename from src/Mod/Material/Resources/Materials/StandardMaterial/Metal/Aluminum/AlMgSi1F31.FCMat rename to src/Mod/Material/Resources/Materials/Standard/Metal/Aluminum/AlMgSi1F31.FCMat index 7d27af3936..bfb6b4ba72 100644 --- a/src/Mod/Material/Resources/Materials/StandardMaterial/Metal/Aluminum/AlMgSi1F31.FCMat +++ b/src/Mod/Material/Resources/Materials/Standard/Metal/Aluminum/AlMgSi1F31.FCMat @@ -1,3 +1,4 @@ +--- # File created by ConvertFCMat.py General: UUID: "460e02a3-b6cd-4662-b2f6-8c9d44146c66" diff --git a/src/Mod/Material/Resources/Materials/StandardMaterial/Metal/Aluminum/AlZn4-5Mg1F35.FCMat b/src/Mod/Material/Resources/Materials/Standard/Metal/Aluminum/AlZn4-5Mg1F35.FCMat similarity index 99% rename from src/Mod/Material/Resources/Materials/StandardMaterial/Metal/Aluminum/AlZn4-5Mg1F35.FCMat rename to src/Mod/Material/Resources/Materials/Standard/Metal/Aluminum/AlZn4-5Mg1F35.FCMat index cae2453d1e..d5e5d503a3 100644 --- a/src/Mod/Material/Resources/Materials/StandardMaterial/Metal/Aluminum/AlZn4-5Mg1F35.FCMat +++ b/src/Mod/Material/Resources/Materials/Standard/Metal/Aluminum/AlZn4-5Mg1F35.FCMat @@ -1,3 +1,4 @@ +--- # File created by ConvertFCMat.py General: UUID: "05f8f1b2-b92b-4e41-8de9-1e064e78a165" diff --git a/src/Mod/Material/Resources/Materials/StandardMaterial/Metal/Aluminum/Aluminum-6061-T6.FCMat b/src/Mod/Material/Resources/Materials/Standard/Metal/Aluminum/Aluminum-6061-T6.FCMat similarity index 99% rename from src/Mod/Material/Resources/Materials/StandardMaterial/Metal/Aluminum/Aluminum-6061-T6.FCMat rename to src/Mod/Material/Resources/Materials/Standard/Metal/Aluminum/Aluminum-6061-T6.FCMat index 3fe4777c23..a885d411c6 100644 --- a/src/Mod/Material/Resources/Materials/StandardMaterial/Metal/Aluminum/Aluminum-6061-T6.FCMat +++ b/src/Mod/Material/Resources/Materials/Standard/Metal/Aluminum/Aluminum-6061-T6.FCMat @@ -1,3 +1,4 @@ +--- # File created by ConvertFCMat.py General: UUID: "68b152b2-fd5e-4f10-8db0-1a2df3fe0fda" diff --git a/src/Mod/Material/Resources/Materials/StandardMaterial/Metal/Aluminum/Aluminum-Generic.FCMat b/src/Mod/Material/Resources/Materials/Standard/Metal/Aluminum/Aluminum-Generic.FCMat similarity index 99% rename from src/Mod/Material/Resources/Materials/StandardMaterial/Metal/Aluminum/Aluminum-Generic.FCMat rename to src/Mod/Material/Resources/Materials/Standard/Metal/Aluminum/Aluminum-Generic.FCMat index d96cd80218..54004c7efa 100644 --- a/src/Mod/Material/Resources/Materials/StandardMaterial/Metal/Aluminum/Aluminum-Generic.FCMat +++ b/src/Mod/Material/Resources/Materials/Standard/Metal/Aluminum/Aluminum-Generic.FCMat @@ -1,3 +1,4 @@ +--- # File created by ConvertFCMat.py General: UUID: "9bf060e9-1663-44a2-88e2-2ff6ee858efe" diff --git a/src/Mod/Material/Resources/Materials/StandardMaterial/Metal/Copper/Copper-Generic.FCMat b/src/Mod/Material/Resources/Materials/Standard/Metal/Copper/Copper-Generic.FCMat similarity index 99% rename from src/Mod/Material/Resources/Materials/StandardMaterial/Metal/Copper/Copper-Generic.FCMat rename to src/Mod/Material/Resources/Materials/Standard/Metal/Copper/Copper-Generic.FCMat index 8379ecba69..12713eec7e 100644 --- a/src/Mod/Material/Resources/Materials/StandardMaterial/Metal/Copper/Copper-Generic.FCMat +++ b/src/Mod/Material/Resources/Materials/Standard/Metal/Copper/Copper-Generic.FCMat @@ -1,3 +1,4 @@ +--- # File created by ConvertFCMat.py General: UUID: "6c03899d-496e-4c60-a41b-3d66f2337fb9" diff --git a/src/Mod/Material/Resources/Materials/StandardMaterial/Metal/Iron/Iron-Generic.FCMat b/src/Mod/Material/Resources/Materials/Standard/Metal/Iron/Iron-Generic.FCMat similarity index 99% rename from src/Mod/Material/Resources/Materials/StandardMaterial/Metal/Iron/Iron-Generic.FCMat rename to src/Mod/Material/Resources/Materials/Standard/Metal/Iron/Iron-Generic.FCMat index f33cdf155f..155803d224 100644 --- a/src/Mod/Material/Resources/Materials/StandardMaterial/Metal/Iron/Iron-Generic.FCMat +++ b/src/Mod/Material/Resources/Materials/Standard/Metal/Iron/Iron-Generic.FCMat @@ -1,3 +1,4 @@ +--- # File created by ConvertFCMat.py General: UUID: "1826c364-d26a-43fb-8f61-288281236836" diff --git a/src/Mod/Material/Resources/Materials/StandardMaterial/Metal/Steel/CalculiX-Steel.FCMat b/src/Mod/Material/Resources/Materials/Standard/Metal/Steel/CalculiX-Steel.FCMat similarity index 99% rename from src/Mod/Material/Resources/Materials/StandardMaterial/Metal/Steel/CalculiX-Steel.FCMat rename to src/Mod/Material/Resources/Materials/Standard/Metal/Steel/CalculiX-Steel.FCMat index 5105e234d2..8f9c1e5034 100644 --- a/src/Mod/Material/Resources/Materials/StandardMaterial/Metal/Steel/CalculiX-Steel.FCMat +++ b/src/Mod/Material/Resources/Materials/Standard/Metal/Steel/CalculiX-Steel.FCMat @@ -1,3 +1,4 @@ +--- # File created by ConvertFCMat.py General: UUID: "92589471-a6cb-4bbc-b748-d425a17dea7d" diff --git a/src/Mod/Material/Resources/Materials/StandardMaterial/Metal/Steel/Steel-15CrNi6.FCMat b/src/Mod/Material/Resources/Materials/Standard/Metal/Steel/Steel-15CrNi6.FCMat similarity index 99% rename from src/Mod/Material/Resources/Materials/StandardMaterial/Metal/Steel/Steel-15CrNi6.FCMat rename to src/Mod/Material/Resources/Materials/Standard/Metal/Steel/Steel-15CrNi6.FCMat index e719b9b5e6..e4f21f0a9d 100644 --- a/src/Mod/Material/Resources/Materials/StandardMaterial/Metal/Steel/Steel-15CrNi6.FCMat +++ b/src/Mod/Material/Resources/Materials/Standard/Metal/Steel/Steel-15CrNi6.FCMat @@ -1,3 +1,4 @@ +--- # File created by ConvertFCMat.py General: UUID: "6822df30-db32-4a68-a8d7-aaddcb9649d1" diff --git a/src/Mod/Material/Resources/Materials/StandardMaterial/Metal/Steel/Steel-17CrNiMo6.FCMat b/src/Mod/Material/Resources/Materials/Standard/Metal/Steel/Steel-17CrNiMo6.FCMat similarity index 99% rename from src/Mod/Material/Resources/Materials/StandardMaterial/Metal/Steel/Steel-17CrNiMo6.FCMat rename to src/Mod/Material/Resources/Materials/Standard/Metal/Steel/Steel-17CrNiMo6.FCMat index 247c10e733..41921a836c 100644 --- a/src/Mod/Material/Resources/Materials/StandardMaterial/Metal/Steel/Steel-17CrNiMo6.FCMat +++ b/src/Mod/Material/Resources/Materials/Standard/Metal/Steel/Steel-17CrNiMo6.FCMat @@ -1,3 +1,4 @@ +--- # File created by ConvertFCMat.py General: UUID: "e4c76f15-00af-4498-ac57-beaf49c150e9" diff --git a/src/Mod/Material/Resources/Materials/StandardMaterial/Metal/Steel/Steel-1C22.FCMat b/src/Mod/Material/Resources/Materials/Standard/Metal/Steel/Steel-1C22.FCMat similarity index 99% rename from src/Mod/Material/Resources/Materials/StandardMaterial/Metal/Steel/Steel-1C22.FCMat rename to src/Mod/Material/Resources/Materials/Standard/Metal/Steel/Steel-1C22.FCMat index 4f0271aff2..bda72fc9f2 100644 --- a/src/Mod/Material/Resources/Materials/StandardMaterial/Metal/Steel/Steel-1C22.FCMat +++ b/src/Mod/Material/Resources/Materials/Standard/Metal/Steel/Steel-1C22.FCMat @@ -1,3 +1,4 @@ +--- # File created by ConvertFCMat.py General: UUID: "c424fe3d-5f49-4c39-9467-8a2a800076aa" diff --git a/src/Mod/Material/Resources/Materials/StandardMaterial/Metal/Steel/Steel-1C35.FCMat b/src/Mod/Material/Resources/Materials/Standard/Metal/Steel/Steel-1C35.FCMat similarity index 99% rename from src/Mod/Material/Resources/Materials/StandardMaterial/Metal/Steel/Steel-1C35.FCMat rename to src/Mod/Material/Resources/Materials/Standard/Metal/Steel/Steel-1C35.FCMat index 0c5702696b..7b6c129da8 100644 --- a/src/Mod/Material/Resources/Materials/StandardMaterial/Metal/Steel/Steel-1C35.FCMat +++ b/src/Mod/Material/Resources/Materials/Standard/Metal/Steel/Steel-1C35.FCMat @@ -1,3 +1,4 @@ +--- # File created by ConvertFCMat.py General: UUID: "cd932bad-4085-459f-aea6-1da737ae38ae" diff --git a/src/Mod/Material/Resources/Materials/StandardMaterial/Metal/Steel/Steel-1C45.FCMat b/src/Mod/Material/Resources/Materials/Standard/Metal/Steel/Steel-1C45.FCMat similarity index 99% rename from src/Mod/Material/Resources/Materials/StandardMaterial/Metal/Steel/Steel-1C45.FCMat rename to src/Mod/Material/Resources/Materials/Standard/Metal/Steel/Steel-1C45.FCMat index 4fabe2bb90..728f946ad5 100644 --- a/src/Mod/Material/Resources/Materials/StandardMaterial/Metal/Steel/Steel-1C45.FCMat +++ b/src/Mod/Material/Resources/Materials/Standard/Metal/Steel/Steel-1C45.FCMat @@ -1,3 +1,4 @@ +--- # File created by ConvertFCMat.py General: UUID: "958b7a5c-4764-4a2f-a450-2153a41fb5ec" diff --git a/src/Mod/Material/Resources/Materials/StandardMaterial/Metal/Steel/Steel-1C60.FCMat b/src/Mod/Material/Resources/Materials/Standard/Metal/Steel/Steel-1C60.FCMat similarity index 99% rename from src/Mod/Material/Resources/Materials/StandardMaterial/Metal/Steel/Steel-1C60.FCMat rename to src/Mod/Material/Resources/Materials/Standard/Metal/Steel/Steel-1C60.FCMat index 45ae6f0566..77a6c94dc8 100644 --- a/src/Mod/Material/Resources/Materials/StandardMaterial/Metal/Steel/Steel-1C60.FCMat +++ b/src/Mod/Material/Resources/Materials/Standard/Metal/Steel/Steel-1C60.FCMat @@ -1,3 +1,4 @@ +--- # File created by ConvertFCMat.py General: UUID: "9717f953-1cfc-41a6-8974-3ad45188ad48" diff --git a/src/Mod/Material/Resources/Materials/StandardMaterial/Metal/Steel/Steel-20NiCrMo2.FCMat b/src/Mod/Material/Resources/Materials/Standard/Metal/Steel/Steel-20NiCrMo2.FCMat similarity index 99% rename from src/Mod/Material/Resources/Materials/StandardMaterial/Metal/Steel/Steel-20NiCrMo2.FCMat rename to src/Mod/Material/Resources/Materials/Standard/Metal/Steel/Steel-20NiCrMo2.FCMat index af5e731492..867782077a 100644 --- a/src/Mod/Material/Resources/Materials/StandardMaterial/Metal/Steel/Steel-20NiCrMo2.FCMat +++ b/src/Mod/Material/Resources/Materials/Standard/Metal/Steel/Steel-20NiCrMo2.FCMat @@ -1,3 +1,4 @@ +--- # File created by ConvertFCMat.py General: UUID: "1c759697-7aef-4a14-92c5-5bf84b99a4f0" diff --git a/src/Mod/Material/Resources/Materials/StandardMaterial/Metal/Steel/Steel-28Mn6.FCMat b/src/Mod/Material/Resources/Materials/Standard/Metal/Steel/Steel-28Mn6.FCMat similarity index 99% rename from src/Mod/Material/Resources/Materials/StandardMaterial/Metal/Steel/Steel-28Mn6.FCMat rename to src/Mod/Material/Resources/Materials/Standard/Metal/Steel/Steel-28Mn6.FCMat index c310e12ec6..cfb11eb89c 100644 --- a/src/Mod/Material/Resources/Materials/StandardMaterial/Metal/Steel/Steel-28Mn6.FCMat +++ b/src/Mod/Material/Resources/Materials/Standard/Metal/Steel/Steel-28Mn6.FCMat @@ -1,3 +1,4 @@ +--- # File created by ConvertFCMat.py General: UUID: "6894c597-5771-4b56-825f-ce7d5e4689f4" diff --git a/src/Mod/Material/Resources/Materials/StandardMaterial/Metal/Steel/Steel-2C10.FCMat b/src/Mod/Material/Resources/Materials/Standard/Metal/Steel/Steel-2C10.FCMat similarity index 99% rename from src/Mod/Material/Resources/Materials/StandardMaterial/Metal/Steel/Steel-2C10.FCMat rename to src/Mod/Material/Resources/Materials/Standard/Metal/Steel/Steel-2C10.FCMat index 55e4894152..f964d00bae 100644 --- a/src/Mod/Material/Resources/Materials/StandardMaterial/Metal/Steel/Steel-2C10.FCMat +++ b/src/Mod/Material/Resources/Materials/Standard/Metal/Steel/Steel-2C10.FCMat @@ -1,3 +1,4 @@ +--- # File created by ConvertFCMat.py General: UUID: "a7be39a1-1686-4fee-a1d5-81ef73b82d16" diff --git a/src/Mod/Material/Resources/Materials/StandardMaterial/Metal/Steel/Steel-30CrNiMo8.FCMat b/src/Mod/Material/Resources/Materials/Standard/Metal/Steel/Steel-30CrNiMo8.FCMat similarity index 99% rename from src/Mod/Material/Resources/Materials/StandardMaterial/Metal/Steel/Steel-30CrNiMo8.FCMat rename to src/Mod/Material/Resources/Materials/Standard/Metal/Steel/Steel-30CrNiMo8.FCMat index 276e40f244..c3c925a6e9 100644 --- a/src/Mod/Material/Resources/Materials/StandardMaterial/Metal/Steel/Steel-30CrNiMo8.FCMat +++ b/src/Mod/Material/Resources/Materials/Standard/Metal/Steel/Steel-30CrNiMo8.FCMat @@ -1,3 +1,4 @@ +--- # File created by ConvertFCMat.py General: UUID: "a6d96264-affc-4406-9816-75099c1fa0d9" diff --git a/src/Mod/Material/Resources/Materials/StandardMaterial/Metal/Steel/Steel-34CrNiMo6.FCMat b/src/Mod/Material/Resources/Materials/Standard/Metal/Steel/Steel-34CrNiMo6.FCMat similarity index 99% rename from src/Mod/Material/Resources/Materials/StandardMaterial/Metal/Steel/Steel-34CrNiMo6.FCMat rename to src/Mod/Material/Resources/Materials/Standard/Metal/Steel/Steel-34CrNiMo6.FCMat index 67ce48abdb..1b71c09966 100644 --- a/src/Mod/Material/Resources/Materials/StandardMaterial/Metal/Steel/Steel-34CrNiMo6.FCMat +++ b/src/Mod/Material/Resources/Materials/Standard/Metal/Steel/Steel-34CrNiMo6.FCMat @@ -1,3 +1,4 @@ +--- # File created by ConvertFCMat.py General: UUID: "e69448d5-2517-4c00-9e70-ebeb11ca017f" diff --git a/src/Mod/Material/Resources/Materials/StandardMaterial/Metal/Steel/Steel-36CrNiMo4.FCMat b/src/Mod/Material/Resources/Materials/Standard/Metal/Steel/Steel-36CrNiMo4.FCMat similarity index 99% rename from src/Mod/Material/Resources/Materials/StandardMaterial/Metal/Steel/Steel-36CrNiMo4.FCMat rename to src/Mod/Material/Resources/Materials/Standard/Metal/Steel/Steel-36CrNiMo4.FCMat index e41bf67f6b..271e0e7cba 100644 --- a/src/Mod/Material/Resources/Materials/StandardMaterial/Metal/Steel/Steel-36CrNiMo4.FCMat +++ b/src/Mod/Material/Resources/Materials/Standard/Metal/Steel/Steel-36CrNiMo4.FCMat @@ -1,3 +1,4 @@ +--- # File created by ConvertFCMat.py General: UUID: "3e78b767-5530-4d69-a541-cf33a5a2ad19" diff --git a/src/Mod/Material/Resources/Materials/StandardMaterial/Metal/Steel/Steel-36NiCrMo16.FCMat b/src/Mod/Material/Resources/Materials/Standard/Metal/Steel/Steel-36NiCrMo16.FCMat similarity index 99% rename from src/Mod/Material/Resources/Materials/StandardMaterial/Metal/Steel/Steel-36NiCrMo16.FCMat rename to src/Mod/Material/Resources/Materials/Standard/Metal/Steel/Steel-36NiCrMo16.FCMat index be7b82a8fe..f326f57725 100644 --- a/src/Mod/Material/Resources/Materials/StandardMaterial/Metal/Steel/Steel-36NiCrMo16.FCMat +++ b/src/Mod/Material/Resources/Materials/Standard/Metal/Steel/Steel-36NiCrMo16.FCMat @@ -1,3 +1,4 @@ +--- # File created by ConvertFCMat.py General: UUID: "3fdf729c-bec4-4bfa-ba94-b0c9e51a2040" diff --git a/src/Mod/Material/Resources/Materials/StandardMaterial/Metal/Steel/Steel-3C15.FCMat b/src/Mod/Material/Resources/Materials/Standard/Metal/Steel/Steel-3C15.FCMat similarity index 99% rename from src/Mod/Material/Resources/Materials/StandardMaterial/Metal/Steel/Steel-3C15.FCMat rename to src/Mod/Material/Resources/Materials/Standard/Metal/Steel/Steel-3C15.FCMat index 5384f6afb0..5c4a846048 100644 --- a/src/Mod/Material/Resources/Materials/StandardMaterial/Metal/Steel/Steel-3C15.FCMat +++ b/src/Mod/Material/Resources/Materials/Standard/Metal/Steel/Steel-3C15.FCMat @@ -1,3 +1,4 @@ +--- # File created by ConvertFCMat.py General: UUID: "605fd7b6-caa3-400d-b6d7-ed52c0f5da21" diff --git a/src/Mod/Material/Resources/Materials/StandardMaterial/Metal/Steel/Steel-3C22.FCMat b/src/Mod/Material/Resources/Materials/Standard/Metal/Steel/Steel-3C22.FCMat similarity index 99% rename from src/Mod/Material/Resources/Materials/StandardMaterial/Metal/Steel/Steel-3C22.FCMat rename to src/Mod/Material/Resources/Materials/Standard/Metal/Steel/Steel-3C22.FCMat index bb8f193f81..d6c6c48d46 100644 --- a/src/Mod/Material/Resources/Materials/StandardMaterial/Metal/Steel/Steel-3C22.FCMat +++ b/src/Mod/Material/Resources/Materials/Standard/Metal/Steel/Steel-3C22.FCMat @@ -1,3 +1,4 @@ +--- # File created by ConvertFCMat.py General: UUID: "7313f076-faf4-41dd-8dae-1b9a586990dc" diff --git a/src/Mod/Material/Resources/Materials/StandardMaterial/Metal/Steel/Steel-3C35.FCMat b/src/Mod/Material/Resources/Materials/Standard/Metal/Steel/Steel-3C35.FCMat similarity index 99% rename from src/Mod/Material/Resources/Materials/StandardMaterial/Metal/Steel/Steel-3C35.FCMat rename to src/Mod/Material/Resources/Materials/Standard/Metal/Steel/Steel-3C35.FCMat index 91c2f6478f..f04119f8f0 100644 --- a/src/Mod/Material/Resources/Materials/StandardMaterial/Metal/Steel/Steel-3C35.FCMat +++ b/src/Mod/Material/Resources/Materials/Standard/Metal/Steel/Steel-3C35.FCMat @@ -1,3 +1,4 @@ +--- # File created by ConvertFCMat.py General: UUID: "251cc54e-4a5a-4cd3-9c9e-006c416d7ce9" diff --git a/src/Mod/Material/Resources/Materials/StandardMaterial/Metal/Steel/Steel-3V45.FCMat b/src/Mod/Material/Resources/Materials/Standard/Metal/Steel/Steel-3V45.FCMat similarity index 99% rename from src/Mod/Material/Resources/Materials/StandardMaterial/Metal/Steel/Steel-3V45.FCMat rename to src/Mod/Material/Resources/Materials/Standard/Metal/Steel/Steel-3V45.FCMat index 189f0f3b04..19928848c9 100644 --- a/src/Mod/Material/Resources/Materials/StandardMaterial/Metal/Steel/Steel-3V45.FCMat +++ b/src/Mod/Material/Resources/Materials/Standard/Metal/Steel/Steel-3V45.FCMat @@ -1,3 +1,4 @@ +--- # File created by ConvertFCMat.py General: UUID: "d2e12a80-fd17-42db-99d8-62971f65ee84" diff --git a/src/Mod/Material/Resources/Materials/StandardMaterial/Metal/Steel/Steel-C10.FCMat b/src/Mod/Material/Resources/Materials/Standard/Metal/Steel/Steel-C10.FCMat similarity index 99% rename from src/Mod/Material/Resources/Materials/StandardMaterial/Metal/Steel/Steel-C10.FCMat rename to src/Mod/Material/Resources/Materials/Standard/Metal/Steel/Steel-C10.FCMat index 016b585afa..ac87673e55 100644 --- a/src/Mod/Material/Resources/Materials/StandardMaterial/Metal/Steel/Steel-C10.FCMat +++ b/src/Mod/Material/Resources/Materials/Standard/Metal/Steel/Steel-C10.FCMat @@ -1,3 +1,4 @@ +--- # File created by ConvertFCMat.py General: UUID: "9086ae2f-3b2e-4654-9665-0fe31effb8a2" diff --git a/src/Mod/Material/Resources/Materials/StandardMaterial/Metal/Steel/Steel-C15.FCMat b/src/Mod/Material/Resources/Materials/Standard/Metal/Steel/Steel-C15.FCMat similarity index 99% rename from src/Mod/Material/Resources/Materials/StandardMaterial/Metal/Steel/Steel-C15.FCMat rename to src/Mod/Material/Resources/Materials/Standard/Metal/Steel/Steel-C15.FCMat index 47d53206b6..588e5b31c5 100644 --- a/src/Mod/Material/Resources/Materials/StandardMaterial/Metal/Steel/Steel-C15.FCMat +++ b/src/Mod/Material/Resources/Materials/Standard/Metal/Steel/Steel-C15.FCMat @@ -1,3 +1,4 @@ +--- # File created by ConvertFCMat.py General: UUID: "06ae5c92-de7b-46c9-984d-4dd87964bc5c" diff --git a/src/Mod/Material/Resources/Materials/StandardMaterial/Metal/Steel/Steel-C22E.FCMat b/src/Mod/Material/Resources/Materials/Standard/Metal/Steel/Steel-C22E.FCMat similarity index 99% rename from src/Mod/Material/Resources/Materials/StandardMaterial/Metal/Steel/Steel-C22E.FCMat rename to src/Mod/Material/Resources/Materials/Standard/Metal/Steel/Steel-C22E.FCMat index 09bbdc3424..898af56a96 100644 --- a/src/Mod/Material/Resources/Materials/StandardMaterial/Metal/Steel/Steel-C22E.FCMat +++ b/src/Mod/Material/Resources/Materials/Standard/Metal/Steel/Steel-C22E.FCMat @@ -1,3 +1,4 @@ +--- # File created by ConvertFCMat.py General: UUID: "befa2489-dba0-41c5-aa83-7cca2ac8947b" diff --git a/src/Mod/Material/Resources/Materials/StandardMaterial/Metal/Steel/Steel-C25E.FCMat b/src/Mod/Material/Resources/Materials/Standard/Metal/Steel/Steel-C25E.FCMat similarity index 99% rename from src/Mod/Material/Resources/Materials/StandardMaterial/Metal/Steel/Steel-C25E.FCMat rename to src/Mod/Material/Resources/Materials/Standard/Metal/Steel/Steel-C25E.FCMat index fecc163322..7217b02854 100644 --- a/src/Mod/Material/Resources/Materials/StandardMaterial/Metal/Steel/Steel-C25E.FCMat +++ b/src/Mod/Material/Resources/Materials/Standard/Metal/Steel/Steel-C25E.FCMat @@ -1,3 +1,4 @@ +--- # File created by ConvertFCMat.py General: UUID: "b95d3de5-36af-41cd-a6dd-3f647b1d4eee" diff --git a/src/Mod/Material/Resources/Materials/StandardMaterial/Metal/Steel/Steel-C30E.FCMat b/src/Mod/Material/Resources/Materials/Standard/Metal/Steel/Steel-C30E.FCMat similarity index 99% rename from src/Mod/Material/Resources/Materials/StandardMaterial/Metal/Steel/Steel-C30E.FCMat rename to src/Mod/Material/Resources/Materials/Standard/Metal/Steel/Steel-C30E.FCMat index 8dc09c6ca6..26b651cb9c 100644 --- a/src/Mod/Material/Resources/Materials/StandardMaterial/Metal/Steel/Steel-C30E.FCMat +++ b/src/Mod/Material/Resources/Materials/Standard/Metal/Steel/Steel-C30E.FCMat @@ -1,3 +1,4 @@ +--- # File created by ConvertFCMat.py General: UUID: "e88e1e86-fad2-4c70-b185-4b2975e7fba5" diff --git a/src/Mod/Material/Resources/Materials/StandardMaterial/Metal/Steel/Steel-C40E.FCMat b/src/Mod/Material/Resources/Materials/Standard/Metal/Steel/Steel-C40E.FCMat similarity index 99% rename from src/Mod/Material/Resources/Materials/StandardMaterial/Metal/Steel/Steel-C40E.FCMat rename to src/Mod/Material/Resources/Materials/Standard/Metal/Steel/Steel-C40E.FCMat index 1ccb48ea77..0714d54628 100644 --- a/src/Mod/Material/Resources/Materials/StandardMaterial/Metal/Steel/Steel-C40E.FCMat +++ b/src/Mod/Material/Resources/Materials/Standard/Metal/Steel/Steel-C40E.FCMat @@ -1,3 +1,4 @@ +--- # File created by ConvertFCMat.py General: UUID: "5b33f177-b0da-4ffa-acb5-a3b23ab6e630" diff --git a/src/Mod/Material/Resources/Materials/StandardMaterial/Metal/Steel/Steel-C50E.FCMat b/src/Mod/Material/Resources/Materials/Standard/Metal/Steel/Steel-C50E.FCMat similarity index 99% rename from src/Mod/Material/Resources/Materials/StandardMaterial/Metal/Steel/Steel-C50E.FCMat rename to src/Mod/Material/Resources/Materials/Standard/Metal/Steel/Steel-C50E.FCMat index 10122e36fa..b0665787be 100644 --- a/src/Mod/Material/Resources/Materials/StandardMaterial/Metal/Steel/Steel-C50E.FCMat +++ b/src/Mod/Material/Resources/Materials/Standard/Metal/Steel/Steel-C50E.FCMat @@ -1,3 +1,4 @@ +--- # File created by ConvertFCMat.py General: UUID: "6821be5f-5471-4939-bb1d-866f83018090" diff --git a/src/Mod/Material/Resources/Materials/StandardMaterial/Metal/Steel/Steel-C55E.FCMat b/src/Mod/Material/Resources/Materials/Standard/Metal/Steel/Steel-C55E.FCMat similarity index 99% rename from src/Mod/Material/Resources/Materials/StandardMaterial/Metal/Steel/Steel-C55E.FCMat rename to src/Mod/Material/Resources/Materials/Standard/Metal/Steel/Steel-C55E.FCMat index 27da081e4e..063530f2e4 100644 --- a/src/Mod/Material/Resources/Materials/StandardMaterial/Metal/Steel/Steel-C55E.FCMat +++ b/src/Mod/Material/Resources/Materials/Standard/Metal/Steel/Steel-C55E.FCMat @@ -1,3 +1,4 @@ +--- # File created by ConvertFCMat.py General: UUID: "d60a21c9-9c4b-4463-b133-bb0e84ce46b2" diff --git a/src/Mod/Material/Resources/Materials/StandardMaterial/Metal/Steel/Steel-C60E.FCMat b/src/Mod/Material/Resources/Materials/Standard/Metal/Steel/Steel-C60E.FCMat similarity index 99% rename from src/Mod/Material/Resources/Materials/StandardMaterial/Metal/Steel/Steel-C60E.FCMat rename to src/Mod/Material/Resources/Materials/Standard/Metal/Steel/Steel-C60E.FCMat index 7ae48bda84..9217d63d17 100644 --- a/src/Mod/Material/Resources/Materials/StandardMaterial/Metal/Steel/Steel-C60E.FCMat +++ b/src/Mod/Material/Resources/Materials/Standard/Metal/Steel/Steel-C60E.FCMat @@ -1,3 +1,4 @@ +--- # File created by ConvertFCMat.py General: UUID: "56027b3e-876e-4c0e-9f39-242feaa67e13" diff --git a/src/Mod/Material/Resources/Materials/StandardMaterial/Metal/Steel/Steel-E295-GC.FCMat b/src/Mod/Material/Resources/Materials/Standard/Metal/Steel/Steel-E295-GC.FCMat similarity index 99% rename from src/Mod/Material/Resources/Materials/StandardMaterial/Metal/Steel/Steel-E295-GC.FCMat rename to src/Mod/Material/Resources/Materials/Standard/Metal/Steel/Steel-E295-GC.FCMat index 1cae3d8294..fbd73b9358 100644 --- a/src/Mod/Material/Resources/Materials/StandardMaterial/Metal/Steel/Steel-E295-GC.FCMat +++ b/src/Mod/Material/Resources/Materials/Standard/Metal/Steel/Steel-E295-GC.FCMat @@ -1,3 +1,4 @@ +--- # File created by ConvertFCMat.py General: UUID: "fc010ef8-91de-4099-9a73-605c01dd117c" diff --git a/src/Mod/Material/Resources/Materials/StandardMaterial/Metal/Steel/Steel-E295.FCMat b/src/Mod/Material/Resources/Materials/Standard/Metal/Steel/Steel-E295.FCMat similarity index 99% rename from src/Mod/Material/Resources/Materials/StandardMaterial/Metal/Steel/Steel-E295.FCMat rename to src/Mod/Material/Resources/Materials/Standard/Metal/Steel/Steel-E295.FCMat index d919a2b3f1..5b2f7a1d81 100644 --- a/src/Mod/Material/Resources/Materials/StandardMaterial/Metal/Steel/Steel-E295.FCMat +++ b/src/Mod/Material/Resources/Materials/Standard/Metal/Steel/Steel-E295.FCMat @@ -1,3 +1,4 @@ +--- # File created by ConvertFCMat.py General: UUID: "f1567a1c-995f-4feb-8baf-09ade3e830c5" diff --git a/src/Mod/Material/Resources/Materials/StandardMaterial/Metal/Steel/Steel-E335-GC.FCMat b/src/Mod/Material/Resources/Materials/Standard/Metal/Steel/Steel-E335-GC.FCMat similarity index 99% rename from src/Mod/Material/Resources/Materials/StandardMaterial/Metal/Steel/Steel-E335-GC.FCMat rename to src/Mod/Material/Resources/Materials/Standard/Metal/Steel/Steel-E335-GC.FCMat index b4a6f21b2b..7024e001e5 100644 --- a/src/Mod/Material/Resources/Materials/StandardMaterial/Metal/Steel/Steel-E335-GC.FCMat +++ b/src/Mod/Material/Resources/Materials/Standard/Metal/Steel/Steel-E335-GC.FCMat @@ -1,3 +1,4 @@ +--- # File created by ConvertFCMat.py General: UUID: "ab901ecc-d880-4cb4-b400-dbe4fd9b0f0a" diff --git a/src/Mod/Material/Resources/Materials/StandardMaterial/Metal/Steel/Steel-E335.FCMat b/src/Mod/Material/Resources/Materials/Standard/Metal/Steel/Steel-E335.FCMat similarity index 99% rename from src/Mod/Material/Resources/Materials/StandardMaterial/Metal/Steel/Steel-E335.FCMat rename to src/Mod/Material/Resources/Materials/Standard/Metal/Steel/Steel-E335.FCMat index 44e9e013db..4c668edd3f 100644 --- a/src/Mod/Material/Resources/Materials/StandardMaterial/Metal/Steel/Steel-E335.FCMat +++ b/src/Mod/Material/Resources/Materials/Standard/Metal/Steel/Steel-E335.FCMat @@ -1,3 +1,4 @@ +--- # File created by ConvertFCMat.py General: UUID: "da418876-f80e-4793-8fc8-a6040a694389" diff --git a/src/Mod/Material/Resources/Materials/StandardMaterial/Metal/Steel/Steel-E360-GC.FCMat b/src/Mod/Material/Resources/Materials/Standard/Metal/Steel/Steel-E360-GC.FCMat similarity index 99% rename from src/Mod/Material/Resources/Materials/StandardMaterial/Metal/Steel/Steel-E360-GC.FCMat rename to src/Mod/Material/Resources/Materials/Standard/Metal/Steel/Steel-E360-GC.FCMat index 69ee63fa8d..f428863ead 100644 --- a/src/Mod/Material/Resources/Materials/StandardMaterial/Metal/Steel/Steel-E360-GC.FCMat +++ b/src/Mod/Material/Resources/Materials/Standard/Metal/Steel/Steel-E360-GC.FCMat @@ -1,3 +1,4 @@ +--- # File created by ConvertFCMat.py General: UUID: "4c311592-659b-4ef0-bac9-5cffe9e70612" diff --git a/src/Mod/Material/Resources/Materials/StandardMaterial/Metal/Steel/Steel-E360.FCMat b/src/Mod/Material/Resources/Materials/Standard/Metal/Steel/Steel-E360.FCMat similarity index 99% rename from src/Mod/Material/Resources/Materials/StandardMaterial/Metal/Steel/Steel-E360.FCMat rename to src/Mod/Material/Resources/Materials/Standard/Metal/Steel/Steel-E360.FCMat index 086b7b9ddb..6a90c4cd49 100644 --- a/src/Mod/Material/Resources/Materials/StandardMaterial/Metal/Steel/Steel-E360.FCMat +++ b/src/Mod/Material/Resources/Materials/Standard/Metal/Steel/Steel-E360.FCMat @@ -1,3 +1,4 @@ +--- # File created by ConvertFCMat.py General: UUID: "dfba065e-2bfb-4fe3-8eec-dfb1cb6274fe" diff --git a/src/Mod/Material/Resources/Materials/StandardMaterial/Metal/Steel/Steel-EN-GJL-100.FCMat b/src/Mod/Material/Resources/Materials/Standard/Metal/Steel/Steel-EN-GJL-100.FCMat similarity index 99% rename from src/Mod/Material/Resources/Materials/StandardMaterial/Metal/Steel/Steel-EN-GJL-100.FCMat rename to src/Mod/Material/Resources/Materials/Standard/Metal/Steel/Steel-EN-GJL-100.FCMat index 8bac4460a4..413732dbb6 100644 --- a/src/Mod/Material/Resources/Materials/StandardMaterial/Metal/Steel/Steel-EN-GJL-100.FCMat +++ b/src/Mod/Material/Resources/Materials/Standard/Metal/Steel/Steel-EN-GJL-100.FCMat @@ -1,3 +1,4 @@ +--- # File created by ConvertFCMat.py General: UUID: "5a1d56e3-8180-4f81-a0d7-887fb08e3752" diff --git a/src/Mod/Material/Resources/Materials/StandardMaterial/Metal/Steel/Steel-EN-GJL-150.FCMat b/src/Mod/Material/Resources/Materials/Standard/Metal/Steel/Steel-EN-GJL-150.FCMat similarity index 99% rename from src/Mod/Material/Resources/Materials/StandardMaterial/Metal/Steel/Steel-EN-GJL-150.FCMat rename to src/Mod/Material/Resources/Materials/Standard/Metal/Steel/Steel-EN-GJL-150.FCMat index e68bdbd697..56a59fc078 100644 --- a/src/Mod/Material/Resources/Materials/StandardMaterial/Metal/Steel/Steel-EN-GJL-150.FCMat +++ b/src/Mod/Material/Resources/Materials/Standard/Metal/Steel/Steel-EN-GJL-150.FCMat @@ -1,3 +1,4 @@ +--- # File created by ConvertFCMat.py General: UUID: "7a2aa3c4-10fa-44b0-9420-37ae74207fa3" diff --git a/src/Mod/Material/Resources/Materials/StandardMaterial/Metal/Steel/Steel-EN-GJL-200.FCMat b/src/Mod/Material/Resources/Materials/Standard/Metal/Steel/Steel-EN-GJL-200.FCMat similarity index 99% rename from src/Mod/Material/Resources/Materials/StandardMaterial/Metal/Steel/Steel-EN-GJL-200.FCMat rename to src/Mod/Material/Resources/Materials/Standard/Metal/Steel/Steel-EN-GJL-200.FCMat index ed3218a3ff..1e6d512d93 100644 --- a/src/Mod/Material/Resources/Materials/StandardMaterial/Metal/Steel/Steel-EN-GJL-200.FCMat +++ b/src/Mod/Material/Resources/Materials/Standard/Metal/Steel/Steel-EN-GJL-200.FCMat @@ -1,3 +1,4 @@ +--- # File created by ConvertFCMat.py General: UUID: "8ae26e72-65b6-4f93-9fbe-9e3f17a2e1b5" diff --git a/src/Mod/Material/Resources/Materials/StandardMaterial/Metal/Steel/Steel-EN-GJL-250.FCMat b/src/Mod/Material/Resources/Materials/Standard/Metal/Steel/Steel-EN-GJL-250.FCMat similarity index 99% rename from src/Mod/Material/Resources/Materials/StandardMaterial/Metal/Steel/Steel-EN-GJL-250.FCMat rename to src/Mod/Material/Resources/Materials/Standard/Metal/Steel/Steel-EN-GJL-250.FCMat index 5272f9b931..d95e4462d6 100644 --- a/src/Mod/Material/Resources/Materials/StandardMaterial/Metal/Steel/Steel-EN-GJL-250.FCMat +++ b/src/Mod/Material/Resources/Materials/Standard/Metal/Steel/Steel-EN-GJL-250.FCMat @@ -1,3 +1,4 @@ +--- # File created by ConvertFCMat.py General: UUID: "71f32e31-656e-4f94-a5f0-5b656b9367c6" diff --git a/src/Mod/Material/Resources/Materials/StandardMaterial/Metal/Steel/Steel-EN-GJL-300.FCMat b/src/Mod/Material/Resources/Materials/Standard/Metal/Steel/Steel-EN-GJL-300.FCMat similarity index 99% rename from src/Mod/Material/Resources/Materials/StandardMaterial/Metal/Steel/Steel-EN-GJL-300.FCMat rename to src/Mod/Material/Resources/Materials/Standard/Metal/Steel/Steel-EN-GJL-300.FCMat index 2dd95eb99d..f0f8ff1911 100644 --- a/src/Mod/Material/Resources/Materials/StandardMaterial/Metal/Steel/Steel-EN-GJL-300.FCMat +++ b/src/Mod/Material/Resources/Materials/Standard/Metal/Steel/Steel-EN-GJL-300.FCMat @@ -1,3 +1,4 @@ +--- # File created by ConvertFCMat.py General: UUID: "6db01463-7772-4d0e-ab81-fae6d45ce669" diff --git a/src/Mod/Material/Resources/Materials/StandardMaterial/Metal/Steel/Steel-EN-GJL-350.FCMat b/src/Mod/Material/Resources/Materials/Standard/Metal/Steel/Steel-EN-GJL-350.FCMat similarity index 99% rename from src/Mod/Material/Resources/Materials/StandardMaterial/Metal/Steel/Steel-EN-GJL-350.FCMat rename to src/Mod/Material/Resources/Materials/Standard/Metal/Steel/Steel-EN-GJL-350.FCMat index f463241b6d..7ac5596ca0 100644 --- a/src/Mod/Material/Resources/Materials/StandardMaterial/Metal/Steel/Steel-EN-GJL-350.FCMat +++ b/src/Mod/Material/Resources/Materials/Standard/Metal/Steel/Steel-EN-GJL-350.FCMat @@ -1,3 +1,4 @@ +--- # File created by ConvertFCMat.py General: UUID: "c4ff4bef-4885-41d5-904f-9c71a8018c98" diff --git a/src/Mod/Material/Resources/Materials/StandardMaterial/Metal/Steel/Steel-EN-GJMB-350-10.FCMat b/src/Mod/Material/Resources/Materials/Standard/Metal/Steel/Steel-EN-GJMB-350-10.FCMat similarity index 99% rename from src/Mod/Material/Resources/Materials/StandardMaterial/Metal/Steel/Steel-EN-GJMB-350-10.FCMat rename to src/Mod/Material/Resources/Materials/Standard/Metal/Steel/Steel-EN-GJMB-350-10.FCMat index e3068a9035..e8083da061 100644 --- a/src/Mod/Material/Resources/Materials/StandardMaterial/Metal/Steel/Steel-EN-GJMB-350-10.FCMat +++ b/src/Mod/Material/Resources/Materials/Standard/Metal/Steel/Steel-EN-GJMB-350-10.FCMat @@ -1,3 +1,4 @@ +--- # File created by ConvertFCMat.py General: UUID: "eec1833a-424a-4c4f-bdf2-6f8377845d54" diff --git a/src/Mod/Material/Resources/Materials/StandardMaterial/Metal/Steel/Steel-EN-GJMB-550-4.FCMat b/src/Mod/Material/Resources/Materials/Standard/Metal/Steel/Steel-EN-GJMB-550-4.FCMat similarity index 99% rename from src/Mod/Material/Resources/Materials/StandardMaterial/Metal/Steel/Steel-EN-GJMB-550-4.FCMat rename to src/Mod/Material/Resources/Materials/Standard/Metal/Steel/Steel-EN-GJMB-550-4.FCMat index d4e4f44237..8dbe731801 100644 --- a/src/Mod/Material/Resources/Materials/StandardMaterial/Metal/Steel/Steel-EN-GJMB-550-4.FCMat +++ b/src/Mod/Material/Resources/Materials/Standard/Metal/Steel/Steel-EN-GJMB-550-4.FCMat @@ -1,3 +1,4 @@ +--- # File created by ConvertFCMat.py General: UUID: "095140bb-df01-4bb9-8ff3-062aa91ec48c" diff --git a/src/Mod/Material/Resources/Materials/StandardMaterial/Metal/Steel/Steel-EN-GJMB-650-2.FCMat b/src/Mod/Material/Resources/Materials/Standard/Metal/Steel/Steel-EN-GJMB-650-2.FCMat similarity index 99% rename from src/Mod/Material/Resources/Materials/StandardMaterial/Metal/Steel/Steel-EN-GJMB-650-2.FCMat rename to src/Mod/Material/Resources/Materials/Standard/Metal/Steel/Steel-EN-GJMB-650-2.FCMat index d11ba1c726..900a3d5c3e 100644 --- a/src/Mod/Material/Resources/Materials/StandardMaterial/Metal/Steel/Steel-EN-GJMB-650-2.FCMat +++ b/src/Mod/Material/Resources/Materials/Standard/Metal/Steel/Steel-EN-GJMB-650-2.FCMat @@ -1,3 +1,4 @@ +--- # File created by ConvertFCMat.py General: UUID: "490a348c-f508-4599-a5e0-2f6b211126d5" diff --git a/src/Mod/Material/Resources/Materials/StandardMaterial/Metal/Steel/Steel-EN-GJMW-350-4.FCMat b/src/Mod/Material/Resources/Materials/Standard/Metal/Steel/Steel-EN-GJMW-350-4.FCMat similarity index 99% rename from src/Mod/Material/Resources/Materials/StandardMaterial/Metal/Steel/Steel-EN-GJMW-350-4.FCMat rename to src/Mod/Material/Resources/Materials/Standard/Metal/Steel/Steel-EN-GJMW-350-4.FCMat index ebb8694572..0391108658 100644 --- a/src/Mod/Material/Resources/Materials/StandardMaterial/Metal/Steel/Steel-EN-GJMW-350-4.FCMat +++ b/src/Mod/Material/Resources/Materials/Standard/Metal/Steel/Steel-EN-GJMW-350-4.FCMat @@ -1,3 +1,4 @@ +--- # File created by ConvertFCMat.py General: UUID: "a97c3eab-a1e8-472b-ba40-519a0d660019" diff --git a/src/Mod/Material/Resources/Materials/StandardMaterial/Metal/Steel/Steel-EN-GJMW-360-12.FCMat b/src/Mod/Material/Resources/Materials/Standard/Metal/Steel/Steel-EN-GJMW-360-12.FCMat similarity index 99% rename from src/Mod/Material/Resources/Materials/StandardMaterial/Metal/Steel/Steel-EN-GJMW-360-12.FCMat rename to src/Mod/Material/Resources/Materials/Standard/Metal/Steel/Steel-EN-GJMW-360-12.FCMat index e1c40edde3..f750372400 100644 --- a/src/Mod/Material/Resources/Materials/StandardMaterial/Metal/Steel/Steel-EN-GJMW-360-12.FCMat +++ b/src/Mod/Material/Resources/Materials/Standard/Metal/Steel/Steel-EN-GJMW-360-12.FCMat @@ -1,3 +1,4 @@ +--- # File created by ConvertFCMat.py General: UUID: "81a865af-79b6-4e0b-98ad-5cde134ad99e" diff --git a/src/Mod/Material/Resources/Materials/StandardMaterial/Metal/Steel/Steel-EN-GJMW-400-5.FCMat b/src/Mod/Material/Resources/Materials/Standard/Metal/Steel/Steel-EN-GJMW-400-5.FCMat similarity index 99% rename from src/Mod/Material/Resources/Materials/StandardMaterial/Metal/Steel/Steel-EN-GJMW-400-5.FCMat rename to src/Mod/Material/Resources/Materials/Standard/Metal/Steel/Steel-EN-GJMW-400-5.FCMat index 9220b27f79..f1da5a90de 100644 --- a/src/Mod/Material/Resources/Materials/StandardMaterial/Metal/Steel/Steel-EN-GJMW-400-5.FCMat +++ b/src/Mod/Material/Resources/Materials/Standard/Metal/Steel/Steel-EN-GJMW-400-5.FCMat @@ -1,3 +1,4 @@ +--- # File created by ConvertFCMat.py General: UUID: "9d71fc9c-960a-47e8-afa8-a86a24b3ff89" diff --git a/src/Mod/Material/Resources/Materials/StandardMaterial/Metal/Steel/Steel-EN-GJMW-450-7.FCMat b/src/Mod/Material/Resources/Materials/Standard/Metal/Steel/Steel-EN-GJMW-450-7.FCMat similarity index 99% rename from src/Mod/Material/Resources/Materials/StandardMaterial/Metal/Steel/Steel-EN-GJMW-450-7.FCMat rename to src/Mod/Material/Resources/Materials/Standard/Metal/Steel/Steel-EN-GJMW-450-7.FCMat index 1e9d4e28d1..583970f176 100644 --- a/src/Mod/Material/Resources/Materials/StandardMaterial/Metal/Steel/Steel-EN-GJMW-450-7.FCMat +++ b/src/Mod/Material/Resources/Materials/Standard/Metal/Steel/Steel-EN-GJMW-450-7.FCMat @@ -1,3 +1,4 @@ +--- # File created by ConvertFCMat.py General: UUID: "c0eedc49-d63b-429d-be63-ef0ea442f45c" diff --git a/src/Mod/Material/Resources/Materials/StandardMaterial/Metal/Steel/Steel-EN-GJS-400-15.FCMat b/src/Mod/Material/Resources/Materials/Standard/Metal/Steel/Steel-EN-GJS-400-15.FCMat similarity index 99% rename from src/Mod/Material/Resources/Materials/StandardMaterial/Metal/Steel/Steel-EN-GJS-400-15.FCMat rename to src/Mod/Material/Resources/Materials/Standard/Metal/Steel/Steel-EN-GJS-400-15.FCMat index 051c98f0ec..f9b8fec381 100644 --- a/src/Mod/Material/Resources/Materials/StandardMaterial/Metal/Steel/Steel-EN-GJS-400-15.FCMat +++ b/src/Mod/Material/Resources/Materials/Standard/Metal/Steel/Steel-EN-GJS-400-15.FCMat @@ -1,3 +1,4 @@ +--- # File created by ConvertFCMat.py General: UUID: "f6300691-ecf0-4846-acb1-8c2bad3359a8" diff --git a/src/Mod/Material/Resources/Materials/StandardMaterial/Metal/Steel/Steel-EN-GJS-500-7.FCMat b/src/Mod/Material/Resources/Materials/Standard/Metal/Steel/Steel-EN-GJS-500-7.FCMat similarity index 99% rename from src/Mod/Material/Resources/Materials/StandardMaterial/Metal/Steel/Steel-EN-GJS-500-7.FCMat rename to src/Mod/Material/Resources/Materials/Standard/Metal/Steel/Steel-EN-GJS-500-7.FCMat index 1c28126097..8c4db33f9c 100644 --- a/src/Mod/Material/Resources/Materials/StandardMaterial/Metal/Steel/Steel-EN-GJS-500-7.FCMat +++ b/src/Mod/Material/Resources/Materials/Standard/Metal/Steel/Steel-EN-GJS-500-7.FCMat @@ -1,3 +1,4 @@ +--- # File created by ConvertFCMat.py General: UUID: "51aabe6f-642b-4f47-9006-1c8c3613a422" diff --git a/src/Mod/Material/Resources/Materials/StandardMaterial/Metal/Steel/Steel-EN-GJS-600-3.FCMat b/src/Mod/Material/Resources/Materials/Standard/Metal/Steel/Steel-EN-GJS-600-3.FCMat similarity index 99% rename from src/Mod/Material/Resources/Materials/StandardMaterial/Metal/Steel/Steel-EN-GJS-600-3.FCMat rename to src/Mod/Material/Resources/Materials/Standard/Metal/Steel/Steel-EN-GJS-600-3.FCMat index 1de6ec6cf9..8daa85645e 100644 --- a/src/Mod/Material/Resources/Materials/StandardMaterial/Metal/Steel/Steel-EN-GJS-600-3.FCMat +++ b/src/Mod/Material/Resources/Materials/Standard/Metal/Steel/Steel-EN-GJS-600-3.FCMat @@ -1,3 +1,4 @@ +--- # File created by ConvertFCMat.py General: UUID: "eb573f18-5a7b-493b-bfda-d711f03f7f71" diff --git a/src/Mod/Material/Resources/Materials/StandardMaterial/Metal/Steel/Steel-EN-GJS-700-2.FCMat b/src/Mod/Material/Resources/Materials/Standard/Metal/Steel/Steel-EN-GJS-700-2.FCMat similarity index 99% rename from src/Mod/Material/Resources/Materials/StandardMaterial/Metal/Steel/Steel-EN-GJS-700-2.FCMat rename to src/Mod/Material/Resources/Materials/Standard/Metal/Steel/Steel-EN-GJS-700-2.FCMat index 3e1f7625de..0b515546c4 100644 --- a/src/Mod/Material/Resources/Materials/StandardMaterial/Metal/Steel/Steel-EN-GJS-700-2.FCMat +++ b/src/Mod/Material/Resources/Materials/Standard/Metal/Steel/Steel-EN-GJS-700-2.FCMat @@ -1,3 +1,4 @@ +--- # File created by ConvertFCMat.py General: UUID: "9a194e62-d2e4-466d-92ba-2707107c4e3c" diff --git a/src/Mod/Material/Resources/Materials/StandardMaterial/Metal/Steel/Steel-EN-GJS-800-1.FCMat b/src/Mod/Material/Resources/Materials/Standard/Metal/Steel/Steel-EN-GJS-800-1.FCMat similarity index 99% rename from src/Mod/Material/Resources/Materials/StandardMaterial/Metal/Steel/Steel-EN-GJS-800-1.FCMat rename to src/Mod/Material/Resources/Materials/Standard/Metal/Steel/Steel-EN-GJS-800-1.FCMat index 9ad715e980..fee5567f43 100644 --- a/src/Mod/Material/Resources/Materials/StandardMaterial/Metal/Steel/Steel-EN-GJS-800-1.FCMat +++ b/src/Mod/Material/Resources/Materials/Standard/Metal/Steel/Steel-EN-GJS-800-1.FCMat @@ -1,3 +1,4 @@ +--- # File created by ConvertFCMat.py General: UUID: "97c444f9-83ae-48d8-98e5-603349d06f7e" diff --git a/src/Mod/Material/Resources/Materials/StandardMaterial/Metal/Steel/Steel-G16Mn5.FCMat b/src/Mod/Material/Resources/Materials/Standard/Metal/Steel/Steel-G16Mn5.FCMat similarity index 99% rename from src/Mod/Material/Resources/Materials/StandardMaterial/Metal/Steel/Steel-G16Mn5.FCMat rename to src/Mod/Material/Resources/Materials/Standard/Metal/Steel/Steel-G16Mn5.FCMat index bdede7e22a..8dc245e265 100644 --- a/src/Mod/Material/Resources/Materials/StandardMaterial/Metal/Steel/Steel-G16Mn5.FCMat +++ b/src/Mod/Material/Resources/Materials/Standard/Metal/Steel/Steel-G16Mn5.FCMat @@ -1,3 +1,4 @@ +--- # File created by ConvertFCMat.py General: UUID: "fc5c14ba-4885-4c75-aaf6-0ec4f2365f40" diff --git a/src/Mod/Material/Resources/Materials/StandardMaterial/Metal/Steel/Steel-G200.FCMat b/src/Mod/Material/Resources/Materials/Standard/Metal/Steel/Steel-G200.FCMat similarity index 99% rename from src/Mod/Material/Resources/Materials/StandardMaterial/Metal/Steel/Steel-G200.FCMat rename to src/Mod/Material/Resources/Materials/Standard/Metal/Steel/Steel-G200.FCMat index 2c61fce091..2bf1d2c2a5 100644 --- a/src/Mod/Material/Resources/Materials/StandardMaterial/Metal/Steel/Steel-G200.FCMat +++ b/src/Mod/Material/Resources/Materials/Standard/Metal/Steel/Steel-G200.FCMat @@ -1,3 +1,4 @@ +--- # File created by ConvertFCMat.py General: UUID: "8d799def-e941-4cb6-b48d-72b9a292fafe" diff --git a/src/Mod/Material/Resources/Materials/StandardMaterial/Metal/Steel/Steel-G20Mn5.FCMat b/src/Mod/Material/Resources/Materials/Standard/Metal/Steel/Steel-G20Mn5.FCMat similarity index 99% rename from src/Mod/Material/Resources/Materials/StandardMaterial/Metal/Steel/Steel-G20Mn5.FCMat rename to src/Mod/Material/Resources/Materials/Standard/Metal/Steel/Steel-G20Mn5.FCMat index b7bbf43d10..ddd5a7f474 100644 --- a/src/Mod/Material/Resources/Materials/StandardMaterial/Metal/Steel/Steel-G20Mn5.FCMat +++ b/src/Mod/Material/Resources/Materials/Standard/Metal/Steel/Steel-G20Mn5.FCMat @@ -1,3 +1,4 @@ +--- # File created by ConvertFCMat.py General: UUID: "d384d1e5-e2fe-4e09-9a0f-78e5670425ee" diff --git a/src/Mod/Material/Resources/Materials/StandardMaterial/Metal/Steel/Steel-G230.FCMat b/src/Mod/Material/Resources/Materials/Standard/Metal/Steel/Steel-G230.FCMat similarity index 99% rename from src/Mod/Material/Resources/Materials/StandardMaterial/Metal/Steel/Steel-G230.FCMat rename to src/Mod/Material/Resources/Materials/Standard/Metal/Steel/Steel-G230.FCMat index 114fd54038..dfd8396624 100644 --- a/src/Mod/Material/Resources/Materials/StandardMaterial/Metal/Steel/Steel-G230.FCMat +++ b/src/Mod/Material/Resources/Materials/Standard/Metal/Steel/Steel-G230.FCMat @@ -1,3 +1,4 @@ +--- # File created by ConvertFCMat.py General: UUID: "53931707-6fe7-4ac0-ac7a-e9ddfec70fa5" diff --git a/src/Mod/Material/Resources/Materials/StandardMaterial/Metal/Steel/Steel-G260.FCMat b/src/Mod/Material/Resources/Materials/Standard/Metal/Steel/Steel-G260.FCMat similarity index 99% rename from src/Mod/Material/Resources/Materials/StandardMaterial/Metal/Steel/Steel-G260.FCMat rename to src/Mod/Material/Resources/Materials/Standard/Metal/Steel/Steel-G260.FCMat index 71e5f54ef6..9c5eded0d0 100644 --- a/src/Mod/Material/Resources/Materials/StandardMaterial/Metal/Steel/Steel-G260.FCMat +++ b/src/Mod/Material/Resources/Materials/Standard/Metal/Steel/Steel-G260.FCMat @@ -1,3 +1,4 @@ +--- # File created by ConvertFCMat.py General: UUID: "22971112-d137-4db1-9349-edf5e281e333" diff --git a/src/Mod/Material/Resources/Materials/StandardMaterial/Metal/Steel/Steel-G300.FCMat b/src/Mod/Material/Resources/Materials/Standard/Metal/Steel/Steel-G300.FCMat similarity index 99% rename from src/Mod/Material/Resources/Materials/StandardMaterial/Metal/Steel/Steel-G300.FCMat rename to src/Mod/Material/Resources/Materials/Standard/Metal/Steel/Steel-G300.FCMat index 488a762db6..6c93c71a5a 100644 --- a/src/Mod/Material/Resources/Materials/StandardMaterial/Metal/Steel/Steel-G300.FCMat +++ b/src/Mod/Material/Resources/Materials/Standard/Metal/Steel/Steel-G300.FCMat @@ -1,3 +1,4 @@ +--- # File created by ConvertFCMat.py General: UUID: "33f1c891-7488-4324-9af9-cbdde6726b49" diff --git a/src/Mod/Material/Resources/Materials/StandardMaterial/Metal/Steel/Steel-G30Mn5.FCMat b/src/Mod/Material/Resources/Materials/Standard/Metal/Steel/Steel-G30Mn5.FCMat similarity index 99% rename from src/Mod/Material/Resources/Materials/StandardMaterial/Metal/Steel/Steel-G30Mn5.FCMat rename to src/Mod/Material/Resources/Materials/Standard/Metal/Steel/Steel-G30Mn5.FCMat index 91675dc395..412ef3d5a3 100644 --- a/src/Mod/Material/Resources/Materials/StandardMaterial/Metal/Steel/Steel-G30Mn5.FCMat +++ b/src/Mod/Material/Resources/Materials/Standard/Metal/Steel/Steel-G30Mn5.FCMat @@ -1,3 +1,4 @@ +--- # File created by ConvertFCMat.py General: UUID: "e03df70c-ceb8-4317-825d-1195c8c178d0" diff --git a/src/Mod/Material/Resources/Materials/StandardMaterial/Metal/Steel/Steel-Generic.FCMat b/src/Mod/Material/Resources/Materials/Standard/Metal/Steel/Steel-Generic.FCMat similarity index 99% rename from src/Mod/Material/Resources/Materials/StandardMaterial/Metal/Steel/Steel-Generic.FCMat rename to src/Mod/Material/Resources/Materials/Standard/Metal/Steel/Steel-Generic.FCMat index e291486c4a..51f0b7e306 100644 --- a/src/Mod/Material/Resources/Materials/StandardMaterial/Metal/Steel/Steel-Generic.FCMat +++ b/src/Mod/Material/Resources/Materials/Standard/Metal/Steel/Steel-Generic.FCMat @@ -1,3 +1,4 @@ +--- # File created by ConvertFCMat.py General: UUID: "90bbd8ef-8623-4d78-b3bf-e0bdb9b74dd3" diff --git a/src/Mod/Material/Resources/Materials/StandardMaterial/Metal/Steel/Steel-S185.FCMat b/src/Mod/Material/Resources/Materials/Standard/Metal/Steel/Steel-S185.FCMat similarity index 99% rename from src/Mod/Material/Resources/Materials/StandardMaterial/Metal/Steel/Steel-S185.FCMat rename to src/Mod/Material/Resources/Materials/Standard/Metal/Steel/Steel-S185.FCMat index c8f0ada537..5211d3fdb8 100644 --- a/src/Mod/Material/Resources/Materials/StandardMaterial/Metal/Steel/Steel-S185.FCMat +++ b/src/Mod/Material/Resources/Materials/Standard/Metal/Steel/Steel-S185.FCMat @@ -1,3 +1,4 @@ +--- # File created by ConvertFCMat.py General: UUID: "6f32981a-7bbf-49a1-842c-7567a195fa7e" diff --git a/src/Mod/Material/Resources/Materials/StandardMaterial/Metal/Steel/Steel-S235JO.FCMat b/src/Mod/Material/Resources/Materials/Standard/Metal/Steel/Steel-S235JO.FCMat similarity index 99% rename from src/Mod/Material/Resources/Materials/StandardMaterial/Metal/Steel/Steel-S235JO.FCMat rename to src/Mod/Material/Resources/Materials/Standard/Metal/Steel/Steel-S235JO.FCMat index c484567ffd..ee578ea495 100644 --- a/src/Mod/Material/Resources/Materials/StandardMaterial/Metal/Steel/Steel-S235JO.FCMat +++ b/src/Mod/Material/Resources/Materials/Standard/Metal/Steel/Steel-S235JO.FCMat @@ -1,3 +1,4 @@ +--- # File created by ConvertFCMat.py General: UUID: "5b13e02a-b173-4e2d-95fd-a30d9e0f7cf5" diff --git a/src/Mod/Material/Resources/Materials/StandardMaterial/Metal/Steel/Steel-S235JR.FCMat b/src/Mod/Material/Resources/Materials/Standard/Metal/Steel/Steel-S235JR.FCMat similarity index 99% rename from src/Mod/Material/Resources/Materials/StandardMaterial/Metal/Steel/Steel-S235JR.FCMat rename to src/Mod/Material/Resources/Materials/Standard/Metal/Steel/Steel-S235JR.FCMat index 657975b9c7..727e6101ef 100644 --- a/src/Mod/Material/Resources/Materials/StandardMaterial/Metal/Steel/Steel-S235JR.FCMat +++ b/src/Mod/Material/Resources/Materials/Standard/Metal/Steel/Steel-S235JR.FCMat @@ -1,3 +1,4 @@ +--- # File created by ConvertFCMat.py General: UUID: "4a96627d-6518-458c-8ccf-846f69fd8a50" diff --git a/src/Mod/Material/Resources/Materials/StandardMaterial/Metal/Steel/Steel-S235JRG1.FCMat b/src/Mod/Material/Resources/Materials/Standard/Metal/Steel/Steel-S235JRG1.FCMat similarity index 99% rename from src/Mod/Material/Resources/Materials/StandardMaterial/Metal/Steel/Steel-S235JRG1.FCMat rename to src/Mod/Material/Resources/Materials/Standard/Metal/Steel/Steel-S235JRG1.FCMat index fe1182e815..003275567b 100644 --- a/src/Mod/Material/Resources/Materials/StandardMaterial/Metal/Steel/Steel-S235JRG1.FCMat +++ b/src/Mod/Material/Resources/Materials/Standard/Metal/Steel/Steel-S235JRG1.FCMat @@ -1,3 +1,4 @@ +--- # File created by ConvertFCMat.py General: UUID: "d8cc450d-7d6d-4377-8a8d-ffe3cf30fcb2" diff --git a/src/Mod/Material/Resources/Materials/StandardMaterial/Metal/Steel/Steel-S260NC.FCMat b/src/Mod/Material/Resources/Materials/Standard/Metal/Steel/Steel-S260NC.FCMat similarity index 99% rename from src/Mod/Material/Resources/Materials/StandardMaterial/Metal/Steel/Steel-S260NC.FCMat rename to src/Mod/Material/Resources/Materials/Standard/Metal/Steel/Steel-S260NC.FCMat index b9e5794e79..186a9facd6 100644 --- a/src/Mod/Material/Resources/Materials/StandardMaterial/Metal/Steel/Steel-S260NC.FCMat +++ b/src/Mod/Material/Resources/Materials/Standard/Metal/Steel/Steel-S260NC.FCMat @@ -1,3 +1,4 @@ +--- # File created by ConvertFCMat.py General: UUID: "4994efd8-fc7b-41b3-ad61-9d98d1bdbe6e" diff --git a/src/Mod/Material/Resources/Materials/StandardMaterial/Metal/Steel/Steel-S275JO.FCMat b/src/Mod/Material/Resources/Materials/Standard/Metal/Steel/Steel-S275JO.FCMat similarity index 99% rename from src/Mod/Material/Resources/Materials/StandardMaterial/Metal/Steel/Steel-S275JO.FCMat rename to src/Mod/Material/Resources/Materials/Standard/Metal/Steel/Steel-S275JO.FCMat index 56fb705e76..361baa907a 100644 --- a/src/Mod/Material/Resources/Materials/StandardMaterial/Metal/Steel/Steel-S275JO.FCMat +++ b/src/Mod/Material/Resources/Materials/Standard/Metal/Steel/Steel-S275JO.FCMat @@ -1,3 +1,4 @@ +--- # File created by ConvertFCMat.py General: UUID: "f9deac5f-91a4-41aa-b49c-ef09ec4613e2" diff --git a/src/Mod/Material/Resources/Materials/StandardMaterial/Metal/Steel/Steel-S275JR.FCMat b/src/Mod/Material/Resources/Materials/Standard/Metal/Steel/Steel-S275JR.FCMat similarity index 99% rename from src/Mod/Material/Resources/Materials/StandardMaterial/Metal/Steel/Steel-S275JR.FCMat rename to src/Mod/Material/Resources/Materials/Standard/Metal/Steel/Steel-S275JR.FCMat index c3da4512c9..0ab5fc1cf7 100644 --- a/src/Mod/Material/Resources/Materials/StandardMaterial/Metal/Steel/Steel-S275JR.FCMat +++ b/src/Mod/Material/Resources/Materials/Standard/Metal/Steel/Steel-S275JR.FCMat @@ -1,3 +1,4 @@ +--- # File created by ConvertFCMat.py General: UUID: "30e4da7d-1fe3-41de-911a-a42e3405bb7b" diff --git a/src/Mod/Material/Resources/Materials/StandardMaterial/Metal/Steel/Steel-S275N.FCMat b/src/Mod/Material/Resources/Materials/Standard/Metal/Steel/Steel-S275N.FCMat similarity index 99% rename from src/Mod/Material/Resources/Materials/StandardMaterial/Metal/Steel/Steel-S275N.FCMat rename to src/Mod/Material/Resources/Materials/Standard/Metal/Steel/Steel-S275N.FCMat index 59a1888016..207d722f16 100644 --- a/src/Mod/Material/Resources/Materials/StandardMaterial/Metal/Steel/Steel-S275N.FCMat +++ b/src/Mod/Material/Resources/Materials/Standard/Metal/Steel/Steel-S275N.FCMat @@ -1,3 +1,4 @@ +--- # File created by ConvertFCMat.py General: UUID: "07592e35-3e1a-470f-8eda-f4bee7d9cb4a" diff --git a/src/Mod/Material/Resources/Materials/StandardMaterial/Metal/Steel/Steel-S335JO.FCMat b/src/Mod/Material/Resources/Materials/Standard/Metal/Steel/Steel-S335JO.FCMat similarity index 99% rename from src/Mod/Material/Resources/Materials/StandardMaterial/Metal/Steel/Steel-S335JO.FCMat rename to src/Mod/Material/Resources/Materials/Standard/Metal/Steel/Steel-S335JO.FCMat index c7fbcc90db..3098ab9917 100644 --- a/src/Mod/Material/Resources/Materials/StandardMaterial/Metal/Steel/Steel-S335JO.FCMat +++ b/src/Mod/Material/Resources/Materials/Standard/Metal/Steel/Steel-S335JO.FCMat @@ -1,3 +1,4 @@ +--- # File created by ConvertFCMat.py General: UUID: "c50ad549-b4f4-47ab-9bc6-4eb5191da111" diff --git a/src/Mod/Material/Resources/Materials/StandardMaterial/Metal/Steel/Steel-S335JR.FCMat b/src/Mod/Material/Resources/Materials/Standard/Metal/Steel/Steel-S335JR.FCMat similarity index 99% rename from src/Mod/Material/Resources/Materials/StandardMaterial/Metal/Steel/Steel-S335JR.FCMat rename to src/Mod/Material/Resources/Materials/Standard/Metal/Steel/Steel-S335JR.FCMat index 83ac7fe653..a1803bb689 100644 --- a/src/Mod/Material/Resources/Materials/StandardMaterial/Metal/Steel/Steel-S335JR.FCMat +++ b/src/Mod/Material/Resources/Materials/Standard/Metal/Steel/Steel-S335JR.FCMat @@ -1,3 +1,4 @@ +--- # File created by ConvertFCMat.py General: UUID: "dbd04cee-3b92-4b79-a208-58547ebe3807" diff --git a/src/Mod/Material/Resources/Materials/StandardMaterial/Metal/Steel/Steel-S335N.FCMat b/src/Mod/Material/Resources/Materials/Standard/Metal/Steel/Steel-S335N.FCMat similarity index 99% rename from src/Mod/Material/Resources/Materials/StandardMaterial/Metal/Steel/Steel-S335N.FCMat rename to src/Mod/Material/Resources/Materials/Standard/Metal/Steel/Steel-S335N.FCMat index e7d8fc174b..4ed0695624 100644 --- a/src/Mod/Material/Resources/Materials/StandardMaterial/Metal/Steel/Steel-S335N.FCMat +++ b/src/Mod/Material/Resources/Materials/Standard/Metal/Steel/Steel-S335N.FCMat @@ -1,3 +1,4 @@ +--- # File created by ConvertFCMat.py General: UUID: "16d7f1d5-449f-4b9e-b57a-7ea114fda115" diff --git a/src/Mod/Material/Resources/Materials/StandardMaterial/Metal/Steel/Steel-S340MC.FCMat b/src/Mod/Material/Resources/Materials/Standard/Metal/Steel/Steel-S340MC.FCMat similarity index 99% rename from src/Mod/Material/Resources/Materials/StandardMaterial/Metal/Steel/Steel-S340MC.FCMat rename to src/Mod/Material/Resources/Materials/Standard/Metal/Steel/Steel-S340MC.FCMat index baccd4ca36..35cc31c551 100644 --- a/src/Mod/Material/Resources/Materials/StandardMaterial/Metal/Steel/Steel-S340MC.FCMat +++ b/src/Mod/Material/Resources/Materials/Standard/Metal/Steel/Steel-S340MC.FCMat @@ -1,3 +1,4 @@ +--- # File created by ConvertFCMat.py General: UUID: "5785ea5e-3376-47dd-8dc2-f1267c47e9bc" diff --git a/src/Mod/Material/Resources/Materials/StandardMaterial/Metal/Steel/Steel-S355J2G3.FCMat b/src/Mod/Material/Resources/Materials/Standard/Metal/Steel/Steel-S355J2G3.FCMat similarity index 99% rename from src/Mod/Material/Resources/Materials/StandardMaterial/Metal/Steel/Steel-S355J2G3.FCMat rename to src/Mod/Material/Resources/Materials/Standard/Metal/Steel/Steel-S355J2G3.FCMat index 72e7ca9845..3c35d71168 100644 --- a/src/Mod/Material/Resources/Materials/StandardMaterial/Metal/Steel/Steel-S355J2G3.FCMat +++ b/src/Mod/Material/Resources/Materials/Standard/Metal/Steel/Steel-S355J2G3.FCMat @@ -1,3 +1,4 @@ +--- # File created by ConvertFCMat.py General: UUID: "b9e861ee-93fb-4eca-a2de-03579bc503c1" diff --git a/src/Mod/Material/Resources/Materials/StandardMaterial/Metal/Steel/Steel-S380MC.FCMat b/src/Mod/Material/Resources/Materials/Standard/Metal/Steel/Steel-S380MC.FCMat similarity index 99% rename from src/Mod/Material/Resources/Materials/StandardMaterial/Metal/Steel/Steel-S380MC.FCMat rename to src/Mod/Material/Resources/Materials/Standard/Metal/Steel/Steel-S380MC.FCMat index b28262ff49..ebe09dca05 100644 --- a/src/Mod/Material/Resources/Materials/StandardMaterial/Metal/Steel/Steel-S380MC.FCMat +++ b/src/Mod/Material/Resources/Materials/Standard/Metal/Steel/Steel-S380MC.FCMat @@ -1,3 +1,4 @@ +--- # File created by ConvertFCMat.py General: UUID: "da2a429b-8763-4586-be3d-620e7dd30271" diff --git a/src/Mod/Material/Resources/Materials/StandardMaterial/Metal/Steel/Steel-S420MC.FCMat b/src/Mod/Material/Resources/Materials/Standard/Metal/Steel/Steel-S420MC.FCMat similarity index 99% rename from src/Mod/Material/Resources/Materials/StandardMaterial/Metal/Steel/Steel-S420MC.FCMat rename to src/Mod/Material/Resources/Materials/Standard/Metal/Steel/Steel-S420MC.FCMat index 407d553894..e927e63be9 100644 --- a/src/Mod/Material/Resources/Materials/StandardMaterial/Metal/Steel/Steel-S420MC.FCMat +++ b/src/Mod/Material/Resources/Materials/Standard/Metal/Steel/Steel-S420MC.FCMat @@ -1,3 +1,4 @@ +--- # File created by ConvertFCMat.py General: UUID: "c3452eff-f68e-4cfd-a24e-27e2abcd01ac" diff --git a/src/Mod/Material/Resources/Materials/StandardMaterial/Metal/Steel/Steel-S420N.FCMat b/src/Mod/Material/Resources/Materials/Standard/Metal/Steel/Steel-S420N.FCMat similarity index 99% rename from src/Mod/Material/Resources/Materials/StandardMaterial/Metal/Steel/Steel-S420N.FCMat rename to src/Mod/Material/Resources/Materials/Standard/Metal/Steel/Steel-S420N.FCMat index 74f00df70f..ef28891d71 100644 --- a/src/Mod/Material/Resources/Materials/StandardMaterial/Metal/Steel/Steel-S420N.FCMat +++ b/src/Mod/Material/Resources/Materials/Standard/Metal/Steel/Steel-S420N.FCMat @@ -1,3 +1,4 @@ +--- # File created by ConvertFCMat.py General: UUID: "902f2d4a-5bd0-44bf-9c14-54462ba6778b" diff --git a/src/Mod/Material/Resources/Materials/StandardMaterial/Metal/Steel/Steel-S460MC.FCMat b/src/Mod/Material/Resources/Materials/Standard/Metal/Steel/Steel-S460MC.FCMat similarity index 99% rename from src/Mod/Material/Resources/Materials/StandardMaterial/Metal/Steel/Steel-S460MC.FCMat rename to src/Mod/Material/Resources/Materials/Standard/Metal/Steel/Steel-S460MC.FCMat index 7834dca011..ab35eb607f 100644 --- a/src/Mod/Material/Resources/Materials/StandardMaterial/Metal/Steel/Steel-S460MC.FCMat +++ b/src/Mod/Material/Resources/Materials/Standard/Metal/Steel/Steel-S460MC.FCMat @@ -1,3 +1,4 @@ +--- # File created by ConvertFCMat.py General: UUID: "c254dac5-3ee3-49b9-b8d4-16d20d21c94f" diff --git a/src/Mod/Material/Resources/Materials/StandardMaterial/Metal/Steel/Steel-S460N.FCMat b/src/Mod/Material/Resources/Materials/Standard/Metal/Steel/Steel-S460N.FCMat similarity index 99% rename from src/Mod/Material/Resources/Materials/StandardMaterial/Metal/Steel/Steel-S460N.FCMat rename to src/Mod/Material/Resources/Materials/Standard/Metal/Steel/Steel-S460N.FCMat index 536b5df413..d0597148e2 100644 --- a/src/Mod/Material/Resources/Materials/StandardMaterial/Metal/Steel/Steel-S460N.FCMat +++ b/src/Mod/Material/Resources/Materials/Standard/Metal/Steel/Steel-S460N.FCMat @@ -1,3 +1,4 @@ +--- # File created by ConvertFCMat.py General: UUID: "f0ae245a-1041-4674-ac4f-bf212dda6009" diff --git a/src/Mod/Material/Resources/Materials/StandardMaterial/Metal/Steel/Steel-S500MC.FCMat b/src/Mod/Material/Resources/Materials/Standard/Metal/Steel/Steel-S500MC.FCMat similarity index 99% rename from src/Mod/Material/Resources/Materials/StandardMaterial/Metal/Steel/Steel-S500MC.FCMat rename to src/Mod/Material/Resources/Materials/Standard/Metal/Steel/Steel-S500MC.FCMat index 679dfaf447..ef513d69f6 100644 --- a/src/Mod/Material/Resources/Materials/StandardMaterial/Metal/Steel/Steel-S500MC.FCMat +++ b/src/Mod/Material/Resources/Materials/Standard/Metal/Steel/Steel-S500MC.FCMat @@ -1,3 +1,4 @@ +--- # File created by ConvertFCMat.py General: UUID: "ad8e2007-ee73-4b71-8830-6d40a8407284" diff --git a/src/Mod/Material/Resources/Materials/StandardMaterial/Metal/Steel/Steel-S550MC.FCMat b/src/Mod/Material/Resources/Materials/Standard/Metal/Steel/Steel-S550MC.FCMat similarity index 99% rename from src/Mod/Material/Resources/Materials/StandardMaterial/Metal/Steel/Steel-S550MC.FCMat rename to src/Mod/Material/Resources/Materials/Standard/Metal/Steel/Steel-S550MC.FCMat index b7c5bc08b2..ec8eec9a37 100644 --- a/src/Mod/Material/Resources/Materials/StandardMaterial/Metal/Steel/Steel-S550MC.FCMat +++ b/src/Mod/Material/Resources/Materials/Standard/Metal/Steel/Steel-S550MC.FCMat @@ -1,3 +1,4 @@ +--- # File created by ConvertFCMat.py General: UUID: "b7308026-9278-4346-b157-2b3da280b61b" diff --git a/src/Mod/Material/Resources/Materials/StandardMaterial/Metal/Steel/Steel-S690MC.FCMat b/src/Mod/Material/Resources/Materials/Standard/Metal/Steel/Steel-S690MC.FCMat similarity index 99% rename from src/Mod/Material/Resources/Materials/StandardMaterial/Metal/Steel/Steel-S690MC.FCMat rename to src/Mod/Material/Resources/Materials/Standard/Metal/Steel/Steel-S690MC.FCMat index 223f410073..a6bc85ecff 100644 --- a/src/Mod/Material/Resources/Materials/StandardMaterial/Metal/Steel/Steel-S690MC.FCMat +++ b/src/Mod/Material/Resources/Materials/Standard/Metal/Steel/Steel-S690MC.FCMat @@ -1,3 +1,4 @@ +--- # File created by ConvertFCMat.py General: UUID: "41360af5-98ed-4125-a89c-ff711e4dd2bf" diff --git a/src/Mod/Material/Resources/Materials/StandardMaterial/Metal/Steel/Steel-St-37-2K.FCMat b/src/Mod/Material/Resources/Materials/Standard/Metal/Steel/Steel-St-37-2K.FCMat similarity index 99% rename from src/Mod/Material/Resources/Materials/StandardMaterial/Metal/Steel/Steel-St-37-2K.FCMat rename to src/Mod/Material/Resources/Materials/Standard/Metal/Steel/Steel-St-37-2K.FCMat index 9f6476151e..977ee85836 100644 --- a/src/Mod/Material/Resources/Materials/StandardMaterial/Metal/Steel/Steel-St-37-2K.FCMat +++ b/src/Mod/Material/Resources/Materials/Standard/Metal/Steel/Steel-St-37-2K.FCMat @@ -1,3 +1,4 @@ +--- # File created by ConvertFCMat.py General: UUID: "e97be20f-246a-48b5-9718-3d39486e7af2" diff --git a/src/Mod/Material/Resources/Materials/StandardMaterial/Metal/Steel/Steel-St-E-255.FCMat b/src/Mod/Material/Resources/Materials/Standard/Metal/Steel/Steel-St-E-255.FCMat similarity index 99% rename from src/Mod/Material/Resources/Materials/StandardMaterial/Metal/Steel/Steel-St-E-255.FCMat rename to src/Mod/Material/Resources/Materials/Standard/Metal/Steel/Steel-St-E-255.FCMat index 2b5057f72a..7eba9f8b7b 100644 --- a/src/Mod/Material/Resources/Materials/StandardMaterial/Metal/Steel/Steel-St-E-255.FCMat +++ b/src/Mod/Material/Resources/Materials/Standard/Metal/Steel/Steel-St-E-255.FCMat @@ -1,3 +1,4 @@ +--- # File created by ConvertFCMat.py General: UUID: "1078eb9f-ac3e-4b24-b40e-b9ead77828e0" diff --git a/src/Mod/Material/Resources/Materials/StandardMaterial/Metal/Steel/Steel-St-E-315.FCMat b/src/Mod/Material/Resources/Materials/Standard/Metal/Steel/Steel-St-E-315.FCMat similarity index 99% rename from src/Mod/Material/Resources/Materials/StandardMaterial/Metal/Steel/Steel-St-E-315.FCMat rename to src/Mod/Material/Resources/Materials/Standard/Metal/Steel/Steel-St-E-315.FCMat index 3d15c2d2df..5ae8bf256d 100644 --- a/src/Mod/Material/Resources/Materials/StandardMaterial/Metal/Steel/Steel-St-E-315.FCMat +++ b/src/Mod/Material/Resources/Materials/Standard/Metal/Steel/Steel-St-E-315.FCMat @@ -1,3 +1,4 @@ +--- # File created by ConvertFCMat.py General: UUID: "74ca3b08-d561-4440-a4c2-d9b839b66670" diff --git a/src/Mod/Material/Resources/Materials/StandardMaterial/Metal/Steel/Steel-St-E-380.FCMat b/src/Mod/Material/Resources/Materials/Standard/Metal/Steel/Steel-St-E-380.FCMat similarity index 99% rename from src/Mod/Material/Resources/Materials/StandardMaterial/Metal/Steel/Steel-St-E-380.FCMat rename to src/Mod/Material/Resources/Materials/Standard/Metal/Steel/Steel-St-E-380.FCMat index 33b2d3c85a..96b5250db2 100644 --- a/src/Mod/Material/Resources/Materials/StandardMaterial/Metal/Steel/Steel-St-E-380.FCMat +++ b/src/Mod/Material/Resources/Materials/Standard/Metal/Steel/Steel-St-E-380.FCMat @@ -1,3 +1,4 @@ +--- # File created by ConvertFCMat.py General: UUID: "a1b62461-7abc-45da-9a3c-3068367d2990" diff --git a/src/Mod/Material/Resources/Materials/StandardMaterial/Metal/Steel/Steel-St-E-460.FCMat b/src/Mod/Material/Resources/Materials/Standard/Metal/Steel/Steel-St-E-460.FCMat similarity index 99% rename from src/Mod/Material/Resources/Materials/StandardMaterial/Metal/Steel/Steel-St-E-460.FCMat rename to src/Mod/Material/Resources/Materials/Standard/Metal/Steel/Steel-St-E-460.FCMat index 5bc873d0d9..4cd2c0752e 100644 --- a/src/Mod/Material/Resources/Materials/StandardMaterial/Metal/Steel/Steel-St-E-460.FCMat +++ b/src/Mod/Material/Resources/Materials/Standard/Metal/Steel/Steel-St-E-460.FCMat @@ -1,3 +1,4 @@ +--- # File created by ConvertFCMat.py General: UUID: "b312ad7b-95d4-4ca5-9736-360dbed918ee" diff --git a/src/Mod/Material/Resources/Materials/StandardMaterial/Metal/Steel/Steel-St-E-500.FCMat b/src/Mod/Material/Resources/Materials/Standard/Metal/Steel/Steel-St-E-500.FCMat similarity index 99% rename from src/Mod/Material/Resources/Materials/StandardMaterial/Metal/Steel/Steel-St-E-500.FCMat rename to src/Mod/Material/Resources/Materials/Standard/Metal/Steel/Steel-St-E-500.FCMat index c5bc2706f3..3cd33e5492 100644 --- a/src/Mod/Material/Resources/Materials/StandardMaterial/Metal/Steel/Steel-St-E-500.FCMat +++ b/src/Mod/Material/Resources/Materials/Standard/Metal/Steel/Steel-St-E-500.FCMat @@ -1,3 +1,4 @@ +--- # File created by ConvertFCMat.py General: UUID: "90fb6bd4-05db-4d44-ba89-280b5a060921" diff --git a/src/Mod/Material/Resources/Materials/StandardMaterial/Metal/Steel/Steel-X2CrNiMoN17-13-3.FCMat b/src/Mod/Material/Resources/Materials/Standard/Metal/Steel/Steel-X2CrNiMoN17-13-3.FCMat similarity index 99% rename from src/Mod/Material/Resources/Materials/StandardMaterial/Metal/Steel/Steel-X2CrNiMoN17-13-3.FCMat rename to src/Mod/Material/Resources/Materials/Standard/Metal/Steel/Steel-X2CrNiMoN17-13-3.FCMat index 083668673d..02284ff966 100644 --- a/src/Mod/Material/Resources/Materials/StandardMaterial/Metal/Steel/Steel-X2CrNiMoN17-13-3.FCMat +++ b/src/Mod/Material/Resources/Materials/Standard/Metal/Steel/Steel-X2CrNiMoN17-13-3.FCMat @@ -1,3 +1,4 @@ +--- # File created by ConvertFCMat.py General: UUID: "a05b5f9b-27b9-4554-8feb-553f9d6027ef" diff --git a/src/Mod/Material/Resources/Materials/StandardMaterial/Metal/Steel/Steel-X2CrNiN24-4.FCMat b/src/Mod/Material/Resources/Materials/Standard/Metal/Steel/Steel-X2CrNiN24-4.FCMat similarity index 99% rename from src/Mod/Material/Resources/Materials/StandardMaterial/Metal/Steel/Steel-X2CrNiN24-4.FCMat rename to src/Mod/Material/Resources/Materials/Standard/Metal/Steel/Steel-X2CrNiN24-4.FCMat index d048a4677c..f12fc76a0e 100644 --- a/src/Mod/Material/Resources/Materials/StandardMaterial/Metal/Steel/Steel-X2CrNiN24-4.FCMat +++ b/src/Mod/Material/Resources/Materials/Standard/Metal/Steel/Steel-X2CrNiN24-4.FCMat @@ -1,3 +1,4 @@ +--- # File created by ConvertFCMat.py General: UUID: "be74ada5-2775-41fc-a44b-36df6fb5e0b8" diff --git a/src/Mod/Material/Resources/Materials/StandardMaterial/Metal/Steel/Steel-X39CrMo17-1.FCMat b/src/Mod/Material/Resources/Materials/Standard/Metal/Steel/Steel-X39CrMo17-1.FCMat similarity index 99% rename from src/Mod/Material/Resources/Materials/StandardMaterial/Metal/Steel/Steel-X39CrMo17-1.FCMat rename to src/Mod/Material/Resources/Materials/Standard/Metal/Steel/Steel-X39CrMo17-1.FCMat index 485f5099a7..42edf4767a 100644 --- a/src/Mod/Material/Resources/Materials/StandardMaterial/Metal/Steel/Steel-X39CrMo17-1.FCMat +++ b/src/Mod/Material/Resources/Materials/Standard/Metal/Steel/Steel-X39CrMo17-1.FCMat @@ -1,3 +1,4 @@ +--- # File created by ConvertFCMat.py General: UUID: "9e7069ef-296d-401d-9331-d3e11267c2e0" diff --git a/src/Mod/Material/Resources/Materials/StandardMaterial/Metal/Steel/Steel-X3CrNiMo13-14.FCMat b/src/Mod/Material/Resources/Materials/Standard/Metal/Steel/Steel-X3CrNiMo13-14.FCMat similarity index 99% rename from src/Mod/Material/Resources/Materials/StandardMaterial/Metal/Steel/Steel-X3CrNiMo13-14.FCMat rename to src/Mod/Material/Resources/Materials/Standard/Metal/Steel/Steel-X3CrNiMo13-14.FCMat index 87ec296574..387ad17168 100644 --- a/src/Mod/Material/Resources/Materials/StandardMaterial/Metal/Steel/Steel-X3CrNiMo13-14.FCMat +++ b/src/Mod/Material/Resources/Materials/Standard/Metal/Steel/Steel-X3CrNiMo13-14.FCMat @@ -1,3 +1,4 @@ +--- # File created by ConvertFCMat.py General: UUID: "88632101-8868-407a-a95f-01773b5f2245" diff --git a/src/Mod/Material/Resources/Materials/StandardMaterial/Metal/Steel/Steel-X5CrNi18-10.FCMat b/src/Mod/Material/Resources/Materials/Standard/Metal/Steel/Steel-X5CrNi18-10.FCMat similarity index 99% rename from src/Mod/Material/Resources/Materials/StandardMaterial/Metal/Steel/Steel-X5CrNi18-10.FCMat rename to src/Mod/Material/Resources/Materials/Standard/Metal/Steel/Steel-X5CrNi18-10.FCMat index 0e0a81db1e..e190838afa 100644 --- a/src/Mod/Material/Resources/Materials/StandardMaterial/Metal/Steel/Steel-X5CrNi18-10.FCMat +++ b/src/Mod/Material/Resources/Materials/Standard/Metal/Steel/Steel-X5CrNi18-10.FCMat @@ -1,3 +1,4 @@ +--- # File created by ConvertFCMat.py General: UUID: "e5329208-0c38-47ec-8c59-e7bf6a35801d" diff --git a/src/Mod/Material/Resources/Materials/StandardMaterial/Metal/Steel/Steel-X5CrNiMo17-12-2.FCMat b/src/Mod/Material/Resources/Materials/Standard/Metal/Steel/Steel-X5CrNiMo17-12-2.FCMat similarity index 99% rename from src/Mod/Material/Resources/Materials/StandardMaterial/Metal/Steel/Steel-X5CrNiMo17-12-2.FCMat rename to src/Mod/Material/Resources/Materials/Standard/Metal/Steel/Steel-X5CrNiMo17-12-2.FCMat index f115a63bff..821f1f015e 100644 --- a/src/Mod/Material/Resources/Materials/StandardMaterial/Metal/Steel/Steel-X5CrNiMo17-12-2.FCMat +++ b/src/Mod/Material/Resources/Materials/Standard/Metal/Steel/Steel-X5CrNiMo17-12-2.FCMat @@ -1,3 +1,4 @@ +--- # File created by ConvertFCMat.py General: UUID: "7625a484-96de-438d-b251-2b71044cfa88" diff --git a/src/Mod/Material/Resources/Materials/StandardMaterial/Metal/Steel/Steel-X6CrNiTi18-10.FCMat b/src/Mod/Material/Resources/Materials/Standard/Metal/Steel/Steel-X6CrNiTi18-10.FCMat similarity index 99% rename from src/Mod/Material/Resources/Materials/StandardMaterial/Metal/Steel/Steel-X6CrNiTi18-10.FCMat rename to src/Mod/Material/Resources/Materials/Standard/Metal/Steel/Steel-X6CrNiTi18-10.FCMat index 76366b8f64..c192983929 100644 --- a/src/Mod/Material/Resources/Materials/StandardMaterial/Metal/Steel/Steel-X6CrNiTi18-10.FCMat +++ b/src/Mod/Material/Resources/Materials/Standard/Metal/Steel/Steel-X6CrNiTi18-10.FCMat @@ -1,3 +1,4 @@ +--- # File created by ConvertFCMat.py General: UUID: "2c577c45-ebae-46b2-9e36-e41fbcce9286" diff --git a/src/Mod/Material/Resources/Materials/StandardMaterial/Metal/Titanium/Ti-6Al-4V.FCMat b/src/Mod/Material/Resources/Materials/Standard/Metal/Titanium/Ti-6Al-4V.FCMat similarity index 99% rename from src/Mod/Material/Resources/Materials/StandardMaterial/Metal/Titanium/Ti-6Al-4V.FCMat rename to src/Mod/Material/Resources/Materials/Standard/Metal/Titanium/Ti-6Al-4V.FCMat index ee1b06c1b0..3aea34e579 100644 --- a/src/Mod/Material/Resources/Materials/StandardMaterial/Metal/Titanium/Ti-6Al-4V.FCMat +++ b/src/Mod/Material/Resources/Materials/Standard/Metal/Titanium/Ti-6Al-4V.FCMat @@ -1,3 +1,4 @@ +--- # File created by ConvertFCMat.py General: UUID: "f8013463-8008-4063-818c-ab6884cfa015" diff --git a/src/Mod/Material/Resources/Materials/StandardMaterial/Thermoplast/ABS-Generic.FCMat b/src/Mod/Material/Resources/Materials/Standard/Thermoplast/ABS-Generic.FCMat similarity index 99% rename from src/Mod/Material/Resources/Materials/StandardMaterial/Thermoplast/ABS-Generic.FCMat rename to src/Mod/Material/Resources/Materials/Standard/Thermoplast/ABS-Generic.FCMat index b5fba41f91..83955ff1ed 100644 --- a/src/Mod/Material/Resources/Materials/StandardMaterial/Thermoplast/ABS-Generic.FCMat +++ b/src/Mod/Material/Resources/Materials/Standard/Thermoplast/ABS-Generic.FCMat @@ -1,3 +1,4 @@ +--- # File created by ConvertFCMat.py General: UUID: "73371529-2983-47dd-b988-6739a2e20029" diff --git a/src/Mod/Material/Resources/Materials/StandardMaterial/Thermoplast/Acrylic-Glass-Generic.FCMat b/src/Mod/Material/Resources/Materials/Standard/Thermoplast/Acrylic-Glass-Generic.FCMat similarity index 99% rename from src/Mod/Material/Resources/Materials/StandardMaterial/Thermoplast/Acrylic-Glass-Generic.FCMat rename to src/Mod/Material/Resources/Materials/Standard/Thermoplast/Acrylic-Glass-Generic.FCMat index 8daa44d95b..98c2690b8d 100644 --- a/src/Mod/Material/Resources/Materials/StandardMaterial/Thermoplast/Acrylic-Glass-Generic.FCMat +++ b/src/Mod/Material/Resources/Materials/Standard/Thermoplast/Acrylic-Glass-Generic.FCMat @@ -1,3 +1,4 @@ +--- # File created by ConvertFCMat.py General: UUID: "f255cd82-91d5-4e97-9032-1843128a2eaa" diff --git a/src/Mod/Material/Resources/Materials/StandardMaterial/Thermoplast/PA6-Generic.FCMat b/src/Mod/Material/Resources/Materials/Standard/Thermoplast/PA6-Generic.FCMat similarity index 99% rename from src/Mod/Material/Resources/Materials/StandardMaterial/Thermoplast/PA6-Generic.FCMat rename to src/Mod/Material/Resources/Materials/Standard/Thermoplast/PA6-Generic.FCMat index 2460f65648..90ffaa768f 100644 --- a/src/Mod/Material/Resources/Materials/StandardMaterial/Thermoplast/PA6-Generic.FCMat +++ b/src/Mod/Material/Resources/Materials/Standard/Thermoplast/PA6-Generic.FCMat @@ -1,3 +1,4 @@ +--- # File created by ConvertFCMat.py General: UUID: "9d59dc3b-ce66-4bec-82c9-b962082e7c9e" diff --git a/src/Mod/Material/Resources/Materials/StandardMaterial/Thermoplast/PET-Generic.FCMat b/src/Mod/Material/Resources/Materials/Standard/Thermoplast/PET-Generic.FCMat similarity index 99% rename from src/Mod/Material/Resources/Materials/StandardMaterial/Thermoplast/PET-Generic.FCMat rename to src/Mod/Material/Resources/Materials/Standard/Thermoplast/PET-Generic.FCMat index c80562e2b1..5942047902 100644 --- a/src/Mod/Material/Resources/Materials/StandardMaterial/Thermoplast/PET-Generic.FCMat +++ b/src/Mod/Material/Resources/Materials/Standard/Thermoplast/PET-Generic.FCMat @@ -1,3 +1,4 @@ +--- # File created by ConvertFCMat.py General: UUID: "f73004e3-6fb4-4591-8be7-89d1370be312" diff --git a/src/Mod/Material/Resources/Materials/StandardMaterial/Thermoplast/PLA-Generic.FCMat b/src/Mod/Material/Resources/Materials/Standard/Thermoplast/PLA-Generic.FCMat similarity index 99% rename from src/Mod/Material/Resources/Materials/StandardMaterial/Thermoplast/PLA-Generic.FCMat rename to src/Mod/Material/Resources/Materials/Standard/Thermoplast/PLA-Generic.FCMat index 1eab389a6d..736ae1bc7d 100644 --- a/src/Mod/Material/Resources/Materials/StandardMaterial/Thermoplast/PLA-Generic.FCMat +++ b/src/Mod/Material/Resources/Materials/Standard/Thermoplast/PLA-Generic.FCMat @@ -1,3 +1,4 @@ +--- # File created by ConvertFCMat.py General: UUID: "93861244-fbbe-41a9-a7e0-aeed53abd782" diff --git a/src/Mod/Material/Resources/Materials/StandardMaterial/Thermoplast/PP-Generic.FCMat b/src/Mod/Material/Resources/Materials/Standard/Thermoplast/PP-Generic.FCMat similarity index 99% rename from src/Mod/Material/Resources/Materials/StandardMaterial/Thermoplast/PP-Generic.FCMat rename to src/Mod/Material/Resources/Materials/Standard/Thermoplast/PP-Generic.FCMat index 39c439f422..2b7e4b58f4 100644 --- a/src/Mod/Material/Resources/Materials/StandardMaterial/Thermoplast/PP-Generic.FCMat +++ b/src/Mod/Material/Resources/Materials/Standard/Thermoplast/PP-Generic.FCMat @@ -1,3 +1,4 @@ +--- # File created by ConvertFCMat.py General: UUID: "0e669f57-de27-4915-9a02-124f36047972" diff --git a/src/Mod/Material/Resources/Materials/StandardMaterial/Thermoplast/PTFE-Generic.FCMat b/src/Mod/Material/Resources/Materials/Standard/Thermoplast/PTFE-Generic.FCMat similarity index 99% rename from src/Mod/Material/Resources/Materials/StandardMaterial/Thermoplast/PTFE-Generic.FCMat rename to src/Mod/Material/Resources/Materials/Standard/Thermoplast/PTFE-Generic.FCMat index 8cdd2fcb2b..64f1b141d6 100644 --- a/src/Mod/Material/Resources/Materials/StandardMaterial/Thermoplast/PTFE-Generic.FCMat +++ b/src/Mod/Material/Resources/Materials/Standard/Thermoplast/PTFE-Generic.FCMat @@ -1,3 +1,4 @@ +--- # File created by ConvertFCMat.py General: UUID: "8ce226db-43ef-4471-93f1-07e7276aa276" diff --git a/src/Mod/Material/Resources/Materials/StandardMaterial/Thermoplast/PVC-Generic.FCMat b/src/Mod/Material/Resources/Materials/Standard/Thermoplast/PVC-Generic.FCMat similarity index 99% rename from src/Mod/Material/Resources/Materials/StandardMaterial/Thermoplast/PVC-Generic.FCMat rename to src/Mod/Material/Resources/Materials/Standard/Thermoplast/PVC-Generic.FCMat index f94f4e5b11..481cad01c3 100644 --- a/src/Mod/Material/Resources/Materials/StandardMaterial/Thermoplast/PVC-Generic.FCMat +++ b/src/Mod/Material/Resources/Materials/Standard/Thermoplast/PVC-Generic.FCMat @@ -1,3 +1,4 @@ +--- # File created by ConvertFCMat.py General: UUID: "758cfc44-f4ad-4605-8645-75e9e6b053ab" diff --git a/src/Mod/Material/Resources/Materials/StandardMaterial/Wood/Wood-Generic.FCMat b/src/Mod/Material/Resources/Materials/Standard/Wood/Wood-Generic.FCMat similarity index 99% rename from src/Mod/Material/Resources/Materials/StandardMaterial/Wood/Wood-Generic.FCMat rename to src/Mod/Material/Resources/Materials/Standard/Wood/Wood-Generic.FCMat index 4f87fd1b6d..4fb84bd2c3 100644 --- a/src/Mod/Material/Resources/Materials/StandardMaterial/Wood/Wood-Generic.FCMat +++ b/src/Mod/Material/Resources/Materials/Standard/Wood/Wood-Generic.FCMat @@ -1,3 +1,4 @@ +--- # File created by ConvertFCMat.py General: UUID: "b588224e-e8d6-47ad-ba1f-a058333fd1c6" diff --git a/src/Mod/Material/Resources/Materials/Test/Test Material.FCMat b/src/Mod/Material/Resources/Materials/Test/Test Material.FCMat new file mode 100644 index 0000000000..c4762bd97a --- /dev/null +++ b/src/Mod/Material/Resources/Materials/Test/Test Material.FCMat @@ -0,0 +1,55 @@ +--- +# File created by FreeCAD 0.22.0 Revision: 34863 (Git) +General: + UUID: "c6c64159-19c1-40b5-859c-10561f20f979" + Name: "Test Material" + Author: "David Carter" + License: "GPL-2.0-or-later" + Description: "This material is for testing purposes only. It does not describe any real material." +Inherits: + DefaultAppearance: + UUID: "5dbb7be6-8b63-479b-ab4c-87be02ead973" +Models: + TestModel: + UUID: "34d0583d-f999-49ba-99e6-aa40bd5c3a6b" + TestArray2D: + - "20.00 C" + - [["10.00 C", "10.00 kg/m^3"], + ["20.00 C", "20.00 kg/m^3"], + ["30.00 C", "30.00 kg/m^3"]] + TestArray2D3Column: + - "20.00 C" + - [["10.00 C", "11.00 kg/m^3", "12.00 Pa"], + ["20.00 C", "21.00 kg/m^3", "22.00 Pa"], + ["30.00 C", "31.00 kg/m^3", "32.00 Pa"]] + TestArray3D: + - "20.00 C" + - ["10.00 C": [["11.00 Pa", "12.00 Pa"], + ["21.00 Pa", "22.00 Pa"]], + "20.00 C": [], + "30.00 C": [["10.00 Pa", "11.00 Pa"], + ["20.00 Pa", "21.00 Pa"], + ["30.00 Pa", "31.00 Pa"]]] + TestBoolean: "true" + TestColor: "(1,0,0,1)" + TestFile: "/home/dcarter/Meshroom demo.txt" + TestFloat: "32.17" + TestInteger: "42" + TestList: + - "Now is the time for all good men to come to the aid of the party" + - "The quick brown fox jumps over the lazy dogs back" + - "Lore Ipsum" + - "Single quote '" + - "Double quote \"" + - "Backslash \\" + TestMultiLineString: >2 + Now is the time for 'all' \ "men" come to the aid of the party + Indentation is significant + Similar to Python + TestQuantity: "19.76 kg/m^3" + TestString: "Now is the time for 'all' \\ \"men\" come to the aid of the party" + TestMultiLineString: >2 + Now is the time for 'all' \ "men" come to the aid of the party + Indentation is significant + Similar to Python + TestURL: "https://www.freecad.org/" diff --git a/src/Mod/Material/Resources/Models/Mechanical/HypotheticalExample.yml b/src/Mod/Material/Resources/Models/Mechanical/HypotheticalExample.yml deleted file mode 100644 index 396f53c3b2..0000000000 --- a/src/Mod/Material/Resources/Models/Mechanical/HypotheticalExample.yml +++ /dev/null @@ -1,41 +0,0 @@ ---- -# *************************************************************************** -# * * -# * Copyright (c) 2023 David Carter * -# * * -# * This program is free software; you can redistribute it and/or modify * -# * it under the terms of the GNU Lesser General Public License (LGPL) * -# * as published by the Free Software Foundation; either version 2 of * -# * the License, or (at your option) any later version. * -# * for detail see the LICENCE text file. * -# * * -# * This program is distributed in the hope that it will be useful, * -# * but WITHOUT ANY WARRANTY; without even the implied warranty of * -# * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the * -# * GNU Library General Public License for more details. * -# * * -# * You should have received a copy of the GNU Library General Public * -# * License along with this program; if not, write to the Free Software * -# * Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307 * -# * USA * -# * * -# *************************************************************************** - -Model: - Name: 'Hypothetical Example' - UUID: 'a401af74-e4a2-4bad-8dd5-0f3d1748c462' - URL: 'https://en.wikipedia.org/wiki/Linear_elasticity' - Description: > - This is not a real physical model. It is intended as an example of a new - physical model - DOI: "" - GigaWatts: - Type: 'Quantity' - Units: '' - URL: '' - Description: "" - TimeFluxDensity: - Type: 'Quantity' - Units: '' - URL: '' - Description: "" diff --git a/src/Mod/Material/Resources/Models/Test/Test Model.yml b/src/Mod/Material/Resources/Models/Test/Test Model.yml new file mode 100644 index 0000000000..ec4243add2 --- /dev/null +++ b/src/Mod/Material/Resources/Models/Test/Test Model.yml @@ -0,0 +1,139 @@ +--- +# *************************************************************************** +# * * +# * Copyright (c) 2023 David Carter * +# * * +# * This program is free software; you can redistribute it and/or modify * +# * it under the terms of the GNU Lesser General Public License (LGPL) * +# * as published by the Free Software Foundation; either version 2 of * +# * the License, or (at your option) any later version. * +# * for detail see the LICENCE text file. * +# * * +# * This program is distributed in the hope that it will be useful, * +# * but WITHOUT ANY WARRANTY; without even the implied warranty of * +# * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the * +# * GNU Library General Public License for more details. * +# * * +# * You should have received a copy of the GNU Library General Public * +# * License along with this program; if not, write to the Free Software * +# * Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307 * +# * USA * +# * * +# *************************************************************************** + +Model: + Name: 'TestModel' + UUID: '34d0583d-f999-49ba-99e6-aa40bd5c3a6b' + URL: '' + Description: 'Demonstrate the different model types' + DOI: '' + TestString: + Type: 'String' + Units: '' + URL: '' + Description: "A String" + TestURL: + Type: 'URL' + Units: '' + URL: '' + Description: "A URL" + TestList: + Type: 'List' + Units: '' + URL: '' + Description: "A List" + TestInteger: + Type: 'Integer' + Units: '' + URL: '' + Description: "A Integer" + TestFloat: + Type: 'Float' + Units: '' + URL: '' + Description: "A Float" + TestBoolean: + Type: 'Boolean' + Units: '' + URL: '' + Description: "A Boolean" + TestColor: + Type: 'Color' + Units: '' + URL: '' + Description: "A Color" + TestFile: + Type: 'File' + Units: '' + URL: '' + Description: "A File" + TestQuantity: + Type: 'Quantity' + Units: 'kg/m^3' + URL: '' + Description: "A Quantity" + TestMultiLineString: + Type: 'MultiLineString' + Units: '' + URL: '' + Description: "A string that spans multiple lines" + TestArray2D: + Type: '2DArray' + Columns: + Temperature: + Type: 'Quantity' + Units: 'C' + URL: '' + Description: "Temperature" + Density: + Type: 'Quantity' + Units: 'kg/m^3' + URL: 'https://en.wikipedia.org/wiki/Density' + Description: "Density in [FreeCAD Density unit]" + URL: '' + Description: > + 2 Dimensional array showing density with temperature + TestArray2D3Column: + Type: '2DArray' + Columns: + Temperature: + Type: 'Quantity' + Units: 'C' + URL: '' + Description: "Temperature" + Density: + Type: 'Quantity' + Units: 'kg/m^3' + URL: 'https://en.wikipedia.org/wiki/Density' + Description: "Density in [FreeCAD Density unit]" + InitialYieldStress: + Type: 'Quantity' + Units: 'kPa' + URL: '' + Description: > + Saturation stress for Voce isotropic hardening [FreeCAD Pressure unit] + URL: '' + Description: > + 2 Dimensional array showing density and initial yield stress with temperature + TestArray3D: + Type: '3DArray' + Columns: + Temperature: + Type: 'Quantity' + Units: 'C' + URL: '' + Description: "Temperature" + Stress: + Type: 'Quantity' + Units: 'MPa' + URL: '' + Description: "Stress" + Strain: + Type: 'Quantity' + Units: 'MPa' + URL: '' + Description: "Strain" + URL: '' + Description: > + 3 Dimensional array showing stress and strain as + a function of temperature diff --git a/src/Mod/Material/materialtests/TestMaterials.py b/src/Mod/Material/materialtests/TestMaterials.py index 7e8cb030df..7c398fc194 100644 --- a/src/Mod/Material/materialtests/TestMaterials.py +++ b/src/Mod/Material/materialtests/TestMaterials.py @@ -48,13 +48,15 @@ class MaterialTestCases(unittest.TestCase): self.assertTrue(steel.hasPhysicalModel(self.uuids.IsotropicLinearElastic)) self.assertTrue(steel.hasPhysicalModel(self.uuids.Thermal)) self.assertFalse(steel.hasPhysicalModel(self.uuids.LinearElastic)) # Not in the model - self.assertTrue(steel.hasAppearanceModel(self.uuids.BasicRendering)) # inherited from Steel.FCMat + # inherited from Steel.FCMat + self.assertTrue(steel.hasAppearanceModel(self.uuids.BasicRendering)) self.assertTrue(steel.isPhysicalModelComplete(self.uuids.Density)) self.assertFalse(steel.isPhysicalModelComplete(self.uuids.IsotropicLinearElastic)) self.assertTrue(steel.isPhysicalModelComplete(self.uuids.Thermal)) self.assertFalse(steel.isPhysicalModelComplete(self.uuids.LinearElastic)) # Not in the model - self.assertTrue(steel.isAppearanceModelComplete(self.uuids.BasicRendering)) # inherited from Steel.FCMat + # inherited from Steel.FCMat + self.assertTrue(steel.isAppearanceModelComplete(self.uuids.BasicRendering)) self.assertTrue(steel.hasPhysicalProperty("Density")) self.assertTrue(steel.hasPhysicalProperty("BulkModulus")) @@ -157,16 +159,19 @@ class MaterialTestCases(unittest.TestCase): self.assertEqual(properties["Density"], parseQuantity("7900.00 kg/m^3").UserString) # self.assertEqual(properties["BulkModulus"], "") - self.assertAlmostEqual(parseQuantity(properties["PoissonRatio"]).Value, parseQuantity("0.3").Value) + self.assertAlmostEqual(parseQuantity(properties["PoissonRatio"]).Value, + parseQuantity("0.3").Value) self.assertEqual(properties["YoungsModulus"], parseQuantity("210.00 GPa").UserString) # self.assertEqual(properties["ShearModulus"], "") self.assertEqual(properties["SpecificHeat"], parseQuantity("590.00 J/kg/K").UserString) self.assertEqual(properties["ThermalConductivity"], parseQuantity("43.00 W/m/K").UserString) - self.assertEqual(properties["ThermalExpansionCoefficient"], parseQuantity("12.00 µm/m/K").UserString) + self.assertEqual(properties["ThermalExpansionCoefficient"], + parseQuantity("12.00 µm/m/K").UserString) self.assertEqual(properties["AmbientColor"], "(0.0020, 0.0020, 0.0020, 1.0)") self.assertEqual(properties["DiffuseColor"], "(0.0000, 0.0000, 0.0000, 1.0)") self.assertEqual(properties["EmissiveColor"], "(0.0000, 0.0000, 0.0000, 1.0)") - self.assertAlmostEqual(parseQuantity(properties["Shininess"]).Value, parseQuantity("0.06").Value) + self.assertAlmostEqual(parseQuantity(properties["Shininess"]).Value, + parseQuantity("0.06").Value) self.assertEqual(properties["SpecularColor"], "(0.9800, 0.9800, 0.9800, 1.0)") self.assertAlmostEqual(parseQuantity(properties["Transparency"]).Value, parseQuantity("0").Value) @@ -199,12 +204,15 @@ class MaterialTestCases(unittest.TestCase): self.assertAlmostEqual(steel.getAppearanceValue("Transparency"), 0.0) def testMaterialsWithModel(self): - materials = self.MaterialManager.materialsWithModel('f6f9e48c-b116-4e82-ad7f-3659a9219c50') # IsotropicLinearElastic - materialsComplete = self.MaterialManager.materialsWithModelComplete('f6f9e48c-b116-4e82-ad7f-3659a9219c50') # IsotropicLinearElastic + # IsotropicLinearElastic + materials = self.MaterialManager.materialsWithModel('f6f9e48c-b116-4e82-ad7f-3659a9219c50') + materialsComplete = self.MaterialManager.materialsWithModelComplete( + 'f6f9e48c-b116-4e82-ad7f-3659a9219c50') self.assertTrue(len(materialsComplete) <= len(materials)) # Not all will be complete - - materialsLinearElastic = self.MaterialManager.materialsWithModel('7b561d1d-fb9b-44f6-9da9-56a4f74d7536') # LinearElastic + # LinearElastic + materialsLinearElastic = self.MaterialManager.materialsWithModel( + '7b561d1d-fb9b-44f6-9da9-56a4f74d7536') # All LinearElastic models should be in IsotropicLinearElastic since it is inherited self.assertTrue(len(materialsLinearElastic) <= len(materials)) @@ -212,17 +220,22 @@ class MaterialTestCases(unittest.TestCase): self.assertIn(mat, materials) def testMaterialByPath(self): - steel = self.MaterialManager.getMaterialByPath('StandardMaterial/Metal/Steel/CalculiX-Steel.FCMat', 'System') + steel = self.MaterialManager.getMaterialByPath( + 'Standard/Metal/Steel/CalculiX-Steel.FCMat', 'System') self.assertIsNotNone(steel) self.assertEqual(steel.Name, "CalculiX-Steel") self.assertEqual(steel.UUID, "92589471-a6cb-4bbc-b748-d425a17dea7d") - steel2 = self.MaterialManager.getMaterialByPath('/StandardMaterial/Metal/Steel/CalculiX-Steel.FCMat', 'System') + # Same with leading '/' + steel2 = self.MaterialManager.getMaterialByPath( + '/Standard/Metal/Steel/CalculiX-Steel.FCMat', 'System') self.assertIsNotNone(steel2) self.assertEqual(steel2.Name, "CalculiX-Steel") self.assertEqual(steel2.UUID, "92589471-a6cb-4bbc-b748-d425a17dea7d") - steel3 = self.MaterialManager.getMaterialByPath('/System/StandardMaterial/Metal/Steel/CalculiX-Steel.FCMat', 'System') + # Same with leading '/System' + steel3 = self.MaterialManager.getMaterialByPath( + '/System/Standard/Metal/Steel/CalculiX-Steel.FCMat', 'System') self.assertIsNotNone(steel3) self.assertEqual(steel3.Name, "CalculiX-Steel") self.assertEqual(steel3.UUID, "92589471-a6cb-4bbc-b748-d425a17dea7d") diff --git a/tests/src/Mod/Material/App/CMakeLists.txt b/tests/src/Mod/Material/App/CMakeLists.txt index 1e1fe038b7..633cc8d9ba 100644 --- a/tests/src/Mod/Material/App/CMakeLists.txt +++ b/tests/src/Mod/Material/App/CMakeLists.txt @@ -2,6 +2,7 @@ target_sources( Material_tests_run PRIVATE + ${CMAKE_CURRENT_SOURCE_DIR}/TestMaterialCards.cpp ${CMAKE_CURRENT_SOURCE_DIR}/TestMaterialProperties.cpp ${CMAKE_CURRENT_SOURCE_DIR}/TestMaterials.cpp ${CMAKE_CURRENT_SOURCE_DIR}/TestMaterialValue.cpp diff --git a/tests/src/Mod/Material/App/Model.cpp b/tests/src/Mod/Material/App/Model.cpp deleted file mode 100644 index 6a0f84b354..0000000000 --- a/tests/src/Mod/Material/App/Model.cpp +++ /dev/null @@ -1,140 +0,0 @@ -// SPDX-License-Identifier: LGPL-2.1-or-later -/*************************************************************************** - * Copyright (c) 2023 David Carter * - * * - * This file is part of FreeCAD. * - * * - * FreeCAD is free software: you can redistribute it and/or modify it * - * under the terms of the GNU Lesser General Public License as * - * published by the Free Software Foundation, either version 2.1 of the * - * License, or (at your option) any later version. * - * * - * FreeCAD is distributed in the hope that it will be useful, but * - * WITHOUT ANY WARRANTY; without even the implied warranty of * - * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU * - * Lesser General Public License for more details. * - * * - * You should have received a copy of the GNU Lesser General Public * - * License along with FreeCAD. If not, see * - * . * - * * - **************************************************************************/ - -#include "gtest/gtest.h" - -#include -#ifndef _PreComp_ -#endif - -#include - -#include - -#include -#include -#include -#include - -// clang-format off - -class MaterialTest : public ::testing::Test { - protected: - static void SetUpTestSuite() { - tests::initApplication(); - } - - void SetUp() override { - _modelManager = new Materials::ModelManager(); - _materialManager = new Materials::MaterialManager(); - } - - // void TearDown() override {} - Materials::ModelManager* _modelManager; - Materials::MaterialManager* _materialManager; -}; - -TEST_F(MaterialTest, TestApplication) -{ - try { - App::GetApplication(); - } - catch (...) { - ADD_FAILURE() << "Application failure\n"; - } - - SUCCEED(); -} - -TEST_F(MaterialTest, TestResources) -{ - try { - auto param = App::GetApplication().GetParameterGroupByPath( - "User parameter:BaseApp/Preferences/Mod/Material/Resources"); - EXPECT_NE(param, nullptr); - } - catch (const std::exception &e) - { - FAIL() << "Exception: " << e.what() << "\n"; - } -} - -TEST_F(MaterialTest, TestModelLoad) -{ - EXPECT_NE(_modelManager, nullptr); - - auto density = _modelManager->getModel(QString::fromStdString("454661e5-265b-4320-8e6f-fcf6223ac3af")); - EXPECT_EQ(density.getName(), QString::fromStdString("Density")); - EXPECT_EQ(density.getUUID(), QString::fromStdString("454661e5-265b-4320-8e6f-fcf6223ac3af")); - - auto& prop = density[QString::fromStdString("Density")]; - EXPECT_EQ(prop.getName(), QString::fromStdString("Density")); -} - -TEST_F(MaterialTest, TestMaterialsWithModel) -{ - auto materials = _materialManager->materialsWithModel( - QString::fromStdString("f6f9e48c-b116-4e82-ad7f-3659a9219c50")); // IsotropicLinearElastic - EXPECT_GT(materials->size(), 0); - - auto materialsComplete = _materialManager->materialsWithModelComplete( - QString::fromStdString("f6f9e48c-b116-4e82-ad7f-3659a9219c50")); // IsotropicLinearElastic - EXPECT_LE(materialsComplete->size(), materials->size()); - - auto materialsLinearElastic = _materialManager->materialsWithModel( - QString::fromStdString("7b561d1d-fb9b-44f6-9da9-56a4f74d7536")); // LinearElastic - - // All LinearElastic models should be in IsotropicLinearElastic since it is inherited - EXPECT_LE(materialsLinearElastic->size(), materials->size()); - for (auto itp = materialsLinearElastic->begin(); itp != materialsLinearElastic->end(); itp++) { - auto mat = itp->first; - EXPECT_NO_THROW(materials->at(mat)); - } -} - -TEST_F(MaterialTest, testMaterialByPath) -{ - auto& steel = _materialManager->getMaterialByPath( - QString::fromStdString("StandardMaterial/Metal/Steel/CalculiX-Steel.FCMat"), - QString::fromStdString("System")); - EXPECT_NE(&steel, nullptr); - EXPECT_EQ(steel.getName(), QString::fromStdString("CalculiX-Steel")); - EXPECT_EQ(steel.getUUID(), QString::fromStdString("92589471-a6cb-4bbc-b748-d425a17dea7d")); - - // The same but with a leading '/' - auto& steel2 = _materialManager->getMaterialByPath( - QString::fromStdString("/System/StandardMaterial/Metal/Steel/CalculiX-Steel.FCMat"), - QString::fromStdString("System")); - EXPECT_NE(&steel2, nullptr); - EXPECT_EQ(steel2.getName(), QString::fromStdString("CalculiX-Steel")); - EXPECT_EQ(steel2.getUUID(), QString::fromStdString("92589471-a6cb-4bbc-b748-d425a17dea7d")); - - // Same with the library name as a prefix - auto& steel3 = _materialManager->getMaterialByPath( - QString::fromStdString("StandardMaterial/Metal/Steel/CalculiX-Steel.FCMat"), - QString::fromStdString("System")); - EXPECT_NE(&steel3, nullptr); - EXPECT_EQ(steel3.getName(), QString::fromStdString("CalculiX-Steel")); - EXPECT_EQ(steel3.getUUID(), QString::fromStdString("92589471-a6cb-4bbc-b748-d425a17dea7d")); -} - -// clang-format on diff --git a/tests/src/Mod/Material/App/TestMaterialCards.cpp b/tests/src/Mod/Material/App/TestMaterialCards.cpp new file mode 100644 index 0000000000..9597aca1f7 --- /dev/null +++ b/tests/src/Mod/Material/App/TestMaterialCards.cpp @@ -0,0 +1,178 @@ +// SPDX-License-Identifier: LGPL-2.1-or-later +/*************************************************************************** + * Copyright (c) 2023 David Carter * + * * + * This file is part of FreeCAD. * + * * + * FreeCAD is free software: you can redistribute it and/or modify it * + * under the terms of the GNU Lesser General Public License as * + * published by the Free Software Foundation, either version 2.1 of the * + * License, or (at your option) any later version. * + * * + * FreeCAD is distributed in the hope that it will be useful, but * + * WITHOUT ANY WARRANTY; without even the implied warranty of * + * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU * + * Lesser General Public License for more details. * + * * + * You should have received a copy of the GNU Lesser General Public * + * License along with FreeCAD. If not, see * + * . * + * * + **************************************************************************/ + +#include "gtest/gtest.h" + +#include +#ifndef _PreComp_ +#endif + +#include +#include + +#include +#include +#include + +#include +#include +#include +#include +#include + +// clang-format off + +class TestMaterialCards : public ::testing::Test { + protected: + static void SetUpTestSuite() { + if (App::Application::GetARGC() == 0) { + constexpr int argc = 1; + std::array argv {"FreeCAD"}; + App::Application::Config()["ExeName"] = "FreeCAD"; + App::Application::init(argc, argv.data()); + } + } + + void SetUp() override { + // Create a temporary library + QString libPath = QDir::tempPath() + QString::fromStdString("/TestMaterialCards"); + QDir libDir(libPath); + libDir.removeRecursively(); // Clear old run data + libDir.mkdir(libPath); + _library = std::make_shared(QString::fromStdString("Testing"), + libPath, + QString::fromStdString(":/icons/preferences-general.svg"), + false); + _modelManager = new Materials::ModelManager(); + _materialManager = new Materials::MaterialManager(); + } + + // void TearDown() override {} + Materials::ModelManager* _modelManager; + Materials::MaterialManager* _materialManager; + std::shared_ptr _library; +}; + +TEST_F(TestMaterialCards, TestCopy) +{ + EXPECT_NE(_modelManager, nullptr); + EXPECT_TRUE(_library); + // FAIL() << "Test library " << _library->getDirectoryPath().toStdString() << "\n"; + + auto testMaterial = _materialManager->getMaterial(Materials::ModelUUIDs::ModelUUID_Test_Material); + auto newMaterial = std::make_shared(*testMaterial); + + EXPECT_EQ(testMaterial->getUUID(), Materials::ModelUUIDs::ModelUUID_Test_Material); + EXPECT_EQ(newMaterial->getUUID(), Materials::ModelUUIDs::ModelUUID_Test_Material); + + // Save the material + _materialManager->saveMaterial(_library, + newMaterial, + QString::fromStdString("/Test Material2.FCMat"), + false, // overwrite + true, // saveAsCopy + false); // saveInherited + EXPECT_EQ(newMaterial->getUUID(), Materials::ModelUUIDs::ModelUUID_Test_Material); + EXPECT_EQ(newMaterial->getName(), QString::fromStdString("Test Material2")); + + // Save it when it already exists throwing an error + EXPECT_THROW(_materialManager->saveMaterial(_library, + newMaterial, + QString::fromStdString("/Test Material2.FCMat"), + false, // overwrite + true, // saveAsCopy + false) // saveInherited + , Materials::MaterialExists); + EXPECT_EQ(newMaterial->getUUID(), Materials::ModelUUIDs::ModelUUID_Test_Material); + EXPECT_EQ(newMaterial->getName(), QString::fromStdString("Test Material2")); + + // Overwrite the existing file + _materialManager->saveMaterial(_library, + newMaterial, + QString::fromStdString("/Test Material2.FCMat"), + true, // overwrite + true, // saveAsCopy + false);// saveInherited + EXPECT_EQ(newMaterial->getUUID(), Materials::ModelUUIDs::ModelUUID_Test_Material); + EXPECT_EQ(newMaterial->getName(), QString::fromStdString("Test Material2")); + + // Save to a new file, inheritance mode + _materialManager->saveMaterial(_library, + newMaterial, + QString::fromStdString("/Test Material3.FCMat"), + false, // overwrite + true, // saveAsCopy + true);// saveInherited + EXPECT_EQ(newMaterial->getUUID(), Materials::ModelUUIDs::ModelUUID_Test_Material); + EXPECT_EQ(newMaterial->getName(), QString::fromStdString("Test Material3")); + + // Save to a new file, inheritance mode. no copy + _materialManager->saveMaterial(_library, + newMaterial, + QString::fromStdString("/Test Material4.FCMat"), + false, // overwrite + false, // saveAsCopy + true);// saveInherited + EXPECT_NE(newMaterial->getUUID(), Materials::ModelUUIDs::ModelUUID_Test_Material); + EXPECT_EQ(newMaterial->getName(), QString::fromStdString("Test Material4")); + QString uuid1 = newMaterial->getUUID(); + + // Save to a new file, inheritance mode, testing overwrite, new copy + _materialManager->saveMaterial(_library, + newMaterial, + QString::fromStdString("/Test Material5.FCMat"), + false, // overwrite + true, // saveAsCopy + true);// saveInherited + EXPECT_EQ(newMaterial->getUUID(), uuid1); + EXPECT_EQ(newMaterial->getName(), QString::fromStdString("Test Material5")); + + _materialManager->saveMaterial(_library, + newMaterial, + QString::fromStdString("/Test Material5.FCMat"), + true, // overwrite + true, // saveAsCopy + true);// saveInherited + EXPECT_EQ(newMaterial->getUUID(), uuid1); + EXPECT_EQ(newMaterial->getName(), QString::fromStdString("Test Material5")); + + // Save to a new file, inheritance mode, testing overwrite as no copy, new copy + _materialManager->saveMaterial(_library, + newMaterial, + QString::fromStdString("/Test Material6.FCMat"), + false, // overwrite + true, // saveAsCopy + true);// saveInherited + EXPECT_EQ(newMaterial->getUUID(), uuid1); + EXPECT_EQ(newMaterial->getName(), QString::fromStdString("Test Material6")); + + _materialManager->saveMaterial(_library, + newMaterial, + QString::fromStdString("/Test Material6.FCMat"), + true, // overwrite + false, // saveAsCopy + true);// saveInherited + EXPECT_EQ(newMaterial->getUUID(), uuid1); + EXPECT_EQ(newMaterial->getName(), QString::fromStdString("Test Material6")); +} + +// clang-format on diff --git a/tests/src/Mod/Material/App/TestMaterialValue.cpp b/tests/src/Mod/Material/App/TestMaterialValue.cpp index d39023f939..34155822a2 100644 --- a/tests/src/Mod/Material/App/TestMaterialValue.cpp +++ b/tests/src/Mod/Material/App/TestMaterialValue.cpp @@ -143,7 +143,6 @@ TEST_F(TestMaterialValue, TestQuantityType) EXPECT_TRUE(variant.toString().isNull()); EXPECT_TRUE(variant.toString().isEmpty()); EXPECT_EQ(variant.toString().size(), 0); - auto quantity = variant.value(); EXPECT_FALSE(quantity.isValid()); EXPECT_EQ(quantity.getUserString(), QString::fromStdString("nan ")); @@ -160,7 +159,6 @@ TEST_F(TestMaterialValue, TestQuantityType) EXPECT_TRUE(variant.toString().isNull()); EXPECT_TRUE(variant.toString().isEmpty()); EXPECT_EQ(variant.toString().size(), 0); - quantity = variant.value(); EXPECT_FALSE(quantity.isValid()); EXPECT_EQ(quantity.getUserString(), QString::fromStdString("nan ")); @@ -173,11 +171,16 @@ TEST_F(TestMaterialValue, TestListType) EXPECT_EQ(mat1.getType(), Materials::MaterialValue::List); EXPECT_TRUE(mat1.isNull()); auto variant = mat1.getValue(); - EXPECT_TRUE(variant.isNull()); - EXPECT_TRUE(variant.canConvert()); + EXPECT_TRUE(variant.value>().isEmpty()); + EXPECT_EQ(variant.value>().size(), 0); + EXPECT_FALSE(variant.isNull()); + EXPECT_FALSE(variant.canConvert()); EXPECT_TRUE(variant.toString().isNull()); EXPECT_TRUE(variant.toString().isEmpty()); EXPECT_EQ(variant.toString().size(), 0); + auto list = mat1.getList(); + EXPECT_TRUE(list.isEmpty()); + EXPECT_EQ(list.size(), 0); } TEST_F(TestMaterialValue, TestArray2DType) diff --git a/tests/src/Mod/Material/App/TestMaterials.cpp b/tests/src/Mod/Material/App/TestMaterials.cpp index e06212c3d4..808f09fc7e 100644 --- a/tests/src/Mod/Material/App/TestMaterials.cpp +++ b/tests/src/Mod/Material/App/TestMaterials.cpp @@ -98,7 +98,7 @@ TEST_F(TestMaterial, TestMaterialsWithModel) TEST_F(TestMaterial, TestMaterialByPath) { auto steel = _materialManager->getMaterialByPath( - QString::fromStdString("StandardMaterial/Metal/Steel/CalculiX-Steel.FCMat"), + QString::fromStdString("Standard/Metal/Steel/CalculiX-Steel.FCMat"), QString::fromStdString("System")); EXPECT_NE(&steel, nullptr); EXPECT_EQ(steel->getName(), QString::fromStdString("CalculiX-Steel")); @@ -106,7 +106,7 @@ TEST_F(TestMaterial, TestMaterialByPath) // The same but with a leading '/' auto steel2 = _materialManager->getMaterialByPath( - QString::fromStdString("/StandardMaterial/Metal/Steel/CalculiX-Steel.FCMat"), + QString::fromStdString("/Standard/Metal/Steel/CalculiX-Steel.FCMat"), QString::fromStdString("System")); EXPECT_NE(&steel2, nullptr); EXPECT_EQ(steel2->getName(), QString::fromStdString("CalculiX-Steel")); @@ -114,7 +114,7 @@ TEST_F(TestMaterial, TestMaterialByPath) // Same with the library name as a prefix auto steel3 = _materialManager->getMaterialByPath( - QString::fromStdString("/System/StandardMaterial/Metal/Steel/CalculiX-Steel.FCMat"), + QString::fromStdString("/System/Standard/Metal/Steel/CalculiX-Steel.FCMat"), QString::fromStdString("System")); EXPECT_NE(&steel3, nullptr); EXPECT_EQ(steel3->getName(), QString::fromStdString("CalculiX-Steel"));