From: dpasukhi Date: Thu, 16 Mar 2023 14:15:08 +0000 (+0000) Subject: // fixing remarks X-Git-Url: http://git.dev.opencascade.org/gitweb/?a=commitdiff_plain;h=932ddd698007acb885dd6c8dcefaa897659ed396;p=occt.git // fixing remarks personizeWS() should be after parameter setting up a minor fix with calling IGES controller implement static parameters controller fixing regression tests fixing warnings --- diff --git a/src/DE/DE_Provider.cxx b/src/DE/DE_Provider.cxx index f1314ac6a4..a4d1993aee 100644 --- a/src/DE/DE_Provider.cxx +++ b/src/DE/DE_Provider.cxx @@ -63,6 +63,7 @@ bool DE_Provider::Read(std::istream& theIStream, { (void)theIStream; (void)theDocument; + (void)theName; (void)theWS; (void)theProgress; Message::SendFail() << "Error: provider " << GetFormat() << @@ -136,6 +137,7 @@ bool DE_Provider::Read(std::istream& theIStream, { (void)theIStream; (void)theShape; + (void)theName; (void)theWS; (void)theProgress; Message::SendFail() << "Error: provider " << GetFormat() << diff --git a/src/IGESCAFControl/IGESCAFControl_Provider.cxx b/src/IGESCAFControl/IGESCAFControl_Provider.cxx index e2de53cf7e..eab92b41cd 100644 --- a/src/IGESCAFControl/IGESCAFControl_Provider.cxx +++ b/src/IGESCAFControl/IGESCAFControl_Provider.cxx @@ -13,21 +13,217 @@ #include -#include -#include #include #include #include +#include #include #include #include #include +#include #include #include -#include IMPLEMENT_STANDARD_RTTIEXT(IGESCAFControl_Provider, DE_Provider) +namespace +{ + //! Special class to handle static parameters. + //! Initialize all parameters in the begin of life + //! and reset changed parameters in the end of life + class IGESCAFControl_ParameterController + { + public: + + IGESCAFControl_ParameterController(const Handle(IGESCAFControl_ConfigurationNode)& theNode, + const Standard_Boolean theUpdateStatic); + + ~IGESCAFControl_ParameterController(); + + protected: + + void setStatic(const IGESCAFControl_ConfigurationNode::IGESCAFControl_InternalSection theParameter); + + private: + + bool myToUpdateStaticParameters; //!< Flag to updating static parameters + IGESCAFControl_ConfigurationNode::IGESCAFControl_InternalSection myOldValues; //!< Container to save previous static parameters + IGESCAFControl_ConfigurationNode::DE_SectionGlobal myOldGlobalValues; //!< Container to save previous global parameters + }; + + //======================================================================= + // function : IGESCAFControl_ParameterController + // purpose : + //======================================================================= + IGESCAFControl_ParameterController::IGESCAFControl_ParameterController(const Handle(IGESCAFControl_ConfigurationNode)& theNode, + const Standard_Boolean theUpdateStatic) + : myToUpdateStaticParameters(theUpdateStatic) + { + IGESControl_Controller::Init(); + IGESData::Init(); + if (!myToUpdateStaticParameters) + { + return; + } + // Get previous values + myOldValues.ReadBSplineContinuity = + (IGESCAFControl_ConfigurationNode::ReadMode_BSplineContinuity) + Interface_Static::IVal("read.iges.bspline.continuity"); + myOldValues.ReadPrecisionMode = + (IGESCAFControl_ConfigurationNode::ReadMode_Precision) + Interface_Static::IVal("read.precision.mode"); + myOldValues.ReadPrecisionVal = + Interface_Static::RVal("read.precision.val"); + myOldValues.ReadMaxPrecisionMode = + (IGESCAFControl_ConfigurationNode::ReadMode_MaxPrecision) + Interface_Static::IVal("read.maxprecision.mode"); + myOldValues.ReadMaxPrecisionVal = + Interface_Static::RVal("read.maxprecision.val"); + myOldValues.ReadSameParamMode = + Interface_Static::IVal("read.stdsameparameter.mode") == 1; + myOldValues.ReadSurfaceCurveMode = + (IGESCAFControl_ConfigurationNode::ReadMode_SurfaceCurve) + Interface_Static::IVal("read.surfacecurve.mode"); + myOldValues.EncodeRegAngle = + Interface_Static::RVal("read.encoderegularity.angle") * 180.0 / M_PI; + + myOldValues.ReadApproxd1 = + Interface_Static::IVal("read.iges.bspline.approxd1.mode") == 1; + myOldValues.ReadResourceName = + Interface_Static::CVal("read.iges.resource.name"); + myOldValues.ReadSequence = + Interface_Static::CVal("read.iges.sequence"); + myOldValues.ReadFaultyEntities = + Interface_Static::IVal("read.iges.faulty.entities") == 1; + myOldValues.ReadOnlyVisible = + Interface_Static::IVal("read.iges.onlyvisible") == 1; + + myOldValues.WriteBRepMode = + (IGESCAFControl_ConfigurationNode::WriteMode_BRep) + Interface_Static::IVal("write.iges.brep.mode"); + myOldValues.WriteConvertSurfaceMode = + (IGESCAFControl_ConfigurationNode::WriteMode_ConvertSurface) + Interface_Static::IVal("write.convertsurface.mode"); + myOldValues.WriteUnit = + (UnitsMethods_LengthUnit) + Interface_Static::IVal("write.iges.unit"); + myOldValues.WriteHeaderAuthor = + Interface_Static::CVal("write.iges.header.author"); + myOldValues.WriteHeaderCompany = + Interface_Static::CVal("write.iges.header.company"); + myOldValues.WriteHeaderProduct = + Interface_Static::CVal("write.iges.header.product"); + myOldValues.WriteHeaderReciever = + Interface_Static::CVal("write.iges.header.receiver"); + myOldValues.WriteResourceName = + Interface_Static::CVal("write.iges.resource.name"); + myOldValues.WriteSequence = + Interface_Static::CVal("write.iges.sequence"); + myOldValues.WritePrecisionMode = + (IGESCAFControl_ConfigurationNode::WriteMode_PrecisionMode) + Interface_Static::IVal("write.precision.mode"); + myOldValues.WritePrecisionVal = + Interface_Static::RVal("write.precision.val"); + myOldValues.WritePlaneMode = + (IGESCAFControl_ConfigurationNode::WriteMode_PlaneMode) + Interface_Static::IVal("write.iges.plane.mode"); + myOldValues.WriteOffsetMode = + Interface_Static::IVal("write.iges.offset.mode") == 1; + + myOldGlobalValues.LengthUnit = 0.001 * + UnitsMethods::GetLengthFactorValue(Interface_Static::IVal("xstep.cascade.unit")); + // Set new values + TCollection_AsciiString aStrUnit( + UnitsMethods::DumpLengthUnit(theNode->GlobalParameters.LengthUnit)); + aStrUnit.UpperCase(); + Interface_Static::SetCVal("xstep.cascade.unit", aStrUnit.ToCString()); + UnitsMethods::SetCasCadeLengthUnit(theNode->GlobalParameters.LengthUnit); + setStatic(theNode->InternalParameters); + } + + //======================================================================= + // function : ~IGESCAFControl_ParameterController + // purpose : + //======================================================================= + IGESCAFControl_ParameterController::~IGESCAFControl_ParameterController() + { + if (!myToUpdateStaticParameters) + { + return; + } + // Set new values + TCollection_AsciiString aStrUnit( + UnitsMethods::DumpLengthUnit(myOldGlobalValues.LengthUnit, + UnitsMethods_LengthUnit_Meter)); + aStrUnit.UpperCase(); + Interface_Static::SetCVal("xstep.cascade.unit", aStrUnit.ToCString()); + setStatic(myOldValues); + } + + //======================================================================= + // function : setStatic + // purpose : + //======================================================================= + void IGESCAFControl_ParameterController::setStatic(const IGESCAFControl_ConfigurationNode::IGESCAFControl_InternalSection theParameter) + { + Interface_Static::SetIVal("read.iges.bspline.continuity", + theParameter.ReadBSplineContinuity); + Interface_Static::SetIVal("read.precision.mode", + theParameter.ReadPrecisionMode); + Interface_Static::SetRVal("read.precision.val", + theParameter.ReadPrecisionVal); + Interface_Static::SetIVal("read.maxprecision.mode", + theParameter.ReadMaxPrecisionMode); + Interface_Static::SetRVal("read.maxprecision.val", + theParameter.ReadMaxPrecisionVal); + Interface_Static::SetIVal("read.stdsameparameter.mode", + theParameter.ReadSameParamMode); + Interface_Static::SetIVal("read.surfacecurve.mode", + theParameter.ReadSurfaceCurveMode); + Interface_Static::SetRVal("read.encoderegularity.angle", + theParameter.EncodeRegAngle * M_PI / 180.0); + + Interface_Static::SetIVal("read.iges.bspline.approxd1.mode", + theParameter.ReadApproxd1); + Interface_Static::SetCVal("read.iges.resource.name", + theParameter.ReadResourceName.ToCString()); + Interface_Static::SetCVal("read.iges.sequence", + theParameter.ReadSequence.ToCString()); + Interface_Static::SetIVal("read.iges.faulty.entities", + theParameter.ReadFaultyEntities); + Interface_Static::SetIVal("read.iges.onlyvisible", + theParameter.ReadOnlyVisible); + + Interface_Static::SetIVal("write.iges.brep.mode", + theParameter.WriteBRepMode); + Interface_Static::SetIVal("write.convertsurface.mode", + theParameter.WriteConvertSurfaceMode); + Interface_Static::SetIVal("write.iges.unit", + theParameter.WriteUnit); + Interface_Static::SetCVal("write.iges.header.author", + theParameter.WriteHeaderAuthor.ToCString()); + Interface_Static::SetCVal("write.iges.header.company", + theParameter.WriteHeaderCompany.ToCString()); + Interface_Static::SetCVal("write.iges.header.product", + theParameter.WriteHeaderProduct.ToCString()); + Interface_Static::SetCVal("write.iges.header.receiver", + theParameter.WriteHeaderReciever.ToCString()); + Interface_Static::SetCVal("write.iges.resource.name", + theParameter.WriteResourceName.ToCString()); + Interface_Static::SetCVal("write.iges.sequence", + theParameter.WriteSequence.ToCString()); + Interface_Static::SetIVal("write.precision.mode", + theParameter.WritePrecisionMode); + Interface_Static::SetRVal("write.precision.val", + theParameter.WritePrecisionVal); + Interface_Static::SetIVal("write.iges.plane.mode", + theParameter.WritePlaneMode); + Interface_Static::SetIVal("write.iges.offset.mode", + theParameter.WriteOffsetMode); + } +} + //======================================================================= // function : IGESCAFControl_Provider // purpose : @@ -63,176 +259,6 @@ void IGESCAFControl_Provider::personizeWS(Handle(XSControl_WorkSession)& theWS) } } -//======================================================================= -// function : initStatic -// purpose : -//======================================================================= -void IGESCAFControl_Provider::initStatic(const Handle(DE_ConfigurationNode)& theNode) -{ - Handle(IGESCAFControl_ConfigurationNode) aNode = - Handle(IGESCAFControl_ConfigurationNode)::DownCast(theNode); - IGESData::Init(); - if (!myToUpdateStaticParameters) - { - return; - } - // Get previous values - myOldValues.ReadBSplineContinuity = - (IGESCAFControl_ConfigurationNode::ReadMode_BSplineContinuity) - Interface_Static::IVal("read.iges.bspline.continuity"); - myOldValues.ReadPrecisionMode = - (IGESCAFControl_ConfigurationNode::ReadMode_Precision) - Interface_Static::IVal("read.precision.mode"); - myOldValues.ReadPrecisionVal = - Interface_Static::RVal("read.precision.val"); - myOldValues.ReadMaxPrecisionMode = - (IGESCAFControl_ConfigurationNode::ReadMode_MaxPrecision) - Interface_Static::IVal("read.maxprecision.mode"); - myOldValues.ReadMaxPrecisionVal = - Interface_Static::RVal("read.maxprecision.val"); - myOldValues.ReadSameParamMode = - Interface_Static::IVal("read.stdsameparameter.mode") == 1; - myOldValues.ReadSurfaceCurveMode = - (IGESCAFControl_ConfigurationNode::ReadMode_SurfaceCurve) - Interface_Static::IVal("read.surfacecurve.mode"); - myOldValues.EncodeRegAngle = - Interface_Static::RVal("read.encoderegularity.angle") * 180.0 / M_PI; - - myOldValues.ReadApproxd1 = - Interface_Static::IVal("read.iges.bspline.approxd1.mode") == 1; - myOldValues.ReadResourceName = - Interface_Static::CVal("read.iges.resource.name"); - myOldValues.ReadSequence = - Interface_Static::CVal("read.iges.sequence"); - myOldValues.ReadFaultyEntities = - Interface_Static::IVal("read.iges.faulty.entities") == 1; - myOldValues.ReadOnlyVisible = - Interface_Static::IVal("read.iges.onlyvisible") == 1; - - myOldValues.WriteBRepMode = - (IGESCAFControl_ConfigurationNode::WriteMode_BRep) - Interface_Static::IVal("write.iges.brep.mode"); - myOldValues.WriteConvertSurfaceMode = - (IGESCAFControl_ConfigurationNode::WriteMode_ConvertSurface) - Interface_Static::IVal("write.convertsurface.mode"); - myOldValues.WriteUnit = - (UnitsMethods_LengthUnit) - Interface_Static::IVal("write.iges.unit"); - myOldValues.WriteHeaderAuthor = - Interface_Static::CVal("write.iges.header.author"); - myOldValues.WriteHeaderCompany = - Interface_Static::CVal("write.iges.header.company"); - myOldValues.WriteHeaderProduct = - Interface_Static::CVal("write.iges.header.product"); - myOldValues.WriteHeaderReciever = - Interface_Static::CVal("write.iges.header.receiver"); - myOldValues.WriteResourceName = - Interface_Static::CVal("write.iges.resource.name"); - myOldValues.WriteSequence = - Interface_Static::CVal("write.iges.sequence"); - myOldValues.WritePrecisionMode = - (IGESCAFControl_ConfigurationNode::WriteMode_PrecisionMode) - Interface_Static::IVal("write.precision.mode"); - myOldValues.WritePrecisionVal = - Interface_Static::RVal("write.precision.val"); - myOldValues.WritePlaneMode = - (IGESCAFControl_ConfigurationNode::WriteMode_PlaneMode) - Interface_Static::IVal("write.iges.plane.mode"); - myOldValues.WriteOffsetMode = - Interface_Static::IVal("write.iges.offset.mode") == 1; - - myOldGlobalValues.LengthUnit = 0.001 * - UnitsMethods::GetLengthFactorValue(Interface_Static::IVal("xstep.cascade.unit")); - // Set new values - TCollection_AsciiString aStrUnit( - UnitsMethods::DumpLengthUnit(aNode->GlobalParameters.LengthUnit)); - aStrUnit.UpperCase(); - Interface_Static::SetCVal("xstep.cascade.unit", aStrUnit.ToCString()); - UnitsMethods::SetCasCadeLengthUnit(aNode->GlobalParameters.LengthUnit); - setStatic(aNode->InternalParameters); -} - -//======================================================================= -// function : setStatic -// purpose : -//======================================================================= -void IGESCAFControl_Provider::setStatic(const IGESCAFControl_ConfigurationNode::IGESCAFControl_InternalSection theParameter) -{ - Interface_Static::SetIVal("read.iges.bspline.continuity", - theParameter.ReadBSplineContinuity); - Interface_Static::SetIVal("read.precision.mode", - theParameter.ReadPrecisionMode); - Interface_Static::SetRVal("read.precision.val", - theParameter.ReadPrecisionVal); - Interface_Static::SetIVal("read.maxprecision.mode", - theParameter.ReadMaxPrecisionMode); - Interface_Static::SetRVal("read.maxprecision.val", - theParameter.ReadMaxPrecisionVal); - Interface_Static::SetIVal("read.stdsameparameter.mode", - theParameter.ReadSameParamMode); - Interface_Static::SetIVal("read.surfacecurve.mode", - theParameter.ReadSurfaceCurveMode); - Interface_Static::SetRVal("read.encoderegularity.angle", - theParameter.EncodeRegAngle * M_PI / 180.0); - - Interface_Static::SetIVal("read.iges.bspline.approxd1.mode", - theParameter.ReadApproxd1); - Interface_Static::SetCVal("read.iges.resource.name", - theParameter.ReadResourceName.ToCString()); - Interface_Static::SetCVal("read.iges.sequence", - theParameter.ReadSequence.ToCString()); - Interface_Static::SetIVal("read.iges.faulty.entities", - theParameter.ReadFaultyEntities); - Interface_Static::SetIVal("read.iges.onlyvisible", - theParameter.ReadOnlyVisible); - - Interface_Static::SetIVal("write.iges.brep.mode", - theParameter.WriteBRepMode); - Interface_Static::SetIVal("write.convertsurface.mode", - theParameter.WriteConvertSurfaceMode); - Interface_Static::SetIVal("write.iges.unit", - theParameter.WriteUnit); - Interface_Static::SetCVal("write.iges.header.author", - theParameter.WriteHeaderAuthor.ToCString()); - Interface_Static::SetCVal("write.iges.header.company", - theParameter.WriteHeaderCompany.ToCString()); - Interface_Static::SetCVal("write.iges.header.product", - theParameter.WriteHeaderProduct.ToCString()); - Interface_Static::SetCVal("write.iges.header.receiver", - theParameter.WriteHeaderReciever.ToCString()); - Interface_Static::SetCVal("write.iges.resource.name", - theParameter.WriteResourceName.ToCString()); - Interface_Static::SetCVal("write.iges.sequence", - theParameter.WriteSequence.ToCString()); - Interface_Static::SetIVal("write.precision.mode", - theParameter.WritePrecisionMode); - Interface_Static::SetRVal("write.precision.val", - theParameter.WritePrecisionVal); - Interface_Static::SetIVal("write.iges.plane.mode", - theParameter.WritePlaneMode); - Interface_Static::SetIVal("write.iges.offset.mode", - theParameter.WriteOffsetMode); -} - -//======================================================================= -// function : resetStatic -// purpose : -//======================================================================= -void IGESCAFControl_Provider::resetStatic() -{ - if (!myToUpdateStaticParameters) - { - return; - } - // Set new values - TCollection_AsciiString aStrUnit( - UnitsMethods::DumpLengthUnit(myOldGlobalValues.LengthUnit, - UnitsMethods_LengthUnit_Meter)); - aStrUnit.UpperCase(); - Interface_Static::SetCVal("xstep.cascade.unit", aStrUnit.ToCString()); - setStatic(myOldValues); -} - //======================================================================= // function : Read // purpose : @@ -256,8 +282,7 @@ bool IGESCAFControl_Provider::Read(const TCollection_AsciiString& thePath, } Handle(IGESCAFControl_ConfigurationNode) aNode = Handle(IGESCAFControl_ConfigurationNode)::DownCast(GetNode()); - initStatic(aNode); - + IGESCAFControl_ParameterController aParamController(aNode, myToUpdateStaticParameters); personizeWS(theWS); XCAFDoc_DocumentTool::SetLengthUnit(theDocument, aNode->GlobalParameters.LengthUnit, @@ -301,17 +326,14 @@ bool IGESCAFControl_Provider::Read(const TCollection_AsciiString& thePath, { Message::SendFail() << "Error: IGESCAFControl_Provider : [" << aFile << "] : abandon, no model loaded"; - resetStatic(); return false; } if (!aReader.Transfer(theDocument, theProgress)) { Message::SendFail() << "Error: IGESCAFControl_Provider : [" << aFile << "] : Cannot read any relevant data from the IGES file"; - resetStatic(); return false; } - resetStatic(); return true; } @@ -332,8 +354,7 @@ bool IGESCAFControl_Provider::Write(const TCollection_AsciiString& thePath, } Handle(IGESCAFControl_ConfigurationNode) aNode = Handle(IGESCAFControl_ConfigurationNode)::DownCast(GetNode()); - initStatic(aNode); - + IGESCAFControl_ParameterController aParamController(aNode, myToUpdateStaticParameters); personizeWS(theWS); TCollection_AsciiString aUnit( UnitsMethods::DumpLengthUnit(aNode->InternalParameters.WriteUnit)); @@ -365,12 +386,10 @@ bool IGESCAFControl_Provider::Write(const TCollection_AsciiString& thePath, { Message::SendFail() << "Error: IGESCAFControl_Provider : " << "The document cannot be translated or gives no result"; - resetStatic(); return false; } if (thePath == ".") { - resetStatic(); Message::SendInfo() << "Document has been translated into the session"; return true; } @@ -378,11 +397,9 @@ bool IGESCAFControl_Provider::Write(const TCollection_AsciiString& thePath, { Message::SendFail() << "Error: IGESCAFControl_Provider : [" << thePath << "] : Write failed"; - resetStatic(); return false; } Message::SendInfo() << "IGES file [" << thePath << "] Successfully written"; - resetStatic(); return true; } @@ -404,7 +421,7 @@ bool IGESCAFControl_Provider::Read(const TCollection_AsciiString& thePath, } Handle(IGESCAFControl_ConfigurationNode) aNode = Handle(IGESCAFControl_ConfigurationNode)::DownCast(GetNode()); - initStatic(aNode); + IGESCAFControl_ParameterController aParamController(aNode, myToUpdateStaticParameters); personizeWS(theWS); IGESControl_Reader aReader; aReader.SetWS(theWS); @@ -422,18 +439,15 @@ bool IGESCAFControl_Provider::Read(const TCollection_AsciiString& thePath, { Message::SendFail() << "Error: IGESCAFControl_Provider : [" << thePath << "] : Could not read file, no model loaded"; - resetStatic(); return false; } if (aReader.TransferRoots() <= 0) { Message::SendFail() << "Error: IGESCAFControl_Provider : [" << thePath << "] : Cannot read any relevant data from the IGES file"; - resetStatic(); return false; } theShape = aReader.OneShape(); - resetStatic(); return true; } @@ -456,7 +470,8 @@ bool IGESCAFControl_Provider::Write(const TCollection_AsciiString& thePath, } Handle(IGESCAFControl_ConfigurationNode) aNode = Handle(IGESCAFControl_ConfigurationNode)::DownCast(GetNode()); - initStatic(aNode); + IGESCAFControl_ParameterController aParamController(aNode, myToUpdateStaticParameters); + personizeWS(theWS); TCollection_AsciiString aUnit( UnitsMethods::DumpLengthUnit(aNode->InternalParameters.WriteUnit)); aUnit.UpperCase(); @@ -467,7 +482,6 @@ bool IGESCAFControl_Provider::Write(const TCollection_AsciiString& thePath, { Message::SendFail() << "Error: IGESCAFControl_Provider : " << "Can't translate shape to IGES model"; - resetStatic(); return false; } @@ -475,10 +489,8 @@ bool IGESCAFControl_Provider::Write(const TCollection_AsciiString& thePath, { Message::SendFail() << "Error: IGESCAFControl_Provider : " << "Can't write IGES file" << thePath; - resetStatic(); return false; } - resetStatic(); return true; } diff --git a/src/IGESCAFControl/IGESCAFControl_Provider.hxx b/src/IGESCAFControl/IGESCAFControl_Provider.hxx index 2c102a007e..929eeec4db 100644 --- a/src/IGESCAFControl/IGESCAFControl_Provider.hxx +++ b/src/IGESCAFControl/IGESCAFControl_Provider.hxx @@ -114,20 +114,9 @@ private: //! @param[in] theWS current work session void personizeWS(Handle(XSControl_WorkSession)& theWS); - //! Initialize static variables - void initStatic(const Handle(DE_ConfigurationNode)& theNode); - - //! Initialize static variables - void setStatic(const IGESCAFControl_ConfigurationNode::IGESCAFControl_InternalSection theParameter); - - //! Reset used interface static variables - void resetStatic(); - private: bool myToUpdateStaticParameters = true; //!< Flag to updating static parameters - IGESCAFControl_ConfigurationNode::IGESCAFControl_InternalSection myOldValues; //!< Container to save previous static parameters - IGESCAFControl_ConfigurationNode::DE_SectionGlobal myOldGlobalValues; //!< Container to save previous static parameters }; diff --git a/src/RWStl/RWStl_Provider.cxx b/src/RWStl/RWStl_Provider.cxx index c73189bfee..6647498f2b 100644 --- a/src/RWStl/RWStl_Provider.cxx +++ b/src/RWStl/RWStl_Provider.cxx @@ -144,9 +144,9 @@ bool RWStl_Provider::Read(const TCollection_AsciiString& thePath, // Read STL file to the triangulation list. RWStl::ReadFile(thePath.ToCString(), aMergeAngle, aTriangList, theProgress); BRep_Builder aB; - TopoDS_Face aFace; if (aTriangList.Size() == 1) { + TopoDS_Face aFace; aB.MakeFace(aFace); aB.UpdateFace(aFace, aTriangList.First()); theShape = aFace; @@ -161,11 +161,8 @@ bool RWStl_Provider::Read(const TCollection_AsciiString& thePath, { aB.MakeCompound(aCmp); } - if (aFace.IsNull()) - { - aB.MakeFace(aFace); - } - aB.UpdateFace(aFace, anIt.Value()); + TopoDS_Face aFace; + aB.MakeFace(aFace, anIt.Value()); aB.Add(aCmp, aFace); } theShape = aCmp; diff --git a/src/STEPCAFControl/STEPCAFControl_Provider.cxx b/src/STEPCAFControl/STEPCAFControl_Provider.cxx index 6647b8c595..337aee92a1 100644 --- a/src/STEPCAFControl/STEPCAFControl_Provider.cxx +++ b/src/STEPCAFControl/STEPCAFControl_Provider.cxx @@ -13,25 +13,255 @@ #include -#include #include #include -#include -#include -#include #include #include #include #include -#include +#include +#include +#include #include #include +#include +#include #include #include -#include IMPLEMENT_STANDARD_RTTIEXT(STEPCAFControl_Provider, DE_Provider) +namespace +{ + //! Special class to handle static parameters. + //! Initialize all parameters in the begin of life + //! and reset changed parameters in the end of life + class STEPCAFControl_ParameterController + { + public: + + STEPCAFControl_ParameterController(const Handle(STEPCAFControl_ConfigurationNode)& theNode, + const Standard_Boolean theUpdateStatic); + + ~STEPCAFControl_ParameterController(); + + protected: + + void setStatic(const STEPCAFControl_ConfigurationNode::STEPCAFControl_InternalSection theParameter); + + private: + + bool myToUpdateStaticParameters; //!< Flag to updating static parameters + STEPCAFControl_ConfigurationNode::STEPCAFControl_InternalSection myOldValues; //!< Container to save previous static parameters + }; + + //======================================================================= + // function : STEPCAFControl_ParameterController + // purpose : + //======================================================================= + STEPCAFControl_ParameterController::STEPCAFControl_ParameterController(const Handle(STEPCAFControl_ConfigurationNode)& theNode, + const Standard_Boolean theUpdateStatic) + : myToUpdateStaticParameters(theUpdateStatic) + { + STEPCAFControl_Controller::Init(); + if (!myToUpdateStaticParameters) + { + return; + } + // Get previous values + myOldValues.ReadBSplineContinuity = + (STEPCAFControl_ConfigurationNode::ReadMode_BSplineContinuity) + Interface_Static::IVal("read.iges.bspline.continuity"); + myOldValues.ReadPrecisionMode = + (STEPCAFControl_ConfigurationNode::ReadMode_Precision) + Interface_Static::IVal("read.precision.mode"); + myOldValues.ReadPrecisionVal = + Interface_Static::RVal("read.precision.val"); + myOldValues.ReadMaxPrecisionMode = + (STEPCAFControl_ConfigurationNode::ReadMode_MaxPrecision) + Interface_Static::IVal("read.maxprecision.mode"); + myOldValues.ReadMaxPrecisionVal = + Interface_Static::RVal("read.maxprecision.val"); + myOldValues.ReadSameParamMode = + Interface_Static::IVal("read.stdsameparameter.mode") == 1; + myOldValues.ReadSurfaceCurveMode = + (STEPCAFControl_ConfigurationNode::ReadMode_SurfaceCurve) + Interface_Static::IVal("read.surfacecurve.mode"); + myOldValues.EncodeRegAngle = + Interface_Static::RVal("read.encoderegularity.angle") * 180.0 / M_PI; + myOldValues.AngleUnit = + (STEPCAFControl_ConfigurationNode::AngleUnitMode) + Interface_Static::IVal("step.angleunit.mode"); + + myOldValues.ReadResourceName = + Interface_Static::CVal("read.step.resource.name"); + myOldValues.ReadSequence = + Interface_Static::CVal("read.step.sequence"); + myOldValues.ReadProductMode = + Interface_Static::IVal("read.step.product.mode") == 1; + myOldValues.ReadProductContext = + (STEPCAFControl_ConfigurationNode::ReadMode_ProductContext) + Interface_Static::IVal("read.step.product.context"); + myOldValues.ReadShapeRepr = + (STEPCAFControl_ConfigurationNode::ReadMode_ShapeRepr) + Interface_Static::IVal("read.step.shape.repr"); + myOldValues.ReadTessellated = + (STEPCAFControl_ConfigurationNode::RWMode_Tessellated) + Interface_Static::IVal("read.step.tessellated"); + myOldValues.ReadAssemblyLevel = + (STEPCAFControl_ConfigurationNode::ReadMode_AssemblyLevel) + Interface_Static::IVal("read.step.assembly.level"); + myOldValues.ReadRelationship = + Interface_Static::IVal("read.step.shape.relationship") == 1; + myOldValues.ReadShapeAspect = + Interface_Static::IVal("read.step.shape.aspect") == 1; + myOldValues.ReadConstrRelation = + Interface_Static::IVal("read.step.constructivegeom.relationship") == 1; + myOldValues.ReadSubshapeNames = + Interface_Static::IVal("read.stepcaf.subshapes.name") == 1; + myOldValues.ReadCodePage = + (Resource_FormatType)Interface_Static::IVal("read.step.codepage"); + myOldValues.ReadNonmanifold = + Interface_Static::IVal("read.step.nonmanifold") == 1; + myOldValues.ReadIdeas = + Interface_Static::IVal("read.step.ideas") == 1; + myOldValues.ReadAllShapes = + Interface_Static::IVal("read.step.all.shapes") == 1; + myOldValues.ReadRootTransformation = + Interface_Static::IVal("read.step.root.transformation") == 1; + + myOldValues.WritePrecisionMode = + (STEPCAFControl_ConfigurationNode::WriteMode_PrecisionMode) + Interface_Static::IVal("write.precision.mode"); + myOldValues.WritePrecisionVal = + Interface_Static::RVal("write.precision.val"); + myOldValues.WriteAssembly = + (STEPCAFControl_ConfigurationNode::WriteMode_Assembly) + Interface_Static::IVal("write.step.assembly"); + myOldValues.WriteSchema = + (STEPCAFControl_ConfigurationNode::WriteMode_StepSchema) + Interface_Static::IVal("write.step.schema"); + myOldValues.WriteTessellated = + (STEPCAFControl_ConfigurationNode::RWMode_Tessellated) + Interface_Static::IVal("write.step.tessellated"); + myOldValues.WriteProductName = + Interface_Static::CVal("write.step.product.name"); + myOldValues.WriteSurfaceCurMode = + Interface_Static::IVal("write.surfacecurve.mode") == 1; + myOldValues.WriteUnit = + (UnitsMethods_LengthUnit)Interface_Static::IVal("write.step.unit"); + myOldValues.WriteResourceName = + Interface_Static::CVal("write.resource.name"); + myOldValues.WriteSequence = + Interface_Static::CVal("write.step.sequence"); + myOldValues.WriteVertexMode = + (STEPCAFControl_ConfigurationNode::WriteMode_VertexMode) + Interface_Static::IVal("write.step.vertex.mode"); + myOldValues.WriteSubshapeNames = + Interface_Static::IVal("write.stepcaf.subshapes.name") == 1; + + // Set new values + setStatic(theNode->InternalParameters); + } + + //======================================================================= + // function : ~STEPCAFControl_ParameterController + // purpose : + //======================================================================= + STEPCAFControl_ParameterController::~STEPCAFControl_ParameterController() + { + if (!myToUpdateStaticParameters) + { + return; + } + setStatic(myOldValues); + } + + //======================================================================= + // function : setStatic + // purpose : + //======================================================================= + void STEPCAFControl_ParameterController::setStatic(const STEPCAFControl_ConfigurationNode::STEPCAFControl_InternalSection theParameter) + { + Interface_Static::SetIVal("read.iges.bspline.continuity", + theParameter.ReadBSplineContinuity); + Interface_Static::SetIVal("read.precision.mode", + theParameter.ReadPrecisionMode); + Interface_Static::SetRVal("read.precision.val", + theParameter.ReadPrecisionVal); + Interface_Static::SetIVal("read.maxprecision.mode", + theParameter.ReadMaxPrecisionMode); + Interface_Static::SetRVal("read.maxprecision.val", + theParameter.ReadMaxPrecisionVal); + Interface_Static::SetIVal("read.stdsameparameter.mode", + theParameter.ReadSameParamMode); + Interface_Static::SetIVal("read.surfacecurve.mode", + theParameter.ReadSurfaceCurveMode); + Interface_Static::SetRVal("read.encoderegularity.angle", + theParameter.EncodeRegAngle * M_PI / 180.0); + Interface_Static::SetIVal("step.angleunit.mode", + theParameter.AngleUnit); + + Interface_Static::SetCVal("read.step.resource.name", + theParameter.ReadResourceName.ToCString()); + Interface_Static::SetCVal("read.step.sequence", + theParameter.ReadSequence.ToCString()); + Interface_Static::SetIVal("read.step.product.mode", + theParameter.ReadProductMode); + Interface_Static::SetIVal("read.step.product.context", + theParameter.ReadProductContext); + Interface_Static::SetIVal("read.step.shape.repr", + theParameter.ReadShapeRepr); + Interface_Static::SetIVal("read.step.tessellated", + theParameter.ReadTessellated); + Interface_Static::SetIVal("read.step.assembly.level", + theParameter.ReadAssemblyLevel); + Interface_Static::SetIVal("read.step.shape.relationship", + theParameter.ReadRelationship); + Interface_Static::SetIVal("read.step.shape.aspect", + theParameter.ReadShapeAspect); + Interface_Static::SetIVal("read.step.constructivegeom.relationship", + theParameter.ReadConstrRelation); + Interface_Static::SetIVal("read.stepcaf.subshapes.name", + theParameter.ReadSubshapeNames); + Interface_Static::SetIVal("read.step.codepage", + theParameter.ReadCodePage); + Interface_Static::SetIVal("read.step.nonmanifold", + theParameter.ReadNonmanifold); + Interface_Static::SetIVal("read.step.ideas", + theParameter.ReadIdeas); + Interface_Static::SetIVal("read.step.all.shapes", + theParameter.ReadAllShapes); + Interface_Static::SetIVal("read.step.root.transformation", + theParameter.ReadRootTransformation); + + Interface_Static::SetIVal("write.precision.mode", + theParameter.WritePrecisionMode); + Interface_Static::SetRVal("write.precision.val", + theParameter.WritePrecisionVal); + Interface_Static::SetIVal("write.step.assembly", + theParameter.WriteAssembly); + Interface_Static::SetIVal("write.step.schema", + theParameter.WriteSchema); + Interface_Static::SetIVal("write.step.tessellated", + theParameter.WriteTessellated); + Interface_Static::SetCVal("write.step.product.name", + theParameter.WriteProductName.ToCString()); + Interface_Static::SetIVal("write.surfacecurve.mode", + theParameter.WriteSurfaceCurMode); + Interface_Static::SetIVal("write.step.unit", + theParameter.WriteUnit); + Interface_Static::SetCVal("write.resource.name", + theParameter.WriteResourceName.ToCString()); + Interface_Static::SetCVal("write.step.sequence", + theParameter.WriteSequence.ToCString()); + Interface_Static::SetIVal("write.step.vertex.mode", + theParameter.WriteVertexMode); + Interface_Static::SetIVal("write.stepcaf.subshapes.name", + theParameter.WriteSubshapeNames); + } +} + //======================================================================= // function : STEPCAFControl_Provider // purpose : @@ -67,212 +297,6 @@ void STEPCAFControl_Provider::personizeWS(Handle(XSControl_WorkSession)& theWS) } } -//======================================================================= -// function : initStatic -// purpose : -//======================================================================= -void STEPCAFControl_Provider::initStatic(const Handle(DE_ConfigurationNode)& theNode) -{ - Handle(STEPCAFControl_ConfigurationNode) aNode = - Handle(STEPCAFControl_ConfigurationNode)::DownCast(theNode); - STEPCAFControl_Controller::Init(); - if (!myToUpdateStaticParameters) - { - return; - } - // Get previous values - myOldValues.ReadBSplineContinuity = - (STEPCAFControl_ConfigurationNode::ReadMode_BSplineContinuity) - Interface_Static::IVal("read.iges.bspline.continuity"); - myOldValues.ReadPrecisionMode = - (STEPCAFControl_ConfigurationNode::ReadMode_Precision) - Interface_Static::IVal("read.precision.mode"); - myOldValues.ReadPrecisionVal = - Interface_Static::RVal("read.precision.val"); - myOldValues.ReadMaxPrecisionMode = - (STEPCAFControl_ConfigurationNode::ReadMode_MaxPrecision) - Interface_Static::IVal("read.maxprecision.mode"); - myOldValues.ReadMaxPrecisionVal = - Interface_Static::RVal("read.maxprecision.val"); - myOldValues.ReadSameParamMode = - Interface_Static::IVal("read.stdsameparameter.mode") == 1; - myOldValues.ReadSurfaceCurveMode = - (STEPCAFControl_ConfigurationNode::ReadMode_SurfaceCurve) - Interface_Static::IVal("read.surfacecurve.mode"); - myOldValues.EncodeRegAngle = - Interface_Static::RVal("read.encoderegularity.angle") * 180.0 / M_PI; - myOldValues.AngleUnit = - (STEPCAFControl_ConfigurationNode::AngleUnitMode) - Interface_Static::IVal("step.angleunit.mode"); - - myOldValues.ReadResourceName = - Interface_Static::CVal("read.step.resource.name"); - myOldValues.ReadSequence = - Interface_Static::CVal("read.step.sequence"); - myOldValues.ReadProductMode = - Interface_Static::IVal("read.step.product.mode") == 1; - myOldValues.ReadProductContext = - (STEPCAFControl_ConfigurationNode::ReadMode_ProductContext) - Interface_Static::IVal("read.step.product.context"); - myOldValues.ReadShapeRepr = - (STEPCAFControl_ConfigurationNode::ReadMode_ShapeRepr) - Interface_Static::IVal("read.step.shape.repr"); - myOldValues.ReadTessellated = - (STEPCAFControl_ConfigurationNode::RWMode_Tessellated) - Interface_Static::IVal("read.step.tessellated"); - myOldValues.ReadAssemblyLevel = - (STEPCAFControl_ConfigurationNode::ReadMode_AssemblyLevel) - Interface_Static::IVal("read.step.assembly.level"); - myOldValues.ReadRelationship = - Interface_Static::IVal("read.step.shape.relationship") == 1; - myOldValues.ReadShapeAspect = - Interface_Static::IVal("read.step.shape.aspect") == 1; - myOldValues.ReadConstrRelation = - Interface_Static::IVal("read.step.constructivegeom.relationship") == 1; - myOldValues.ReadSubshapeNames = - Interface_Static::IVal("read.stepcaf.subshapes.name") == 1; - myOldValues.ReadCodePage = - (Resource_FormatType)Interface_Static::IVal("read.step.codepage"); - myOldValues.ReadNonmanifold = - Interface_Static::IVal("read.step.nonmanifold") == 1; - myOldValues.ReadIdeas = - Interface_Static::IVal("read.step.ideas") == 1; - myOldValues.ReadAllShapes = - Interface_Static::IVal("read.step.all.shapes") == 1; - myOldValues.ReadRootTransformation = - Interface_Static::IVal("read.step.root.transformation") == 1; - - myOldValues.WritePrecisionMode = - (STEPCAFControl_ConfigurationNode::WriteMode_PrecisionMode) - Interface_Static::IVal("write.precision.mode"); - myOldValues.WritePrecisionVal = - Interface_Static::RVal("write.precision.val"); - myOldValues.WriteAssembly = - (STEPCAFControl_ConfigurationNode::WriteMode_Assembly) - Interface_Static::IVal("write.step.assembly"); - myOldValues.WriteSchema = - (STEPCAFControl_ConfigurationNode::WriteMode_StepSchema) - Interface_Static::IVal("write.step.schema"); - myOldValues.WriteTessellated = - (STEPCAFControl_ConfigurationNode::RWMode_Tessellated) - Interface_Static::IVal("write.step.tessellated"); - myOldValues.WriteProductName = - Interface_Static::CVal("write.step.product.name"); - myOldValues.WriteSurfaceCurMode = - Interface_Static::IVal("write.surfacecurve.mode") == 1; - myOldValues.WriteUnit = - (UnitsMethods_LengthUnit)Interface_Static::IVal("write.step.unit"); - myOldValues.WriteResourceName = - Interface_Static::CVal("write.resource.name"); - myOldValues.WriteSequence = - Interface_Static::CVal("write.step.sequence"); - myOldValues.WriteVertexMode = - (STEPCAFControl_ConfigurationNode::WriteMode_VertexMode) - Interface_Static::IVal("write.step.vertex.mode"); - myOldValues.WriteSubshapeNames = - Interface_Static::IVal("write.stepcaf.subshapes.name") == 1; - - // Set new values - setStatic(aNode->InternalParameters); -} - -//======================================================================= -// function : setStatic -// purpose : -//======================================================================= -void STEPCAFControl_Provider::setStatic(const STEPCAFControl_ConfigurationNode::STEPCAFControl_InternalSection theParameter) -{ - Interface_Static::SetIVal("read.iges.bspline.continuity", - theParameter.ReadBSplineContinuity); - Interface_Static::SetIVal("read.precision.mode", - theParameter.ReadPrecisionMode); - Interface_Static::SetRVal("read.precision.val", - theParameter.ReadPrecisionVal); - Interface_Static::SetIVal("read.maxprecision.mode", - theParameter.ReadMaxPrecisionMode); - Interface_Static::SetRVal("read.maxprecision.val", - theParameter.ReadMaxPrecisionVal); - Interface_Static::SetIVal("read.stdsameparameter.mode", - theParameter.ReadSameParamMode); - Interface_Static::SetIVal("read.surfacecurve.mode", - theParameter.ReadSurfaceCurveMode); - Interface_Static::SetRVal("read.encoderegularity.angle", - theParameter.EncodeRegAngle * M_PI / 180.0); - Interface_Static::SetIVal("step.angleunit.mode", - theParameter.AngleUnit); - - Interface_Static::SetCVal("read.step.resource.name", - theParameter.ReadResourceName.ToCString()); - Interface_Static::SetCVal("read.step.sequence", - theParameter.ReadSequence.ToCString()); - Interface_Static::SetIVal("read.step.product.mode", - theParameter.ReadProductMode); - Interface_Static::SetIVal("read.step.product.context", - theParameter.ReadProductContext); - Interface_Static::SetIVal("read.step.shape.repr", - theParameter.ReadShapeRepr); - Interface_Static::SetIVal("read.step.tessellated", - theParameter.ReadTessellated); - Interface_Static::SetIVal("read.step.assembly.level", - theParameter.ReadAssemblyLevel); - Interface_Static::SetIVal("read.step.shape.relationship", - theParameter.ReadRelationship); - Interface_Static::SetIVal("read.step.shape.aspect", - theParameter.ReadShapeAspect); - Interface_Static::SetIVal("read.step.constructivegeom.relationship", - theParameter.ReadConstrRelation); - Interface_Static::SetIVal("read.stepcaf.subshapes.name", - theParameter.ReadSubshapeNames); - Interface_Static::SetIVal("read.step.codepage", - theParameter.ReadCodePage); - Interface_Static::SetIVal("read.step.nonmanifold", - theParameter.ReadNonmanifold); - Interface_Static::SetIVal("read.step.ideas", - theParameter.ReadIdeas); - Interface_Static::SetIVal("read.step.all.shapes", - theParameter.ReadAllShapes); - Interface_Static::SetIVal("read.step.root.transformation", - theParameter.ReadRootTransformation); - - Interface_Static::SetIVal("write.precision.mode", - theParameter.WritePrecisionMode); - Interface_Static::SetRVal("write.precision.val", - theParameter.WritePrecisionVal); - Interface_Static::SetIVal("write.step.assembly", - theParameter.WriteAssembly); - Interface_Static::SetIVal("write.step.schema", - theParameter.WriteSchema); - Interface_Static::SetIVal("write.step.tessellated", - theParameter.WriteTessellated); - Interface_Static::SetCVal("write.step.product.name", - theParameter.WriteProductName.ToCString()); - Interface_Static::SetIVal("write.surfacecurve.mode", - theParameter.WriteSurfaceCurMode); - Interface_Static::SetIVal("write.step.unit", - theParameter.WriteUnit); - Interface_Static::SetCVal("write.resource.name", - theParameter.WriteResourceName.ToCString()); - Interface_Static::SetCVal("write.step.sequence", - theParameter.WriteSequence.ToCString()); - Interface_Static::SetIVal("write.step.vertex.mode", - theParameter.WriteVertexMode); - Interface_Static::SetIVal("write.stepcaf.subshapes.name", - theParameter.WriteSubshapeNames); -} - -//======================================================================= -// function : resetStatic -// purpose : -//======================================================================= -void STEPCAFControl_Provider::resetStatic() -{ - if (!myToUpdateStaticParameters) - { - return; - } - setStatic(myOldValues); -} - //======================================================================= // function : Read // purpose : @@ -297,8 +321,7 @@ bool STEPCAFControl_Provider::Read(const TCollection_AsciiString& thePath, } Handle(STEPCAFControl_ConfigurationNode) aNode = Handle(STEPCAFControl_ConfigurationNode)::DownCast(GetNode()); - initStatic(aNode); - + STEPCAFControl_ParameterController aParamController(aNode, myToUpdateStaticParameters); personizeWS(theWS); XCAFDoc_DocumentTool::SetLengthUnit(theDocument, aNode->GlobalParameters.LengthUnit, @@ -335,17 +358,14 @@ bool STEPCAFControl_Provider::Read(const TCollection_AsciiString& thePath, { Message::SendFail() << "Error: STEPCAFControl_Provider : [" << aFile << "] : abandon, no model loaded"; - resetStatic(); return false; } if (!aReader.Transfer(theDocument, theProgress)) { Message::SendFail() << "Error: STEPCAFControl_Provider : [" << aFile << "] : Cannot read any relevant data from the STEP file"; - resetStatic(); return false; } - resetStatic(); myProcessedExtFiles = aReader.ExternFiles(); return true; } @@ -376,8 +396,7 @@ bool STEPCAFControl_Provider::Read(std::istream& theIStream, } Handle(STEPCAFControl_ConfigurationNode) aNode = Handle(STEPCAFControl_ConfigurationNode)::DownCast(GetNode()); - initStatic(aNode); - + STEPCAFControl_ParameterController aParamController(aNode, myToUpdateStaticParameters); personizeWS(theWS); XCAFDoc_DocumentTool::SetLengthUnit(theDocument, aNode->GlobalParameters.LengthUnit, @@ -394,17 +413,14 @@ bool STEPCAFControl_Provider::Read(std::istream& theIStream, { Message::SendFail() << "Error: STEPCAFControl_Provider : " << "Abandon, no model loaded via stream"; - resetStatic(); return false; } if (!aReader.Transfer(theDocument, theProgress)) { Message::SendFail() << "Error: STEPCAFControl_Provider : " << "Cannot read any relevant data from the STEP file"; - resetStatic(); return false; } - resetStatic(); myProcessedExtFiles = aReader.ExternFiles(); return true; } @@ -427,13 +443,11 @@ bool STEPCAFControl_Provider::Write(const TCollection_AsciiString& thePath, } Handle(STEPCAFControl_ConfigurationNode) aNode = Handle(STEPCAFControl_ConfigurationNode)::DownCast(GetNode()); - initStatic(aNode); + STEPCAFControl_ParameterController aParamController(aNode, myToUpdateStaticParameters); + personizeWS(theWS); XCAFDoc_DocumentTool::SetLengthUnit(theDocument, - UnitsMethods::GetLengthUnitScale( - aNode->InternalParameters.WriteUnit, - UnitsMethods_LengthUnit_Millimeter), + aNode->GlobalParameters.LengthUnit, UnitsMethods_LengthUnit_Millimeter); - personizeWS(theWS); STEPCAFControl_Writer aWriter(theWS, Standard_True); STEPControl_StepModelType aMode = static_cast(aNode->InternalParameters.WriteModelType); @@ -489,12 +503,10 @@ bool STEPCAFControl_Provider::Write(const TCollection_AsciiString& thePath, { Message::SendFail() << "Error: STEPCAFControl_Provider : " << "The document cannot be translated or gives no result"; - resetStatic(); return false; } if (thePath == ".") { - resetStatic(); Message::SendInfo() << "Document has been translated into the session"; return true; } @@ -502,11 +514,9 @@ bool STEPCAFControl_Provider::Write(const TCollection_AsciiString& thePath, { Message::SendFail() << "Error: STEPCAFControl_Provider : [" << thePath << "] : Write failed"; - resetStatic(); return false; } Message::SendInfo() << "STEP file [" << thePath << "] Successfully written"; - resetStatic(); myProcessedExtFiles = aWriter.ExternFiles(); return true; } @@ -529,7 +539,7 @@ bool STEPCAFControl_Provider::Write(std::ostream& theOStream, } Handle(STEPCAFControl_ConfigurationNode) aNode = Handle(STEPCAFControl_ConfigurationNode)::DownCast(GetNode()); - initStatic(aNode); + STEPCAFControl_ParameterController aParamController(aNode, myToUpdateStaticParameters); personizeWS(theWS); STEPCAFControl_Writer aWriter(theWS, Standard_True); STEPControl_StepModelType aMode = @@ -538,10 +548,6 @@ bool STEPCAFControl_Provider::Write(std::ostream& theOStream, aWriter.SetNameMode(aNode->InternalParameters.WriteName); aWriter.SetLayerMode(aNode->InternalParameters.WriteLayer); aWriter.SetPropsMode(aNode->InternalParameters.WriteProps); - Handle(StepData_StepModel) aModel = aWriter.ChangeWriter().Model(); - aModel->SetWriteLengthUnit(UnitsMethods::GetLengthUnitScale( - aNode->InternalParameters.WriteUnit, - UnitsMethods_LengthUnit_Millimeter)); TDF_LabelSequence aLabels; TCollection_AsciiString aLabelsString; for (TColStd_ListOfAsciiString::Iterator anIter(aNode->InternalParameters.WriteLabels); @@ -588,17 +594,14 @@ bool STEPCAFControl_Provider::Write(std::ostream& theOStream, { Message::SendFail() << "Error: STEPCAFControl_Provider : " << "The document cannot be translated or gives no result"; - resetStatic(); return false; } if (aWriter.WriteStream(theOStream) != IFSelect_RetDone) { Message::SendFail() << "Error: STEPCAFControl_Provider : Write to stream failed"; - resetStatic(); return false; } Message::SendInfo() << "STEP file to stream successfully written"; - resetStatic(); myProcessedExtFiles = aWriter.ExternFiles(); return true; } @@ -622,14 +625,13 @@ bool STEPCAFControl_Provider::Read(const TCollection_AsciiString& thePath, } Handle(STEPCAFControl_ConfigurationNode) aNode = Handle(STEPCAFControl_ConfigurationNode)::DownCast(GetNode()); - initStatic(aNode); + STEPCAFControl_ParameterController aParamController(aNode, myToUpdateStaticParameters); personizeWS(theWS); STEPControl_Reader aReader(theWS); if (aReader.ReadFile(thePath.ToCString()) != IFSelect_RetDone) { Message::SendFail() << "Error: STEPCAFControl_Provider : [" << thePath << "] : abandon, no model loaded"; - resetStatic(); return false; } Handle(StepData_StepModel) aModel = Handle(StepData_StepModel)::DownCast(aReader.Model()); @@ -638,11 +640,9 @@ bool STEPCAFControl_Provider::Read(const TCollection_AsciiString& thePath, { Message::SendFail() << "Error: STEPCAFControl_Provider : [" << thePath << "] : Cannot read any relevant data from the STEP file"; - resetStatic(); return false; } theShape = aReader.OneShape(); - resetStatic(); return true; } @@ -666,14 +666,13 @@ bool STEPCAFControl_Provider::Read(std::istream& theIStream, } Handle(STEPCAFControl_ConfigurationNode) aNode = Handle(STEPCAFControl_ConfigurationNode)::DownCast(GetNode()); - initStatic(aNode); + STEPCAFControl_ParameterController aParamController(aNode, myToUpdateStaticParameters); personizeWS(theWS); STEPControl_Reader aReader(theWS); if (aReader.ReadStream(theName.ToCString(), theIStream) != IFSelect_RetDone) { Message::SendFail() << "Error: STEPCAFControl_Provider : " << "Abandon, no model loaded from STEP stream"; - resetStatic(); return false; } Handle(StepData_StepModel) aModel = Handle(StepData_StepModel)::DownCast(aReader.Model()); @@ -682,11 +681,9 @@ bool STEPCAFControl_Provider::Read(std::istream& theIStream, { Message::SendFail() << "Error: STEPCAFControl_Provider : " << "Cannot read any relevant data from the STEP stream"; - resetStatic(); return false; } theShape = aReader.OneShape(); - resetStatic(); return true; } @@ -708,8 +705,7 @@ bool STEPCAFControl_Provider::Write(const TCollection_AsciiString& thePath, } Handle(STEPCAFControl_ConfigurationNode) aNode = Handle(STEPCAFControl_ConfigurationNode)::DownCast(GetNode()); - initStatic(aNode); - + STEPCAFControl_ParameterController aParamController(aNode, myToUpdateStaticParameters); personizeWS(theWS); STEPControl_Writer aWriter(theWS, Standard_True); Handle(StepData_StepModel) aModel = aWriter.Model(); @@ -727,12 +723,10 @@ bool STEPCAFControl_Provider::Write(const TCollection_AsciiString& thePath, { Message::SendFail() << "Error: STEPCAFControl_Provider : " << "Can't translate shape to STEP model"; - resetStatic(); return false; } if (thePath == ".") { - resetStatic(); Message::SendInfo() << "Step model has been translated into the session"; return true; } @@ -740,10 +734,8 @@ bool STEPCAFControl_Provider::Write(const TCollection_AsciiString& thePath, { Message::SendFail() << "Error: STEPCAFControl_Provider : " << "Can't write STEP file " << thePath; - resetStatic(); return false; } - resetStatic(); return true; } @@ -765,8 +757,7 @@ bool STEPCAFControl_Provider::Write(std::ostream& theOStream, } Handle(STEPCAFControl_ConfigurationNode) aNode = Handle(STEPCAFControl_ConfigurationNode)::DownCast(GetNode()); - initStatic(aNode); - + STEPCAFControl_ParameterController aParamController(aNode, myToUpdateStaticParameters); personizeWS(theWS); STEPControl_Writer aWriter(theWS, Standard_True); Handle(StepData_StepModel) aModel = aWriter.Model(); @@ -784,17 +775,14 @@ bool STEPCAFControl_Provider::Write(std::ostream& theOStream, { Message::SendFail() << "Error: STEPCAFControl_Provider : " << "Can't translate shape to STEP model"; - resetStatic(); return false; } if (aWriter.WriteStream(theOStream) != IFSelect_RetDone) { Message::SendFail() << "Error: STEPCAFControl_Provider : " << "Can't write STEP to stream"; - resetStatic(); return false; } - resetStatic(); return true; } diff --git a/src/STEPCAFControl/STEPCAFControl_Provider.hxx b/src/STEPCAFControl/STEPCAFControl_Provider.hxx index 75b029d555..79b91d5a12 100644 --- a/src/STEPCAFControl/STEPCAFControl_Provider.hxx +++ b/src/STEPCAFControl/STEPCAFControl_Provider.hxx @@ -170,19 +170,9 @@ private: //! @param[in] theWS current work session void personizeWS(Handle(XSControl_WorkSession)& theWS); - //! Initialize static variables - void initStatic(const Handle(DE_ConfigurationNode)& theNode); - - //! Initialize static variables - void setStatic(const STEPCAFControl_ConfigurationNode::STEPCAFControl_InternalSection theParameter); - - //! Reset used interface static variables - void resetStatic(); - private: bool myToUpdateStaticParameters = true; //!< Flag to updating static parameters - STEPCAFControl_ConfigurationNode::STEPCAFControl_InternalSection myOldValues; //!< Container to save previous static parameters NCollection_DataMap myProcessedExtFiles; //!< External files from the last operation }; diff --git a/src/XDEDRAW/XDEDRAW_Common.cxx b/src/XDEDRAW/XDEDRAW_Common.cxx index a15136359b..14d157e1c0 100644 --- a/src/XDEDRAW/XDEDRAW_Common.cxx +++ b/src/XDEDRAW/XDEDRAW_Common.cxx @@ -854,7 +854,7 @@ static Standard_Integer WriteVrml(Draw_Interpretor& theDI, } Handle(Vrml_ConfigurationNode) aNode = new Vrml_ConfigurationNode(); - aNode->GlobalParameters.LengthUnit = getLengthUnit(aDoc); + aNode->GlobalParameters.LengthUnit = getLengthUnit(aDoc) * 0.001; Handle(Vrml_Provider) aProvider = new Vrml_Provider(aNode); diff --git a/tests/de/step_3/A1 b/tests/de/step_3/A1 index a6e96e7d64..000835de93 100644 --- a/tests/de/step_3/A1 +++ b/tests/de/step_3/A1 @@ -1,6 +1,6 @@ # !!!! This file is generated automatically, do not edit manually! See end script -puts "TODO CR23096 ALL: Error: First - file was not read - exception " -puts "TODO CR23096 ALL: Error : Here is reading problem" - +puts "TODO CR00000 ALL: Error: First - file was not read - exception " +puts "TODO CR00000 ALL: Error : Here is reading problem" +puts "TODO CR00000 ALL: Error: STEPCAFControl_Provider" set filename tr9_r0301-pe-adjusted.stp diff --git a/tests/de/step_5/B6 b/tests/de/step_5/B6 index e22e7bce43..1d6507d6b9 100644 --- a/tests/de/step_5/B6 +++ b/tests/de/step_5/B6 @@ -1,6 +1,7 @@ # !!!! This file is generated automatically, do not edit manually! See end script -puts "TODO CR23096 ALL: Error: First - file was not read - exception " -puts "TODO CR23096 ALL: Error : Here is reading problem" +puts "TODO CR00000 ALL: Error: First - file was not read - exception " +puts "TODO CR00000 ALL: Error : Here is reading problem" +puts "TODO CR00000 ALL: Error: STEPCAFControl_Provider" set filename buc60990.stp