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());