Commit
This commit does not belong to any branch on this repository, and may belong to a fork outside of the repository.
StepShape class and python binding for handling STep-Shape transfers.
- Loading branch information
Showing
6 changed files
with
258 additions
and
1 deletion.
There are no files selected for viewing
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Original file line number | Diff line number | Diff line change |
---|---|---|
@@ -0,0 +1,102 @@ | ||
/*************************************************************************** | ||
* (c) Jürgen Riegel (juergen.riegel@web.de) 2014 * | ||
* * | ||
* 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 <sstream> | ||
#endif | ||
|
||
#include "StepShape.h" | ||
|
||
# include <STEPControl_Reader.hxx> | ||
# include <StepData_StepModel.hxx> | ||
# include <StepData_StepModel.hxx> | ||
# include <Interface_Static.hxx> | ||
# include <Message_Messenger.hxx> | ||
# include <Message_PrinterOStream.hxx> | ||
|
||
# include <Base/FileInfo.h> | ||
# include <Base/Exception.h> | ||
|
||
using namespace Import; | ||
|
||
StepShape::StepShape(const char* fileName) | ||
{ | ||
} | ||
|
||
|
||
StepShape::~StepShape() | ||
{ | ||
} | ||
|
||
int StepShape::read(const char* fileName) | ||
{ | ||
STEPControl_Reader aReader; | ||
|
||
Base::FileInfo fi(fileName); | ||
|
||
if (!fi.exists()) { | ||
std::stringstream str; | ||
str << "File '" << fileName << "' does not exist!"; | ||
throw Base::Exception(str.str().c_str()); | ||
} | ||
|
||
if (aReader.ReadFile((Standard_CString)fileName) != IFSelect_RetDone) { | ||
throw Base::Exception("Cannot open STEP file"); | ||
} | ||
|
||
//Standard_Integer ic = Interface_Static::IVal("read.precision.mode"); | ||
//Standard_Real rp = Interface_Static::RVal("read.maxprecision.val"); | ||
//Standard_Integer ic = Interface_Static::IVal("read.maxprecision.mode"); | ||
//Standard_Integer mv = Interface_Static::IVal("read.stdsameparameter.mode"); | ||
//Standard_Integer rp = Interface_Static::IVal("read.surfacecurve.mode"); | ||
//Standard_Real era = Interface_Static::RVal("read.encoderegularity.angle"); | ||
//Standard_Integer ic = Interface_Static::IVal("read.step.product.mode"); | ||
//Standard_Integer ic = Interface_Static::IVal("read.step.product.context"); | ||
//Standard_Integer ic = Interface_Static::IVal("read.step.shape.repr"); | ||
//Standard_Integer ic = Interface_Static::IVal("read.step.assembly.level"); | ||
//Standard_Integer ic = Interface_Static::IVal("read.step.shape.relationship"); | ||
//Standard_Integer ic = Interface_Static::IVal("read.step.shape.aspect"); | ||
|
||
Handle(TColStd_HSequenceOfTransient) list = aReader.GiveList(); | ||
|
||
//Use method StepData_StepModel::NextNumberForLabel to find its rank with the following: | ||
Standard_CString label = "#..."; | ||
Handle_StepData_StepModel model = aReader.StepModel(); | ||
//rank = model->NextNumberForLabe(label, 0, Standard_False); | ||
|
||
Handle_Message_PrinterOStream mstr = new Message_PrinterOStream(); | ||
Handle_Message_Messenger msg = new Message_Messenger(mstr); | ||
|
||
std::cout << "dump of step header:" << std::endl; | ||
|
||
model->DumpHeader(msg); | ||
|
||
for(int nent=1;nent<=model->NbEntities();nent++) { | ||
Handle(Standard_Transient) entity=model->Entity(nent); | ||
|
||
std::cout << "label entity " << nent << ":" ; | ||
model->PrintLabel(entity,msg); | ||
std::cout << ";"<< entity->DynamicType()->Name() << std::endl; | ||
} | ||
} |
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Original file line number | Diff line number | Diff line change |
---|---|---|
@@ -0,0 +1,50 @@ | ||
/*************************************************************************** | ||
* (c) Jürgen Riegel (juergen.riegel@web.de) 2014 * | ||
* * | ||
* 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 IMPORT_STEPSHAPE_H | ||
#define IMPORT_STEPSHAPE_H | ||
|
||
|
||
|
||
namespace Import | ||
{ | ||
|
||
/** The StepShape helper class | ||
* The MeshFacet class provides an interface for the MeshFacetPy class for | ||
* convenient access to the Mesh data structure. This class should not be used | ||
* for programming algorithms in C++. Use Mesh Core classes instead! | ||
*/ | ||
class ImportExport StepShape | ||
{ | ||
public: | ||
StepShape(const char* fileName=""); | ||
~StepShape(); | ||
|
||
int read(const char* fileName); | ||
|
||
}; | ||
|
||
} // namespace Import | ||
|
||
|
||
#endif // IMPORT_STEPSHAPE_H |
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Original file line number | Diff line number | Diff line change |
---|---|---|
@@ -0,0 +1,30 @@ | ||
<?xml version="1.0" encoding="UTF-8"?> | ||
<GenerateModel xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xsi:noNamespaceSchemaLocation="generateMetaModel_Module.xsd"> | ||
<PythonExport | ||
Father="PyObjectBase" | ||
Name="StepShapePy" | ||
Twin="StepShape" | ||
TwinPointer="StepShape" | ||
Include="Mod/Import/App/StepShape.h" | ||
FatherInclude="Base/PyObjectBase.h" | ||
Namespace="Import" | ||
Constructor="true" | ||
Delete="true" | ||
FatherNamespace="Base"> | ||
<Documentation> | ||
<Author Licence="LGPL" Name="Juergen Riegel" EMail="Juergen.Riegel@web.de" /> | ||
<DeveloperDocu>StepShape in a Import</DeveloperDocu> | ||
<UserDocu>StepShape in Import | ||
This class gives a interface to retrive TopoShapes out of an loaded STEP file of any kind. | ||
</UserDocu> | ||
</Documentation> | ||
<Methode Name="read"> | ||
<Documentation> | ||
<UserDocu>method read() | ||
Read a STEP file into memory and makeit accessably | ||
</UserDocu> | ||
</Documentation> | ||
</Methode> | ||
|
||
</PythonExport> | ||
</GenerateModel> |
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Original file line number | Diff line number | Diff line change |
---|---|---|
@@ -0,0 +1,58 @@ | ||
|
||
#include "PreCompiled.h" | ||
|
||
#include "Mod/Import/App/StepShape.h" | ||
|
||
// inclusion of the generated files (generated out of StepShapePy.xml) | ||
#include "StepShapePy.h" | ||
#include "StepShapePy.cpp" | ||
|
||
using namespace Import; | ||
|
||
// returns a string which represents the object e.g. when printed in python | ||
std::string StepShapePy::representation(void) const | ||
{ | ||
return std::string("<StepShape object>"); | ||
} | ||
|
||
PyObject *StepShapePy::PyMake(struct _typeobject *, PyObject *, PyObject *) // Python wrapper | ||
{ | ||
// create a new instance of StepShapePy and the Twin object | ||
return new StepShapePy(new StepShape); | ||
} | ||
|
||
// constructor method | ||
int StepShapePy::PyInit(PyObject* args, PyObject* /*kwd*/) | ||
{ | ||
char* fileName; | ||
if (PyArg_ParseTuple(args, "s", &fileName)) { | ||
getStepShapePtr()->read(fileName); | ||
return 0; | ||
} | ||
|
||
PyErr_SetString(PyExc_TypeError, "StepShape needs a file name\n"); | ||
return -1; | ||
} | ||
|
||
|
||
PyObject* StepShapePy::read(PyObject * /*args*/) | ||
{ | ||
PyErr_SetString(PyExc_NotImplementedError, "Not yet implemented"); | ||
return 0; | ||
} | ||
|
||
|
||
|
||
|
||
|
||
PyObject *StepShapePy::getCustomAttributes(const char* /*attr*/) const | ||
{ | ||
return 0; | ||
} | ||
|
||
int StepShapePy::setCustomAttributes(const char* /*attr*/, PyObject* /*obj*/) | ||
{ | ||
return 0; | ||
} | ||
|
||
|