From cbe768046edbb19e7c8e8f4e2587e10aea8743d7 Mon Sep 17 00:00:00 2001 From: skv Date: Fri, 24 Jul 2015 11:38:57 +0300 Subject: [PATCH] Provide for new OCAF document reading for OCCT7.0.0 --- resources/GEOMDS_Resources | 14 +++++++++++--- resources/Plugin.in | 5 +++++ src/GEOM/GEOM_Application.cxx | 3 +++ src/GEOM_I/GEOM_Gen_i.cc | 25 +++++++++++++++++++++++++ 4 files changed, 44 insertions(+), 3 deletions(-) mode change 100755 => 100644 src/GEOM_I/GEOM_Gen_i.cc diff --git a/resources/GEOMDS_Resources b/resources/GEOMDS_Resources index 06f018f22..deb6655f9 100644 --- a/resources/GEOMDS_Resources +++ b/resources/GEOMDS_Resources @@ -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 diff --git a/resources/Plugin.in b/resources/Plugin.in index 3d4fad5e5..2d5485bf9 100644 --- a/resources/Plugin.in +++ b/resources/Plugin.in @@ -8,3 +8,8 @@ a148e300-5740-11d1-a904-080036aaa103.Location: FWOSPlugin 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@ diff --git a/src/GEOM/GEOM_Application.cxx b/src/GEOM/GEOM_Application.cxx index abd56e3f7..fd20c57d1 100644 --- a/src/GEOM/GEOM_Application.cxx +++ b/src/GEOM/GEOM_Application.cxx @@ -53,6 +53,9 @@ GEOM_Application::~GEOM_Application() void GEOM_Application::Formats(TColStd_SequenceOfExtendedString& Formats) { Formats.Append(TCollection_ExtendedString ("SALOME_GEOM")); +#if OCC_VERSION_LARGE > 0x06090000 + Formats.Append(TCollection_ExtendedString ("BinOcaf")); +#endif } diff --git a/src/GEOM_I/GEOM_Gen_i.cc b/src/GEOM_I/GEOM_Gen_i.cc old mode 100755 new mode 100644 index 7a824de35..04d035225 --- a/src/GEOM_I/GEOM_Gen_i.cc +++ b/src/GEOM_I/GEOM_Gen_i.cc @@ -602,7 +602,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_LARGE > 0x06090000 + 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; @@ -664,11 +668,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_LARGE > 0x06090000 + // 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