diff --git a/src/Mod/Material/Gui/BaseDelegate.cpp b/src/Mod/Material/Gui/BaseDelegate.cpp index 3f75d52fb8..2052291dcf 100644 --- a/src/Mod/Material/Gui/BaseDelegate.cpp +++ b/src/Mod/Material/Gui/BaseDelegate.cpp @@ -106,8 +106,13 @@ void BaseDelegate::paintQuantity(QPainter* painter, else { QVariant item = getValue(index); auto quantity = item.value(); - QString text = quantity.getUserString(); - painter->drawText(option.rect, 0, text); + if (quantity.isValid()) { + QString text = quantity.getUserString(); + painter->drawText(option.rect, 0, text); + } + else { + painter->drawText(option.rect, 0, QString()); + } } painter->restore(); @@ -350,8 +355,10 @@ void BaseDelegate::setModelData(QWidget* editor, } else if (type == Materials::MaterialValue::Quantity) { auto input = dynamic_cast(editor); - value = input->text(); - return; + // value = input->text(); + // return; + auto quantity = Base::Quantity::parse(input->text()); + value = QVariant::fromValue(quantity); } else if (type == Materials::MaterialValue::Integer) { auto spinner = dynamic_cast(editor); diff --git a/src/Mod/Material/Gui/MaterialDelegate.cpp b/src/Mod/Material/Gui/MaterialDelegate.cpp index feff9ec196..c095933fb9 100644 --- a/src/Mod/Material/Gui/MaterialDelegate.cpp +++ b/src/Mod/Material/Gui/MaterialDelegate.cpp @@ -133,8 +133,10 @@ void MaterialDelegate::setValue(QAbstractItemModel* model, auto material = group->child(row, 1)->data().value>(); // auto propertyName = group->child(row, 0)->text(); auto propertyName = group->child(row, 0)->data().toString(); - material->getProperty(propertyName)->setValue(value); - group->child(row, 1)->setText(value.toString()); + std::string _name = propertyName.toStdString(); + auto property = material->getProperty(propertyName); + property->setValue(value); + group->child(row, 1)->setText(property->getString()); } notifyChanged(model, index); @@ -267,7 +269,7 @@ void MaterialDelegate::showImageModal(const QString& propertyName, QStandardItem dlg->adjustSize(); - //connect(dlg, &QDialog::finished, this, [&](int result) {}); + // connect(dlg, &QDialog::finished, this, [&](int result) {}); dlg->exec(); } @@ -281,7 +283,7 @@ void MaterialDelegate::showListModal(const QString& propertyName, QStandardItem* dlg->adjustSize(); - //connect(dlg, &QDialog::finished, this, [&](int result) {}); + // connect(dlg, &QDialog::finished, this, [&](int result) {}); dlg->exec(); } @@ -295,7 +297,7 @@ void MaterialDelegate::showMultiLineStringModal(const QString& propertyName, QSt dlg->adjustSize(); - //connect(dlg, &QDialog::finished, this, [&](int result) {}); + // connect(dlg, &QDialog::finished, this, [&](int result) {}); dlg->exec(); } @@ -310,7 +312,7 @@ void MaterialDelegate::showArray2DModal(const QString& propertyName, QStandardIt dlg->adjustSize(); - //connect(dlg, &QDialog::finished, this, [&](int result) {}); + // connect(dlg, &QDialog::finished, this, [&](int result) {}); dlg->exec(); } @@ -324,7 +326,7 @@ void MaterialDelegate::showArray3DModal(const QString& propertyName, QStandardIt dlg->adjustSize(); - //connect(dlg, &QDialog::finished, this, [&](int result) {}); + // connect(dlg, &QDialog::finished, this, [&](int result) {}); dlg->exec(); } diff --git a/src/Mod/Material/Resources/Models/Thermal/Thermal.yml b/src/Mod/Material/Resources/Models/Thermal/Thermal.yml index 5bbf0a137e..6a102919c6 100644 --- a/src/Mod/Material/Resources/Models/Thermal/Thermal.yml +++ b/src/Mod/Material/Resources/Models/Thermal/Thermal.yml @@ -48,3 +48,11 @@ Model: Description: > Thermal expansion coefficient (linear) in [FreeCAD ThermalExpansionCoefficient unit] + ThermalExpansionReferenceTemperature: + DisplayName: "Thermal Expansion Reference Temperature" + Type: 'Quantity' + Units: 'K' + URL: '' + Description: > + The reference temperature is the temperature at which zero thermal + strains exist for the analysis. diff --git a/src/Mod/Material/materialtests/TestMaterials.py b/src/Mod/Material/materialtests/TestMaterials.py index 86f3104584..7bf7ba3925 100644 --- a/src/Mod/Material/materialtests/TestMaterials.py +++ b/src/Mod/Material/materialtests/TestMaterials.py @@ -67,7 +67,7 @@ class MaterialTestCases(unittest.TestCase): 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.Thermal)) self.assertFalse(steel.isPhysicalModelComplete(self.uuids.LinearElastic)) self.assertTrue(steel.isAppearanceModelComplete(self.uuids.BasicRendering)) diff --git a/tests/src/Mod/Material/App/TestMaterials.cpp b/tests/src/Mod/Material/App/TestMaterials.cpp index b0c5080569..024023d4ea 100644 --- a/tests/src/Mod/Material/App/TestMaterials.cpp +++ b/tests/src/Mod/Material/App/TestMaterials.cpp @@ -239,7 +239,7 @@ TEST_F(TestMaterial, TestCalculiXSteel) EXPECT_TRUE(steel->isPhysicalModelComplete(Materials::ModelUUIDs::ModelUUID_Mechanical_Density)); // Density EXPECT_FALSE(steel->isPhysicalModelComplete(Materials::ModelUUIDs::ModelUUID_Mechanical_IsotropicLinearElastic)); // IsotropicLinearElastic - incomplete - EXPECT_TRUE(steel->isPhysicalModelComplete(Materials::ModelUUIDs::ModelUUID_Thermal_Default)); // Thermal + EXPECT_FALSE(steel->isPhysicalModelComplete(Materials::ModelUUIDs::ModelUUID_Thermal_Default)); // Thermal EXPECT_FALSE(steel->isPhysicalModelComplete(Materials::ModelUUIDs::ModelUUID_Mechanical_LinearElastic)); // Legacy linear elastic - Not in the model EXPECT_TRUE(steel->isAppearanceModelComplete(Materials::ModelUUIDs::ModelUUID_Rendering_Basic)); // BasicRendering - inherited from Steel.FCMat