1
0
mirror of https://git.dev.opencascade.org/repos/occt.git synced 2025-04-10 18:51:21 +03:00

0030180: Data Exchange - VrmlAPI_Writer is expected to return export state

The VrmlAPI_Writer::WriteDoc() and VrmlAPI_Writer::Write() methods now return the export state.
This commit is contained in:
mzernova 2019-09-16 13:44:02 +03:00 committed by bugmaster
parent 1f44d29a0f
commit c42ef16585
6 changed files with 45 additions and 22 deletions

View File

@ -18,7 +18,7 @@
#include <VrmlAPI.hxx> #include <VrmlAPI.hxx>
#include <VrmlAPI_Writer.hxx> #include <VrmlAPI_Writer.hxx>
void VrmlAPI::Write(const TopoDS_Shape& aShape, const Standard_CString aFileName, const Standard_Integer aVersion) { Standard_Boolean VrmlAPI::Write(const TopoDS_Shape& aShape, const Standard_CString aFileName, const Standard_Integer aVersion) {
VrmlAPI_Writer writer; VrmlAPI_Writer writer;
writer.Write(aShape, aFileName, aVersion); return writer.Write(aShape, aFileName, aVersion);
} }

View File

@ -37,7 +37,7 @@ public:
//! With help of this class user can change parameters of writing. //! With help of this class user can change parameters of writing.
//! Converts the shape aShape to VRML format of the passed version and writes it //! Converts the shape aShape to VRML format of the passed version and writes it
//! to the file identified by aFileName using default parameters. //! to the file identified by aFileName using default parameters.
Standard_EXPORT static void Write (const TopoDS_Shape& aShape, const Standard_CString aFileName, const Standard_Integer aVersion = 2); Standard_EXPORT static Standard_Boolean Write (const TopoDS_Shape& aShape, const Standard_CString aFileName, const Standard_Integer aVersion = 2);

View File

@ -222,20 +222,26 @@ Handle(Vrml_Material) VrmlAPI_Writer::GetUnfreeBoundsMaterial() const
return myUnfreeBoundsMaterial; return myUnfreeBoundsMaterial;
} }
void VrmlAPI_Writer::Write(const TopoDS_Shape& aShape,const Standard_CString aFile, const Standard_Integer aVersion) const Standard_Boolean VrmlAPI_Writer::Write(const TopoDS_Shape& aShape,const Standard_CString aFile, const Standard_Integer aVersion) const
{ {
if (aVersion == 1) if (aVersion == 1)
write_v1(aShape, aFile); return write_v1 (aShape, aFile);
else if (aVersion == 2) else if (aVersion == 2)
write_v2(aShape, aFile); return write_v2 (aShape, aFile);
return Standard_False;
} }
void VrmlAPI_Writer::write_v1(const TopoDS_Shape& aShape,const Standard_CString aFile) const Standard_Boolean VrmlAPI_Writer::write_v1(const TopoDS_Shape& aShape,const Standard_CString aFile) const
{ {
OSD_Path thePath(aFile); OSD_Path thePath(aFile);
TCollection_AsciiString theFile;thePath.SystemName(theFile); TCollection_AsciiString theFile;thePath.SystemName(theFile);
std::ofstream outfile; std::ofstream outfile;
OSD_OpenStream(outfile, theFile.ToCString(), std::ios::out); OSD_OpenStream(outfile, theFile.ToCString(), std::ios::out);
if (!outfile)
{
return Standard_False;
}
Handle(VrmlConverter_IsoAspect) ia = new VrmlConverter_IsoAspect; // UIso Handle(VrmlConverter_IsoAspect) ia = new VrmlConverter_IsoAspect; // UIso
Handle(VrmlConverter_IsoAspect) ia1 = new VrmlConverter_IsoAspect; //VIso Handle(VrmlConverter_IsoAspect) ia1 = new VrmlConverter_IsoAspect; //VIso
ia->SetMaterial(myUisoMaterial); ia->SetMaterial(myUisoMaterial);
@ -352,18 +358,21 @@ void VrmlAPI_Writer::write_v1(const TopoDS_Shape& aShape,const Standard_CString
VrmlConverter_WFDeflectionShape::Add(outfile,aShape,myDrawer); VrmlConverter_WFDeflectionShape::Add(outfile,aShape,myDrawer);
Group2.Print(outfile); Group2.Print(outfile);
} }
S2.Print(outfile); S2.Print(outfile);
S1.Print(outfile); S1.Print(outfile);
outfile.close();
return outfile.good();
} }
void VrmlAPI_Writer::write_v2(const TopoDS_Shape& aShape,const Standard_CString aFile) const Standard_Boolean VrmlAPI_Writer::write_v2(const TopoDS_Shape& aShape,const Standard_CString aFile) const
{ {
Standard_Boolean anExtFace = Standard_False; Standard_Boolean anExtFace = Standard_False;
if(myRepresentation == VrmlAPI_ShadedRepresentation || myRepresentation == VrmlAPI_BothRepresentation) if(myRepresentation == VrmlAPI_ShadedRepresentation || myRepresentation == VrmlAPI_BothRepresentation)
anExtFace = Standard_True; anExtFace = Standard_True;
Standard_Boolean anExtEdge = Standard_False; Standard_Boolean anExtEdge = Standard_False;
if(myRepresentation == VrmlAPI_WireFrameRepresentation|| myRepresentation == VrmlAPI_BothRepresentation) if(myRepresentation == VrmlAPI_WireFrameRepresentation || myRepresentation == VrmlAPI_BothRepresentation)
anExtEdge = Standard_True; anExtEdge = Standard_True;
VrmlData_Scene aScene; VrmlData_Scene aScene;
@ -373,17 +382,21 @@ void VrmlAPI_Writer::write_v2(const TopoDS_Shape& aShape,const Standard_CString
std::ofstream anOutStream; std::ofstream anOutStream;
OSD_OpenStream(anOutStream, aFile, std::ios::out); OSD_OpenStream(anOutStream, aFile, std::ios::out);
if (!anOutStream.fail()) if (anOutStream)
{ {
anOutStream << aScene; anOutStream << aScene;
anOutStream.close();
return anOutStream.good();
} }
return Standard_False;
} }
//======================================================================= //=======================================================================
//function : WriteDoc //function : WriteDoc
//purpose : //purpose :
//======================================================================= //=======================================================================
void VrmlAPI_Writer::WriteDoc( Standard_Boolean VrmlAPI_Writer::WriteDoc(
const Handle(TDocStd_Document) &theDoc, const Handle(TDocStd_Document) &theDoc,
const Standard_CString theFile, const Standard_CString theFile,
const Standard_Real theScale) const const Standard_Real theScale) const
@ -394,9 +407,13 @@ void VrmlAPI_Writer::WriteDoc(
std::ofstream anOutStream; std::ofstream anOutStream;
OSD_OpenStream(anOutStream, theFile, std::ios::out); OSD_OpenStream(anOutStream, theFile, std::ios::out);
if (!anOutStream.fail()) if (anOutStream)
{ {
anOutStream << aScene; anOutStream << aScene;
anOutStream.close();
return anOutStream.good();
} }
return Standard_False;
} }

