]> SALOME platform Git repositories - modules/geom.git/commitdiff
Salome HOME
export the brep + create the file on the client side
authorfps <fps@opencascade.com>
Fri, 12 Apr 2013 15:43:32 +0000 (15:43 +0000)
committerfps <fps@opencascade.com>
Fri, 12 Apr 2013 15:43:32 +0000 (15:43 +0000)
13 files changed:
idl/GEOM_Gen.idl
idl/GEOM_Superv.idl
src/GEOMGUI/GEOM_msg_en.ts
src/GEOMGUI/GEOM_msg_fr.ts
src/GEOMImpl/GEOMImpl_IImportExportOperations.cxx
src/GEOMImpl/GEOMImpl_IImportExportOperations.hxx
src/GEOM_I/GEOM_IImportExportOperations_i.cc
src/GEOM_I/GEOM_IImportExportOperations_i.hh
src/GEOM_I_Superv/GEOM_Superv_i.cc
src/GEOM_I_Superv/GEOM_Superv_i.hh
src/ImportExportGUI/ImportExportGUI_ExportXAODlg.cxx
src/XAO/Geometry.cxx
src/XAO/Geometry.hxx

index 2949b27ef9317ee6cf5511a5f8265df5d94f9987..eb69c45b8f3216f4dc426796400ed8e54a3cf806 100644 (file)
@@ -4013,25 +4013,25 @@ module GEOM
   {
     /*!
      *  Export a shape to XAO Format
-     *  \param fileName The name of the exported file
      *  \param shape The shape to export
      *  \param groups The list of groups to export
      *  \param fields The list of fields to export
+     *  \param xao The exported XAO
      *  \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
-      *  \param fileName The name of the imported file
+      *  \param xao The XAO data to import
       *  \param shape The imported shape
       *  \param groups The list of imported groups
       *  \param fields The list of imported fields
       *  \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 @@*/
   };
index 8ab115aab55907cff12cfe01d7451a2f7e01e992..3859474cfb354bf39f04eeb7c2fa71c938c729f7 100644 (file)
@@ -626,8 +626,8 @@ module GEOM
     //-----------------------------------------------------------//
     // ImportExportOperations                                    //
     //-----------------------------------------------------------//
-    boolean ExportXAO(in string fileName, in GEOM_Object exportingShape,
-            in GEOM_List groups, in GEOM_List fields);
+    boolean ExportXAO(in GEOM_Object exportingShape,
+            in GEOM_List groups, in GEOM_List fields, out string xao);
 //    boolean ImportXAO(in string fileName, out GEOM_Object exportingShape,
 //            out GEOM_List groups, out GEOM_List fields);
 
index 9a9da47b3dc6ddea4161f96ce42c5b406aa8f498..3e4930d7ce857ce05780a1dfc160a320d57ebd4a 100644 (file)
@@ -4888,10 +4888,18 @@ be specified in meters).</translation>
         <source>GEOM_IMPORTEXPORT_204</source>
         <translation>Export XAO</translation>
     </message>
+    <message>
+        <source>GEOM_SELECT_EXPORT_XAO</source>
+        <translation>Export to XAO</translation>
+    </message>
     <message>
         <source>XAO_FILES</source>
         <translation>XAO files (*.xao)</translation>
     </message>
+    <message>
+        <source>TOOLS_IMPORTEXPORT</source>
+        <translation>Import / Export</translation>
+    </message>
 </context>
 <context>
     <name>BasicGUI_CurveDlg</name>
