diff --git a/src/Mod/Fem/App/FemMesh.cpp b/src/Mod/Fem/App/FemMesh.cpp index 0a236a5425..753c7db80b 100644 --- a/src/Mod/Fem/App/FemMesh.cpp +++ b/src/Mod/Fem/App/FemMesh.cpp @@ -1171,11 +1171,8 @@ void FemMesh::read(const char *FileName) } } -void FemMesh::writeABAQUS(const std::string &Filename) const +void FemMesh::writeABAQUS(const std::string &Filename, int elemParam, bool groupParam) const { - ParameterGrp::handle hGrp = App::GetApplication().GetParameterGroupByPath("User parameter:BaseApp/Preferences/Mod/Fem/Abaqus"); - int elemParam = hGrp->GetInt("AbaqusElementChoice", 1); - bool groupParam = hGrp->GetBool("AbaqusWriteGroups", false); /* * elemParam: * 0 = all elements @@ -1585,8 +1582,12 @@ void FemMesh::write(const char *FileName) const myMesh->ExportDAT(File.filePath().c_str()); } else if (File.hasExtension("inp") ) { + // get Abaqus inp prefs + ParameterGrp::handle hGrp = App::GetApplication().GetParameterGroupByPath("User parameter:BaseApp/Preferences/Mod/Fem/Abaqus"); + int elemParam = hGrp->GetInt("AbaqusElementChoice", 1); + bool groupParam = hGrp->GetBool("AbaqusWriteGroups", false); // write ABAQUS Output - writeABAQUS(File.filePath()); + writeABAQUS(File.filePath(), elemParam, groupParam); } #ifdef FC_USE_VTK else if (File.hasExtension("vtk") || File.hasExtension("vtu") ) { diff --git a/src/Mod/Fem/App/FemMesh.h b/src/Mod/Fem/App/FemMesh.h index 29de41fee2..dfe2a71c13 100644 --- a/src/Mod/Fem/App/FemMesh.h +++ b/src/Mod/Fem/App/FemMesh.h @@ -148,7 +148,7 @@ public: /// import from files void read(const char *FileName); void write(const char *FileName) const; - void writeABAQUS(const std::string &Filename) const; + void writeABAQUS(const std::string &Filename, int elemParam, bool groupParam) const; private: void copyMeshData(const FemMesh&); diff --git a/src/Mod/Fem/App/FemMeshPy.xml b/src/Mod/Fem/App/FemMeshPy.xml index 9f71374cb4..92ffe42d20 100755 --- a/src/Mod/Fem/App/FemMeshPy.xml +++ b/src/Mod/Fem/App/FemMeshPy.xml @@ -71,7 +71,11 @@ - write out as ABAQUS. + write out as ABAQUS inp + writeABAQUS(file, int elemParam, bool groupParam) + elemParam: 0 = all elements, 1 = highest elements only, 2 = FEM elements only (only edges not belonging to faces and faces not belonging to volumes) + groupParam: true = write group data, false = do not write group data + diff --git a/src/Mod/Fem/App/FemMeshPyImp.cpp b/src/Mod/Fem/App/FemMeshPyImp.cpp index 12d64f06f3..695ed53638 100644 --- a/src/Mod/Fem/App/FemMeshPyImp.cpp +++ b/src/Mod/Fem/App/FemMeshPyImp.cpp @@ -640,13 +640,16 @@ PyObject* FemMeshPy::write(PyObject *args) PyObject* FemMeshPy::writeABAQUS(PyObject *args) { char* Name; - if (!PyArg_ParseTuple(args, "et","utf-8",&Name)) + int elemParam; + PyObject* groupParam; + if (!PyArg_ParseTuple(args, "etiO!","utf-8",&Name,&elemParam,&PyBool_Type,&groupParam)) return 0; std::string EncodedName = std::string(Name); PyMem_Free(Name); + bool grpParam = PyObject_IsTrue(groupParam) ? true : false; try { - getFemMeshPtr()->writeABAQUS(EncodedName.c_str()); + getFemMeshPtr()->writeABAQUS(EncodedName.c_str(), elemParam, grpParam); } catch (const std::exception& e) { PyErr_SetString(Base::BaseExceptionFreeCADError, e.what());