]> SALOME platform Git repositories - modules/geom.git/commitdiff
Salome HOME
New OCAF doc reading/writing for OCCT7.0.0 mpa/OCCT-7.0.0_Porting
authorskv <skv@opencascade.com>
Mon, 4 Apr 2016 13:41:31 +0000 (16:41 +0300)
committerskv <skv@opencascade.com>
Mon, 4 Apr 2016 13:41:31 +0000 (16:41 +0300)
resources/GEOMDS_Resources
resources/Plugin.in
src/GEOM/GEOM_Application.cxx
src/GEOM/GEOM_Engine.cxx
src/GEOM_I/GEOM_Gen_i.cc [changed mode: 0755->0644]

index 06f018f225acb4068bc3a986243d3edb2c1aedf5..deb6655f92d9cf684edeed5edf7e33338638dfb2 100644 (file)
@@ -1,5 +1,7 @@
-formatlist:SALOME_GEOM
-
+formatlist:SALOME_GEOM|BinOcaf
+!
+! SALOME_GEOM format
+!
 SALOME_GEOM.Description: GEOM Document Version 1.0
 SALOME_GEOM.FileExtension: sgd
 SALOME_GEOM.StoragePlugin: ad696000-5b34-11d1-b5ba-00a0c9064368
@@ -7,4 +9,10 @@ SALOME_GEOM.RetrievalPlugin: ad696001-5b34-11d1-b5ba-00a0c9064368
 SALOME_GEOMSchema: ad696002-5b34-11d1-b5ba-00a0c9064368
 SALOME_GEOM.AttributeStoragePlugin: 47b0b826-d931-11d1-b5da-00a0c9064368
 SALOME_GEOM.AttributeRetrievalPlugin: 47b0b827-d931-11d1-b5da-00a0c9064368
-
+!
+! BinOcaf format
+!
+BinOcaf.Description: Bin Ocaf Document Version 1.0
+BinOcaf.FileExtension: cbf
+BinOcaf.StoragePlugin: 03a56835-8269-11d5-aab2-0050044b1af1
+BinOcaf.RetrievalPlugin: 03a56836-8269-11d5-aab2-0050044b1af1
index 771dbabd39e815522f1dca23b6573486f8a1db40..2d5485bf942a9de50cc9e1beef821bd0ef43e531 100644 (file)
@@ -5,4 +5,11 @@ a148e300-5740-11d1-a904-080036aaa103.Location: FWOSPlugin
 !
 ! standard attribute drivers plugin
 !
+ad696000-5b34-11d1-b5ba-00a0c9064368.Location: @CAS_STDPLUGIN@
 ad696001-5b34-11d1-b5ba-00a0c9064368.Location: @CAS_STDPLUGIN@
+ad696002-5b34-11d1-b5ba-00a0c9064368.Location: @CAS_STDPLUGIN@
+!
+! BinOcaf Document Plugin
+!
+03a56835-8269-11d5-aab2-0050044b1af1.Location: @CAS_BINPLUGIN@
+03a56836-8269-11d5-aab2-0050044b1af1.Location: @CAS_BINPLUGIN@
index 673977810acef244d0d607ffc335b5061e8fc851..a3c84dc44a46b5681d9c24873694519ddef03305 100644 (file)
@@ -50,6 +50,9 @@ GEOM_Application::~GEOM_Application()
 void GEOM_Application::Formats(TColStd_SequenceOfExtendedString& Formats) 
 {  
   Formats.Append(TCollection_ExtendedString ("SALOME_GEOM"));
+#if OCC_VERSION_MAJOR > 6
+  Formats.Append(TCollection_ExtendedString ("BinOcaf"));
+#endif
 }
 
 