View File

@ -105,12 +105,12 @@ public:
//! Converts the shape aShape to //! Converts the shape aShape to
//! VRML format of the passed version and writes it to the file identified by aFile. //! VRML format of the passed version and writes it to the file identified by aFile.
Standard_EXPORT void Write (const TopoDS_Shape& aShape, const Standard_CString aFile, Standard_EXPORT Standard_Boolean Write (const TopoDS_Shape& aShape, const Standard_CString aFile,
const Standard_Integer aVersion = 2) const; const Standard_Integer aVersion = 2) const;
//! Converts the document to VRML format of the passed version //! Converts the document to VRML format of the passed version
//! and writes it to the file identified by aFile. //! and writes it to the file identified by aFile.
Standard_EXPORT void WriteDoc( Standard_EXPORT Standard_Boolean WriteDoc(
const Handle(TDocStd_Document) &theDoc, const Handle(TDocStd_Document) &theDoc,
const Standard_CString theFile, const Standard_CString theFile,
const Standard_Real theScale) const; const Standard_Real theScale) const;
@ -119,11 +119,11 @@ protected:
//! Converts the shape aShape to VRML format of version 1.0 and writes it //! Converts the shape aShape to VRML format of version 1.0 and writes it
//! to the file identified by aFileName using default parameters. //! to the file identified by aFileName using default parameters.
Standard_EXPORT void write_v1 (const TopoDS_Shape& aShape, const Standard_CString aFileName) const; Standard_EXPORT Standard_Boolean write_v1 (const TopoDS_Shape& aShape, const Standard_CString aFileName) const;
//! Converts the shape aShape to VRML format of version 2.0 and writes it //! Converts the shape aShape to VRML format of version 2.0 and writes it
//! to the file identified by aFileName using default parameters. //! to the file identified by aFileName using default parameters.
Standard_EXPORT void write_v2 (const TopoDS_Shape& aShape, const Standard_CString aFileName) const; Standard_EXPORT Standard_Boolean write_v2 (const TopoDS_Shape& aShape, const Standard_CString aFileName) const;
private: private:

View File

@ -597,7 +597,10 @@ static Standard_Integer WriteVrml(Draw_Interpretor& di, Standard_Integer argc, c
Standard_Real anOCCLengthUnit = Standard_Real anOCCLengthUnit =
UnitsMethods::GetLengthFactorValue(Interface_Static::IVal("xstep.cascade.unit")); UnitsMethods::GetLengthFactorValue(Interface_Static::IVal("xstep.cascade.unit"));
Standard_Real aScale = 0.001*anOCCLengthUnit; Standard_Real aScale = 0.001*anOCCLengthUnit;
writer.WriteDoc(aDoc, argv[2], aScale); if (!writer.WriteDoc(aDoc, argv[2], aScale))
{
di << "Error: File " << argv[2] << " was not written\n";
}
return 0; return 0;
} }

View File

@ -532,7 +532,10 @@ static Standard_Integer writevrml
case 2: writer.SetRepresentation(VrmlAPI_BothRepresentation); break; case 2: writer.SetRepresentation(VrmlAPI_BothRepresentation); break;
} }
writer.Write(aShape, argv[2], aVersion); if (!writer.Write(aShape, argv[2], aVersion))
{
di << "Error: File " << argv[2] << " was not written\n";
}
return 0; return 0;
} }