Fem: Rename VectorMode view property to Component

This commit is contained in:
marioalexis
2025-04-03 00:26:24 -03:00
parent eaee529002
commit 69fbde7058
4 changed files with 61 additions and 49 deletions

View File

@@ -392,7 +392,7 @@ TaskPostDisplay::TaskPostDisplay(ViewProviderFemPostObject* view, QWidget* paren
updateEnumerationList(getTypedView<ViewProviderFemPostObject>()->DisplayMode,
ui->Representation);
updateEnumerationList(getTypedView<ViewProviderFemPostObject>()->Field, ui->Field);
updateEnumerationList(getTypedView<ViewProviderFemPostObject>()->VectorMode, ui->VectorMode);
updateEnumerationList(getTypedView<ViewProviderFemPostObject>()->Component, ui->VectorMode);
// get Transparency from ViewProvider
int trans = getTypedView<ViewProviderFemPostObject>()->Transparency.getValue();
@@ -432,18 +432,18 @@ void TaskPostDisplay::onRepresentationActivated(int i)
{
getTypedView<ViewProviderFemPostObject>()->DisplayMode.setValue(i);
updateEnumerationList(getTypedView<ViewProviderFemPostObject>()->Field, ui->Field);
updateEnumerationList(getTypedView<ViewProviderFemPostObject>()->VectorMode, ui->VectorMode);
updateEnumerationList(getTypedView<ViewProviderFemPostObject>()->Component, ui->VectorMode);
}
void TaskPostDisplay::onFieldActivated(int i)
{
getTypedView<ViewProviderFemPostObject>()->Field.setValue(i);
updateEnumerationList(getTypedView<ViewProviderFemPostObject>()->VectorMode, ui->VectorMode);
updateEnumerationList(getTypedView<ViewProviderFemPostObject>()->Component, ui->VectorMode);
}
void TaskPostDisplay::onVectorModeActivated(int i)
{
getTypedView<ViewProviderFemPostObject>()->VectorMode.setValue(i);
getTypedView<ViewProviderFemPostObject>()->Component.setValue(i);
}
void TaskPostDisplay::onTransparencyValueChanged(int i)
@@ -660,7 +660,7 @@ TaskPostDataAlongLine::TaskPostDataAlongLine(ViewProviderFemPostDataAlongLine* v
updateEnumerationList(getTypedView<ViewProviderFemPostObject>()->DisplayMode,
ui->Representation);
updateEnumerationList(getTypedView<ViewProviderFemPostObject>()->Field, ui->Field);
updateEnumerationList(getTypedView<ViewProviderFemPostObject>()->VectorMode, ui->VectorMode);
updateEnumerationList(getTypedView<ViewProviderFemPostObject>()->Component, ui->VectorMode);
}
TaskPostDataAlongLine::~TaskPostDataAlongLine()
@@ -963,7 +963,7 @@ void TaskPostDataAlongLine::onRepresentationActivated(int i)
{
getTypedView<ViewProviderFemPostObject>()->DisplayMode.setValue(i);
updateEnumerationList(getTypedView<ViewProviderFemPostObject>()->Field, ui->Field);
updateEnumerationList(getTypedView<ViewProviderFemPostObject>()->VectorMode, ui->VectorMode);
updateEnumerationList(getTypedView<ViewProviderFemPostObject>()->Component, ui->VectorMode);
}
void TaskPostDataAlongLine::onFieldActivated(int i)
@@ -971,15 +971,15 @@ void TaskPostDataAlongLine::onFieldActivated(int i)
getTypedView<ViewProviderFemPostObject>()->Field.setValue(i);
std::string FieldName = ui->Field->currentText().toStdString();
getObject<Fem::FemPostDataAlongLineFilter>()->PlotData.setValue(FieldName);
updateEnumerationList(getTypedView<ViewProviderFemPostObject>()->VectorMode, ui->VectorMode);
updateEnumerationList(getTypedView<ViewProviderFemPostObject>()->Component, ui->VectorMode);
auto vecMode = static_cast<ViewProviderFemPostObject*>(getView())->VectorMode.getEnum();
auto vecMode = static_cast<ViewProviderFemPostObject*>(getView())->Component.getEnum();
getObject<Fem::FemPostDataAlongLineFilter>()->PlotDataComponent.setValue(vecMode);
}
void TaskPostDataAlongLine::onVectorModeActivated(int i)
{
getTypedView<ViewProviderFemPostObject>()->VectorMode.setValue(i);
getTypedView<ViewProviderFemPostObject>()->Component.setValue(i);
int comp = ui->VectorMode->currentIndex();
getObject<Fem::FemPostDataAlongLineFilter>()->PlotDataComponent.setValue(comp);
}
@@ -1628,7 +1628,7 @@ void TaskPostContours::onFieldsChanged(int idx)
// we must also update the VectorMode
if (!getObject<Fem::FemPostContoursFilter>()->NoColor.getValue()) {
auto newMode = getTypedObject<Fem::FemPostContoursFilter>()->VectorMode.getValue();
getTypedView<ViewProviderFemPostObject>()->VectorMode.setValue(newMode);
getTypedView<ViewProviderFemPostObject>()->Component.setValue(newMode);
}
}
@@ -1644,7 +1644,7 @@ void TaskPostContours::onVectorModeChanged(int idx)
updateFields();
// now we can set the VectorMode
if (!getObject<Fem::FemPostContoursFilter>()->NoColor.getValue()) {
getTypedView<ViewProviderFemPostObject>()->VectorMode.setValue(idx);
getTypedView<ViewProviderFemPostObject>()->Component.setValue(idx);
}
}
}
@@ -1668,9 +1668,9 @@ void TaskPostContours::onNoColorChanged(bool state)
// the ViewProvider field starts with an additional entry "None",
// therefore the desired new setting is idx + 1
getTypedView<ViewProviderFemPostObject>()->Field.setValue(currentField + 1);
// set the VectorMode too
// set the Component too
auto currentMode = getTypedObject<Fem::FemPostContoursFilter>()->VectorMode.getValue();
getTypedView<ViewProviderFemPostObject>()->VectorMode.setValue(currentMode);
getTypedView<ViewProviderFemPostObject>()->Component.setValue(currentMode);
}
recompute();
}

