| |
|
| |
|
| | |
| | |
| | |
| | |
| | |
| | |
| | |
| | |
| | |
| | |
| | |
| | |
| | |
| | |
| | |
| | |
| | |
| | |
| | |
| | |
| |
|
| |
|
| |
|
| | #include <App/Application.h>
|
| | #include <App/Document.h>
|
| | #include <App/InventorObject.h>
|
| | #include <Base/Console.h>
|
| | #include <Base/FileInfo.h>
|
| | #include <Base/Interpreter.h>
|
| | #include <Base/PyObjectBase.h>
|
| | #include <Mod/Mesh/App/Core/MeshKernel.h>
|
| | #include <Mod/Mesh/App/MeshPy.h>
|
| |
|
| | #include <CXX/Extensions.hxx>
|
| |
|
| | #include "TestJtReader.h"
|
| | #include "TKJtReader.h"
|
| |
|
| |
|
| | using std::vector;
|
| | using namespace MeshCore;
|
| |
|
| |
|
| | namespace JtReaderNS
|
| | {
|
| | class Module: public Py::ExtensionModule<Module>
|
| | {
|
| | public:
|
| | Module()
|
| | : Py::ExtensionModule<Module>("JtReader")
|
| | {
|
| | add_varargs_method(
|
| | "read",
|
| | &Module::read,
|
| | "Read the mesh from a JT file and return a mesh object."
|
| | );
|
| | add_varargs_method(
|
| | "open",
|
| | &Module::open,
|
| | "open(string)\n"
|
| | "Create a new document and load the JT file into\n"
|
| | "the document."
|
| | );
|
| | add_varargs_method(
|
| | "insert",
|
| | &Module::importer,
|
| | "insert(string|mesh,[string])\n"
|
| | "Load or insert a JT file into the given or active document."
|
| | );
|
| | initialize("This module is the JtReader module.");
|
| | }
|
| |
|
| | private:
|
| |
|
| | Py::Object read(const Py::Tuple& args)
|
| | {
|
| | char* Name {};
|
| | if (!PyArg_ParseTuple(args.ptr(), "et", "utf-8", &Name)) {
|
| | throw Py::Exception();
|
| | }
|
| |
|
| | std::string EncodedName = std::string(Name);
|
| | PyMem_Free(Name);
|
| | return Py::None();
|
| | }
|
| | Py::Object open(const Py::Tuple& args)
|
| | {
|
| | char* Name {};
|
| | if (!PyArg_ParseTuple(args.ptr(), "et", "utf-8", &Name)) {
|
| | throw Py::Exception();
|
| | }
|
| |
|
| | std::string EncodedName = std::string(Name);
|
| | PyMem_Free(Name);
|
| |
|
| |
|
| |
|
| | Base::FileInfo file(EncodedName);
|
| | if (file.hasExtension("jt")) {
|
| | TestJtReader reader;
|
| | reader.setFile(EncodedName);
|
| | reader.read();
|
| |
|
| | #ifdef JTREADER_HAVE_TKJT
|
| | JtReaderNS::TKJtReader jtReader;
|
| | jtReader.open(EncodedName);
|
| |
|
| | App::Document* doc = App::GetApplication().newDocument();
|
| | std::string objname = file.fileNamePure();
|
| | auto iv = dynamic_cast<App::InventorObject*>(
|
| | doc->addObject("App::InventorObject", objname.c_str())
|
| | );
|
| | iv->Buffer.setValue(jtReader.getOutput());
|
| | iv->purgeTouched();
|
| | #endif
|
| |
|
| | return Py::None();
|
| | }
|
| |
|
| | throw Py::RuntimeError("unknown file ending");
|
| | }
|
| | Py::Object importer(const Py::Tuple& args)
|
| | {
|
| | char* Name {};
|
| | const char* DocName {};
|
| | if (!PyArg_ParseTuple(args.ptr(), "ets", "utf-8", &Name, &DocName)) {
|
| | throw Py::Exception();
|
| | }
|
| |
|
| | std::string EncodedName = std::string(Name);
|
| | PyMem_Free(Name);
|
| |
|
| | Base::FileInfo file(EncodedName.c_str());
|
| |
|
| | if (file.hasExtension("jt")) {
|
| |
|
| | App::Document* doc = App::GetApplication().getDocument(DocName);
|
| | if (!doc) {
|
| | doc = App::GetApplication().newDocument(DocName);
|
| | }
|
| |
|
| | #ifdef JTREADER_HAVE_TKJT
|
| | JtReaderNS::TKJtReader jtReader;
|
| | jtReader.open(EncodedName);
|
| |
|
| | std::string objname = file.fileNamePure();
|
| | auto iv = dynamic_cast<App::InventorObject*>(
|
| | doc->addObject("App::InventorObject", objname.c_str())
|
| | );
|
| | iv->Buffer.setValue(jtReader.getOutput());
|
| | iv->purgeTouched();
|
| | #endif
|
| |
|
| | return Py::None();
|
| | }
|
| |
|
| | throw Py::RuntimeError("unknown file ending");
|
| | }
|
| |
|
| | };
|
| |
|
| | PyObject* initModule()
|
| | {
|
| | return Base::Interpreter().addModule(new Module);
|
| | }
|
| |
|
| | }
|
| |
|