index d89a590d7d3eb16687c463d83d08764054b5152b..c56069990382610a06cff5224bcc4a816e5394a0 100644 (file)
@@ -264,7 +264,11 @@ Handle(TDocStd_Document) GEOM_Engine::GetDocument(int theDocID, bool force)
     aDoc = Handle(TDocStd_Document)::DownCast(_mapIDDocument(theDocID));
   }
   else if (force) {
+#if OCC_VERSION_MAJOR > 6
+    _OCAFApp->NewDocument("BinOcaf", aDoc);
+#else
     _OCAFApp->NewDocument("SALOME_GEOM", aDoc);
+#endif
     aDoc->SetUndoLimit(_UndoLimit);
     _mapIDDocument.Bind(theDocID, aDoc);
     TDataStd_Integer::Set(aDoc->Main(), theDocID);
@@ -563,6 +567,13 @@ bool GEOM_Engine::Load(int theDocID, const char* theFileName)
     return false;
   }
 
+#if OCC_VERSION_MAJOR > 6
+  // Replace old document format by the new one.
+  if (aDoc->StorageFormat().IsEqual("SALOME_GEOM")) {
+    aDoc->ChangeStorageFormat("BinOcaf");
+  }
+#endif
+
   aDoc->SetUndoLimit(_UndoLimit);
 
   if(_mapIDDocument.IsBound(theDocID)) _mapIDDocument.UnBind(theDocID);
@@ -1877,7 +1888,7 @@ TCollection_AsciiString GetPublishCommands
       if (aRefIt != theMapRefs.end()) {
         // Recursively publish all references.
         std::list< int >::const_iterator aRefTagIt = aRefIt->second.begin();
-  
+
         for(; aRefTagIt != aRefIt->second.end(); ++aRefTagIt) {
           const TCollection_AsciiString aRefCmd = GetPublishCommands
             (*aRefTagIt, theEntryToCmdMap, theMapRefs, thePublished);
old mode 100755 (executable)
new mode 100644 (file)
index 32bc310..b9e49d6
@@ -600,7 +600,11 @@ SALOMEDS::TMPFile* GEOM_Gen_i::Save(SALOMEDS::SComponent_ptr theComponent,
   if (isMultiFile)
     aNameWithExt = TCollection_AsciiString((char*)(SALOMEDS_Tool::GetNameFromPath
                                                    (theComponent->GetStudy()->URL())).c_str());
+#if OCC_VERSION_MAJOR > 6
+  aNameWithExt += TCollection_AsciiString("_GEOM.cbf");
+#else
   aNameWithExt += TCollection_AsciiString("_GEOM.sgd");
+#endif
   aSeq[0] = CORBA::string_dup(aNameWithExt.ToCString());
   // Build a full file name of temporary file
   TCollection_AsciiString aFullName = TCollection_AsciiString((char*)aTmpDir.c_str()) + aNameWithExt;
@@ -662,11 +666,32 @@ CORBA::Boolean GEOM_Gen_i::Load(SALOMEDS::SComponent_ptr theComponent,
   // Prepare a file name to open
   TCollection_AsciiString aNameWithExt("");
   SALOMEDS::Study_var study = theComponent->GetStudy();
+
+#if OCC_VERSION_MAJOR > 6
+  // Get the file name.
+  int         i;
+  int         aLength  = aSeq->length();
+  const char *aGeomSgd = "_GEOM.sgd";
+  const char *aGeomcbf = "_GEOM.cbf";
+
+  for(i = 0; i < aLength; i++) {
+    std::string aName(aSeq[i]);
+
+    if (aName.rfind(aGeomSgd) != std::string::npos ||
+        aName.rfind(aGeomcbf) != std::string::npos) {
+      aNameWithExt = aName.c_str();
+      break;
+    }
+  }
+#else
   if (isMultiFile) {
     CORBA::String_var url = study->URL();
     aNameWithExt = (char*)SALOMEDS_Tool::GetNameFromPath(url.in()).c_str();
   }
+
   aNameWithExt += "_GEOM.sgd";
+#endif
+
   TCollection_AsciiString aFullName = (TCollection_AsciiString((char*)aTmpDir.c_str()) + aNameWithExt);
 
   // Open document