From 242fb6caff084c56ab01e299ace8fffd796170bb Mon Sep 17 00:00:00 2001 From: adam-urbanczyk Date: Tue, 30 Jun 2020 21:56:26 +0200 Subject: [PATCH] Added support for using TopoDS_Shape directly --- libsrc/occ/occgeom.cpp | 17 +++++++++++++++++ libsrc/occ/occgeom.hpp | 2 ++ libsrc/occ/python_occ.cpp | 7 +++++++ 3 files changed, 26 insertions(+) diff --git a/libsrc/occ/occgeom.cpp b/libsrc/occ/occgeom.cpp index 91dfb2cf..9ad6a8ae 100644 --- a/libsrc/occ/occgeom.cpp +++ b/libsrc/occ/occgeom.cpp @@ -1670,6 +1670,23 @@ namespace netgen return occgeo; } + OCCGeometry *FromOCC (const TopoDS_Shape& s) + { + OCCGeometry * occgeo; + occgeo = new OCCGeometry; + + occgeo->shape = s; + + occgeo->face_colours = Handle_XCAFDoc_ColorTool(); + occgeo->face_colours.Nullify(); + occgeo->changed = 1; + occgeo->BuildFMap(); + + occgeo->CalcBoundingBox(); + PrintContents (occgeo); + + return occgeo; + } void OCCGeometry :: Save (string sfilename) const { diff --git a/libsrc/occ/occgeom.hpp b/libsrc/occ/occgeom.hpp index 447d212f..54fbc23c 100644 --- a/libsrc/occ/occgeom.hpp +++ b/libsrc/occ/occgeom.hpp @@ -452,6 +452,8 @@ namespace netgen DLL_HEADER OCCGeometry * LoadOCC_IGES (const char * filename); DLL_HEADER OCCGeometry * LoadOCC_STEP (const char * filename); DLL_HEADER OCCGeometry * LoadOCC_BREP (const char * filename); + DLL_HEADER OCCGeometry * FromOCC (const TopoDS_Shape& s); + // Philippose - 31.09.2009 // External access to the mesh generation functions within the OCC diff --git a/libsrc/occ/python_occ.cpp b/libsrc/occ/python_occ.cpp index a7508c31..bfa50dec 100644 --- a/libsrc/occ/python_occ.cpp +++ b/libsrc/occ/python_occ.cpp @@ -65,6 +65,13 @@ DLL_HEADER void ExportNgOCC(py::module &m) return geo; }), py::arg("filename"), "Load OCC geometry from step, brep or iges file") + .def(py::init([] ( const TopoDS_Shape* s) + { + shared_ptr geo; + geo.reset(FromOCC(*s)); + return geo; + }), py::arg("shape"), + "Load OCC geometry from an existing TopoDS_Shape object") .def(NGSPickle()) .def("Glue", &OCCGeometry::GlueGeometry) .def("Heal",[](OCCGeometry & self, double tolerance, bool fixsmalledges, bool fixspotstripfaces, bool sewfaces, bool makesolids, bool splitpartitions)