X-Git-Url: http://git.dev.opencascade.org/gitweb/?p=occt.git;a=blobdiff_plain;f=src%2FVrmlAPI%2FVrmlAPI_Writer.cxx;h=523168cac0ea41e31debce909413abd546c2c508;hp=a61110f833a52d93bd06272e5cd60c7ae48f17be;hb=c42ef16585fc1f12abf582b48796343af49ad56f;hpb=1f44d29a0fc71e8f34aa8d221d34883624c1e26a diff --git a/src/VrmlAPI/VrmlAPI_Writer.cxx b/src/VrmlAPI/VrmlAPI_Writer.cxx index a61110f833..523168cac0 100644 --- a/src/VrmlAPI/VrmlAPI_Writer.cxx +++ b/src/VrmlAPI/VrmlAPI_Writer.cxx @@ -222,20 +222,26 @@ Handle(Vrml_Material) VrmlAPI_Writer::GetUnfreeBoundsMaterial() const 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) - write_v1(aShape, aFile); + return write_v1 (aShape, aFile); 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); TCollection_AsciiString theFile;thePath.SystemName(theFile); std::ofstream outfile; OSD_OpenStream(outfile, theFile.ToCString(), std::ios::out); + if (!outfile) + { + return Standard_False; + } Handle(VrmlConverter_IsoAspect) ia = new VrmlConverter_IsoAspect; // UIso Handle(VrmlConverter_IsoAspect) ia1 = new VrmlConverter_IsoAspect; //VIso 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); Group2.Print(outfile); } - S2.Print(outfile); - S1.Print(outfile); + S2.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; if(myRepresentation == VrmlAPI_ShadedRepresentation || myRepresentation == VrmlAPI_BothRepresentation) anExtFace = Standard_True; Standard_Boolean anExtEdge = Standard_False; - if(myRepresentation == VrmlAPI_WireFrameRepresentation|| myRepresentation == VrmlAPI_BothRepresentation) + if(myRepresentation == VrmlAPI_WireFrameRepresentation || myRepresentation == VrmlAPI_BothRepresentation) anExtEdge = Standard_True; VrmlData_Scene aScene; @@ -373,17 +382,21 @@ void VrmlAPI_Writer::write_v2(const TopoDS_Shape& aShape,const Standard_CString std::ofstream anOutStream; 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 //purpose : //======================================================================= -void VrmlAPI_Writer::WriteDoc( +Standard_Boolean VrmlAPI_Writer::WriteDoc( const Handle(TDocStd_Document) &theDoc, const Standard_CString theFile, const Standard_Real theScale) const @@ -394,9 +407,13 @@ void VrmlAPI_Writer::WriteDoc( std::ofstream anOutStream; OSD_OpenStream(anOutStream, theFile, std::ios::out); - if (!anOutStream.fail()) + if (anOutStream) { - anOutStream << aScene; + anOutStream << aScene; + anOutStream.close(); + return anOutStream.good(); } + + return Standard_False; }