export the brep + create the file on the client side

This commit is contained in:
fps 2013-04-12 15:43:32 +00:00
parent 587e24773a
commit 15854f5a98
13 changed files with 96 additions and 62 deletions

View File

@ -4013,25 +4013,25 @@ module GEOM
{ {
/*! /*!
* Export a shape to XAO Format * Export a shape to XAO Format
* \param fileName The name of the exported file
* \param shape The shape to export * \param shape The shape to export
* \param groups The list of groups to export * \param groups The list of groups to export
* \param fields The list of fields to export * \param fields The list of fields to export
* \param xao The exported XAO
* \return boolean indicating if export was succeful. * \return boolean indicating if export was succeful.
*/ */
boolean ExportXAO(in string fileName, in GEOM_Object shape, in ListOfGO groups, in ListOfGO fields); boolean ExportXAO(in GEOM_Object shape, in ListOfGO groups, in ListOfGO fields, out string xao);
/*! /*!
* Import a shape from XAO Format * Import a shape from XAO Format
* \param fileName The name of the imported file * \param xao The XAO data to import
* \param shape The imported shape * \param shape The imported shape
* \param groups The list of imported groups * \param groups The list of imported groups
* \param fields The list of imported fields * \param fields The list of imported fields
* \return boolean indicating if import was succeful. * \return boolean indicating if import was succeful.
*/ */
//boolean ImportXAO(in string fileName, out GEOM_Object shape, out ListOfGO groups, out ListOfGO fields); //boolean ImportXAO(in string xao, out GEOM_Object shape, out ListOfGO groups, out ListOfGO fields);
/*@@ insert new functions before this line @@ do not remove this line @@*/ /*@@ insert new functions before this line @@ do not remove this line @@*/
}; };

View File

@ -626,8 +626,8 @@ module GEOM
//-----------------------------------------------------------// //-----------------------------------------------------------//
// ImportExportOperations // // ImportExportOperations //
//-----------------------------------------------------------// //-----------------------------------------------------------//
boolean ExportXAO(in string fileName, in GEOM_Object exportingShape, boolean ExportXAO(in GEOM_Object exportingShape,
in GEOM_List groups, in GEOM_List fields); in GEOM_List groups, in GEOM_List fields, out string xao);
// boolean ImportXAO(in string fileName, out GEOM_Object exportingShape, // boolean ImportXAO(in string fileName, out GEOM_Object exportingShape,
// out GEOM_List groups, out GEOM_List fields); // out GEOM_List groups, out GEOM_List fields);

View File

@ -4888,10 +4888,18 @@ be specified in meters).</translation>
<source>GEOM_IMPORTEXPORT_204</source> <source>GEOM_IMPORTEXPORT_204</source>
<translation>Export XAO</translation> <translation>Export XAO</translation>
</message> </message>
<message>
<source>GEOM_SELECT_EXPORT_XAO</source>
<translation>Export to XAO</translation>
</message>
<message> <message>
<source>XAO_FILES</source> <source>XAO_FILES</source>
<translation>XAO files (*.xao)</translation> <translation>XAO files (*.xao)</translation>
</message> </message>
<message>
<source>TOOLS_IMPORTEXPORT</source>
<translation>Import / Export</translation>
</message>
</context> </context>
<context> <context>
<name>BasicGUI_CurveDlg</name> <name>BasicGUI_CurveDlg</name>

View File

@ -4887,11 +4887,18 @@ le paramètre &apos;%1&apos; aux préférences du module Géométrie.</translati
<source>GEOM_IMPORTEXPORT_204</source> <source>GEOM_IMPORTEXPORT_204</source>
<translation>Export XAO</translation> <translation>Export XAO</translation>
</message> </message>
<message>
<source>GEOM_SELECT_EXPORT_XAO</source>
<translation>Export XAO</translation>
</message>
<message> <message>
<source>XAO_FILES</source> <source>XAO_FILES</source>
<translation>Fichiers XAO (*.xao)</translation> <translation>Fichiers XAO (*.xao)</translation>
</message> </message>
</context> <message>
<source>TOOLS_IMPORTEXPORT</source>
<translation>Import / Export</translation>
</message></context>
<context> <context>
<name>BasicGUI_CurveDlg</name> <name>BasicGUI_CurveDlg</name>
<message> <message>

