diff --git a/src/App/PropertyStandard.cpp b/src/App/PropertyStandard.cpp index 53f4e5bbd..f777c8d2b 100644 --- a/src/App/PropertyStandard.cpp +++ b/src/App/PropertyStandard.cpp @@ -719,6 +719,136 @@ unsigned int PropertyIntegerList::getMemSize (void) const return static_cast(_lValueList.size() * sizeof(long)); } + + + +//************************************************************************** +//************************************************************************** +// PropertyIntegerSet +//++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++ + +TYPESYSTEM_SOURCE(App::PropertyIntegerSet , App::Property); + +//************************************************************************** +// Construction/Destruction + + +PropertyIntegerSet::PropertyIntegerSet() +{ + +} + +PropertyIntegerSet::~PropertyIntegerSet() +{ + +} + + +//************************************************************************** +// Base class implementer + +void PropertyIntegerSet::setValue(long lValue) +{ + aboutToSetValue(); + _lValueSet.clear(); + _lValueSet.insert(lValue); + hasSetValue(); +} + +void PropertyIntegerSet::setValues(const std::set& values) +{ + aboutToSetValue(); + _lValueSet = values; + hasSetValue(); +} + +PyObject *PropertyIntegerSet::getPyObject(void) +{ + PyObject* set = PySet_New(NULL); + for(std::set::const_iterator it=_lValueSet.begin();it!=_lValueSet.end();++it) + PySet_Add(set,PyInt_FromLong(*it)); + return set; +} + +void PropertyIntegerSet::setPyObject(PyObject *value) +{ + if (PySequence_Check(value)) { + + Py_ssize_t nSize = PySequence_Length(value); + std::set values; + + for (Py_ssize_t i=0; iob_type->tp_name; + throw Py::TypeError(error); + } + values.insert(PyInt_AsLong(item)); + } + + setValues(values); + } + else if (PyInt_Check(value)) { + setValue(PyInt_AsLong(value)); + } + else { + std::string error = std::string("type must be int or list of int, not "); + error += value->ob_type->tp_name; + throw Py::TypeError(error); + } +} + +void PropertyIntegerSet::Save (Base::Writer &writer) const +{ + writer.Stream() << writer.ind() << "" << endl; + writer.incInd(); + for(std::set::const_iterator it=_lValueSet.begin();it!=_lValueSet.end();++it) + writer.Stream() << writer.ind() << "" << endl; ; + writer.decInd(); + writer.Stream() << writer.ind() << "" << endl ; +} + +void PropertyIntegerSet::Restore(Base::XMLReader &reader) +{ + // read my Element + reader.readElement("IntegerSet"); + // get the value of my Attribute + int count = reader.getAttributeAsInteger("count"); + + std::set values; + for(int i = 0; i < count; i++) { + reader.readElement("I"); + values.insert(reader.getAttributeAsInteger("v")); + } + + reader.readEndElement("IntegerList"); + + //assignment + setValues(values); +} + +Property *PropertyIntegerSet::Copy(void) const +{ + PropertyIntegerSet *p= new PropertyIntegerSet(); + p->_lValueSet = _lValueSet; + return p; +} + +void PropertyIntegerSet::Paste(const Property &from) +{ + aboutToSetValue(); + _lValueSet = dynamic_cast(from)._lValueSet; + hasSetValue(); +} + +unsigned int PropertyIntegerSet::getMemSize (void) const +{ + return static_cast(_lValueSet.size() * sizeof(long)); +} + + + //************************************************************************** //************************************************************************** // PropertyFloat diff --git a/src/App/PropertyStandard.h b/src/App/PropertyStandard.h index 9f6d07beb..e611dd070 100644 --- a/src/App/PropertyStandard.h +++ b/src/App/PropertyStandard.h @@ -298,6 +298,52 @@ private: std::vector _lValueList; }; +/** Integer list properties + * + */ +class AppExport PropertyIntegerSet: public Property +{ + TYPESYSTEM_HEADER(); + +public: + /** + + * A constructor. + * A more elaborate description of the constructor. + */ + PropertyIntegerSet(); + + /** + * A destructor. + * A more elaborate description of the destructor. + */ + ~PropertyIntegerSet(); + + /** Sets the property + */ + void setValue(long); + void setValue(void){;} + + void addValue (long value){_lValueSet.insert(value);} + void setValues (const std::set& values); + + const std::set &getValues(void) const{return _lValueSet;} + + virtual PyObject *getPyObject(void); + virtual void setPyObject(PyObject *); + + virtual void Save (Base::Writer &writer) const; + virtual void Restore(Base::XMLReader &reader); + + virtual Property *Copy(void) const; + virtual void Paste(const Property &from); + virtual unsigned int getMemSize (void) const; + +private: + std::set _lValueSet; +}; + + /** implements a key/value list as property * The key ought to be ASCII the Value should be treated as UTF8 to be save. */ diff --git a/src/Mod/Fem/App/CMakeLists.txt b/src/Mod/Fem/App/CMakeLists.txt index b457cf385..5dd69680b 100755 --- a/src/Mod/Fem/App/CMakeLists.txt +++ b/src/Mod/Fem/App/CMakeLists.txt @@ -50,6 +50,16 @@ SET(Mod_SRCS SET(Fem_SRCS FemMeshObject.cpp FemMeshObject.h + FemSetObject.cpp + FemSetObject.h + FemSetNodesObject.cpp + FemSetNodesObject.h + FemSetElementsObject.cpp + FemSetElementsObject.h + FemSetFacesObject.cpp + FemSetFacesObject.h + FemSetGeometryObject.cpp + FemSetGeometryObject.h FemMesh.cpp FemMesh.h FemMeshProperty.cpp diff --git a/src/Mod/Fem/App/FemSetElementsObject.cpp b/src/Mod/Fem/App/FemSetElementsObject.cpp new file mode 100644 index 000000000..c0bcb5d2e --- /dev/null +++ b/src/Mod/Fem/App/FemSetElementsObject.cpp @@ -0,0 +1,59 @@ +/*************************************************************************** + * Copyright (c) 2013 Jürgen Riegel (FreeCAD@juergen-riegel.net) * + * * + * This file is part of the FreeCAD CAx development system. * + * * + * This library is free software; you can redistribute it and/or * + * modify it under the terms of the GNU Library General Public * + * License as published by the Free Software Foundation; either * + * version 2 of the License, or (at your option) any later version. * + * * + * This library is distributed in the hope that it will be useful, * + * but WITHOUT ANY WARRANTY; without even the implied warranty of * + * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the * + * GNU Library General Public License for more details. * + * * + * You should have received a copy of the GNU Library General Public * + * License along with this library; see the file COPYING.LIB. If not, * + * write to the Free Software Foundation, Inc., 59 Temple Place, * + * Suite 330, Boston, MA 02111-1307, USA * + * * + ***************************************************************************/ + + +#include "PreCompiled.h" + +#ifndef _PreComp_ +#endif + +#include "FemSetElementsObject.h" +#include + +using namespace Fem; +using namespace App; + +PROPERTY_SOURCE(Fem::FemSetElementsObject, Fem::FemSetObject) + + +FemSetElementsObject::FemSetElementsObject() +{ +} + +FemSetElementsObject::~FemSetElementsObject() +{ +} + +short FemSetElementsObject::mustExecute(void) const +{ + return 0; +} + +PyObject *FemSetElementsObject::getPyObject() +{ + if (PythonObject.is(Py::_None())){ + // ref counter is set to 1 + PythonObject = Py::Object(new DocumentObjectPy(this),true); + } + return Py::new_reference_to(PythonObject); +} + diff --git a/src/Mod/Fem/App/FemSetElementsObject.h b/src/Mod/Fem/App/FemSetElementsObject.h new file mode 100644 index 000000000..c6e375acc --- /dev/null +++ b/src/Mod/Fem/App/FemSetElementsObject.h @@ -0,0 +1,59 @@ +/*************************************************************************** + * Copyright (c) 2013 Jürgen Riegel (FreeCAD@juergen-riegel.net) * + * * + * This file is part of the FreeCAD CAx development system. * + * * + * This library is free software; you can redistribute it and/or * + * modify it under the terms of the GNU Library General Public * + * License as published by the Free Software Foundation; either * + * version 2 of the License, or (at your option) any later version. * + * * + * This library is distributed in the hope that it will be useful, * + * but WITHOUT ANY WARRANTY; without even the implied warranty of * + * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the * + * GNU Library General Public License for more details. * + * * + * You should have received a copy of the GNU Library General Public * + * License along with this library; see the file COPYING.LIB. If not, * + * write to the Free Software Foundation, Inc., 59 Temple Place, * + * Suite 330, Boston, MA 02111-1307, USA * + * * + ***************************************************************************/ + + +#ifndef Fem_FemSetElementsObjec_H +#define Fem_FemSetElementsObjec_H + +#include +#include +#include "FemSetObject.h" + +namespace Fem +{ + +class AppFemExport FemSetElementsObject : public FemSetObject +{ + PROPERTY_HEADER(Fem::FemSetElementsObject); + +public: + /// Constructor + FemSetElementsObject(void); + virtual ~FemSetElementsObject(); + + /// returns the type name of the ViewProvider + //virtual const char* getViewProviderName(void) const { + // return "FemGui::ViewProviderFemSet"; + //} + virtual App::DocumentObjectExecReturn *execute(void) { + return App::DocumentObject::StdReturn; + } + virtual short mustExecute(void) const; + virtual PyObject *getPyObject(void); + + +}; + +} //namespace Fem + + +#endif // Fem_FemSetElementsObjec_H diff --git a/src/Mod/Fem/App/FemSetFacesObject.cpp b/src/Mod/Fem/App/FemSetFacesObject.cpp new file mode 100644 index 000000000..5d41c7a46 --- /dev/null +++ b/src/Mod/Fem/App/FemSetFacesObject.cpp @@ -0,0 +1,60 @@ +/*************************************************************************** + * Copyright (c) 2013 Jürgen Riegel (FreeCAD@juergen-riegel.net) * + * * + * This file is part of the FreeCAD CAx development system. * + * * + * This library is free software; you can redistribute it and/or * + * modify it under the terms of the GNU Library General Public * + * License as published by the Free Software Foundation; either * + * version 2 of the License, or (at your option) any later version. * + * * + * This library is distributed in the hope that it will be useful, * + * but WITHOUT ANY WARRANTY; without even the implied warranty of * + * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the * + * GNU Library General Public License for more details. * + * * + * You should have received a copy of the GNU Library General Public * + * License along with this library; see the file COPYING.LIB. If not, * + * write to the Free Software Foundation, Inc., 59 Temple Place, * + * Suite 330, Boston, MA 02111-1307, USA * + * * + ***************************************************************************/ + + +#include "PreCompiled.h" + +#ifndef _PreComp_ +#endif + +#include "FemSetFacesObject.h" +#include +#include + +using namespace Fem; +using namespace App; + +PROPERTY_SOURCE(Fem::FemSetFacesObject, Fem::FemSetObject) + + +FemSetFacesObject::FemSetFacesObject() +{ +} + +FemSetFacesObject::~FemSetFacesObject() +{ +} + +short FemSetFacesObject::mustExecute(void) const +{ + return 0; +} + +PyObject *FemSetFacesObject::getPyObject() +{ + if (PythonObject.is(Py::_None())){ + // ref counter is set to 1 + PythonObject = Py::Object(new DocumentObjectPy(this),true); + } + return Py::new_reference_to(PythonObject); +} + diff --git a/src/Mod/Fem/App/FemSetFacesObject.h b/src/Mod/Fem/App/FemSetFacesObject.h new file mode 100644 index 000000000..49a0e6c3e --- /dev/null +++ b/src/Mod/Fem/App/FemSetFacesObject.h @@ -0,0 +1,59 @@ +/*************************************************************************** + * Copyright (c) 2013 Jürgen Riegel (FreeCAD@juergen-riegel.net) * + * * + * This file is part of the FreeCAD CAx development system. * + * * + * This library is free software; you can redistribute it and/or * + * modify it under the terms of the GNU Library General Public * + * License as published by the Free Software Foundation; either * + * version 2 of the License, or (at your option) any later version. * + * * + * This library is distributed in the hope that it will be useful, * + * but WITHOUT ANY WARRANTY; without even the implied warranty of * + * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the * + * GNU Library General Public License for more details. * + * * + * You should have received a copy of the GNU Library General Public * + * License along with this library; see the file COPYING.LIB. If not, * + * write to the Free Software Foundation, Inc., 59 Temple Place, * + * Suite 330, Boston, MA 02111-1307, USA * + * * + ***************************************************************************/ + + +#ifndef Fem_FemSetFacesObject_H +#define Fem_FemSetFacesObject_H + +#include +#include +#include "FemSetObject.h" + +namespace Fem +{ + +class AppFemExport FemSetFacesObject : public FemSetObject +{ + PROPERTY_HEADER(Fem::FemSetFacesObject); + +public: + /// Constructor + FemSetFacesObject(void); + virtual ~FemSetFacesObject(); + + /// returns the type name of the ViewProvider + //virtual const char* getViewProviderName(void) const { + // return "FemGui::ViewProviderFemSet"; + //} + virtual App::DocumentObjectExecReturn *execute(void) { + return App::DocumentObject::StdReturn; + } + virtual short mustExecute(void) const; + virtual PyObject *getPyObject(void); + + +}; + +} //namespace Fem + + +#endif // Fem_FemSetFacesObject_H diff --git a/src/Mod/Fem/App/FemSetGeometryObject.cpp b/src/Mod/Fem/App/FemSetGeometryObject.cpp new file mode 100644 index 000000000..e3bfd14d4 --- /dev/null +++ b/src/Mod/Fem/App/FemSetGeometryObject.cpp @@ -0,0 +1,60 @@ +/*************************************************************************** + * Copyright (c) 2013 Jürgen Riegel (FreeCAD@juergen-riegel.net) * + * * + * This file is part of the FreeCAD CAx development system. * + * * + * This library is free software; you can redistribute it and/or * + * modify it under the terms of the GNU Library General Public * + * License as published by the Free Software Foundation; either * + * version 2 of the License, or (at your option) any later version. * + * * + * This library is distributed in the hope that it will be useful, * + * but WITHOUT ANY WARRANTY; without even the implied warranty of * + * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the * + * GNU Library General Public License for more details. * + * * + * You should have received a copy of the GNU Library General Public * + * License along with this library; see the file COPYING.LIB. If not, * + * write to the Free Software Foundation, Inc., 59 Temple Place, * + * Suite 330, Boston, MA 02111-1307, USA * + * * + ***************************************************************************/ + + +#include "PreCompiled.h" + +#ifndef _PreComp_ +#endif + +#include "FemSetGeometryObject.h" +#include +#include + +using namespace Fem; +using namespace App; + +PROPERTY_SOURCE(Fem::FemSetGeometryObject, Fem::FemSetObject) + + +FemSetGeometryObject::FemSetGeometryObject() +{ +} + +FemSetGeometryObject::~FemSetGeometryObject() +{ +} + +short FemSetGeometryObject::mustExecute(void) const +{ + return 0; +} + +PyObject *FemSetGeometryObject::getPyObject() +{ + if (PythonObject.is(Py::_None())){ + // ref counter is set to 1 + PythonObject = Py::Object(new DocumentObjectPy(this),true); + } + return Py::new_reference_to(PythonObject); +} + diff --git a/src/Mod/Fem/App/FemSetGeometryObject.h b/src/Mod/Fem/App/FemSetGeometryObject.h new file mode 100644 index 000000000..69344c2d3 --- /dev/null +++ b/src/Mod/Fem/App/FemSetGeometryObject.h @@ -0,0 +1,59 @@ +/*************************************************************************** + * Copyright (c) 2013 Jürgen Riegel (FreeCAD@juergen-riegel.net) * + * * + * This file is part of the FreeCAD CAx development system. * + * * + * This library is free software; you can redistribute it and/or * + * modify it under the terms of the GNU Library General Public * + * License as published by the Free Software Foundation; either * + * version 2 of the License, or (at your option) any later version. * + * * + * This library is distributed in the hope that it will be useful, * + * but WITHOUT ANY WARRANTY; without even the implied warranty of * + * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the * + * GNU Library General Public License for more details. * + * * + * You should have received a copy of the GNU Library General Public * + * License along with this library; see the file COPYING.LIB. If not, * + * write to the Free Software Foundation, Inc., 59 Temple Place, * + * Suite 330, Boston, MA 02111-1307, USA * + * * + ***************************************************************************/ + + +#ifndef Fem_FemSetGeometryObject_H +#define Fem_FemSetGeometryObject_H + +#include +#include +#include "FemSetObject.h" + +namespace Fem +{ + +class AppFemExport FemSetGeometryObject : public FemSetObject +{ + PROPERTY_HEADER(Fem::FemSetGeometryObject); + +public: + /// Constructor + FemSetGeometryObject(void); + virtual ~FemSetGeometryObject(); + + /// returns the type name of the ViewProvider + //virtual const char* getViewProviderName(void) const { + // return "FemGui::ViewProviderFemSet"; + //} + virtual App::DocumentObjectExecReturn *execute(void) { + return App::DocumentObject::StdReturn; + } + virtual short mustExecute(void) const; + virtual PyObject *getPyObject(void); + + +}; + +} //namespace Fem + + +#endif // Fem_FemSetGeometryObject_H diff --git a/src/Mod/Fem/App/FemSetNodesObject.cpp b/src/Mod/Fem/App/FemSetNodesObject.cpp new file mode 100644 index 000000000..eb6ac514d --- /dev/null +++ b/src/Mod/Fem/App/FemSetNodesObject.cpp @@ -0,0 +1,61 @@ +/*************************************************************************** + * Copyright (c) 2013 Jürgen Riegel (FreeCAD@juergen-riegel.net) * + * * + * This file is part of the FreeCAD CAx development system. * + * * + * This library is free software; you can redistribute it and/or * + * modify it under the terms of the GNU Library General Public * + * License as published by the Free Software Foundation; either * + * version 2 of the License, or (at your option) any later version. * + * * + * This library is distributed in the hope that it will be useful, * + * but WITHOUT ANY WARRANTY; without even the implied warranty of * + * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the * + * GNU Library General Public License for more details. * + * * + * You should have received a copy of the GNU Library General Public * + * License along with this library; see the file COPYING.LIB. If not, * + * write to the Free Software Foundation, Inc., 59 Temple Place, * + * Suite 330, Boston, MA 02111-1307, USA * + * * + ***************************************************************************/ + + +#include "PreCompiled.h" + +#ifndef _PreComp_ +#endif + +#include "FemSetNodesObject.h" +#include +#include + +using namespace Fem; +using namespace App; + +PROPERTY_SOURCE(Fem::FemSetNodesObject, Fem::FemSetObject) + + +FemSetNodesObject::FemSetNodesObject() +{ + ADD_PROPERTY_TYPE(Nodes,(), "Node indexes",Prop_None,"Nodes belonging to the NodesSet"); +} + +FemSetNodesObject::~FemSetNodesObject() +{ +} + +short FemSetNodesObject::mustExecute(void) const +{ + return 0; +} + +PyObject *FemSetNodesObject::getPyObject() +{ + if (PythonObject.is(Py::_None())){ + // ref counter is set to 1 + PythonObject = Py::Object(new DocumentObjectPy(this),true); + } + return Py::new_reference_to(PythonObject); +} + diff --git a/src/Mod/Fem/App/FemSetNodesObject.h b/src/Mod/Fem/App/FemSetNodesObject.h new file mode 100644 index 000000000..512bf485a --- /dev/null +++ b/src/Mod/Fem/App/FemSetNodesObject.h @@ -0,0 +1,61 @@ +/*************************************************************************** + * Copyright (c) 2013 Jürgen Riegel (FreeCAD@juergen-riegel.net) * + * * + * This file is part of the FreeCAD CAx development system. * + * * + * This library is free software; you can redistribute it and/or * + * modify it under the terms of the GNU Library General Public * + * License as published by the Free Software Foundation; either * + * version 2 of the License, or (at your option) any later version. * + * * + * This library is distributed in the hope that it will be useful, * + * but WITHOUT ANY WARRANTY; without even the implied warranty of * + * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the * + * GNU Library General Public License for more details. * + * * + * You should have received a copy of the GNU Library General Public * + * License along with this library; see the file COPYING.LIB. If not, * + * write to the Free Software Foundation, Inc., 59 Temple Place, * + * Suite 330, Boston, MA 02111-1307, USA * + * * + ***************************************************************************/ + + +#ifndef Fem_FemSetNodesObject_H +#define Fem_FemSetNodesObject_H + +#include +#include +#include "FemSetObject.h" + +namespace Fem +{ + +class AppFemExport FemSetNodesObject : public FemSetObject +{ + PROPERTY_HEADER(Fem::FemSetNodesObject); + +public: + /// Constructor + FemSetNodesObject(void); + virtual ~FemSetNodesObject(); + + App::PropertyIntegerSet Nodes; + + /// returns the type name of the ViewProvider + //virtual const char* getViewProviderName(void) const { + // return "FemGui::ViewProviderFemSet"; + //} + virtual App::DocumentObjectExecReturn *execute(void) { + return App::DocumentObject::StdReturn; + } + virtual short mustExecute(void) const; + virtual PyObject *getPyObject(void); + + +}; + +} //namespace Fem + + +#endif // Fem_FemSetNodesObject_H diff --git a/src/Mod/Fem/App/FemSetObject.cpp b/src/Mod/Fem/App/FemSetObject.cpp new file mode 100644 index 000000000..e195e0f22 --- /dev/null +++ b/src/Mod/Fem/App/FemSetObject.cpp @@ -0,0 +1,60 @@ +/*************************************************************************** + * Copyright (c) 2013 Jürgen Riegel (FreeCAD@juergen-riegel.net) * + * * + * This file is part of the FreeCAD CAx development system. * + * * + * This library is free software; you can redistribute it and/or * + * modify it under the terms of the GNU Library General Public * + * License as published by the Free Software Foundation; either * + * version 2 of the License, or (at your option) any later version. * + * * + * This library is distributed in the hope that it will be useful, * + * but WITHOUT ANY WARRANTY; without even the implied warranty of * + * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the * + * GNU Library General Public License for more details. * + * * + * You should have received a copy of the GNU Library General Public * + * License along with this library; see the file COPYING.LIB. If not, * + * write to the Free Software Foundation, Inc., 59 Temple Place, * + * Suite 330, Boston, MA 02111-1307, USA * + * * + ***************************************************************************/ + + +#include "PreCompiled.h" + +#ifndef _PreComp_ +#endif + +#include "FemSetObject.h" +#include +#include + +using namespace Fem; +using namespace App; + +PROPERTY_SOURCE(Fem::FemSetObject, App::DocumentObject) + + +FemSetObject::FemSetObject() +{ +} + +FemSetObject::~FemSetObject() +{ +} + +short FemSetObject::mustExecute(void) const +{ + return 0; +} + +PyObject *FemSetObject::getPyObject() +{ + if (PythonObject.is(Py::_None())){ + // ref counter is set to 1 + PythonObject = Py::Object(new DocumentObjectPy(this),true); + } + return Py::new_reference_to(PythonObject); +} + diff --git a/src/Mod/Fem/App/FemSetObject.h b/src/Mod/Fem/App/FemSetObject.h new file mode 100644 index 000000000..2290d61b8 --- /dev/null +++ b/src/Mod/Fem/App/FemSetObject.h @@ -0,0 +1,59 @@ +/*************************************************************************** + * Copyright (c) 2013 Jürgen Riegel (FreeCAD@juergen-riegel.net) * + * * + * This file is part of the FreeCAD CAx development system. * + * * + * This library is free software; you can redistribute it and/or * + * modify it under the terms of the GNU Library General Public * + * License as published by the Free Software Foundation; either * + * version 2 of the License, or (at your option) any later version. * + * * + * This library is distributed in the hope that it will be useful, * + * but WITHOUT ANY WARRANTY; without even the implied warranty of * + * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the * + * GNU Library General Public License for more details. * + * * + * You should have received a copy of the GNU Library General Public * + * License along with this library; see the file COPYING.LIB. If not, * + * write to the Free Software Foundation, Inc., 59 Temple Place, * + * Suite 330, Boston, MA 02111-1307, USA * + * * + ***************************************************************************/ + + +#ifndef Fem_FemSetObject_H +#define Fem_FemSetObject_H + +#include +#include +#include "FemSetObject.h" + +namespace Fem +{ + +class AppFemExport FemSetObject : public App::DocumentObject +{ + PROPERTY_HEADER(Fem::FemSetObject); + +public: + /// Constructor + FemSetObject(void); + virtual ~FemSetObject(); + + /// returns the type name of the ViewProvider + //virtual const char* getViewProviderName(void) const { + // return "FemGui::ViewProviderFemSet"; + //} + virtual App::DocumentObjectExecReturn *execute(void) { + return App::DocumentObject::StdReturn; + } + virtual short mustExecute(void) const; + virtual PyObject *getPyObject(void); + + +}; + +} //namespace Fem + + +#endif // Fem_FemSetObject_H diff --git a/src/Mod/Fem/Gui/Command.cpp b/src/Mod/Fem/Gui/Command.cpp index 61e033fc2..e560981b5 100755 --- a/src/Mod/Fem/Gui/Command.cpp +++ b/src/Mod/Fem/Gui/Command.cpp @@ -72,6 +72,103 @@ bool CmdFemCreateFromShape::isActive(void) } + + + +//DEF_STD_CMD_A(CmdFemDefineNodesSet); +// +// +//void DefineNodesCallback(void * ud, SoEventCallback * n) +//{ +// // show the wait cursor because this could take quite some time +// Gui::WaitCursor wc; +// +// // When this callback function is invoked we must in either case leave the edit mode +// Gui::View3DInventorViewer* view = reinterpret_cast(n->getUserData()); +// view->setEditing(false); +// view->removeEventCallback(SoMouseButtonEvent::getClassTypeId(), clipMeshCallback,ud); +// n->setHandled(); +// +// SbBool clip_inner; +// std::vector clPoly = view->getGLPolygon(&clip_inner); +// if (clPoly.size() < 3) +// return; +// if (clPoly.front() != clPoly.back()) +// clPoly.push_back(clPoly.front()); +// +// std::vector views = view->getViewProvidersOfType(ViewProviderMesh::getClassTypeId()); +// if (!views.empty()) { +// Gui::Application::Instance->activeDocument()->openCommand("Cut"); +// for (std::vector::iterator it = views.begin(); it != views.end(); ++it) { +// ViewProviderMesh* that = static_cast(*it); +// if (that->getEditingMode() > -1) { +// that->finishEditing(); +// that->cutMesh(clPoly, *view, clip_inner); +// } +// } +// +// Gui::Application::Instance->activeDocument()->commitCommand(); +// +// view->render(); +// } +//} +// +// +// +//CmdMeshPolyCut::CmdMeshPolyCut() +// : Command("Mesh_PolyCut") +//{ +// sAppModule = "Mesh"; +// sGroup = QT_TR_NOOP("Mesh"); +// sMenuText = QT_TR_NOOP("Cut mesh"); +// sToolTipText = QT_TR_NOOP("Cuts a mesh with a picked polygon"); +// sWhatsThis = "Mesh_PolyCut"; +// sStatusTip = QT_TR_NOOP("Cuts a mesh with a picked polygon"); +// sPixmap = "mesh_cut"; +//} +// +//void CmdMeshPolyCut::activated(int iMsg) +//{ +// std::vector docObj = Gui::Selection().getObjectsOfType(Mesh::Feature::getClassTypeId()); +// for (std::vector::iterator it = docObj.begin(); it != docObj.end(); ++it) { +// if (it == docObj.begin()) { +// Gui::Document* doc = getActiveGuiDocument(); +// Gui::MDIView* view = doc->getActiveView(); +// if (view->getTypeId().isDerivedFrom(Gui::View3DInventor::getClassTypeId())) { +// Gui::View3DInventorViewer* viewer = ((Gui::View3DInventor*)view)->getViewer(); +// viewer->setEditing(true); +// viewer->startSelection(Gui::View3DInventorViewer::Clip); +// viewer->addEventCallback(SoMouseButtonEvent::getClassTypeId(), MeshGui::ViewProviderMeshFaceSet::clipMeshCallback); +// } +// else { +// return; +// } +// } +// +// Gui::ViewProvider* pVP = getActiveGuiDocument()->getViewProvider(*it); +// if (pVP->isVisible()) +// pVP->startEditing(); +// } +//} +// +//bool CmdMeshPolyCut::isActive(void) +//{ +// // Check for the selected mesh feature (all Mesh types) +// if (getSelection().countObjectsOfType(Mesh::Feature::getClassTypeId()) == 0) +// return false; +// +// Gui::MDIView* view = Gui::getMainWindow()->activeWindow(); +// if (view && view->isDerivedFrom(Gui::View3DInventor::getClassTypeId())) { +// Gui::View3DInventorViewer* viewer = static_cast(view)->getViewer(); +// return !viewer->isEditing(); +// } +// +// return false; +//} + +//-------------------------------------------------------------------------------------- + + void CreateFemCommands(void) { Gui::CommandManager &rcCmdMgr = Gui::Application::Instance->commandManager(); diff --git a/src/Mod/Fem/Gui/ViewProviderFemMesh.cpp b/src/Mod/Fem/Gui/ViewProviderFemMesh.cpp index 95cc2c463..ee89a9e45 100755 --- a/src/Mod/Fem/Gui/ViewProviderFemMesh.cpp +++ b/src/Mod/Fem/Gui/ViewProviderFemMesh.cpp @@ -170,7 +170,7 @@ ViewProviderFemMesh::ViewProviderFemMesh() ADD_PROPERTY(PointColor,(mat.diffuseColor)); ADD_PROPERTY(PointSize,(2.0f)); PointSize.setConstraints(&floatRange); - ADD_PROPERTY(LineWidth,(4.0f)); + ADD_PROPERTY(LineWidth,(2.0f)); LineWidth.setConstraints(&floatRange); ADD_PROPERTY(BackfaceCulling,(true));