From: Christophe Bourcier Date: Tue, 11 Jul 2017 12:11:06 +0000 (+0200) Subject: Fix Shaper #2198 ExportToGeom's shape stream not being dump by GEOM RestoreShape X-Git-Url: http://git.salome-platform.org/gitweb/?a=commitdiff_plain;h=d1b51d722f5caf4153ee496688ea4db1657dc601;p=modules%2Fgeom.git Fix Shaper #2198 ExportToGeom's shape stream not being dump by GEOM RestoreShape --- diff --git a/src/GEOMImpl/GEOMImpl_IInsertOperations.cxx b/src/GEOMImpl/GEOMImpl_IInsertOperations.cxx index 8da09ad37..05d777954 100644 --- a/src/GEOMImpl/GEOMImpl_IInsertOperations.cxx +++ b/src/GEOMImpl/GEOMImpl_IInsertOperations.cxx @@ -231,18 +231,39 @@ Handle(GEOM_Object) GEOMImpl_IInsertOperations::RestoreShape (std::istringstream //Set function value aFunction->SetValue(aShape); - //Special dump to avoid restored shapes publication. - //See correcponding code in GEOM_Engine.cxx (method ProcessFunction) - //GEOM::TPythonDump(aFunction) << "#"; + //Real dump if the stream comes from Shaper + std::string firstLine; + std::string shaperPrefix = "FromShaperExportToGeom;"; + std::size_t shaperPrefixSize = shaperPrefix.size(); + + //Go back to the start of the istringstream + theStream.seekg(0); + + //Get first line + std::getline(theStream, firstLine); + MESSAGE("firstLine: " << firstLine); + + if (firstLine.substr(0, shaperPrefixSize) == shaperPrefix) { + //Special dump for shape stream coming from Shaper + std::string partName = firstLine.substr(shaperPrefixSize); + MESSAGE("Part from Shaper: " << partName); + GEOM::TPythonDump(aFunction) << result << " = geompy.RestoreShape(model.makeShape(" + << partName.c_str() << ".document()).getShapeStream())"; + } + else { + //Special dump to avoid restored shapes publication. + //See correcponding code in GEOM_Engine.cxx (method ProcessFunction) + //GEOM::TPythonDump(aFunction) << "#"; - bool ignore = false; + bool ignore = false; - if ( const char* env_var = getenv( "GEOM_IGNORE_RESTORE_SHAPE" ) ) - ignore = atoi( env_var ) > 1; + if ( const char* env_var = getenv( "GEOM_IGNORE_RESTORE_SHAPE" ) ) + ignore = atoi( env_var ) > 1; - if ( !ignore ) { - GEOM::TPythonDump(aFunction) << result - << " = geompy.RestoreShape(\"\") # the shape string has not been dump for performance reason"; + if ( !ignore ) { + GEOM::TPythonDump(aFunction) << result + << " = geompy.RestoreShape(\"\") # the shape string has not been dump for performance reason"; + } } SetErrorCode(OK);