View File

@ -111,17 +111,17 @@ GEOMImpl_IImportExportOperations::~GEOMImpl_IImportExportOperations()
//============================================================================= //=============================================================================
/*! /*!
* Export a shape to XAO Format * Export a shape to XAO Format
* \param fileName The name of the exported file
* \param shape The shape to export * \param shape The shape to export
* \param groups The list of groups to export * \param groups The list of groups to export
* \param fields The list of fields to export * \param fields The list of fields to export
* \param xao The exported XAO.
* \return boolean indicating if export was succeful. * \return boolean indicating if export was succeful.
*/ */
//============================================================================= //=============================================================================
bool GEOMImpl_IImportExportOperations::ExportXAO(const std::string fileName, bool GEOMImpl_IImportExportOperations::ExportXAO(Handle(GEOM_Object) shape,
Handle(GEOM_Object) shape,
std::list<Handle(GEOM_Object)> groupList, std::list<Handle(GEOM_Object)> groupList,
std::list<Handle(GEOM_Object)> fieldList) std::list<Handle(GEOM_Object)> fieldList,
char*& xao)
{ {
SetErrorCode(KO); SetErrorCode(KO);
@ -245,27 +245,32 @@ bool GEOMImpl_IImportExportOperations::ExportXAO(const std::string fileName,
xaoObject->addGroup(group); xaoObject->addGroup(group);
} }
xaoObject->exportToFile(fileName.c_str()); const char* data = xaoObject->getXML();
xao = new char[strlen(data)];
strcpy(xao, data);
delete data;
// make a Python command // make a Python command
/*TCollection_AsciiString fileNameStr = fileName.c_str();
GEOM::TPythonDump pd(exportFunction); GEOM::TPythonDump pd(exportFunction);
std::list<Handle(GEOM_Object)>::iterator itG = groupList.begin(); pd << "exported = geompy.ExportXAO(";
std::list<Handle(GEOM_Object)>::iterator itF = fieldList.begin();
//pd << /*isGood <<**" = geompy.ExportXAO(" << shape << ", " << fileNameStr.ToCString() << ", [";
pd << (*itG++); pd << shape << "shpae, [], [], xao";
while (itG != groupList.end()) pd << ")";
{
pd << ", " << (*itG++); // std::list<Handle(GEOM_Object)>::iterator itG = groupList.begin();
} // pd << (*itG++);
pd << "], ["; // while (itG != groupList.end())
pd << (*itF++); // {
while (itF != fieldList.end()) // pd << ", " << (*itG++);
{ // }
pd << ", " << (*itF++); // pd << "], [";
} // std::list<Handle(GEOM_Object)>::iterator itF = fieldList.begin();
pd << "])";*/ // pd << (*itF++);
// while (itF != fieldList.end())
// {
// pd << ", " << (*itF++);
// }
// pd << "])";
SetErrorCode(OK); SetErrorCode(OK);

View File

@ -44,10 +44,10 @@ public:
Standard_EXPORT GEOMImpl_IImportExportOperations(GEOM_Engine* engine, int docID); Standard_EXPORT GEOMImpl_IImportExportOperations(GEOM_Engine* engine, int docID);
Standard_EXPORT ~GEOMImpl_IImportExportOperations(); Standard_EXPORT ~GEOMImpl_IImportExportOperations();
Standard_EXPORT bool ExportXAO (const std::string fileName, Standard_EXPORT bool ExportXAO(Handle(GEOM_Object) shape,
Handle(GEOM_Object) shape,
std::list<Handle(GEOM_Object)> groupList, std::list<Handle(GEOM_Object)> groupList,
std::list<Handle(GEOM_Object)> fieldList); std::list<Handle(GEOM_Object)> fieldList,
char*& xao);
// Standard_EXPORT bool ImportXAO (const std::string fileName, // Standard_EXPORT bool ImportXAO (const std::string fileName,
// Handle(GEOM_Object) shape, // Handle(GEOM_Object) shape,
// std::list<Handle(GEOM_Object)> groupList, // std::list<Handle(GEOM_Object)> groupList,

View File

@ -64,17 +64,17 @@ GEOM_IImportExportOperations_i::~GEOM_IImportExportOperations_i()
* \return boolean indicating if export was succeful. * \return boolean indicating if export was succeful.
*/ */
//============================================================================= //=============================================================================
CORBA::Boolean GEOM_IImportExportOperations_i::ExportXAO(const char* fileName, CORBA::Boolean GEOM_IImportExportOperations_i::ExportXAO(GEOM::GEOM_Object_ptr shape,
GEOM::GEOM_Object_ptr shape, const GEOM::ListOfGO& groups, const GEOM::ListOfGO& fields) const GEOM::ListOfGO& groups, const GEOM::ListOfGO& fields, CORBA::String_out xao)
{ {
bool isGood = false; bool isGood = false;
//Set a not done flag // Set a not done flag
GetOperations()->SetNotDone(); GetOperations()->SetNotDone();
// Get the reference shape // Get the reference shape
Handle(GEOM_Object) reference = GetObjectImpl(shape); Handle(GEOM_Object) reference = GetObjectImpl(shape);
//Get the reference groups // Get the reference groups
int ind = 0; int ind = 0;
std::list<Handle(GEOM_Object)> groupsObj; std::list<Handle(GEOM_Object)> groupsObj;
for (; ind < groups.length(); ind++) for (; ind < groups.length(); ind++)
@ -84,7 +84,7 @@ CORBA::Boolean GEOM_IImportExportOperations_i::ExportXAO(const char* fileName,
groupsObj.push_back(gobj); groupsObj.push_back(gobj);
} }
//Get the reference point // Get the reference fields
ind = 0; ind = 0;
std::list<Handle(GEOM_Object)> fieldsObj; std::list<Handle(GEOM_Object)> fieldsObj;
for (; ind < fields.length(); ind++) for (; ind < fields.length(); ind++)
@ -97,7 +97,10 @@ CORBA::Boolean GEOM_IImportExportOperations_i::ExportXAO(const char* fileName,
if (!reference.IsNull()) if (!reference.IsNull())
{ {
// Export XAO // Export XAO
isGood = GetOperations()->ExportXAO(fileName, reference, groupsObj, fieldsObj); char* data;
isGood = GetOperations()->ExportXAO(reference, groupsObj, fieldsObj, data);
xao = CORBA::string_dup(data);
delete data;
} }
return isGood; return isGood;
@ -106,14 +109,14 @@ CORBA::Boolean GEOM_IImportExportOperations_i::ExportXAO(const char* fileName,
//============================================================================= //=============================================================================
/*! /*!
* Import a shape from XAO Format * Import a shape from XAO Format
* \param fileName The name of the imported file * \param xao The XAO data to import
* \param shape The imported shape * \param shape The imported shape
* \param groups The list of imported groups * \param groups The list of imported groups
* \param fields The list of imported fields * \param fields The list of imported fields
* \return boolean indicating if import was succeful. * \return boolean indicating if import was succeful.
*/ */
//============================================================================= //=============================================================================
//bool GEOMImpl_IImportExportOperations::ImportXAO(const std::string fileName, //bool GEOMImpl_IImportExportOperations::ImportXAO(const std::xao fileName,
// Handle(GEOM_Object), // Handle(GEOM_Object),
// std::list<Handle_GEOM_Object, std::allocator<Handle_GEOM_Object> > groups, // std::list<Handle_GEOM_Object, std::allocator<Handle_GEOM_Object> > groups,
// std::list<Handle_GEOM_Object, std::allocator<Handle_GEOM_Object> > fields) // std::list<Handle_GEOM_Object, std::allocator<Handle_GEOM_Object> > fields)

View File

@ -42,11 +42,11 @@ public:
::GEOMImpl_IImportExportOperations* theImpl); ::GEOMImpl_IImportExportOperations* theImpl);
~GEOM_IImportExportOperations_i(); ~GEOM_IImportExportOperations_i();
CORBA::Boolean ExportXAO (const char* fileName, CORBA::Boolean ExportXAO (GEOM::GEOM_Object_ptr shape,
GEOM::GEOM_Object_ptr shape,
const GEOM::ListOfGO& groups, const GEOM::ListOfGO& groups,
const GEOM::ListOfGO& fields); const GEOM::ListOfGO& fields,
CORBA::Boolean ImportXAO (const char* fileName, GEOM::GEOM_Object_out shape, CORBA::String_out xao);
CORBA::Boolean ImportXAO (const char* xao, GEOM::GEOM_Object_out shape,
GEOM::ListOfGO_out groups, GEOM::ListOfGO_out groups,
GEOM::ListOfGO_out fields); GEOM::ListOfGO_out fields);
/*@@ insert new functions before this line @@ do not remove this line @@*/ /*@@ insert new functions before this line @@ do not remove this line @@*/

View File

@ -3451,8 +3451,8 @@ GEOM::GEOM_Object_ptr GEOM_Superv_i::MakeDividedCylinder (CORBA::Double theR,
//============================================================================= //=============================================================================
// ExportXAO // ExportXAO
//============================================================================= //=============================================================================
CORBA::Boolean GEOM_Superv_i::ExportXAO (const char* fileName, GEOM::GEOM_Object_ptr shape, CORBA::Boolean GEOM_Superv_i::ExportXAO (GEOM::GEOM_Object_ptr shape,
GEOM::GEOM_List_ptr groups, GEOM::GEOM_List_ptr fields) GEOM::GEOM_List_ptr groups, GEOM::GEOM_List_ptr fields, CORBA::String_out xao)
{ {
beginService( " GEOM_Superv_i::ExportXAO" ); beginService( " GEOM_Superv_i::ExportXAO" );
MESSAGE("GEOM_Superv_i::ExportXAO"); MESSAGE("GEOM_Superv_i::ExportXAO");
@ -3463,7 +3463,7 @@ CORBA::Boolean GEOM_Superv_i::ExportXAO (const char* fileName, GEOM::GEOM_Object
if (GEOM_List_i<GEOM::ListOfGO>* fieldList = if (GEOM_List_i<GEOM::ListOfGO>* fieldList =
dynamic_cast<GEOM_List_i<GEOM::ListOfGO>*>(GetServant(fields, myPOA).in())) dynamic_cast<GEOM_List_i<GEOM::ListOfGO>*>(GetServant(fields, myPOA).in()))
{ {
CORBA::Boolean isGood = myImportExportOp->ExportXAO(fileName, shape, groupList->GetList(), fieldList->GetList()); CORBA::Boolean isGood = myImportExportOp->ExportXAO(shape, groupList->GetList(), fieldList->GetList(), xao);
endService( " GEOM_Superv_i::ExportXAO" ); endService( " GEOM_Superv_i::ExportXAO" );
return isGood; return isGood;
} }

View File

@ -715,8 +715,8 @@ public:
//-----------------------------------------------------------// //-----------------------------------------------------------//
// ImportExport Operations // // ImportExport Operations //
//-----------------------------------------------------------// //-----------------------------------------------------------//
CORBA::Boolean ExportXAO(const char* fileName, CORBA::Boolean ExportXAO(GEOM::GEOM_Object_ptr shape,
GEOM::GEOM_Object_ptr shape, GEOM::GEOM_List_ptr groups, GEOM::GEOM_List_ptr fields); GEOM::GEOM_List_ptr groups, GEOM::GEOM_List_ptr fields, CORBA::String_out xao);
// CORBA::Boolean ImportXAO(const char* fileName, GEOM::GEOM_Object_out shape, // CORBA::Boolean ImportXAO(const char* fileName, GEOM::GEOM_Object_out shape,
// GEOM::GEOM_List_out groups, GEOM::GEOM_List_out fields); // GEOM::GEOM_List_out groups, GEOM::GEOM_List_out fields);
/*@@ insert new functions before this line @@ do not remove this line @@*/ /*@@ insert new functions before this line @@ do not remove this line @@*/

View File

@ -273,7 +273,8 @@ void ImportExportGUI_ExportXAODlg::SetEditCurrentArgument()
//================================================================================= //=================================================================================
void ImportExportGUI_ExportXAODlg::btnFileSelectClicked() void ImportExportGUI_ExportXAODlg::btnFileSelectClicked()
{ {
QString selFile = QFileDialog::getSaveFileName(this, tr("GEOM_SELECT_XAO"), QString(), tr("XAO_FILES")); QString selFile = QFileDialog::getSaveFileName(this, tr("GEOM_SELECT_EXPORT_XAO"),
QString(), tr("XAO_FILES"));
if (!selFile.isEmpty()) if (!selFile.isEmpty())
{ {
ledFileName->setText(selFile); ledFileName->setText(selFile);
@ -338,15 +339,15 @@ bool ImportExportGUI_ExportXAODlg::execute(ObjectList& objects)
GEOM::ListOfGO_var groups = new GEOM::ListOfGO(); GEOM::ListOfGO_var groups = new GEOM::ListOfGO();
groups->length(selGroups.count()); groups->length(selGroups.count());
int i = 0; int i = 0;
for (QList<QListWidgetItem*>::iterator it = selGroups.begin(); it != selGroups.end(); ++it) for (QList<QListWidgetItem*>::iterator it = selGroups.begin(); it != selGroups.end(); ++it)
{ {
QListWidgetItem* item = (*it); QListWidgetItem* item = (*it);
int index = item->data(Qt::UserRole).toInt(); int index = item->data(Qt::UserRole).toInt();
groups[i++] = m_groups[index].copy(); groups[i++] = m_groups[index].copy();
} }
// get selected fields // get selected fields
QList<QListWidgetItem*> selFields = lstFields->selectedItems(); QList<QListWidgetItem*> selFields = lstFields->selectedItems();
GEOM::ListOfGO_var fields = new GEOM::ListOfGO(); GEOM::ListOfGO_var fields = new GEOM::ListOfGO();
fields->length(m_fields.count()); fields->length(m_fields.count());
for (QList<QListWidgetItem*>::iterator it = selFields.begin(); it != selFields.end(); ++it) for (QList<QListWidgetItem*>::iterator it = selFields.begin(); it != selFields.end(); ++it)
@ -358,8 +359,15 @@ bool ImportExportGUI_ExportXAODlg::execute(ObjectList& objects)
// call engine function // call engine function
GEOM::GEOM_IImportExportOperations_var ieOp = GEOM::GEOM_IImportExportOperations::_narrow(getOperation()); GEOM::GEOM_IImportExportOperations_var ieOp = GEOM::GEOM_IImportExportOperations::_narrow(getOperation());
res = ieOp->ExportXAO(ledFileName->text().toStdString().c_str(), char* xao;
m_mainObj, groups, fields); res = ieOp->ExportXAO(m_mainObj, groups, fields, xao);
// dump xao to file
ofstream exportFile;
exportFile.open(ledFileName->text().toStdString().c_str());
exportFile << xao;
exportFile.close();
delete xao;
return res; return res;
} }

View File

@ -54,7 +54,7 @@ Geometry::~Geometry()
{ {
} }
void Geometry::setShape(TopoDS_Shape shape) void Geometry::setShape(const TopoDS_Shape& shape)
{ {
m_shape = shape; m_shape = shape;
@ -82,7 +82,10 @@ const char* Geometry::getBREP()
{ {
std::ostringstream streamShape; std::ostringstream streamShape;
BRepTools::Write(m_shape, streamShape); BRepTools::Write(m_shape, streamShape);
return streamShape.str().c_str(); std::string data = streamShape.str();
char* res = new char[data.size()];
strcpy(res, data.c_str());
return res;
} }
void Geometry::initListIds(const Standard_Integer shapeType) void Geometry::initListIds(const Standard_Integer shapeType)

View File

@ -58,7 +58,7 @@ namespace XAO
{ {
return m_shape; return m_shape;
} }
void setShape(TopoDS_Shape shape); void setShape(const TopoDS_Shape& shape);
const char* getBREP(); const char* getBREP();
void setShape(const char* brep); void setShape(const char* brep);