View File

@@ -113,7 +113,7 @@
<item row="1" column="0">
<widget class="QLabel" name="label_3">
<property name="text">
<string>Vector</string>
<string>Component</string>
</property>
</widget>
</item>
@@ -125,26 +125,6 @@
<verstretch>0</verstretch>
</sizepolicy>
</property>
<item>
<property name="text">
<string>Magnitute</string>
</property>
</item>
<item>
<property name="text">
<string>X</string>
</property>
</item>
<item>
<property name="text">
<string>Y</string>
</property>
</item>
<item>
<property name="text">
<string>Z</string>
</property>
</item>
</widget>
</item>
</layout>

View File

@@ -160,11 +160,11 @@ ViewProviderFemPostObject::ViewProviderFemPostObject()
"Coloring",
App::Prop_None,
"Select the field used for calculating the color");
ADD_PROPERTY_TYPE(VectorMode,
ADD_PROPERTY_TYPE(Component,
((long)0),
"Coloring",
App::Prop_None,
"Select what to show for a vector field");
"Select component to display");
ADD_PROPERTY_TYPE(Transparency,
(0),
"Object Style",
@@ -453,8 +453,8 @@ void ViewProviderFemPostObject::updateProperties()
Field.purgeTouched();
// Vector mode
if (VectorMode.hasEnums() && VectorMode.getValue() >= 0) {
val = VectorMode.getValueAsString();
if (Component.hasEnums() && Component.getValue() >= 0) {
val = Component.getValueAsString();
}
colorArrays.clear();
@@ -469,27 +469,41 @@ void ViewProviderFemPostObject::updateProperties()
}
if (data->GetNumberOfComponents() == 1) {
// scalar
colorArrays.emplace_back("Not a vector");
}
else {
colorArrays.emplace_back("Magnitude");
if (data->GetNumberOfComponents() >= 2) {
if (data->GetNumberOfComponents() == 2) {
// 2D vector
colorArrays.emplace_back("X");
colorArrays.emplace_back("Y");
}
if (data->GetNumberOfComponents() >= 3) {
else if (data->GetNumberOfComponents() == 3) {
// 3D vector
colorArrays.emplace_back("X");
colorArrays.emplace_back("Y");
colorArrays.emplace_back("Z");
}
else if (data->GetNumberOfComponents() == 6) {
// symmetric tensor
colorArrays.emplace_back("XX");
colorArrays.emplace_back("YY");
colorArrays.emplace_back("ZZ");
colorArrays.emplace_back("XY");
colorArrays.emplace_back("YZ");
colorArrays.emplace_back("ZX");
}
}
}
VectorMode.setValue(empty);
Component.setValue(empty);
m_vectorEnum.setEnums(colorArrays);
VectorMode.setValue(m_vectorEnum);
Component.setValue(m_vectorEnum);
it = std::ranges::find(colorArrays, val);
if (!val.empty() && it != colorArrays.end()) {
VectorMode.setValue(val.c_str());
Component.setValue(val.c_str());
}
m_blockPropertyChanges = false;
@@ -693,10 +707,10 @@ void ViewProviderFemPostObject::WriteColorData(bool ResetColorBarRange)
return;
}
int component = VectorMode.getValue() - 1; // 0 is either "Not a vector" or magnitude,
// for -1 is correct for magnitude.
// x y and z are one number too high
if (strcmp(VectorMode.getValueAsString(), "Not a vector") == 0) {
int component = Component.getValue() - 1; // 0 is either "Not a vector" or magnitude,
// for -1 is correct for magnitude.
// x y and z are one number too high
if (strcmp(Component.getValueAsString(), "Not a vector") == 0) {
component = 0;
}
@@ -920,7 +934,7 @@ void ViewProviderFemPostObject::onChanged(const App::Property* prop)
updateProperties();
WriteColorData(ResetColorBarRange);
}
else if (prop == &VectorMode && setupPipeline()) {
else if (prop == &Component && setupPipeline()) {
WriteColorData(ResetColorBarRange);
}
else if (prop == &Transparency) {
@@ -1108,3 +1122,17 @@ void ViewProviderFemPostObject::onSelectionChanged(const Gui::SelectionChanges&
}
}
}
void ViewProviderFemPostObject::handleChangedPropertyName(Base::XMLReader& reader,
const char* typeName,
const char* propName)
{
if (strcmp(propName, "Field") == 0 && strcmp(typeName, "App::PropertyEnumeration") == 0) {
App::PropertyEnumeration field;
field.Restore(reader);
Component.setValue(field.getValue());
}
else {
Gui::ViewProviderDocumentObject::handleChangedPropertyName(reader, typeName, propName);
}
}

View File

@@ -81,7 +81,7 @@ public:
~ViewProviderFemPostObject() override;
App::PropertyEnumeration Field;
App::PropertyEnumeration VectorMode;
App::PropertyEnumeration Component;
App::PropertyPercent Transparency;
App::PropertyBool PlainColorEdgeOnSurface;
App::PropertyColor EdgeColor;
@@ -130,6 +130,10 @@ public:
// //@}
protected:
void handleChangedPropertyName(Base::XMLReader& reader,
const char* typeName,
const char* propName) override;
virtual void setupTaskDialog(TaskDlgPost* dlg);
bool setupPipeline();
void updateVtk();