Add PropertyIntegerSet and some classes to FEM
This commit is contained in:
parent
af67612d7f
commit
5f43ef1a2a
|
@ -719,6 +719,136 @@ unsigned int PropertyIntegerList::getMemSize (void) const
|
|||
return static_cast<unsigned int>(_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<long>& values)
|
||||
{
|
||||
aboutToSetValue();
|
||||
_lValueSet = values;
|
||||
hasSetValue();
|
||||
}
|
||||
|
||||
PyObject *PropertyIntegerSet::getPyObject(void)
|
||||
{
|
||||
PyObject* set = PySet_New(NULL);
|
||||
for(std::set<long>::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<long> values;
|
||||
|
||||
for (Py_ssize_t i=0; i<nSize;++i) {
|
||||
PyObject* item = PySequence_GetItem(value, i);
|
||||
if (!PyInt_Check(item)) {
|
||||
std::string error = std::string("type in list must be int, not ");
|
||||
error += item->ob_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() << "<IntegerSet count=\"" << _lValueSet.size() <<"\">" << endl;
|
||||
writer.incInd();
|
||||
for(std::set<long>::const_iterator it=_lValueSet.begin();it!=_lValueSet.end();++it)
|
||||
writer.Stream() << writer.ind() << "<I v=\"" << *it <<"\"/>" << endl; ;
|
||||
writer.decInd();
|
||||
writer.Stream() << writer.ind() << "</IntegerSet>" << 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<long> 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<const PropertyIntegerSet&>(from)._lValueSet;
|
||||
hasSetValue();
|
||||
}
|
||||
|
||||
unsigned int PropertyIntegerSet::getMemSize (void) const
|
||||
{
|
||||
return static_cast<unsigned int>(_lValueSet.size() * sizeof(long));
|
||||
}
|
||||
|
||||
|
||||
|
||||
//**************************************************************************
|
||||
//**************************************************************************
|
||||
// PropertyFloat
|
||||
|
|
|
@ -298,6 +298,52 @@ private:
|
|||
std::vector<long> _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<long>& values);
|
||||
|
||||
const std::set<long> &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<long> _lValueSet;
|
||||
};
|
||||
|
||||
|
||||
/** implements a key/value list as property
|
||||
* The key ought to be ASCII the Value should be treated as UTF8 to be save.
|
||||
*/
|
||||
|
|
|
@ -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
|
||||
|
|
59
src/Mod/Fem/App/FemSetElementsObject.cpp
Normal file
59
src/Mod/Fem/App/FemSetElementsObject.cpp
Normal file
|
@ -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 <App/DocumentObjectPy.h>
|
||||
|
||||
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);
|
||||
}
|
||||
|
59
src/Mod/Fem/App/FemSetElementsObject.h
Normal file
59
src/Mod/Fem/App/FemSetElementsObject.h
Normal file
|
@ -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 <App/DocumentObject.h>
|
||||
#include <App/PropertyStandard.h>
|
||||
#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
|
60
src/Mod/Fem/App/FemSetFacesObject.cpp
Normal file
60
src/Mod/Fem/App/FemSetFacesObject.cpp
Normal file
|
@ -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 <App/DocumentObjectPy.h>
|
||||
#include <Base/Placement.h>
|
||||
|
||||
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);
|
||||
}
|
||||
|
59
src/Mod/Fem/App/FemSetFacesObject.h
Normal file
59
src/Mod/Fem/App/FemSetFacesObject.h
Normal file
|
@ -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 <App/DocumentObject.h>
|
||||
#include <App/PropertyStandard.h>
|
||||
#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
|
60
src/Mod/Fem/App/FemSetGeometryObject.cpp
Normal file
60
src/Mod/Fem/App/FemSetGeometryObject.cpp
Normal file
|
@ -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 <App/DocumentObjectPy.h>
|
||||
#include <Base/Placement.h>
|
||||
|
||||
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);
|
||||
}
|
||||
|
59
src/Mod/Fem/App/FemSetGeometryObject.h
Normal file
59
src/Mod/Fem/App/FemSetGeometryObject.h
Normal file
|
@ -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 <App/DocumentObject.h>
|
||||
#include <App/PropertyStandard.h>
|
||||
#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
|
61
src/Mod/Fem/App/FemSetNodesObject.cpp
Normal file
61
src/Mod/Fem/App/FemSetNodesObject.cpp
Normal file
|
@ -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 <App/DocumentObjectPy.h>
|
||||
#include <Base/Placement.h>
|
||||
|
||||
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);
|
||||
}
|
||||
|
61
src/Mod/Fem/App/FemSetNodesObject.h
Normal file
61
src/Mod/Fem/App/FemSetNodesObject.h
Normal file
|
@ -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 <App/DocumentObject.h>
|
||||
#include <App/PropertyStandard.h>
|
||||
#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
|
60
src/Mod/Fem/App/FemSetObject.cpp
Normal file
60
src/Mod/Fem/App/FemSetObject.cpp
Normal file
|
@ -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 <App/DocumentObjectPy.h>
|
||||
#include <Base/Placement.h>
|
||||
|
||||
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);
|
||||
}
|
||||
|
59
src/Mod/Fem/App/FemSetObject.h
Normal file
59
src/Mod/Fem/App/FemSetObject.h
Normal file
|
@ -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 <App/DocumentObject.h>
|
||||
#include <App/PropertyStandard.h>
|
||||
#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
|
|
@ -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<Gui::View3DInventorViewer*>(n->getUserData());
|
||||
// view->setEditing(false);
|
||||
// view->removeEventCallback(SoMouseButtonEvent::getClassTypeId(), clipMeshCallback,ud);
|
||||
// n->setHandled();
|
||||
//
|
||||
// SbBool clip_inner;
|
||||
// std::vector<SbVec2f> clPoly = view->getGLPolygon(&clip_inner);
|
||||
// if (clPoly.size() < 3)
|
||||
// return;
|
||||
// if (clPoly.front() != clPoly.back())
|
||||
// clPoly.push_back(clPoly.front());
|
||||
//
|
||||
// std::vector<Gui::ViewProvider*> views = view->getViewProvidersOfType(ViewProviderMesh::getClassTypeId());
|
||||
// if (!views.empty()) {
|
||||
// Gui::Application::Instance->activeDocument()->openCommand("Cut");
|
||||
// for (std::vector<Gui::ViewProvider*>::iterator it = views.begin(); it != views.end(); ++it) {
|
||||
// ViewProviderMesh* that = static_cast<ViewProviderMesh*>(*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<App::DocumentObject*> docObj = Gui::Selection().getObjectsOfType(Mesh::Feature::getClassTypeId());
|
||||
// for (std::vector<App::DocumentObject*>::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<Gui::View3DInventor*>(view)->getViewer();
|
||||
// return !viewer->isEditing();
|
||||
// }
|
||||
//
|
||||
// return false;
|
||||
//}
|
||||
|
||||
//--------------------------------------------------------------------------------------
|
||||
|
||||
|
||||
void CreateFemCommands(void)
|
||||
{
|
||||
Gui::CommandManager &rcCmdMgr = Gui::Application::Instance->commandManager();
|
||||
|
|
|
@ -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));
|
||||
|
|
Loading…
Reference in New Issue
Block a user