index dea9cceb514a91c310c2c773361fd9ee7d781aa6..d3b61091e162d95e7431304d2a00d9e69b78a42d 100644 (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>
         <translation>Export XAO</translation>
     </message>
+    <message>
+        <source>GEOM_SELECT_EXPORT_XAO</source>
+        <translation>Export XAO</translation>
+    </message>
     <message>
         <source>XAO_FILES</source>
         <translation>Fichiers XAO (*.xao)</translation>
     </message>
-</context>
+    <message>
+        <source>TOOLS_IMPORTEXPORT</source>
+        <translation>Import / Export</translation>
+    </message></context>
 <context>
     <name>BasicGUI_CurveDlg</name>
     <message>
index 01b7f80be2242a456d2fe4b352ae6f9629991d22..641e7d435c2a25dd1a8ba60b655329adf88f1367 100644 (file)
@@ -111,17 +111,17 @@ GEOMImpl_IImportExportOperations::~GEOMImpl_IImportExportOperations()
 //=============================================================================
 /*!
  *  Export a shape to XAO Format
- *  \param fileName The name of the exported file
  *  \param shape The shape to export
  *  \param groups The list of groups to export
  *  \param fields The list of fields to export
+ *  \param xao The exported XAO.
  *  \return boolean indicating if export was succeful.
  */
 //=============================================================================
-bool GEOMImpl_IImportExportOperations::ExportXAO(const std::string fileName,
-        Handle(GEOM_Object) shape,
+bool GEOMImpl_IImportExportOperations::ExportXAO(Handle(GEOM_Object) shape,
         std::list<Handle(GEOM_Object)> groupList,
-        std::list<Handle(GEOM_Object)> fieldList)
+        std::list<Handle(GEOM_Object)> fieldList,
+        char*& xao)
 {
     SetErrorCode(KO);
 
@@ -245,27 +245,32 @@ bool GEOMImpl_IImportExportOperations::ExportXAO(const std::string fileName,
         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
-    /*TCollection_AsciiString fileNameStr = fileName.c_str();
     GEOM::TPythonDump pd(exportFunction);
-    std::list<Handle(GEOM_Object)>::iterator itG = groupList.begin();
-    std::list<Handle(GEOM_Object)>::iterator itF = fieldList.begin();
-    //pd << /*isGood <<**" = geompy.ExportXAO(" << shape << ", " << fileNameStr.ToCString() << ", [";
-
-    pd << (*itG++);
-    while (itG != groupList.end())
-    {
-        pd << ", " << (*itG++);
-    }
-    pd << "], [";
-    pd << (*itF++);
-    while (itF != fieldList.end())
-    {
-        pd << ", " << (*itF++);
-    }
-    pd << "])";*/
+    pd << "exported = geompy.ExportXAO(";
+
+    pd << shape << "shpae, [], [], xao";
+    pd << ")";
+
+//    std::list<Handle(GEOM_Object)>::iterator itG = groupList.begin();
+//    pd << (*itG++);
+//    while (itG != groupList.end())
+//    {
+//        pd << ", " << (*itG++);
+//    }
+//    pd << "], [";
+//    std::list<Handle(GEOM_Object)>::iterator itF = fieldList.begin();
+//    pd << (*itF++);
+//    while (itF != fieldList.end())
+//    {
+//        pd << ", " << (*itF++);
+//    }
+//    pd << "])";
 
     SetErrorCode(OK);
 
index fcc19c39d1cb0630ac1dc3fb9983c8bc5503a48e..66992b855b4dc0a46f42361b4e6914850a6c418f 100644 (file)
@@ -44,10 +44,10 @@ public:
     Standard_EXPORT GEOMImpl_IImportExportOperations(GEOM_Engine* engine, int docID);
     Standard_EXPORT ~GEOMImpl_IImportExportOperations();
 
-    Standard_EXPORT bool ExportXAO (const std::string fileName,
-            Handle(GEOM_Object) shape,
+    Standard_EXPORT bool ExportXAO(Handle(GEOM_Object) shape,
             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,
 //            Handle(GEOM_Object) shape,
 //            std::list<Handle(GEOM_Object)> groupList,
index e9c257a4868276f8840de1a07d22c6c8af1a2b0e..2bef07a51ec726bc7674e53909deb9fe5f50c2d9 100644 (file)
@@ -64,17 +64,17 @@ GEOM_IImportExportOperations_i::~GEOM_IImportExportOperations_i()
  *  \return boolean indicating if export was succeful.
  */
 //=============================================================================
-CORBA::Boolean GEOM_IImportExportOperations_i::ExportXAO(const char* fileName,
-        GEOM::GEOM_Object_ptr shape, const GEOM::ListOfGO& groups, const GEOM::ListOfGO& fields)
+CORBA::Boolean GEOM_IImportExportOperations_i::ExportXAO(GEOM::GEOM_Object_ptr shape,
+        const GEOM::ListOfGO& groups, const GEOM::ListOfGO& fields, CORBA::String_out xao)
 {
     bool isGood = false;
-    //Set a not done flag
+    // Set a not done flag
     GetOperations()->SetNotDone();
 
     // Get the reference shape
     Handle(GEOM_Object) reference = GetObjectImpl(shape);
 
-    //Get the reference groups
+    // Get the reference groups
     int ind = 0;
     std::list<Handle(GEOM_Object)> groupsObj;
     for (; ind < groups.length(); ind++)
@@ -84,7 +84,7 @@ CORBA::Boolean GEOM_IImportExportOperations_i::ExportXAO(const char* fileName,
         groupsObj.push_back(gobj);
     }
 
-    //Get the reference point
+    // Get the reference fields
     ind = 0;
     std::list<Handle(GEOM_Object)> fieldsObj;
     for (; ind < fields.length(); ind++)
@@ -97,7 +97,10 @@ CORBA::Boolean GEOM_IImportExportOperations_i::ExportXAO(const char* fileName,
     if (!reference.IsNull())
     {
         // 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;
@@ -106,14 +109,14 @@ CORBA::Boolean GEOM_IImportExportOperations_i::ExportXAO(const char* fileName,
 //=============================================================================
 /*!
  *  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 groups The list of imported groups
  *  \param fields The list of imported fields
  *  \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),
 //        std::list<Handle_GEOM_Object, std::allocator<Handle_GEOM_Object> > groups,
 //        std::list<Handle_GEOM_Object, std::allocator<Handle_GEOM_Object> > fields)
index f47460bd8ae1013acb521a4d277e6a1163ad6152..547405e1ed34fa73129ea72dbe56513c153c8565 100644 (file)
@@ -42,11 +42,11 @@ public:
             ::GEOMImpl_IImportExportOperations* theImpl);
     ~GEOM_IImportExportOperations_i();
 
-    CORBA::Boolean ExportXAO (const char* fileName,
-            GEOM::GEOM_Object_ptr shape,
+    CORBA::Boolean ExportXAO (GEOM::GEOM_Object_ptr shape,
             const GEOM::ListOfGO& groups,
-            const GEOM::ListOfGO& fields);
-    CORBA::Boolean ImportXAO (const char* fileName, GEOM::GEOM_Object_out shape,
+            const GEOM::ListOfGO& fields,
+            CORBA::String_out xao);
+    CORBA::Boolean ImportXAO (const char* xao, GEOM::GEOM_Object_out shape,
             GEOM::ListOfGO_out groups,
             GEOM::ListOfGO_out fields);
     /*@@ insert new functions before this line @@ do not remove this line @@*/
index 6846808ac10a81a296496193379fd7ece7e6b715..40829987044395a323cca55907c0909dd640407e 100644 (file)
@@ -3451,8 +3451,8 @@ GEOM::GEOM_Object_ptr GEOM_Superv_i::MakeDividedCylinder (CORBA::Double theR,
 //=============================================================================
 //  ExportXAO
 //=============================================================================
-CORBA::Boolean GEOM_Superv_i::ExportXAO (const char* fileName, GEOM::GEOM_Object_ptr shape,
-        GEOM::GEOM_List_ptr groups, GEOM::GEOM_List_ptr fields)
+CORBA::Boolean GEOM_Superv_i::ExportXAO (GEOM::GEOM_Object_ptr shape,
+        GEOM::GEOM_List_ptr groups, GEOM::GEOM_List_ptr fields, CORBA::String_out xao)
 {
   beginService( " 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 =
         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" );
       return isGood;
     }
index f66cfbcf5aadf809d133326d80dc2301424bf12a..c0e7351d4d303f5ae4e27fc0fa10b69c8883316c 100644 (file)
@@ -715,8 +715,8 @@ public:
   //-----------------------------------------------------------//
   // ImportExport Operations                                   //
   //-----------------------------------------------------------//
-  CORBA::Boolean ExportXAO(const char* fileName,
-          GEOM::GEOM_Object_ptr shape, GEOM::GEOM_List_ptr groups, GEOM::GEOM_List_ptr fields);
+  CORBA::Boolean ExportXAO(GEOM::GEOM_Object_ptr shape,
+          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,
 //          GEOM::GEOM_List_out groups, GEOM::GEOM_List_out fields);
   /*@@ insert new functions before this line @@ do not remove this line @@*/
index 845f74243d86150ee40d1f52cecc5cb1481c2472..76d25064640307719b89ad0e41b537b9d539f4fe 100644 (file)
@@ -273,7 +273,8 @@ void ImportExportGUI_ExportXAODlg::SetEditCurrentArgument()
 //=================================================================================
 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())
     {
         ledFileName->setText(selFile);
@@ -338,15 +339,15 @@ bool ImportExportGUI_ExportXAODlg::execute(ObjectList& objects)
     GEOM::ListOfGO_var groups = new GEOM::ListOfGO();
     groups->length(selGroups.count());
     int i = 0;
-     for (QList<QListWidgetItem*>::iterator it = selGroups.begin(); it != selGroups.end(); ++it)
-     {
-         QListWidgetItem* item = (*it);
-         int index = item->data(Qt::UserRole).toInt();
-         groups[i++] = m_groups[index].copy();
-     }
-
-     // get selected fields
-     QList<QListWidgetItem*> selFields = lstFields->selectedItems();
+    for (QList<QListWidgetItem*>::iterator it = selGroups.begin(); it != selGroups.end(); ++it)
+    {
+        QListWidgetItem* item = (*it);
+        int index = item->data(Qt::UserRole).toInt();
+        groups[i++] = m_groups[index].copy();
+    }
+
+    // get selected fields
+    QList<QListWidgetItem*> selFields = lstFields->selectedItems();
     GEOM::ListOfGO_var fields = new GEOM::ListOfGO();
     fields->length(m_fields.count());
     for (QList<QListWidgetItem*>::iterator it = selFields.begin(); it != selFields.end(); ++it)
@@ -358,8 +359,15 @@ bool ImportExportGUI_ExportXAODlg::execute(ObjectList& objects)
 
     // call engine function
     GEOM::GEOM_IImportExportOperations_var ieOp = GEOM::GEOM_IImportExportOperations::_narrow(getOperation());
-    res = ieOp->ExportXAO(ledFileName->text().toStdString().c_str(),
-            m_mainObj, groups, fields);
+    char* xao;
+    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;
 }
index 5dc25f7510fd8a5bf42ef23783bd7a36de90954a..d02ca6b0a853619a70c82866825241aadd848d3a 100644 (file)
@@ -54,7 +54,7 @@ Geometry::~Geometry()
 {
 }
 
-void Geometry::setShape(TopoDS_Shape shape)
+void Geometry::setShape(const TopoDS_Shape& shape)
 {
     m_shape = shape;
 
@@ -82,7 +82,10 @@ const char* Geometry::getBREP()
 {
     std::ostringstream 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)
index aaf4b6bd6e6e9ee884c04a8fe4df6803ad27d5aa..e083be91236caf69f03216295dcfadfb11dd527c 100644 (file)
@@ -58,7 +58,7 @@ namespace XAO
         {
             return m_shape;
         }
-        void setShape(TopoDS_Shape shape);
+        void setShape(const TopoDS_Shape& shape);
 
         const char* getBREP();
         void setShape(const char* brep);