Add ViewProvider and Dialogs for Analysis object and the Netgen mesher object

This commit is contained in:
jriegel 2013-04-06 23:08:23 +02:00
parent 720b4a2807
commit 2818bc4ddf
26 changed files with 1817 additions and 188 deletions

View File

@ -54,6 +54,8 @@ SET(FemBase_SRCS
FemMeshObject.h
FemMeshShapeObject.cpp
FemMeshShapeObject.h
FemMeshShapeNetgenObject.cpp
FemMeshShapeNetgenObject.h
FemAnalysis.cpp
FemAnalysis.h
FemMesh.cpp
@ -102,6 +104,7 @@ SET(Fem_SRCS
${Python_SRCS}
)
FILE( GLOB Driver_Resources Driver/*.py )
add_library(Fem SHARED ${Fem_SRCS})
@ -111,10 +114,12 @@ target_link_libraries(Fem ${Fem_LIBS})
fc_target_copy_resource(Fem
${CMAKE_SOURCE_DIR}/src/Mod/Fem
${CMAKE_BINARY_DIR}/Mod/Fem
Init.py
${Driver_Resources}
Init.py
convert2TetGen.py
FemLib.py)
if(MSVC)
set_target_properties(Fem PROPERTIES SUFFIX ".pyd")
set_target_properties(Fem PROPERTIES DEBUG_OUTPUT_NAME "Fem_d")

View File

@ -0,0 +1,122 @@
/***************************************************************************
* 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 "FemMeshShapeNetgenObject.h"
#include "FemMesh.h"
#include <App/DocumentObjectPy.h>
#include <Base/Placement.h>
#include <Mod/Part/App/PartFeature.h>
#include <SMESH_Gen.hxx>
#include <SMESH_Mesh.hxx>
#include <SMDS_PolyhedralVolumeOfNodes.hxx>
#include <SMDS_VolumeTool.hxx>
#include <NETGENPlugin_SimpleHypothesis_3D.hxx>
#include <NETGENPlugin_Mesher.hxx>
#include <BRepBuilderAPI_Copy.hxx>
#include <BRepTools.hxx>
using namespace Fem;
using namespace App;
PROPERTY_SOURCE(Fem::FemMeshShapeNetgenObject, Fem::FemMeshShapeObject)
FemMeshShapeNetgenObject::FemMeshShapeNetgenObject()
{
//ADD_PROPERTY_TYPE(Shape,(0), "Shape",Prop_None,"Shape for the analysis");
}
FemMeshShapeNetgenObject::~FemMeshShapeNetgenObject()
{
}
App::DocumentObjectExecReturn *FemMeshShapeNetgenObject::execute(void)
{
Fem::FemMesh newMesh;
Part::Feature *feat = Shape.getValue<Part::Feature*>();
TopoDS_Shape shape = feat->Shape.getValue();
NETGENPlugin_Mesher myNetGenMesher(newMesh.getSMesh(),shape,true);
//NETGENPlugin_SimpleHypothesis_2D * tet2 = new NETGENPlugin_SimpleHypothesis_2D(hyp++,1,myGen);
//static_cast<NETGENPlugin_SimpleHypothesis_2D*>(tet2.get())->SetNumberOfSegments(5);
//static_cast<NETGENPlugin_SimpleHypothesis_2D*>(tet2.get())->SetLocalLength(0.1);
//static_cast<NETGENPlugin_SimpleHypothesis_2D*>(tet2.get())->LengthFromEdges();
//myNetGenMesher.SetParameters(tet2);
//NETGENPlugin_SimpleHypothesis_3D* tet= new NETGENPlugin_SimpleHypothesis_3D(hyp++,1,myGen);
//static_cast<NETGENPlugin_SimpleHypothesis_3D*>(tet.get())->LengthFromFaces();
//static_cast<NETGENPlugin_SimpleHypothesis_3D*>(tet.get())->SetMaxElementVolume(0.1);
//myNetGenMesher.SetParameters( tet);
myNetGenMesher.Compute();
SMESHDS_Mesh* data = const_cast<SMESH_Mesh*>(newMesh.getSMesh())->GetMeshDS();
const SMDS_MeshInfo& info = data->GetMeshInfo();
int numNode = info.NbNodes();
int numTria = info.NbTriangles();
int numQuad = info.NbQuadrangles();
int numPoly = info.NbPolygons();
int numVolu = info.NbVolumes();
int numTetr = info.NbTetras();
int numHexa = info.NbHexas();
int numPyrd = info.NbPyramids();
int numPris = info.NbPrisms();
int numHedr = info.NbPolyhedrons();
// set the value to the object
FemMesh.setValue(newMesh);
return App::DocumentObject::StdReturn;
}
//short FemMeshShapeNetgenObject::mustExecute(void) const
//{
// return 0;
//}
//PyObject *FemMeshShapeNetgenObject::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);
//}
void FemMeshShapeNetgenObject::onChanged(const Property* prop)
{
App::GeoFeature::onChanged(prop);
}

View File

@ -0,0 +1,62 @@
/***************************************************************************
* 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_FemMeshShapeNetgenObject_H
#define Fem_FemMeshShapeNetgenObject_H
#include "FemMesh.h"
#include "FemMeshShapeObject.h"
namespace Fem
{
class AppFemExport FemMeshShapeNetgenObject : public FemMeshShapeObject
{
PROPERTY_HEADER(Fem::FemMeshShapeNetgenObject);
public:
/// Constructor
FemMeshShapeNetgenObject(void);
virtual ~FemMeshShapeNetgenObject();
/// returns the type name of the ViewProvider
virtual const char* getViewProviderName(void) const {
return "FemGui::ViewProviderFemMeshShapeNetgen";
}
virtual App::DocumentObjectExecReturn *execute(void);
//virtual short mustExecute(void) const;
//virtual PyObject *getPyObject(void);
//App::PropertyLink Shape;
protected:
/// get called by the container when a property has changed
virtual void onChanged (const App::Property* prop);
};
} //namespace Fem
#endif // Fem_FemMeshShapeNetgenObject_H

View File

@ -32,50 +32,6 @@
#include <Base/Placement.h>
#include <Mod/Part/App/PartFeature.h>
#include <SMESH_Gen.hxx>
#include <SMESH_Mesh.hxx>
#include <SMDS_PolyhedralVolumeOfNodes.hxx>
#include <SMDS_VolumeTool.hxx>
#include <StdMeshers_Arithmetic1D.hxx>
#include <StdMeshers_AutomaticLength.hxx>
#include <StdMeshers_MaxLength.hxx>
#include <StdMeshers_LocalLength.hxx>
#include <StdMeshers_MaxElementArea.hxx>
#include <StdMeshers_NotConformAllowed.hxx>
#include <StdMeshers_QuadranglePreference.hxx>
#include <StdMeshers_Quadrangle_2D.hxx>
#include <StdMeshers_Regular_1D.hxx>
#include <StdMeshers_UseExisting_1D2D.hxx>
#include <StdMeshers_CompositeSegment_1D.hxx>
#include <StdMeshers_Deflection1D.hxx>
#include <StdMeshers_Hexa_3D.hxx>
#include <StdMeshers_LayerDistribution.hxx>
#include <StdMeshers_LengthFromEdges.hxx>
#include <StdMeshers_MaxElementVolume.hxx>
#include <StdMeshers_MEFISTO_2D.hxx>
#include <StdMeshers_NumberOfLayers.hxx>
#include <StdMeshers_NumberOfSegments.hxx>
#include <StdMeshers_Prism_3D.hxx>
#include <StdMeshers_Projection_1D.hxx>
#include <StdMeshers_Projection_2D.hxx>
#include <StdMeshers_Projection_3D.hxx>
#include <StdMeshers_QuadraticMesh.hxx>
#include <StdMeshers_RadialPrism_3D.hxx>
#include <StdMeshers_SegmentAroundVertex_0D.hxx>
#include <StdMeshers_TrianglePreference.hxx>
#include <StdMeshers_ProjectionSource1D.hxx>
#include <StdMeshers_ProjectionSource2D.hxx>
#include <StdMeshers_ProjectionSource3D.hxx>
#include <StdMeshers_SegmentLengthAroundVertex.hxx>
#include <StdMeshers_StartEndLength.hxx>
//#include <StdMeshers_Propagation.hxx>
#include <StdMeshers_CompositeHexa_3D.hxx>
#include <NETGENPlugin_SimpleHypothesis_3D.hxx>
#include <NETGENPlugin_Mesher.hxx>
#include <BRepBuilderAPI_Copy.hxx>
#include <BRepTools.hxx>
using namespace Fem;
using namespace App;
@ -91,140 +47,140 @@ FemMeshShapeObject::~FemMeshShapeObject()
{
}
App::DocumentObjectExecReturn *FemMeshShapeObject::execute(void)
{
Fem::FemMesh newMesh;
Part::Feature *feat = Shape.getValue<Part::Feature*>();
#if 0
TopoDS_Shape oshape = feat->Shape.getValue();
BRepBuilderAPI_Copy copy(oshape);
const TopoDS_Shape& shape = copy.Shape();
BRepTools::Clean(shape); // remove triangulation
#else
TopoDS_Shape shape = feat->Shape.getValue();
#endif
newMesh.getSMesh()->ShapeToMesh(shape);
SMESH_Gen *myGen = newMesh.getGenerator();
int hyp=0;
#if 0
SMESH_HypothesisPtr len(new StdMeshers_MaxLength(hyp++, 1, myGen));
static_cast<StdMeshers_MaxLength*>(len.get())->SetLength(1.0);
newMesh.addHypothesis(shape, len);
SMESH_HypothesisPtr loc(new StdMeshers_LocalLength(hyp++, 1, myGen));
static_cast<StdMeshers_LocalLength*>(loc.get())->SetLength(1.0);
newMesh.addHypothesis(shape, loc);
SMESH_HypothesisPtr area(new StdMeshers_MaxElementArea(hyp++, 1, myGen));
static_cast<StdMeshers_MaxElementArea*>(area.get())->SetMaxArea(1.0);
newMesh.addHypothesis(shape, area);
SMESH_HypothesisPtr segm(new StdMeshers_NumberOfSegments(hyp++, 1, myGen));
static_cast<StdMeshers_NumberOfSegments*>(segm.get())->SetNumberOfSegments(1);
newMesh.addHypothesis(shape, segm);
SMESH_HypothesisPtr defl(new StdMeshers_Deflection1D(hyp++, 1, myGen));
static_cast<StdMeshers_Deflection1D*>(defl.get())->SetDeflection(0.01);
newMesh.addHypothesis(shape, defl);
SMESH_HypothesisPtr reg(new StdMeshers_Regular_1D(hyp++, 1, myGen));
newMesh.addHypothesis(shape, reg);
//SMESH_HypothesisPtr sel(new StdMeshers_StartEndLength(hyp++, 1, myGen));
//static_cast<StdMeshers_StartEndLength*>(sel.get())->SetLength(1.0, true);
//newMesh.addHypothesis(shape, sel;
SMESH_HypothesisPtr qdp(new StdMeshers_QuadranglePreference(hyp++,1,myGen));
newMesh.addHypothesis(shape, qdp);
//SMESH_HypothesisPtr q2d(new StdMeshers_Quadrangle_2D(hyp++,1,myGen));
//newMesh.addHypothesis(shape, q2d);
SMESH_HypothesisPtr h3d(new StdMeshers_Hexa_3D(hyp++,1,myGen));
newMesh.addHypothesis(shape, h3d);
// create mesh
newMesh.compute();
#endif
#if 0 // Surface quad mesh
SMESH_HypothesisPtr len(new StdMeshers_MaxLength(hyp++, 1, myGen));
static_cast<StdMeshers_MaxLength*>(len.get())->SetLength(1.0);
newMesh.addHypothesis(shape, len);
SMESH_HypothesisPtr loc(new StdMeshers_LocalLength(hyp++, 1, myGen));
static_cast<StdMeshers_LocalLength*>(loc.get())->SetLength(1.0);
newMesh.addHypothesis(shape, loc);
SMESH_HypothesisPtr area(new StdMeshers_MaxElementArea(hyp++, 1, myGen));
static_cast<StdMeshers_MaxElementArea*>(area.get())->SetMaxArea(1.0);
newMesh.addHypothesis(shape, area);
SMESH_HypothesisPtr segm(new StdMeshers_NumberOfSegments(hyp++, 1, myGen));
static_cast<StdMeshers_NumberOfSegments*>(segm.get())->SetNumberOfSegments(1);
newMesh.addHypothesis(shape, segm);
SMESH_HypothesisPtr defl(new StdMeshers_Deflection1D(hyp++, 1, myGen));
static_cast<StdMeshers_Deflection1D*>(defl.get())->SetDeflection(0.01);
newMesh.addHypothesis(shape, defl);
SMESH_HypothesisPtr reg(new StdMeshers_Regular_1D(hyp++, 1, myGen));
newMesh.addHypothesis(shape, reg);
//SMESH_HypothesisPtr sel(new StdMeshers_StartEndLength(hyp++, 1, myGen));
//static_cast<StdMeshers_StartEndLength*>(sel.get())->SetLength(1.0, true);
//newMesh.addHypothesis(shape, sel;
SMESH_HypothesisPtr qdp(new StdMeshers_QuadranglePreference(hyp++,1,myGen));
newMesh.addHypothesis(shape, qdp);
SMESH_HypothesisPtr q2d(new StdMeshers_Quadrangle_2D(hyp++,1,myGen));
newMesh.addHypothesis(shape, q2d);
// create mesh
newMesh.compute();
#endif
#if 1 // NETGEN test
NETGENPlugin_Mesher myNetGenMesher(newMesh.getSMesh(),shape,true);
//NETGENPlugin_SimpleHypothesis_2D * tet2 = new NETGENPlugin_SimpleHypothesis_2D(hyp++,1,myGen);
//static_cast<NETGENPlugin_SimpleHypothesis_2D*>(tet2.get())->SetNumberOfSegments(5);
//static_cast<NETGENPlugin_SimpleHypothesis_2D*>(tet2.get())->SetLocalLength(0.1);
//static_cast<NETGENPlugin_SimpleHypothesis_2D*>(tet2.get())->LengthFromEdges();
//myNetGenMesher.SetParameters(tet2);
//NETGENPlugin_SimpleHypothesis_3D* tet= new NETGENPlugin_SimpleHypothesis_3D(hyp++,1,myGen);
//static_cast<NETGENPlugin_SimpleHypothesis_3D*>(tet.get())->LengthFromFaces();
//static_cast<NETGENPlugin_SimpleHypothesis_3D*>(tet.get())->SetMaxElementVolume(0.1);
//myNetGenMesher.SetParameters( tet);
myNetGenMesher.Compute();
#endif
SMESHDS_Mesh* data = const_cast<SMESH_Mesh*>(newMesh.getSMesh())->GetMeshDS();
const SMDS_MeshInfo& info = data->GetMeshInfo();
int numNode = info.NbNodes();
int numTria = info.NbTriangles();
int numQuad = info.NbQuadrangles();
int numPoly = info.NbPolygons();
int numVolu = info.NbVolumes();
int numTetr = info.NbTetras();
int numHexa = info.NbHexas();
int numPyrd = info.NbPyramids();
int numPris = info.NbPrisms();
int numHedr = info.NbPolyhedrons();
// set the value to the object
FemMesh.setValue(newMesh);
return App::DocumentObject::StdReturn;
}
//App::DocumentObjectExecReturn *FemMeshShapeObject::execute(void)
//{
// Fem::FemMesh newMesh;
//
// Part::Feature *feat = Shape.getValue<Part::Feature*>();
//
//#if 0
// TopoDS_Shape oshape = feat->Shape.getValue();
// BRepBuilderAPI_Copy copy(oshape);
// const TopoDS_Shape& shape = copy.Shape();
// BRepTools::Clean(shape); // remove triangulation
//#else
// TopoDS_Shape shape = feat->Shape.getValue();
//#endif
//
// newMesh.getSMesh()->ShapeToMesh(shape);
// SMESH_Gen *myGen = newMesh.getGenerator();
//
// int hyp=0;
//#if 0
// SMESH_HypothesisPtr len(new StdMeshers_MaxLength(hyp++, 1, myGen));
// static_cast<StdMeshers_MaxLength*>(len.get())->SetLength(1.0);
// newMesh.addHypothesis(shape, len);
//
// SMESH_HypothesisPtr loc(new StdMeshers_LocalLength(hyp++, 1, myGen));
// static_cast<StdMeshers_LocalLength*>(loc.get())->SetLength(1.0);
// newMesh.addHypothesis(shape, loc);
//
// SMESH_HypothesisPtr area(new StdMeshers_MaxElementArea(hyp++, 1, myGen));
// static_cast<StdMeshers_MaxElementArea*>(area.get())->SetMaxArea(1.0);
// newMesh.addHypothesis(shape, area);
//
// SMESH_HypothesisPtr segm(new StdMeshers_NumberOfSegments(hyp++, 1, myGen));
// static_cast<StdMeshers_NumberOfSegments*>(segm.get())->SetNumberOfSegments(1);
// newMesh.addHypothesis(shape, segm);
//
// SMESH_HypothesisPtr defl(new StdMeshers_Deflection1D(hyp++, 1, myGen));
// static_cast<StdMeshers_Deflection1D*>(defl.get())->SetDeflection(0.01);
// newMesh.addHypothesis(shape, defl);
//
// SMESH_HypothesisPtr reg(new StdMeshers_Regular_1D(hyp++, 1, myGen));
// newMesh.addHypothesis(shape, reg);
//
// //SMESH_HypothesisPtr sel(new StdMeshers_StartEndLength(hyp++, 1, myGen));
// //static_cast<StdMeshers_StartEndLength*>(sel.get())->SetLength(1.0, true);
// //newMesh.addHypothesis(shape, sel;
//
// SMESH_HypothesisPtr qdp(new StdMeshers_QuadranglePreference(hyp++,1,myGen));
// newMesh.addHypothesis(shape, qdp);
//
// //SMESH_HypothesisPtr q2d(new StdMeshers_Quadrangle_2D(hyp++,1,myGen));
// //newMesh.addHypothesis(shape, q2d);
//
// SMESH_HypothesisPtr h3d(new StdMeshers_Hexa_3D(hyp++,1,myGen));
// newMesh.addHypothesis(shape, h3d);
//
// // create mesh
// newMesh.compute();
//#endif
//#if 0 // Surface quad mesh
// SMESH_HypothesisPtr len(new StdMeshers_MaxLength(hyp++, 1, myGen));
// static_cast<StdMeshers_MaxLength*>(len.get())->SetLength(1.0);
// newMesh.addHypothesis(shape, len);
//
// SMESH_HypothesisPtr loc(new StdMeshers_LocalLength(hyp++, 1, myGen));
// static_cast<StdMeshers_LocalLength*>(loc.get())->SetLength(1.0);
// newMesh.addHypothesis(shape, loc);
//
// SMESH_HypothesisPtr area(new StdMeshers_MaxElementArea(hyp++, 1, myGen));
// static_cast<StdMeshers_MaxElementArea*>(area.get())->SetMaxArea(1.0);
// newMesh.addHypothesis(shape, area);
//
// SMESH_HypothesisPtr segm(new StdMeshers_NumberOfSegments(hyp++, 1, myGen));
// static_cast<StdMeshers_NumberOfSegments*>(segm.get())->SetNumberOfSegments(1);
// newMesh.addHypothesis(shape, segm);
//
// SMESH_HypothesisPtr defl(new StdMeshers_Deflection1D(hyp++, 1, myGen));
// static_cast<StdMeshers_Deflection1D*>(defl.get())->SetDeflection(0.01);
// newMesh.addHypothesis(shape, defl);
//
// SMESH_HypothesisPtr reg(new StdMeshers_Regular_1D(hyp++, 1, myGen));
// newMesh.addHypothesis(shape, reg);
//
// //SMESH_HypothesisPtr sel(new StdMeshers_StartEndLength(hyp++, 1, myGen));
// //static_cast<StdMeshers_StartEndLength*>(sel.get())->SetLength(1.0, true);
// //newMesh.addHypothesis(shape, sel;
//
// SMESH_HypothesisPtr qdp(new StdMeshers_QuadranglePreference(hyp++,1,myGen));
// newMesh.addHypothesis(shape, qdp);
//
// SMESH_HypothesisPtr q2d(new StdMeshers_Quadrangle_2D(hyp++,1,myGen));
// newMesh.addHypothesis(shape, q2d);
//
// // create mesh
// newMesh.compute();
//#endif
//#if 1 // NETGEN test
// NETGENPlugin_Mesher myNetGenMesher(newMesh.getSMesh(),shape,true);
//
// //NETGENPlugin_SimpleHypothesis_2D * tet2 = new NETGENPlugin_SimpleHypothesis_2D(hyp++,1,myGen);
// //static_cast<NETGENPlugin_SimpleHypothesis_2D*>(tet2.get())->SetNumberOfSegments(5);
// //static_cast<NETGENPlugin_SimpleHypothesis_2D*>(tet2.get())->SetLocalLength(0.1);
// //static_cast<NETGENPlugin_SimpleHypothesis_2D*>(tet2.get())->LengthFromEdges();
// //myNetGenMesher.SetParameters(tet2);
//
// //NETGENPlugin_SimpleHypothesis_3D* tet= new NETGENPlugin_SimpleHypothesis_3D(hyp++,1,myGen);
// //static_cast<NETGENPlugin_SimpleHypothesis_3D*>(tet.get())->LengthFromFaces();
// //static_cast<NETGENPlugin_SimpleHypothesis_3D*>(tet.get())->SetMaxElementVolume(0.1);
// //myNetGenMesher.SetParameters( tet);
//
// myNetGenMesher.Compute();
//#endif
//
//
//
// SMESHDS_Mesh* data = const_cast<SMESH_Mesh*>(newMesh.getSMesh())->GetMeshDS();
// const SMDS_MeshInfo& info = data->GetMeshInfo();
// int numNode = info.NbNodes();
// int numTria = info.NbTriangles();
// int numQuad = info.NbQuadrangles();
// int numPoly = info.NbPolygons();
// int numVolu = info.NbVolumes();
// int numTetr = info.NbTetras();
// int numHexa = info.NbHexas();
// int numPyrd = info.NbPyramids();
// int numPris = info.NbPrisms();
// int numHedr = info.NbPolyhedrons();
//
// // set the value to the object
// FemMesh.setValue(newMesh);
//
//
// return App::DocumentObject::StdReturn;
//}
//short FemMeshShapeObject::mustExecute(void) const
//{
@ -240,7 +196,7 @@ App::DocumentObjectExecReturn *FemMeshShapeObject::execute(void)
// return Py::new_reference_to(PythonObject);
//}
void FemMeshShapeObject::onChanged(const Property* prop)
{
App::GeoFeature::onChanged(prop);
}
//void FemMeshShapeObject::onChanged(const Property* prop)
//{
// App::GeoFeature::onChanged(prop);
//}

View File

@ -25,9 +25,7 @@
#define Fem_FemMeshShapeObject_H
#include "FemMesh.h"
#include "FemMeshObject.h"
#include "FemMeshProperty.h"
namespace Fem
{
@ -45,7 +43,7 @@ public:
//virtual const char* getViewProviderName(void) const {
// return "FemGui::ViewProviderFemMeshShape";
//}
virtual App::DocumentObjectExecReturn *execute(void);
//virtual App::DocumentObjectExecReturn *execute(void);
//virtual short mustExecute(void) const;
//virtual PyObject *getPyObject(void);
@ -54,7 +52,7 @@ public:
protected:
/// get called by the container when a property has changed
virtual void onChanged (const App::Property* prop);
//virtual void onChanged (const App::Property* prop);
};
} //namespace Fem

View File

View File

@ -36,6 +36,11 @@ set(FemGui_MOC_HDRS
TaskFemConstraintForce.h
TaskFemConstraintGear.h
TaskFemConstraintPulley.h
TaskTetParameter.h
TaskAnalysisInfo.h
TaskDriver.h
TaskDlgAnalysis.h
TaskDlgMeshShapeNetgen.h
)
fc_wrap_cpp(FemGui_MOC_SRCS ${FemGui_MOC_HDRS})
SOURCE_GROUP("Moc" FILES ${FemGui_MOC_SRCS})
@ -48,6 +53,9 @@ set(FemGui_UIC_SRCS
TaskFemConstraintBearing.ui
TaskFemConstraintFixed.ui
TaskFemConstraintForce.ui
TaskTetParameter.ui
TaskAnalysisInfo.ui
TaskDriver.ui
)
qt4_wrap_ui(FemGui_UIC_HDRS ${FemGui_UIC_SRCS})
@ -73,7 +81,7 @@ SET(FemGui_DLG_SRCS
TaskFemConstraintPulley.cpp
TaskFemConstraintPulley.h
)
SOURCE_GROUP("Dialogs" FILES ${FemGui_DLG_SRCS})
SOURCE_GROUP("Constraint-Dialogs" FILES ${FemGui_DLG_SRCS})
qt4_add_resources(FemResource_SRCS Resources/Fem.qrc)
@ -82,6 +90,12 @@ SOURCE_GROUP("Resources" FILES ${FemResource_SRCS})
SET(FemGui_SRCS_ViewProvider
ViewProviderFemMesh.cpp
ViewProviderFemMesh.h
ViewProviderFemMeshShape.cpp
ViewProviderFemMeshShape.h
ViewProviderFemMeshShapeNetgen.cpp
ViewProviderFemMeshShapeNetgen.h
ViewProviderAnalysis.cpp
ViewProviderAnalysis.h
ViewProviderSetNodes.cpp
ViewProviderSetNodes.h
ViewProviderSetElements.cpp
@ -114,12 +128,25 @@ SET(FemGui_SRCS_TaskBoxes
TaskCreateNodeSet.ui
TaskCreateNodeSet.cpp
TaskCreateNodeSet.h
TaskDriver.ui
TaskDriver.cpp
TaskDriver.h
TaskAnalysisInfo.ui
TaskAnalysisInfo.cpp
TaskAnalysisInfo.h
TaskTetParameter.ui
TaskTetParameter.cpp
TaskTetParameter.h
)
SOURCE_GROUP("Task_Boxes" FILES ${FemGui_SRCS_TaskBoxes})
SET(FemGui_SRCS_TaskDlg
TaskDlgCreateNodeSet.h
TaskDlgCreateNodeSet.cpp
TaskDlgMeshShapeNetgen.h
TaskDlgMeshShapeNetgen.cpp
TaskDlgAnalysis.h
TaskDlgAnalysis.cpp
)
SOURCE_GROUP("Task_Dialogs" FILES ${FemGui_SRCS_TaskDlg})

View File

@ -0,0 +1,85 @@
/***************************************************************************
* 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_
# include <QString>
# include <QSlider>
#endif
#include <Standard_math.hxx>
#include "ui_TaskAnalysisInfo.h"
#include "TaskAnalysisInfo.h"
#include <Gui/Application.h>
#include <Gui/Document.h>
#include <Gui/BitmapFactory.h>
using namespace FemGui;
using namespace Gui;
TaskAnalysisInfo::TaskAnalysisInfo(Fem::FemAnalysis *pcObject,QWidget *parent)
: TaskBox(Gui::BitmapFactory().pixmap("Fem_FemMesh_createnodebypoly"),
tr("Nodes set"),
true,
parent),
pcObject(pcObject)
{
// we need a separate container widget to add all controls to
proxy = new QWidget(this);
ui = new Ui_TaskAnalysisInfo();
ui->setupUi(proxy);
QMetaObject::connectSlotsByName(this);
this->groupLayout()->addWidget(proxy);
/* QObject::connect(ui->toolButton_Poly,SIGNAL(clicked()),this,SLOT(Poly()));
QObject::connect(ui->toolButton_Pick,SIGNAL(clicked()),this,SLOT(Pick()));
QObject::connect(ui->comboBox,SIGNAL(activated (int)),this,SLOT(SwitchMethod(int)));*/
}
void TaskAnalysisInfo::SwitchMethod(int Value)
{
/* if(Value == 1){
ui->groupBox_AngleSearch->setEnabled(true);
ui->toolButton_Pick->setEnabled(true);
ui->toolButton_Poly->setEnabled(false);
}else{
ui->groupBox_AngleSearch->setEnabled(false);
ui->toolButton_Pick->setEnabled(false);
ui->toolButton_Poly->setEnabled(true);
}*/
}
TaskAnalysisInfo::~TaskAnalysisInfo()
{
delete ui;
}
#include "moc_TaskAnalysisInfo.cpp"

View File

@ -0,0 +1,78 @@
/***************************************************************************
* 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 FEMGUI_TaskAnalysisInfo_H
#define FEMGUI_TaskAnalysisInfo_H
#include <Gui/TaskView/TaskView.h>
#include <Gui/Selection.h>
#include <Mod/Fem/App/FemSetNodesObject.h>
class Ui_TaskAnalysisInfo;
class SoEventCallback;
namespace Base {
class Polygon2D;
}
namespace App {
class Property;
}
namespace Gui {
class ViewProvider;
class ViewVolumeProjection;
}
namespace Fem{
class FemAnalysis;
}
namespace FemGui {
class ViewProviderFemMesh;
class TaskAnalysisInfo : public Gui::TaskView::TaskBox
{
Q_OBJECT
public:
TaskAnalysisInfo(Fem::FemAnalysis *pcObject,QWidget *parent = 0);
~TaskAnalysisInfo();
private Q_SLOTS:
void SwitchMethod(int Value);
protected:
Fem::FemAnalysis *pcObject;
private:
QWidget* proxy;
Ui_TaskAnalysisInfo* ui;
};
} //namespace FEMGUI_TaskAnalysisInfo_H
#endif // GUI_TASKVIEW_TaskAnalysisInfo_H

View File

@ -0,0 +1,59 @@
<?xml version="1.0" encoding="UTF-8"?>
<ui version="4.0">
<class>TaskAnalysisInfo</class>
<widget class="QWidget" name="TaskAnalysisInfo">
<property name="geometry">
<rect>
<x>0</x>
<y>0</y>
<width>196</width>
<height>448</height>
</rect>
</property>
<property name="sizePolicy">
<sizepolicy hsizetype="Preferred" vsizetype="Minimum">
<horstretch>0</horstretch>
<verstretch>0</verstretch>
</sizepolicy>
</property>
<property name="windowTitle">
<string>Form</string>
</property>
<layout class="QVBoxLayout" name="verticalLayout">
<item>
<widget class="QLabel" name="label">
<property name="font">
<font>
<weight>75</weight>
<bold>true</bold>
</font>
</property>
<property name="text">
<string>Meshes:</string>
</property>
</widget>
</item>
<item>
<widget class="QListView" name="listView"/>
</item>
<item>
<widget class="QLabel" name="label_2">
<property name="font">
<font>
<weight>75</weight>
<bold>true</bold>
</font>
</property>
<property name="text">
<string>Constraints</string>
</property>
</widget>
</item>
<item>
<widget class="QListView" name="listView_2"/>
</item>
</layout>
</widget>
<resources/>
<connections/>
</ui>

View File

@ -0,0 +1,118 @@
/***************************************************************************
* 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 "TaskDlgAnalysis.h"
#include <Base/Console.h>
#include <Base/Exception.h>
#include <Gui/TaskView/TaskSelectLinkProperty.h>
#include <Gui/Application.h>
#include <Gui/Document.h>
#include <Gui/Command.h>
#include <Mod/Fem/App/FemAnalysis.h>
#include "TaskAnalysisInfo.h"
#include "TaskDriver.h"
using namespace FemGui;
//**************************************************************************
//**************************************************************************
// TaskDialog
//++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++
TaskDlgAnalysis::TaskDlgAnalysis(Fem::FemAnalysis *obj)
: TaskDialog(),FemAnalysis(obj)
{
driver = new TaskDriver(obj);
info = new TaskAnalysisInfo(obj);
Content.push_back(driver);
Content.push_back(info);
}
TaskDlgAnalysis::~TaskDlgAnalysis()
{
}
//==== calls from the TaskView ===============================================================
void TaskDlgAnalysis::open()
{
//select->activate();
//Edge2TaskObject->execute();
//param->setEdgeAndClusterNbr(Edge2TaskObject->NbrOfEdges,Edge2TaskObject->NbrOfCluster);
}
bool TaskDlgAnalysis::accept()
{
//try {
// FemSetNodesObject->Nodes.setValues(param->tempSet);
// FemSetNodesObject->recompute();
// //Gui::Document* doc = Gui::Application::Instance->activeDocument();
// //if(doc)
// // doc->resetEdit();
// param->MeshViewProvider->resetHighlightNodes();
// FemSetNodesObject->Label.setValue(name->name);
// Gui::Command::doCommand(Gui::Command::Gui,"Gui.activeDocument().resetEdit()");
// return true;
//}
//catch (const Base::Exception& e) {
// Base::Console().Warning("TaskDlgAnalysis::accept(): %s\n", e.what());
//}
return false;
}
bool TaskDlgAnalysis::reject()
{
//FemSetNodesObject->execute();
// //Gui::Document* doc = Gui::Application::Instance->activeDocument();
// //if(doc)
// // doc->resetEdit();
//param->MeshViewProvider->resetHighlightNodes();
//Gui::Command::abortCommand();
//Gui::Command::doCommand(Gui::Command::Gui,"Gui.activeDocument().resetEdit()");
return true;
}
void TaskDlgAnalysis::helpRequested()
{
}
#include "moc_TaskDlgAnalysis.cpp"

View File

@ -0,0 +1,72 @@
/***************************************************************************
* 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 FEMGUI_TaskDlgAnalysis_H
#define FEMGUI_TaskDlgAnalysis_H
#include <Gui/TaskView/TaskDialog.h>
namespace Fem{
class FemAnalysis;
}
namespace FemGui {
class TaskAnalysisInfo ;
class TaskDriver;
/// simulation dialog for the TaskView
class TaskDlgAnalysis : public Gui::TaskView::TaskDialog
{
Q_OBJECT
public:
TaskDlgAnalysis(Fem::FemAnalysis *);
~TaskDlgAnalysis();
public:
/// is called the TaskView when the dialog is opened
virtual void open();
/// is called by the framework if the dialog is accepted (Ok)
virtual bool accept();
/// is called by the framework if the dialog is rejected (Cancel)
virtual bool reject();
/// is called by the framework if the user press the help button
virtual void helpRequested();
/// returns for Close and Help button
virtual QDialogButtonBox::StandardButtons getStandardButtons(void) const
{ return QDialogButtonBox::Ok|QDialogButtonBox::Cancel|QDialogButtonBox::Apply; }
protected:
TaskAnalysisInfo *info;
TaskDriver *driver;
Fem::FemAnalysis *FemAnalysis;
};
} //namespace FemGui
#endif // FEMGUI_TaskDlgAnalysis_H

View File

@ -0,0 +1,114 @@
/***************************************************************************
* 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 "TaskDlgMeshShapeNetgen.h"
#include <Base/Console.h>
#include <Base/Exception.h>
#include <Gui/TaskView/TaskSelectLinkProperty.h>
#include <Gui/Application.h>
#include <Gui/Document.h>
#include <Gui/Command.h>
#include "ViewProviderFemMesh.h"
#include <Mod/Fem/App/FemMeshShapeNetgenObject.h>
#include "TaskTetParameter.h"
using namespace FemGui;
//**************************************************************************
//**************************************************************************
// TaskDialog
//++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++
TaskDlgMeshShapeNetgen::TaskDlgMeshShapeNetgen(Fem::FemMeshShapeNetgenObject *obj)
: TaskDialog(),FemMeshShapeNetgenObject(obj)
{
param = new TaskTetParameter(obj);
Content.push_back(param);
}
TaskDlgMeshShapeNetgen::~TaskDlgMeshShapeNetgen()
{
}
//==== calls from the TaskView ===============================================================
void TaskDlgMeshShapeNetgen::open()
{
//select->activate();
//Edge2TaskObject->execute();
//param->setEdgeAndClusterNbr(Edge2TaskObject->NbrOfEdges,Edge2TaskObject->NbrOfCluster);
}
bool TaskDlgMeshShapeNetgen::accept()
{
//try {
// FemSetNodesObject->Nodes.setValues(param->tempSet);
// FemSetNodesObject->recompute();
// //Gui::Document* doc = Gui::Application::Instance->activeDocument();
// //if(doc)
// // doc->resetEdit();
// param->MeshViewProvider->resetHighlightNodes();
// FemSetNodesObject->Label.setValue(name->name);
// Gui::Command::doCommand(Gui::Command::Gui,"Gui.activeDocument().resetEdit()");
// return true;
//}
//catch (const Base::Exception& e) {
// Base::Console().Warning("TaskDlgMeshShapeNetgen::accept(): %s\n", e.what());
//}
return false;
}
bool TaskDlgMeshShapeNetgen::reject()
{
//FemSetNodesObject->execute();
// //Gui::Document* doc = Gui::Application::Instance->activeDocument();
// //if(doc)
// // doc->resetEdit();
//param->MeshViewProvider->resetHighlightNodes();
//Gui::Command::abortCommand();
//Gui::Command::doCommand(Gui::Command::Gui,"Gui.activeDocument().resetEdit()");
return true;
}
void TaskDlgMeshShapeNetgen::helpRequested()
{
}
#include "moc_TaskDlgMeshShapeNetgen.cpp"

View File

@ -0,0 +1,71 @@
/***************************************************************************
* 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 FEMGUI_TaskDlgMeshShapeNetgen_H
#define FEMGUI_TaskDlgMeshShapeNetgen_H
#include <Gui/TaskView/TaskDialog.h>
namespace Fem {
class FemMeshShapeNetgenObject;
}
namespace FemGui {
class TaskTetParameter;
/// simulation dialog for the TaskView
class TaskDlgMeshShapeNetgen : public Gui::TaskView::TaskDialog
{
Q_OBJECT
public:
TaskDlgMeshShapeNetgen(Fem::FemMeshShapeNetgenObject *);
~TaskDlgMeshShapeNetgen();
public:
/// is called the TaskView when the dialog is opened
virtual void open();
/// is called by the framework if the dialog is accepted (Ok)
virtual bool accept();
/// is called by the framework if the dialog is rejected (Cancel)
virtual bool reject();
/// is called by the framework if the user press the help button
virtual void helpRequested();
/// returns for Close and Help button
virtual QDialogButtonBox::StandardButtons getStandardButtons(void) const
{ return QDialogButtonBox::Ok|QDialogButtonBox::Cancel; }
protected:
TaskTetParameter *param;
Fem::FemMeshShapeNetgenObject *FemMeshShapeNetgenObject;
};
} //namespace FemGui
#endif // FEMGUI_TaskDlgMeshShapeNetgen_H

View File

@ -0,0 +1,95 @@
/***************************************************************************
* 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_
# include <QString>
# include <QSlider>
#endif
#include <Standard_math.hxx>
#include "ui_TaskDriver.h"
#include "TaskDriver.h"
#include <Gui/Application.h>
#include <Gui/Document.h>
#include <Gui/BitmapFactory.h>
#include <Gui/ViewProvider.h>
#include <Gui/WaitCursor.h>
#include <Base/Console.h>
#include <Gui/View3DInventor.h>
#include <Gui/View3DInventorViewer.h>
#include <Gui/Utilities.h>
using namespace FemGui;
using namespace Gui;
TaskDriver::TaskDriver(Fem::FemAnalysis *pcObject,QWidget *parent)
: TaskBox(Gui::BitmapFactory().pixmap("Fem_FemMesh_createnodebypoly"),
tr("Nodes set"),
true,
parent),
pcObject(pcObject)
{
// we need a separate container widget to add all controls to
proxy = new QWidget(this);
ui = new Ui_TaskDriver();
ui->setupUi(proxy);
QMetaObject::connectSlotsByName(this);
this->groupLayout()->addWidget(proxy);
//QObject::connect(ui->toolButton_Poly,SIGNAL(clicked()),this,SLOT(Poly()));
//QObject::connect(ui->toolButton_Pick,SIGNAL(clicked()),this,SLOT(Pick()));
//QObject::connect(ui->comboBox,SIGNAL(activated (int)),this,SLOT(SwitchMethod(int)));
}
void TaskDriver::SwitchMethod(int Value)
{
//if(Value == 1){
// ui->groupBox_AngleSearch->setEnabled(true);
// ui->toolButton_Pick->setEnabled(true);
// ui->toolButton_Poly->setEnabled(false);
//}else{
// ui->groupBox_AngleSearch->setEnabled(false);
// ui->toolButton_Pick->setEnabled(false);
// ui->toolButton_Poly->setEnabled(true);
//}
}
TaskDriver::~TaskDriver()
{
delete ui;
}
#include "moc_TaskDriver.cpp"

View File

@ -0,0 +1,79 @@
/***************************************************************************
* 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 FEMGUI_TaskDriver_H
#define FEMGUI_TaskDriver_H
#include <Gui/TaskView/TaskView.h>
#include <Gui/Selection.h>
#include <Mod/Fem/App/FemSetNodesObject.h>
class Ui_TaskDriver;
class SoEventCallback;
namespace Base {
class Polygon2D;
}
namespace App {
class Property;
}
namespace Gui {
class ViewProvider;
class ViewVolumeProjection;
}
namespace Fem{
class FemAnalysis;
}
namespace FemGui {
class TaskDriver : public Gui::TaskView::TaskBox
{
Q_OBJECT
public:
TaskDriver(Fem::FemAnalysis *pcObject,QWidget *parent = 0);
~TaskDriver();
private Q_SLOTS:
void SwitchMethod(int Value);
protected:
Fem::FemAnalysis *pcObject;
private:
QWidget* proxy;
Ui_TaskDriver* ui;
};
} //namespace FemGui
#endif // FEMGUI_TaskDriver_H

View File

@ -0,0 +1,33 @@
<?xml version="1.0" encoding="UTF-8"?>
<ui version="4.0">
<class>TaskDriver</class>
<widget class="QWidget" name="TaskDriver">
<property name="geometry">
<rect>
<x>0</x>
<y>0</y>
<width>184</width>
<height>236</height>
</rect>
</property>
<property name="sizePolicy">
<sizepolicy hsizetype="Preferred" vsizetype="Minimum">
<horstretch>0</horstretch>
<verstretch>0</verstretch>
</sizepolicy>
</property>
<property name="windowTitle">
<string>Form</string>
</property>
<layout class="QVBoxLayout" name="verticalLayout">
<item>
<widget class="QComboBox" name="DrivercomboBox"/>
</item>
<item>
<widget class="QTextEdit" name="textEdit"/>
</item>
</layout>
</widget>
<resources/>
<connections/>
</ui>

View File

@ -0,0 +1,94 @@
/***************************************************************************
* 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_
# include <QString>
# include <QSlider>
#endif
#include <Standard_math.hxx>
#include "ui_TaskTetParameter.h"
#include "TaskTetParameter.h"
#include <Gui/Application.h>
#include <Gui/Document.h>
#include <Gui/BitmapFactory.h>
#include <Gui/ViewProvider.h>
#include <Gui/WaitCursor.h>
#include <Base/Console.h>
#include <Gui/View3DInventor.h>
#include <Gui/View3DInventorViewer.h>
#include <Gui/Utilities.h>
using namespace FemGui;
using namespace Gui;
TaskTetParameter::TaskTetParameter(Fem::FemMeshShapeNetgenObject *pcObject,QWidget *parent)
: TaskBox(Gui::BitmapFactory().pixmap("Fem_FemMesh_createnodebypoly"),
tr("Tet Parameter"),
true,
parent),
pcObject(pcObject)
{
// we need a separate container widget to add all controls to
proxy = new QWidget(this);
ui = new Ui_TaskTetParameter();
ui->setupUi(proxy);
QMetaObject::connectSlotsByName(this);
this->groupLayout()->addWidget(proxy);
//QObject::connect(ui->toolButton_Poly,SIGNAL(clicked()),this,SLOT(Poly()));
//QObject::connect(ui->toolButton_Pick,SIGNAL(clicked()),this,SLOT(Pick()));
//QObject::connect(ui->comboBox,SIGNAL(activated (int)),this,SLOT(SwitchMethod(int)));
}
TaskTetParameter::~TaskTetParameter()
{
delete ui;
}
void TaskTetParameter::SwitchMethod(int Value)
{
//if(Value == 1){
// ui->groupBox_AngleSearch->setEnabled(true);
// ui->toolButton_Pick->setEnabled(true);
// ui->toolButton_Poly->setEnabled(false);
//}else{
// ui->groupBox_AngleSearch->setEnabled(false);
// ui->toolButton_Pick->setEnabled(false);
// ui->toolButton_Poly->setEnabled(true);
//}
}
#include "moc_TaskTetParameter.cpp"

View File

@ -0,0 +1,76 @@
/***************************************************************************
* 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 FEMGUI_TaskTetParameter_H
#define FEMGUI_TaskTetParameter_H
#include <Gui/TaskView/TaskView.h>
class Ui_TaskTetParameter;
class SoEventCallback;
namespace Base {
class Polygon2D;
}
namespace App {
class Property;
}
namespace Gui {
class ViewProvider;
class ViewVolumeProjection;
}
namespace Fem{
class FemMeshShapeNetgenObject;
}
namespace FemGui {
class ViewProviderFemMeshShapeNetgen;
class TaskTetParameter : public Gui::TaskView::TaskBox
{
Q_OBJECT
public:
TaskTetParameter(Fem::FemMeshShapeNetgenObject *pcObject,QWidget *parent = 0);
~TaskTetParameter();
ViewProviderFemMeshShapeNetgen * MeshViewProvider;
private Q_SLOTS:
void SwitchMethod(int Value);
protected:
Fem::FemMeshShapeNetgenObject *pcObject;
private:
QWidget* proxy;
Ui_TaskTetParameter* ui;
};
} //namespace FemGui
#endif // FEMGUI_TaskTetParameter_H

View File

@ -0,0 +1,148 @@
<?xml version="1.0" encoding="UTF-8"?>
<ui version="4.0">
<class>TaskTetParameter</class>
<widget class="QWidget" name="TaskTetParameter">
<property name="geometry">
<rect>
<x>0</x>
<y>0</y>
<width>221</width>
<height>196</height>
</rect>
</property>
<property name="sizePolicy">
<sizepolicy hsizetype="Preferred" vsizetype="Minimum">
<horstretch>0</horstretch>
<verstretch>0</verstretch>
</sizepolicy>
</property>
<property name="windowTitle">
<string>Form</string>
</property>
<layout class="QVBoxLayout" name="verticalLayout">
<item>
<layout class="QHBoxLayout" name="horizontalLayout">
<item>
<widget class="QLabel" name="label">
<property name="text">
<string>Max. Size:</string>
</property>
</widget>
</item>
<item>
<widget class="QDoubleSpinBox" name="doubleSpinBox"/>
</item>
</layout>
</item>
<item>
<widget class="QCheckBox" name="checkBox">
<property name="text">
<string>Second order</string>
</property>
</widget>
</item>
<item>
<layout class="QFormLayout" name="formLayout">
<item row="0" column="0">
<widget class="QLabel" name="label_2">
<property name="text">
<string>Fineness:</string>
</property>
</widget>
</item>
<item row="0" column="1">
<widget class="QComboBox" name="comboBox_Fineness">
<property name="currentIndex">
<number>2</number>
</property>
<item>
<property name="text">
<string>VeryCoarse</string>
</property>
</item>
<item>
<property name="text">
<string>Coarse</string>
</property>
</item>
<item>
<property name="text">
<string>Moderate</string>
</property>
</item>
<item>
<property name="text">
<string>Fine</string>
</property>
</item>
<item>
<property name="text">
<string>VeryFine</string>
</property>
</item>
<item>
<property name="text">
<string>UserDefined</string>
</property>
</item>
</widget>
</item>
<item row="1" column="0">
<widget class="QLabel" name="label_3">
<property name="text">
<string>Groth Rate:</string>
</property>
</widget>
</item>
<item row="1" column="1">
<widget class="QDoubleSpinBox" name="doubleSpinBox_GrothRate">
<property name="enabled">
<bool>false</bool>
</property>
</widget>
</item>
<item row="2" column="0">
<widget class="QLabel" name="label_4">
<property name="text">
<string>Nbr. Segs per Edge:</string>
</property>
</widget>
</item>
<item row="2" column="1">
<widget class="QSpinBox" name="spinBox_SegsPerEdge">
<property name="enabled">
<bool>false</bool>
</property>
</widget>
</item>
<item row="3" column="0">
<widget class="QLabel" name="label_5">
<property name="text">
<string>Nbr. Segs per Radius:</string>
</property>
</widget>
</item>
<item row="3" column="1">
<widget class="QSpinBox" name="spinBox_SegsPerRadius">
<property name="enabled">
<bool>false</bool>
</property>
</widget>
</item>
</layout>
</item>
<item>
<widget class="QCheckBox" name="checkBox_2">
<property name="text">
<string>Optimize</string>
</property>
<property name="checked">
<bool>true</bool>
</property>
</widget>
</item>
</layout>
</widget>
<resources/>
<connections/>
</ui>

View File

@ -0,0 +1,58 @@
/***************************************************************************
* 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_
# include <Standard_math.hxx>
#endif
#include "ViewProviderAnalysis.h"
#include <Mod/Fem/App/FemMeshObject.h>
#include <Mod/Fem/App/FemMesh.h>
using namespace FemGui;
PROPERTY_SOURCE(FemGui::ViewProviderAnalysis, Gui::ViewProviderGeometryObject)
ViewProviderAnalysis::ViewProviderAnalysis()
{
}
ViewProviderAnalysis::~ViewProviderAnalysis()
{
}

View File

@ -0,0 +1,58 @@
/***************************************************************************
* 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_ViewProviderAnalysis_H
#define FEM_ViewProviderAnalysis_H
#include <Gui/ViewProviderGeometryObject.h>
#include <Gui/ViewProviderBuilder.h>
class SoCoordinate3;
class SoDrawStyle;
class SoIndexedFaceSet;
class SoIndexedLineSet;
class SoShapeHints;
class SoMaterialBinding;
namespace FemGui
{
class FemGuiExport ViewProviderAnalysis : public Gui::ViewProviderGeometryObject
{
PROPERTY_HEADER(FemGui::ViewProviderAnalysis);
public:
/// constructor.
ViewProviderAnalysis();
/// destructor.
~ViewProviderAnalysis();
};
} //namespace FemGui
#endif // FEM_ViewProviderAnalysis_H

View File

@ -0,0 +1,51 @@
/***************************************************************************
* 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_
# include <Standard_math.hxx>
#endif
#include "ViewProviderFemMeshShape.h"
using namespace FemGui;
PROPERTY_SOURCE(FemGui::ViewProviderFemMeshShape, Gui::ViewProviderGeometryObject)
ViewProviderFemMeshShape::ViewProviderFemMeshShape()
{
}
ViewProviderFemMeshShape::~ViewProviderFemMeshShape()
{
}

View File

@ -0,0 +1,58 @@
/***************************************************************************
* 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_ViewProviderFemMeshShape_H
#define FEM_ViewProviderFemMeshShape_H
#include <Gui/ViewProviderGeometryObject.h>
#include <Gui/ViewProviderBuilder.h>
class SoCoordinate3;
class SoDrawStyle;
class SoIndexedFaceSet;
class SoIndexedLineSet;
class SoShapeHints;
class SoMaterialBinding;
namespace FemGui
{
class FemGuiExport ViewProviderFemMeshShape : public Gui::ViewProviderGeometryObject
{
PROPERTY_HEADER(FemGui::ViewProviderFemMeshShape);
public:
/// constructor.
ViewProviderFemMeshShape();
/// destructor.
~ViewProviderFemMeshShape();
};
} //namespace FemGui
#endif // FEM_ViewProviderFemMeshShape_H

View File

@ -0,0 +1,54 @@
/***************************************************************************
* 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_
# include <Standard_math.hxx>
#endif
#include "ViewProviderFemMeshShapeNetgen.h"
using namespace FemGui;
PROPERTY_SOURCE(FemGui::ViewProviderFemMeshShapeNetgen, Gui::ViewProviderGeometryObject)
ViewProviderFemMeshShapeNetgen::ViewProviderFemMeshShapeNetgen()
{
}
ViewProviderFemMeshShapeNetgen::~ViewProviderFemMeshShapeNetgen()
{
}

View File

@ -0,0 +1,58 @@
/***************************************************************************
* 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_ViewProviderFemMeshShapeNetgen_H
#define FEM_ViewProviderFemMeshShapeNetgen_H
#include <Gui/ViewProviderGeometryObject.h>
#include <Gui/ViewProviderBuilder.h>
class SoCoordinate3;
class SoDrawStyle;
class SoIndexedFaceSet;
class SoIndexedLineSet;
class SoShapeHints;
class SoMaterialBinding;
namespace FemGui
{
class FemGuiExport ViewProviderFemMeshShapeNetgen : public Gui::ViewProviderGeometryObject
{
PROPERTY_HEADER(FemGui::ViewProviderFemMeshShapeNetgen);
public:
/// constructor.
ViewProviderFemMeshShapeNetgen();
/// destructor.
~ViewProviderFemMeshShapeNetgen();
};
} //namespace FemGui
#endif // FEM_ViewProviderFemMeshShapeNetgen_H