diff --git a/src/Mod/Fem/App/FemPostBranchFilter.cpp b/src/Mod/Fem/App/FemPostBranchFilter.cpp index f56b60bbc1..9f13340519 100644 --- a/src/Mod/Fem/App/FemPostBranchFilter.cpp +++ b/src/Mod/Fem/App/FemPostBranchFilter.cpp @@ -55,9 +55,9 @@ FemPostBranchFilter::FemPostBranchFilter() * filter. We do not care if the input filter changes, as this is affecting only the passthrough * input and does not affect our child connections. * Dependent on our output mode, the passthrough is also used as output, but potentially - * the append filter is used. in this case our children need to be connected into the append filter. - * Here the same holds as before: Append filter output can be connected to arbitrary other filters - * in the pipeline, not affecting our internal connections to our children. + * the append filter is used. in this case our children need to be connected into the append + * filter. Here the same holds as before: Append filter output can be connected to arbitrary + * other filters in the pipeline, not affecting our internal connections to our children. */ m_append = vtkSmartPointer::New(); @@ -112,10 +112,11 @@ void FemPostBranchFilter::setupPipeline() // serial: the next filter gets the previous output, the first one gets our input if (!filter) { nextFilter->getFilterInput()->SetInputConnection(m_passthrough->GetOutputPort()); - } else { - nextFilter->getFilterInput()->SetInputConnection(filter->getFilterOutput()->GetOutputPort()); } - + else { + nextFilter->getFilterInput()->SetInputConnection( + filter->getFilterOutput()->GetOutputPort()); + } } else if (Mode.getValue() == Fem::PostGroupMode::Parallel) { // parallel: all filters get out input @@ -140,7 +141,7 @@ void FemPostBranchFilter::onChanged(const Property* prop) } if (prop == &Frame) { - //Update all children with the new step + // Update all children with the new step for (const auto& obj : Group.getValues()) { if (obj->isDerivedFrom()) { static_cast(obj)->Frame.setValue(Frame.getValue()); @@ -172,7 +173,7 @@ void FemPostBranchFilter::onChanged(const Property* prop) void FemPostBranchFilter::filterChanged(FemPostFilter* filter) { - //we only need to update the following children if we are in serial mode + // we only need to update the following children if we are in serial mode if (Mode.getValue() == Fem::PostGroupMode::Serial) { std::vector objs = Group.getValues(); @@ -195,7 +196,8 @@ void FemPostBranchFilter::filterChanged(FemPostFilter* filter) // if we append as output, we need to inform the parent object that we are isTouched if (Output.getValue() == 1) { - //make sure we inform our parent object that we changed, it then can inform others if needed + // make sure we inform our parent object that we changed, it then can inform others if + // needed App::DocumentObject* group = FemPostGroupExtension::getGroupOfObject(this); if (!group) { return; @@ -207,7 +209,8 @@ void FemPostBranchFilter::filterChanged(FemPostFilter* filter) } } -void FemPostBranchFilter::filterPipelineChanged([[maybe_unused]] FemPostFilter* postfilter) { +void FemPostBranchFilter::filterPipelineChanged([[maybe_unused]] FemPostFilter* postfilter) +{ // one of our filters has changed its active pipeline. We need to reconnect it properly. // As we are cheap we just reconnect everything // TODO: Do more efficiently diff --git a/src/Mod/Fem/App/FemPostBranchFilter.h b/src/Mod/Fem/App/FemPostBranchFilter.h index 743557b993..7d483ff0a5 100644 --- a/src/Mod/Fem/App/FemPostBranchFilter.h +++ b/src/Mod/Fem/App/FemPostBranchFilter.h @@ -68,7 +68,7 @@ private: void setupPipeline(); vtkSmartPointer m_append; - vtkSmartPointer m_passthrough; + vtkSmartPointer m_passthrough; }; } // namespace Fem diff --git a/src/Mod/Fem/App/FemPostFilter.cpp b/src/Mod/Fem/App/FemPostFilter.cpp index d575521417..dc46efa3e8 100644 --- a/src/Mod/Fem/App/FemPostFilter.cpp +++ b/src/Mod/Fem/App/FemPostFilter.cpp @@ -52,7 +52,6 @@ FemPostFilter::FemPostFilter() "Data", App::Prop_ReadOnly, "The step used to calculate the data"); - } FemPostFilter::~FemPostFilter() = default; @@ -72,21 +71,22 @@ void FemPostFilter::setActiveFilterPipeline(std::string name) if (m_activePipeline != name && isValid()) { // disable all inputs of current pipeline - if (m_activePipeline != "" && m_pipelines.find( m_activePipeline ) != m_pipelines.end()) { + if (m_activePipeline != "" && m_pipelines.find(m_activePipeline) != m_pipelines.end()) { m_pipelines[m_activePipeline].source->RemoveAllInputConnections(0); } // handle the transform if (m_use_transform) { m_transform_filter->RemoveAllInputConnections(0); - if(m_transform_location == TransformLocation::output) { + if (m_transform_location == TransformLocation::output) { m_transform_filter->SetInputConnection(m_pipelines[name].target->GetOutputPort(0)); - } else { + } + else { m_pipelines[name].source->SetInputConnection(m_transform_filter->GetOutputPort(0)); } } - //set the new pipeline active + // set the new pipeline active m_activePipeline = name; pipelineChanged(); } @@ -94,8 +94,7 @@ void FemPostFilter::setActiveFilterPipeline(std::string name) vtkSmartPointer FemPostFilter::getFilterInput() { - if (m_use_transform && - m_transform_location == TransformLocation::input) { + if (m_use_transform && m_transform_location == TransformLocation::input) { return m_transform_filter; } @@ -105,8 +104,7 @@ vtkSmartPointer FemPostFilter::getFilterInput() vtkSmartPointer FemPostFilter::getFilterOutput() { - if (m_use_transform && - m_transform_location == TransformLocation::output) { + if (m_use_transform && m_transform_location == TransformLocation::output) { return m_transform_filter; } @@ -114,8 +112,9 @@ vtkSmartPointer FemPostFilter::getFilterOutput() return m_pipelines[m_activePipeline].target; } -void FemPostFilter::pipelineChanged() { - //inform our parent, that we need to be reconnected +void FemPostFilter::pipelineChanged() +{ + // inform our parent, that we need to be reconnected App::DocumentObject* group = FemPostGroupExtension::getGroupOfObject(this); if (!group) { return; @@ -134,25 +133,29 @@ void FemPostFilter::onChanged(const App::Property* prop) // remove transform from pipeline if (m_transform_location == TransformLocation::output) { m_transform_filter->RemoveAllInputConnections(0); - } else { + } + else { m_pipelines[m_activePipeline].source->RemoveAllInputConnections(0); } m_use_transform = false; pipelineChanged(); } - if(!Placement.getValue().isIdentity() && !m_use_transform) { + if (!Placement.getValue().isIdentity() && !m_use_transform) { // add transform to pipeline if (m_transform_location == TransformLocation::output) { - m_transform_filter->SetInputConnection(m_pipelines[m_activePipeline].target->GetOutputPort(0)); - } else { - m_pipelines[m_activePipeline].source->SetInputConnection(m_transform_filter->GetOutputPort(0)); + m_transform_filter->SetInputConnection( + m_pipelines[m_activePipeline].target->GetOutputPort(0)); + } + else { + m_pipelines[m_activePipeline].source->SetInputConnection( + m_transform_filter->GetOutputPort(0)); } m_use_transform = true; pipelineChanged(); } } - //make sure we inform our parent object that we changed, it then can inform others if needed + // make sure we inform our parent object that we changed, it then can inform others if needed App::DocumentObject* group = FemPostGroupExtension::getGroupOfObject(this); if (group && group->hasExtension(FemPostGroupExtension::getExtensionClassTypeId())) { auto postgroup = group->getExtensionByType(); @@ -179,7 +182,7 @@ DocumentObjectExecReturn* FemPostFilter::execute() return StdReturn; } - if (Frame.getValue()>0) { + if (Frame.getValue() > 0) { output->UpdateTimeStep(Frame.getValue()); } else { @@ -199,7 +202,7 @@ vtkSmartPointer FemPostFilter::getInputData() return nullptr; } - vtkAlgorithmOutput* output = active.source->GetInputConnection(0,0); + vtkAlgorithmOutput* output = active.source->GetInputConnection(0, 0); vtkAlgorithm* algo = output->GetProducer(); algo->Update(); return vtkDataSet::SafeDownCast(algo->GetOutputDataObject(0)); @@ -616,7 +619,8 @@ void FemPostClipFilter::onChanged(const Property* prop) if (auto* value = Base::freecad_dynamic_cast(Function.getValue())) { m_clipper->SetClipFunction(value->getImplicitFunction()); m_extractor->SetImplicitFunction(value->getImplicitFunction()); - } else { + } + else { m_clipper->SetClipFunction(m_defaultFunction); m_extractor->SetImplicitFunction(m_defaultFunction); } @@ -978,7 +982,6 @@ void FemPostContoursFilter::refreshFields() } m_blockPropertyChanges = false; - } void FemPostContoursFilter::refreshVectors() @@ -1077,7 +1080,8 @@ void FemPostCutFilter::onChanged(const Property* prop) if (prop == &Function) { if (auto* value = Base::freecad_dynamic_cast(Function.getValue())) { m_cutter->SetCutFunction(value->getImplicitFunction()); - } else { + } + else { m_cutter->SetCutFunction(m_defaultFunction); } } diff --git a/src/Mod/Fem/App/FemPostFilter.h b/src/Mod/Fem/App/FemPostFilter.h index f7cdab208d..f748a4d914 100644 --- a/src/Mod/Fem/App/FemPostFilter.h +++ b/src/Mod/Fem/App/FemPostFilter.h @@ -94,7 +94,7 @@ private: bool m_use_transform = false; TransformLocation m_transform_location = TransformLocation::output; - void pipelineChanged(); // inform parents that the pipeline changed + void pipelineChanged(); // inform parents that the pipeline changed }; class FemExport FemPostSmoothFilterExtension: public App::DocumentObjectExtension diff --git a/src/Mod/Fem/App/FemPostFunction.cpp b/src/Mod/Fem/App/FemPostFunction.cpp index c87f7b9be7..4aeae3a476 100644 --- a/src/Mod/Fem/App/FemPostFunction.cpp +++ b/src/Mod/Fem/App/FemPostFunction.cpp @@ -33,9 +33,7 @@ PROPERTY_SOURCE(Fem::FemPostFunctionProvider, App::DocumentObject) FemPostFunctionProvider::FemPostFunctionProvider() : DocumentObjectGroup() -{ - -} +{} FemPostFunctionProvider::~FemPostFunctionProvider() = default; @@ -54,8 +52,8 @@ void FemPostFunctionProvider::unsetupObject() } void FemPostFunctionProvider::handleChangedPropertyName(Base::XMLReader& reader, - const char* typeName, - const char* propName) + const char* typeName, + const char* propName) { if (strcmp(propName, "Functions") == 0 && Base::Type::fromName(typeName) == App::PropertyLinkList::getClassTypeId()) { diff --git a/src/Mod/Fem/App/FemPostFunction.h b/src/Mod/Fem/App/FemPostFunction.h index cd59f37ac0..803713e347 100644 --- a/src/Mod/Fem/App/FemPostFunction.h +++ b/src/Mod/Fem/App/FemPostFunction.h @@ -92,7 +92,9 @@ protected: void unsetupObject() override; // update documents - void handleChangedPropertyName(Base::XMLReader &reader, const char * TypeName, const char *PropName) override; + void handleChangedPropertyName(Base::XMLReader& reader, + const char* TypeName, + const char* PropName) override; }; // --------------------------------------------------------------------------- diff --git a/src/Mod/Fem/App/FemPostGroupExtension.cpp b/src/Mod/Fem/App/FemPostGroupExtension.cpp index 3722b8fa07..5ecad291be 100644 --- a/src/Mod/Fem/App/FemPostGroupExtension.cpp +++ b/src/Mod/Fem/App/FemPostGroupExtension.cpp @@ -30,24 +30,26 @@ EXTENSION_PROPERTY_SOURCE(Fem::FemPostGroupExtension, App::GroupExtension); const char* FemPostGroupExtension::ModeEnums[] = {"Serial", "Parallel", nullptr}; -FemPostGroupExtension::FemPostGroupExtension() : App::GroupExtension() { +FemPostGroupExtension::FemPostGroupExtension() + : App::GroupExtension() +{ initExtensionType(Fem::FemPostGroupExtension::getExtensionClassTypeId()); - EXTENSION_ADD_PROPERTY_TYPE(Mode, - (long(0)), - "Pipeline", - App::Prop_None, - "Selects the pipeline data transition mode.\n" - "In serial, every filter gets the output of the previous one as input.\n" - "In parallel, every filter gets the pipeline source as input.\n"); + EXTENSION_ADD_PROPERTY_TYPE( + Mode, + (long(0)), + "Pipeline", + App::Prop_None, + "Selects the pipeline data transition mode.\n" + "In serial, every filter gets the output of the previous one as input.\n" + "In parallel, every filter gets the pipeline source as input.\n"); Mode.setEnums(ModeEnums); } -FemPostGroupExtension::~FemPostGroupExtension() { - -} +FemPostGroupExtension::~FemPostGroupExtension() +{} void FemPostGroupExtension::initExtension(App::ExtensionContainer* obj) @@ -62,16 +64,18 @@ void FemPostGroupExtension::initExtension(App::ExtensionContainer* obj) void FemPostGroupExtension::extensionOnChanged(const App::Property* p) { - if(p == &Group) { + if (p == &Group) { if (!m_blockChange) { - // sort the group, so that non filter objects are always on top (in case any object using this extension allows those) + // sort the group, so that non filter objects are always on top (in case any object + // using this extension allows those) auto objs = Group.getValues(); - std::sort( objs.begin( ), objs.end( ), [ ]( const App::DocumentObject* lhs, const App::DocumentObject* rhs ){ - - int l = lhs->isDerivedFrom() ? 0 : 1; - int r = rhs->isDerivedFrom() ? 0 : 1; - return risDerivedFrom() ? 0 : 1; + int r = rhs->isDerivedFrom() ? 0 : 1; + return r < l; + }); m_blockChange = true; Group.setValue(objs); m_blockChange = false; @@ -82,7 +86,7 @@ void FemPostGroupExtension::extensionOnChanged(const App::Property* p) std::vector FemPostGroupExtension::getFilter() { - //collect all other items that are not filters + // collect all other items that are not filters std::vector filters; for (auto& obj : Group.getValues()) { if (obj->isDerivedFrom()) { diff --git a/src/Mod/Fem/App/FemPostGroupExtension.h b/src/Mod/Fem/App/FemPostGroupExtension.h index 47e53fe96b..e7aafc277a 100644 --- a/src/Mod/Fem/App/FemPostGroupExtension.h +++ b/src/Mod/Fem/App/FemPostGroupExtension.h @@ -37,7 +37,8 @@ enum PostGroupMode }; // object grouping FEM filters and building the structure of the pipeline -class FemExport FemPostGroupExtension : public App::GroupExtension { +class FemExport FemPostGroupExtension: public App::GroupExtension +{ using inherited = App::GroupExtension; EXTENSION_PROPERTY_HEADER_WITH_OVERRIDE(Fem::FemPostGroupExtension); diff --git a/src/Mod/Fem/App/FemPostObject.cpp b/src/Mod/Fem/App/FemPostObject.cpp index 872520bb7e..52cd137233 100644 --- a/src/Mod/Fem/App/FemPostObject.cpp +++ b/src/Mod/Fem/App/FemPostObject.cpp @@ -58,7 +58,8 @@ FemPostObject::FemPostObject() FemPostObject::~FemPostObject() = default; -vtkDataSet* FemPostObject::getDataSet() { +vtkDataSet* FemPostObject::getDataSet() +{ if (!Data.getValue()) { return nullptr; @@ -99,7 +100,7 @@ PyObject* FemPostObject::getPyObject() void FemPostObject::onChanged(const App::Property* prop) { - if(prop == &Placement) { + if (prop == &Placement) { // we update the transform filter to match the placement! double data[16]; auto matrix = Placement.getValue().toMatrix(); @@ -107,8 +108,8 @@ void FemPostObject::onChanged(const App::Property* prop) vtkTransform* transform = vtkTransform::New(); transform->SetMatrix(data); m_transform_filter->SetTransform(transform); - //note: no call to Update(), as we do not know the frame to use. has to happen - //in derived class + // note: no call to Update(), as we do not know the frame to use. has to happen + // in derived class // placement would not recompute, as it is a "not touch" prop. this->touch(); @@ -123,7 +124,8 @@ namespace template void femVTKWriter(const char* filename, const vtkSmartPointer& dataObject) { - if (dataObject->IsA("vtkDataSet") && vtkDataSet::SafeDownCast(dataObject)->GetNumberOfPoints() <= 0) { + if (dataObject->IsA("vtkDataSet") + && vtkDataSet::SafeDownCast(dataObject)->GetNumberOfPoints() <= 0) { throw Base::ValueError("Empty data object"); } @@ -186,7 +188,8 @@ void FemPostObject::writeVTK(const char* filename) const if (extension == "vtm") { femVTKWriter(name.c_str(), data); - } else { + } + else { femVTKWriter(name.c_str(), data); } } diff --git a/src/Mod/Fem/App/FemPostPipeline.cpp b/src/Mod/Fem/App/FemPostPipeline.cpp index 2ebe8212d4..8767097951 100644 --- a/src/Mod/Fem/App/FemPostPipeline.cpp +++ b/src/Mod/Fem/App/FemPostPipeline.cpp @@ -80,7 +80,8 @@ void FemFrameSourceAlgorithm::setDataObject(vtkSmartPointer data) Update(); } -bool FemFrameSourceAlgorithm::isValid() { +bool FemFrameSourceAlgorithm::isValid() +{ return m_data.GetPointer() != nullptr; } @@ -125,7 +126,7 @@ int FemFrameSourceAlgorithm::RequestInformation(vtkInformation* reqInfo, vtkInformationVector* outVector) { - //setup default information + // setup default information if (!this->Superclass::RequestInformation(reqInfo, inVector, outVector)) { return 0; } @@ -308,7 +309,10 @@ void FemPostPipeline::read(Base::FileInfo File) Data.setValue(dataObjectFromFile(File)); } -void FemPostPipeline::read(std::vector& files, std::vector& values, Base::Unit unit, std::string& frame_type) +void FemPostPipeline::read(std::vector& files, + std::vector& values, + Base::Unit unit, + std::string& frame_type) { if (files.size() != values.size()) { Base::Console().Error("Result files and frame values have different length.\n"); @@ -366,7 +370,8 @@ App::DocumentObjectExecReturn* FemPostPipeline::execute() double time = frames[Frame.getValue()]; m_transform_filter->UpdateTimeStep(time); - } else { + } + else { m_transform_filter->Update(); } @@ -437,7 +442,8 @@ void FemPostPipeline::onChanged(const Property* prop) m_block_property = true; Frame.setValue(val.c_str()); m_block_property = false; - } else { + } + else { // frame gets updated Frame.setValue(long(0)); } @@ -447,7 +453,7 @@ void FemPostPipeline::onChanged(const Property* prop) if (prop == &Frame && !m_block_property) { - //Update all children with the new frame + // Update all children with the new frame double value = 0; auto frames = m_source_algorithm->getFrameValues(); if (!frames.empty() && frames.size() > ulong(Frame.getValue())) { @@ -523,7 +529,7 @@ void FemPostPipeline::filterChanged(FemPostFilter* filter) if (started) { obj->touch(); - if(obj->hasExtension(Fem::FemPostGroupExtension::getExtensionClassTypeId())) { + if (obj->hasExtension(Fem::FemPostGroupExtension::getExtensionClassTypeId())) { obj->getExtension()->recomputeChildren(); } } @@ -725,7 +731,8 @@ void FemPostPipeline::onDocumentRestored() { // if a old document was loaded with "custom" mode setting, the current value // would be out of range. Reset it to "serial" - if (Mode.getValue() > Fem::PostGroupMode::Parallel || Mode.getValue() < Fem::PostGroupMode::Serial) { + if (Mode.getValue() > Fem::PostGroupMode::Parallel + || Mode.getValue() < Fem::PostGroupMode::Serial) { Mode.setValue(Fem::PostGroupMode::Serial); } } diff --git a/src/Mod/Fem/App/FemPostPipeline.h b/src/Mod/Fem/App/FemPostPipeline.h index efad91feeb..6c96b6dbae 100644 --- a/src/Mod/Fem/App/FemPostPipeline.h +++ b/src/Mod/Fem/App/FemPostPipeline.h @@ -43,7 +43,7 @@ namespace Fem // algorithm that allows multi frame handling: if data is stored in MultiBlock dataset // this source enables the downstream filters to query the blocks as different time frames -class FemFrameSourceAlgorithm : public vtkUnstructuredGridAlgorithm +class FemFrameSourceAlgorithm: public vtkUnstructuredGridAlgorithm { public: static FemFrameSourceAlgorithm* New(); @@ -59,8 +59,12 @@ protected: vtkSmartPointer m_data; - int RequestInformation(vtkInformation* reqInfo, vtkInformationVector** inVector, vtkInformationVector* outVector) override; - int RequestData(vtkInformation* reqInfo, vtkInformationVector** inVector, vtkInformationVector* outVector) override; + int RequestInformation(vtkInformation* reqInfo, + vtkInformationVector** inVector, + vtkInformationVector* outVector) override; + int RequestData(vtkInformation* reqInfo, + vtkInformationVector** inVector, + vtkInformationVector* outVector) override; }; @@ -89,12 +93,18 @@ public: // load data from files (single or as multiframe) static bool canRead(Base::FileInfo file); void read(Base::FileInfo file); - void read(std::vector& files, std::vector& values, Base::Unit unit, std::string& frame_type); + void read(std::vector& files, + std::vector& values, + Base::Unit unit, + std::string& frame_type); void scale(double s); // load from results void load(FemResultObject* res); - void load(std::vector& res, std::vector& values, Base::Unit unit, std::string& frame_type); + void load(std::vector& res, + std::vector& values, + Base::Unit unit, + std::string& frame_type); // Group pipeline handling void filterChanged(FemPostFilter* filter) override; @@ -112,16 +122,18 @@ protected: bool allowObject(App::DocumentObject* obj) override; // update documents - void handleChangedPropertyName(Base::XMLReader &reader, const char * TypeName, const char *PropName) override; + void handleChangedPropertyName(Base::XMLReader& reader, + const char* TypeName, + const char* PropName) override; void onDocumentRestored() override; private: - App::Enumeration m_frameEnum; + App::Enumeration m_frameEnum; vtkSmartPointer m_source_algorithm; bool m_block_property = false; - bool m_data_updated = false; - bool m_use_transform = false; + bool m_data_updated = false; + bool m_use_transform = false; void updateData(); diff --git a/src/Mod/Fem/App/FemPostPipelinePyImp.cpp b/src/Mod/Fem/App/FemPostPipelinePyImp.cpp index 9220145a72..d75f8dff41 100644 --- a/src/Mod/Fem/App/FemPostPipelinePyImp.cpp +++ b/src/Mod/Fem/App/FemPostPipelinePyImp.cpp @@ -45,12 +45,18 @@ std::string FemPostPipelinePy::representation() const PyObject* FemPostPipelinePy::read(PyObject* args) { - PyObject *files; - PyObject *values = nullptr; - PyObject *unitobj = nullptr; + PyObject* files; + PyObject* values = nullptr; + PyObject* unitobj = nullptr; const char* value_type; - if (PyArg_ParseTuple(args, "O|OO!s", &files, &values, &(Base::UnitPy::Type), &unitobj, &value_type)) { + if (PyArg_ParseTuple(args, + "O|OO!s", + &files, + &values, + &(Base::UnitPy::Type), + &unitobj, + &value_type)) { if (!values) { // single argument version was called! @@ -64,12 +70,13 @@ PyObject* FemPostPipelinePy::read(PyObject* args) } else if (values && unitobj) { - //multistep version! + // multistep version! - if ( !(PyTuple_Check(files) || PyList_Check(files)) || - !(PyTuple_Check(values) || PyList_Check(values)) ) { + if (!(PyTuple_Check(files) || PyList_Check(files)) + || !(PyTuple_Check(values) || PyList_Check(values))) { - std::string error = std::string("Files and values must be list of strings and number respectively."); + std::string error = std::string( + "Files and values must be list of strings and number respectively."); throw Base::TypeError(error); } @@ -87,7 +94,7 @@ PyObject* FemPostPipelinePy::read(PyObject* args) file_result[i] = Base::FileInfo(path.as_string()); } - //extract the values + // extract the values Py::Sequence values_list(values); size = values_list.size(); std::vector value_result; @@ -128,12 +135,18 @@ PyObject* FemPostPipelinePy::scale(PyObject* args) PyObject* FemPostPipelinePy::load(PyObject* args) { - PyObject *py; - PyObject *list = nullptr; - PyObject *unitobj = nullptr; + PyObject* py; + PyObject* list = nullptr; + PyObject* unitobj = nullptr; const char* value_type; - if (PyArg_ParseTuple(args, "O|OO!s", &py, &list, &(Base::UnitPy::Type), &unitobj, &value_type)) { + if (PyArg_ParseTuple(args, + "O|OO!s", + &py, + &list, + &(Base::UnitPy::Type), + &unitobj, + &value_type)) { if (!list) { @@ -143,7 +156,8 @@ PyObject* FemPostPipelinePy::load(PyObject* args) PyErr_SetString(PyExc_TypeError, "object is not a result object"); return nullptr; } - App::DocumentObject* obj = static_cast(py)->getDocumentObjectPtr(); + App::DocumentObject* obj = + static_cast(py)->getDocumentObjectPtr(); if (!obj->isDerivedFrom()) { PyErr_SetString(PyExc_TypeError, "object is not a result object"); return nullptr; @@ -154,12 +168,13 @@ PyObject* FemPostPipelinePy::load(PyObject* args) } else if (list && unitobj) { - //multistep version! + // multistep version! - if ( !(PyTuple_Check(py) || PyList_Check(py)) || - !(PyTuple_Check(list) || PyList_Check(list)) ) { + if (!(PyTuple_Check(py) || PyList_Check(py)) + || !(PyTuple_Check(list) || PyList_Check(list))) { - std::string error = std::string("Result and value must be list of ResultObject and number respectively."); + std::string error = std::string( + "Result and value must be list of ResultObject and number respectively."); throw Base::TypeError(error); } @@ -172,7 +187,8 @@ PyObject* FemPostPipelinePy::load(PyObject* args) for (Py::Sequence::size_type i = 0; i < size; i++) { Py::Object item = result_list[i]; if (!PyObject_TypeCheck(*item, &(DocumentObjectPy::Type))) { - std::string error = std::string("type in result list must be 'ResultObject', not "); + std::string error = + std::string("type in result list must be 'ResultObject', not "); throw Base::TypeError(error); } auto obj = static_cast(*item)->getDocumentObjectPtr(); @@ -182,7 +198,7 @@ PyObject* FemPostPipelinePy::load(PyObject* args) results[i] = static_cast(obj); } - //extract the values + // extract the values Py::Sequence values_list(list); size = values_list.size(); std::vector values; @@ -206,9 +222,10 @@ PyObject* FemPostPipelinePy::load(PyObject* args) // Finally call the c++ function! getFemPostPipelinePtr()->load(results, values, unit, step_type); Py_Return; - - } else { - std::string error = std::string("Multistep load requries 4 arguments: ResultList, ValueList, unit, type"); + } + else { + std::string error = std::string( + "Multistep load requries 4 arguments: ResultList, ValueList, unit, type"); throw Base::TypeError(error); } } diff --git a/src/Mod/Fem/App/PropertyPostDataObject.cpp b/src/Mod/Fem/App/PropertyPostDataObject.cpp index ab28d207c0..e075a9cbeb 100644 --- a/src/Mod/Fem/App/PropertyPostDataObject.cpp +++ b/src/Mod/Fem/App/PropertyPostDataObject.cpp @@ -305,10 +305,11 @@ void PropertyPostDataObject::Restore(Base::XMLReader& reader) } } -void add_to_zip(Base::FileInfo path, int zip_path_idx, zipios::ZipOutputStream& ZipWriter) { +void add_to_zip(Base::FileInfo path, int zip_path_idx, zipios::ZipOutputStream& ZipWriter) +{ if (path.isDir()) { - for(auto file : path.getDirectoryContent()) { + for (auto file : path.getDirectoryContent()) { add_to_zip(file, zip_path_idx, ZipWriter); } } @@ -344,7 +345,7 @@ void PropertyPostDataObject::SaveDocFile(Base::Writer& writer) const datafolder.createDirectories(); auto datafile = Base::FileInfo(datafolder.filePath() + "/datafile.vtm"); - //create the data: vtm file and subfolder with the subsequent data files + // create the data: vtm file and subfolder with the subsequent data files xmlWriter = vtkSmartPointer::New(); xmlWriter->SetInputDataObject(m_dataObject); xmlWriter->SetFileName(datafile.filePath().c_str()); @@ -356,14 +357,14 @@ void PropertyPostDataObject::SaveDocFile(Base::Writer& writer) const xmlWriter->SetFileName(fi.filePath().c_str()); xmlWriter->SetDataModeToBinary(); - #ifdef VTK_CELL_ARRAY_V2 +#ifdef VTK_CELL_ARRAY_V2 // Looks like an invalid data object that causes a crash with vtk9 vtkUnstructuredGrid* dataGrid = vtkUnstructuredGrid::SafeDownCast(m_dataObject); if (dataGrid && (dataGrid->GetPiece() < 0 || dataGrid->GetNumberOfPoints() <= 0)) { std::cerr << "PropertyPostDataObject::SaveDocFile: ignore empty vtkUnstructuredGrid\n"; return; } - #endif +#endif } if (xmlWriter->Write() != 1) { @@ -389,7 +390,8 @@ void PropertyPostDataObject::SaveDocFile(Base::Writer& writer) const else if (m_dataObject->IsA("vtkMultiBlockDataSet")) { // ZIP file we store all data in zipios::ZipOutputStream ZipWriter(fi.filePath()); - ZipWriter.putNextEntry("dummy"); //need to add a dummy first, as the read stream preloads the first entry, and we cannot get the file name... + ZipWriter.putNextEntry("dummy"); // need to add a dummy first, as the read stream preloads + // the first entry, and we cannot get the file name... add_to_zip(datafolder, datafolder.filePath().length(), ZipWriter); ZipWriter.close(); datafolder.deleteDirectoryRecursive(); @@ -455,7 +457,7 @@ void PropertyPostDataObject::RestoreDocFile(Base::Reader& reader) try { zipios::ConstEntryPointer entry = ZipReader.getNextEntry(); - while(entry->isValid()) { + while (entry->isValid()) { Base::FileInfo entry_path(fo.filePath() + entry->getName()); if (entry->isDirectory()) { // seems not to be called @@ -463,7 +465,7 @@ void PropertyPostDataObject::RestoreDocFile(Base::Reader& reader) } else { auto entry_dir = Base::FileInfo(entry_path.dirPath()); - if(!entry_dir.exists()) { + if (!entry_dir.exists()) { entry_dir.createDirectories(); } @@ -480,7 +482,8 @@ void PropertyPostDataObject::RestoreDocFile(Base::Reader& reader) // there is no further entry } - // create the reader, and change the file for it to read. Also delete zip file, not needed anymore + // create the reader, and change the file for it to read. Also delete zip file, not + // needed anymore fi.deleteFile(); fi = Base::FileInfo(fo.filePath() + "/datafile.vtm"); xmlReader = vtkSmartPointer::New(); diff --git a/src/Mod/Fem/Gui/Command.cpp b/src/Mod/Fem/Gui/Command.cpp index 2b3023ec55..d581099138 100644 --- a/src/Mod/Fem/Gui/Command.cpp +++ b/src/Mod/Fem/Gui/Command.cpp @@ -1839,15 +1839,18 @@ void setupFilter(Gui::Command* cmd, std::string Name) // at first we must determine the pipeline of the selection object // (which can be a pipeline itself) App::DocumentObject* pipeline = nullptr; - if(selObject->hasExtension(Fem::FemPostGroupExtension::getExtensionClassTypeId())) { + if (selObject->hasExtension(Fem::FemPostGroupExtension::getExtensionClassTypeId())) { pipeline = selObject; - } else { + } + else { pipeline = Fem::FemPostGroupExtension::getGroupOfObject(selObject); if (!pipeline || !pipeline->isDerivedFrom()) { QMessageBox::warning( Gui::getMainWindow(), qApp->translate("setupFilter", "Error: Object not in a post processing group"), - qApp->translate("setupFilter", "The filter could not be set up: Object not in a post processing group.")); + qApp->translate( + "setupFilter", + "The filter could not be set up: Object not in a post processing group.")); return; } } @@ -1861,7 +1864,8 @@ void setupFilter(Gui::Command* cmd, std::string Name) // add it as subobject to the pipeline cmd->doCommand(Gui::Command::Doc, "App.ActiveDocument.%s.addObject(App.ActiveDocument.%s)", - pipeline->getNameInDocument(), FeatName.c_str()); + pipeline->getNameInDocument(), + FeatName.c_str()); // set display to assure the user sees the new object cmd->doCommand(Gui::Command::Doc, @@ -1878,7 +1882,7 @@ void setupFilter(Gui::Command* cmd, std::string Name) auto selObjectView = static_cast( Gui::Application::Instance->getViewProvider(selObject)); - //TODO: FIX + // TODO: FIX /*cmd->doCommand(Gui::Command::Doc, "App.activeDocument().ActiveObject.ViewObject.Field = \"%s\"", selObjectView->Field.getValueAsString()); @@ -2026,7 +2030,7 @@ bool CmdFemPostClipFilter::isActive() return false; } // only activate if a post object is selected - for (auto obj : selection ) { + for (auto obj : selection) { if (obj.pObject->isDerivedFrom()) { return true; } @@ -2063,7 +2067,7 @@ bool CmdFemPostCutFilter::isActive() return false; } // only activate if a post object is selected - for (auto obj : selection ) { + for (auto obj : selection) { if (obj.pObject->isDerivedFrom()) { return true; } @@ -2100,7 +2104,7 @@ bool CmdFemPostDataAlongLineFilter::isActive() return false; } // only activate if a post object is selected - for (auto obj : selection ) { + for (auto obj : selection) { if (obj.pObject->isDerivedFrom()) { return true; } @@ -2138,7 +2142,7 @@ bool CmdFemPostDataAtPointFilter::isActive() return false; } // only activate if a post object is selected - for (auto obj : selection ) { + for (auto obj : selection) { if (obj.pObject->isDerivedFrom()) { return true; } @@ -2251,7 +2255,7 @@ bool CmdFemPostScalarClipFilter::isActive() return false; } // only activate if a post object is selected - for (auto obj : selection ) { + for (auto obj : selection) { if (obj.pObject->isDerivedFrom()) { return true; } @@ -2288,7 +2292,7 @@ bool CmdFemPostWarpVectorFilter::isActive() return false; } // only activate if a post object is selected - for (auto obj : selection ) { + for (auto obj : selection) { if (obj.pObject->isDerivedFrom()) { return true; } @@ -2325,7 +2329,7 @@ bool CmdFemPostContoursFilter::isActive() return false; } // only activate if a post object is selected - for (auto obj : selection ) { + for (auto obj : selection) { if (obj.pObject->isDerivedFrom()) { return true; } @@ -2397,7 +2401,8 @@ void CmdFemPostFunctions::activated(int iMsg) "App.activeDocument().addObject('Fem::FemPost%sFunction','%s')", name.c_str(), FeatName.c_str()); - doCommand(Doc, "App.ActiveDocument.%s.addObject(App.ActiveDocument.%s)", + doCommand(Doc, + "App.ActiveDocument.%s.addObject(App.ActiveDocument.%s)", provider->getNameInDocument(), FeatName.c_str()); @@ -2723,7 +2728,7 @@ bool CmdFemPostBranchFilter::isActive() return false; } // only activate if a post object is selected - for (auto obj : selection ) { + for (auto obj : selection) { if (obj.pObject->isDerivedFrom()) { return true; } diff --git a/src/Mod/Fem/Gui/ViewProviderFemPostBranchFilter.cpp b/src/Mod/Fem/Gui/ViewProviderFemPostBranchFilter.cpp index 1d1c6787e0..5faa50b58d 100644 --- a/src/Mod/Fem/Gui/ViewProviderFemPostBranchFilter.cpp +++ b/src/Mod/Fem/Gui/ViewProviderFemPostBranchFilter.cpp @@ -30,18 +30,18 @@ using namespace FemGui; -PROPERTY_SOURCE_WITH_EXTENSIONS(FemGui::ViewProviderFemPostBranchFilter, FemGui::ViewProviderFemPostObject) +PROPERTY_SOURCE_WITH_EXTENSIONS(FemGui::ViewProviderFemPostBranchFilter, + FemGui::ViewProviderFemPostObject) -ViewProviderFemPostBranchFilter::ViewProviderFemPostBranchFilter() : Gui::ViewProviderGroupExtension() +ViewProviderFemPostBranchFilter::ViewProviderFemPostBranchFilter() + : Gui::ViewProviderGroupExtension() { Gui::ViewProviderGroupExtension::initExtension(this); sPixmap = "FEM_PostBranchFilter"; } ViewProviderFemPostBranchFilter::~ViewProviderFemPostBranchFilter() -{ - -} +{} void ViewProviderFemPostBranchFilter::setupTaskDialog(TaskDlgPost* dlg) { @@ -52,11 +52,14 @@ void ViewProviderFemPostBranchFilter::setupTaskDialog(TaskDlgPost* dlg) FemGui::ViewProviderFemPostObject::setupTaskDialog(dlg); } -bool ViewProviderFemPostBranchFilter::acceptReorderingObjects() const { +bool ViewProviderFemPostBranchFilter::acceptReorderingObjects() const +{ return true; } -bool ViewProviderFemPostBranchFilter::canDragObjectToTarget(App::DocumentObject*, App::DocumentObject* target) const { +bool ViewProviderFemPostBranchFilter::canDragObjectToTarget(App::DocumentObject*, + App::DocumentObject* target) const +{ // allow drag only to other post groups if (target) { diff --git a/src/Mod/Fem/Gui/ViewProviderFemPostBranchFilter.h b/src/Mod/Fem/Gui/ViewProviderFemPostBranchFilter.h index 30cd3a0638..6c96e954e9 100644 --- a/src/Mod/Fem/Gui/ViewProviderFemPostBranchFilter.h +++ b/src/Mod/Fem/Gui/ViewProviderFemPostBranchFilter.h @@ -38,7 +38,8 @@ namespace FemGui class TaskDlgPost; -class FemGuiExport ViewProviderFemPostBranchFilter: public ViewProviderFemPostObject, public Gui::ViewProviderGroupExtension +class FemGuiExport ViewProviderFemPostBranchFilter: public ViewProviderFemPostObject, + public Gui::ViewProviderGroupExtension { PROPERTY_HEADER_WITH_EXTENSIONS(FemGui::ViewProviderFemPostBranchFilter); @@ -51,15 +52,15 @@ protected: // change default group drag/drop behaviour sligthly bool acceptReorderingObjects() const override; - bool canDragObjectToTarget(App::DocumentObject* obj, App::DocumentObject* target) const override; + bool canDragObjectToTarget(App::DocumentObject* obj, + App::DocumentObject* target) const override; // override, to not show/hide children as the parent is shown/hidden like normal groups void extensionHide() override {}; void extensionShow() override {}; - }; -} +} // namespace FemGui #endif // FEM_VIEWPROVIDERFEMPOSTBRANCHFILTER_H diff --git a/src/Mod/Fem/Gui/ViewProviderFemPostFunction.cpp b/src/Mod/Fem/Gui/ViewProviderFemPostFunction.cpp index dd827fd215..be2daae11e 100644 --- a/src/Mod/Fem/Gui/ViewProviderFemPostFunction.cpp +++ b/src/Mod/Fem/Gui/ViewProviderFemPostFunction.cpp @@ -129,9 +129,8 @@ bool ViewProviderFemPostFunctionProvider::onDelete(const std::vectorgetDocument(), - "functions list"); - + this->getDocument(), + "functions list"); } bool ViewProviderFemPostFunctionProvider::canDelete(App::DocumentObject* obj) const diff --git a/src/Mod/Fem/Gui/ViewProviderFemPostObject.cpp b/src/Mod/Fem/Gui/ViewProviderFemPostObject.cpp index 5e5c620d16..ef40748888 100644 --- a/src/Mod/Fem/Gui/ViewProviderFemPostObject.cpp +++ b/src/Mod/Fem/Gui/ViewProviderFemPostObject.cpp @@ -1072,7 +1072,7 @@ bool ViewProviderFemPostObject::onDelete(const std::vector&) }; // delete all subelements - for(auto obj : objs) { + for (auto obj : objs) { getObject()->getDocument()->removeObject(obj->getNameInDocument()); } return true; diff --git a/src/Mod/Fem/Gui/ViewProviderFemPostPipeline.cpp b/src/Mod/Fem/Gui/ViewProviderFemPostPipeline.cpp index daa8bb4bc2..15fc8c01c0 100644 --- a/src/Mod/Fem/Gui/ViewProviderFemPostPipeline.cpp +++ b/src/Mod/Fem/Gui/ViewProviderFemPostPipeline.cpp @@ -58,8 +58,7 @@ void ViewProviderFemPostPipeline::updateData(const App::Property* prop) FemGui::ViewProviderFemPostObject::updateData(prop); Fem::FemPostPipeline* pipeline = getObject(); - if ((prop == &pipeline->Data) || - (prop == &pipeline->Group)) { + if ((prop == &pipeline->Data) || (prop == &pipeline->Group)) { updateFunctionSize(); } @@ -226,11 +225,14 @@ void ViewProviderFemPostPipeline::setupTaskDialog(TaskDlgPost* dlg) } -bool ViewProviderFemPostPipeline::acceptReorderingObjects() const { +bool ViewProviderFemPostPipeline::acceptReorderingObjects() const +{ return true; } -bool ViewProviderFemPostPipeline::canDragObjectToTarget(App::DocumentObject*, App::DocumentObject* target) const { +bool ViewProviderFemPostPipeline::canDragObjectToTarget(App::DocumentObject*, + App::DocumentObject* target) const +{ // allow drag only to other post groups if (target) { diff --git a/src/Mod/Fem/Gui/ViewProviderFemPostPipeline.h b/src/Mod/Fem/Gui/ViewProviderFemPostPipeline.h index f126df276c..5096df9d6a 100644 --- a/src/Mod/Fem/Gui/ViewProviderFemPostPipeline.h +++ b/src/Mod/Fem/Gui/ViewProviderFemPostPipeline.h @@ -33,7 +33,8 @@ namespace FemGui { -class FemGuiExport ViewProviderFemPostPipeline: public ViewProviderFemPostObject, public Gui::ViewProviderGroupExtension +class FemGuiExport ViewProviderFemPostPipeline: public ViewProviderFemPostObject, + public Gui::ViewProviderGroupExtension { PROPERTY_HEADER_WITH_EXTENSIONS(FemGui::ViewProviderFemPostPipeline); @@ -57,7 +58,8 @@ protected: // change default group drag/drop behaviour sligthly bool acceptReorderingObjects() const override; - bool canDragObjectToTarget(App::DocumentObject* obj, App::DocumentObject* target) const override; + bool canDragObjectToTarget(App::DocumentObject* obj, + App::DocumentObject* target) const override; // override, to not show/hide children as the parent is shown/hidden like normal groups void extensionHide() override {}; diff --git a/src/Mod/Fem/ObjectsFem.py b/src/Mod/Fem/ObjectsFem.py index def651b2ba..b8893e5d20 100644 --- a/src/Mod/Fem/ObjectsFem.py +++ b/src/Mod/Fem/ObjectsFem.py @@ -646,7 +646,6 @@ def makePostVtkResult(doc, result_data, name="VtkResult"): needed for a multistep result: [results_list, value_list, unit, description] """ - Pipeline_Name = "Pipeline_" + name obj = doc.addObject("Fem::FemPostPipeline", Pipeline_Name) obj.load(*result_data) diff --git a/src/Mod/Fem/feminout/importCcxFrdResults.py b/src/Mod/Fem/feminout/importCcxFrdResults.py index 26585ef43c..79d88ec032 100644 --- a/src/Mod/Fem/feminout/importCcxFrdResults.py +++ b/src/Mod/Fem/feminout/importCcxFrdResults.py @@ -62,7 +62,6 @@ def setupPipeline(doc, analysis, results_name, result_data): import ObjectsFem from . import importToolsFem - # create a results pipeline if not already existing pipeline_name = "Pipeline_" + results_name pipeline_obj = doc.getObject(pipeline_name) @@ -223,7 +222,6 @@ def importFrd(filename, analysis=None, result_name_prefix="", result_analysis_ty multistep_value.append(step_time) multistep_result.append(res_obj) - # we have collected all result objects, lets create the multistep result pipeline if number_of_increments > 1: # figure out type and unit @@ -244,8 +242,12 @@ def importFrd(filename, analysis=None, result_name_prefix="", result_analysis_ty unit = FreeCAD.Units.Unit() description = "Unknown" - setupPipeline(doc, analysis, results_name, [multistep_result, multistep_value, unit, description]) - + setupPipeline( + doc, + analysis, + results_name, + [multistep_result, multistep_value, unit, description], + ) elif result_analysis_type == "check": results_name = f"{result_name_prefix}Check" diff --git a/src/Mod/Fem/femsolver/elmer/tasks.py b/src/Mod/Fem/femsolver/elmer/tasks.py index 3df40cc80a..0f947a6ab2 100644 --- a/src/Mod/Fem/femsolver/elmer/tasks.py +++ b/src/Mod/Fem/femsolver/elmer/tasks.py @@ -309,7 +309,6 @@ class Results(run.Results): # but not the shape and bar coloring self.solver.ElmerResult.ViewObject.updateColorBars() - def _getResultFile(self): postPath = None # elmer post file path changed with version x.x