2017-05-31 22:38:17 +05:00
|
|
|
#ifdef NG_PYTHON
|
|
|
|
#ifdef OCCGEOMETRY
|
|
|
|
|
|
|
|
#include <../general/ngpython.hpp>
|
|
|
|
|
|
|
|
#include <meshing.hpp>
|
|
|
|
#include <occgeom.hpp>
|
|
|
|
|
|
|
|
using namespace netgen;
|
|
|
|
|
|
|
|
namespace netgen
|
|
|
|
{
|
|
|
|
extern std::shared_ptr<NetgenGeometry> ng_geometry;
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
|
|
DLL_HEADER void ExportNgOCC(py::module &m)
|
|
|
|
{
|
|
|
|
py::class_<OCCGeometry, shared_ptr<OCCGeometry>> (m, "OCCGeometry")
|
|
|
|
.def(py::init<>())
|
|
|
|
;
|
|
|
|
m.def("LoadOCCGeometry",FunctionPointer([] (const string & filename)
|
|
|
|
{
|
|
|
|
cout << "load OCC geometry";
|
|
|
|
ifstream ist(filename);
|
|
|
|
OCCGeometry * instance = new OCCGeometry();
|
|
|
|
instance = LoadOCC_STEP(filename.c_str());
|
|
|
|
return shared_ptr<OCCGeometry>(instance, NOOP_Deleter);
|
|
|
|
}));
|
|
|
|
m.def("GenerateMesh", FunctionPointer([] (shared_ptr<OCCGeometry> geo, MeshingParameters ¶m)
|
|
|
|
{
|
|
|
|
auto mesh = make_shared<Mesh>();
|
|
|
|
SetGlobalMesh(mesh);
|
|
|
|
mesh->SetGeometry(geo);
|
|
|
|
ng_geometry = geo;
|
2017-10-20 19:39:37 +05:00
|
|
|
|
|
|
|
occparam.resthcloseedgefac = 2.0;
|
|
|
|
occparam.resthcloseedgeenable = 1;
|
|
|
|
occparam.resthminedgelen = 0.2;
|
|
|
|
occparam.resthminedgelenenable = 1;
|
|
|
|
|
2017-05-31 22:38:17 +05:00
|
|
|
try
|
|
|
|
{
|
|
|
|
geo->GenerateMesh(mesh,param);
|
|
|
|
}
|
|
|
|
catch (NgException ex)
|
|
|
|
{
|
|
|
|
cout << "Caught NgException: " << ex.What() << endl;
|
|
|
|
}
|
|
|
|
return mesh;
|
|
|
|
}))
|
|
|
|
;
|
|
|
|
}
|
|
|
|
|
2017-09-01 12:33:57 +05:00
|
|
|
PYBIND11_MODULE(libNgOCC, m) {
|
2017-05-31 22:38:17 +05:00
|
|
|
ExportNgOCC(m);
|
|
|
|
}
|
|
|
|
|
|
|
|
#endif // OCCGEOMETRY
|
|
|
|
#endif // NG_PYTHON
|