]> OCCT Git - occt.git/commitdiff
0032835: DEWrapper - Update OCC DE structure CR32835
authorAleksei TYCHININ <aleksei.tychinin@opencascade.com>
Thu, 17 Feb 2022 12:27:19 +0000 (15:27 +0300)
committerAleksei TYCHININ <aleksei.tychinin@opencascade.com>
Mon, 21 Feb 2022 16:37:55 +0000 (19:37 +0300)
Test version(for feedback)

67 files changed:
src/BRepToIGES/BRepToIGES_BREntity.cxx
src/BRepToIGES/BRepToIGES_BREntity.hxx
src/BRepToIGESBRep/BRepToIGESBRep_Entity.cxx
src/BRepToIGESBRep/BRepToIGESBRep_Entity.hxx
src/GeomToIGES/GeomToIGES_GeomCurve.cxx
src/GeomToIGES/GeomToIGES_GeomCurve.hxx
src/GeomToIGES/GeomToIGES_GeomSurface.cxx
src/GeomToIGES/GeomToIGES_GeomSurface.hxx
src/IGESControl/IGESControl_ActorWrite.cxx
src/IGESControl/IGESControl_ActorWrite.hxx
src/IGESControl/IGESControl_IGESBoundary.cxx
src/IGESControl/IGESControl_IGESBoundary.hxx
src/IGESControl/IGESControl_Reader.cxx
src/IGESControl/IGESControl_Reader.hxx
src/IGESControl/IGESControl_Reader.lxx
src/IGESControl/IGESControl_Writer.cxx
src/IGESControl/IGESControl_Writer.hxx
src/IGESData/IGESData_IGESModel.cxx
src/IGESData/IGESData_IGESModel.hxx
src/IGESToBRep/IGESToBRep_Actor.cxx
src/IGESToBRep/IGESToBRep_Actor.hxx
src/IGESToBRep/IGESToBRep_CurveAndSurface.cxx
src/IGESToBRep/IGESToBRep_CurveAndSurface.hxx
src/IGESToBRep/IGESToBRep_Reader.cxx
src/IGESToBRep/IGESToBRep_Reader.hxx
src/STEPCAFControl/STEPCAFControl_Reader.cxx
src/STEPCAFControl/STEPCAFControl_Reader.hxx
src/STEPCAFControl/STEPCAFControl_Writer.cxx
src/STEPCAFControl/STEPCAFControl_Writer.hxx
src/STEPConstruct/STEPConstruct_ContextTool.cxx
src/STEPConstruct/STEPConstruct_ContextTool.hxx
src/STEPConstruct/STEPConstruct_Part.cxx
src/STEPConstruct/STEPConstruct_Part.hxx
src/STEPConstruct/STEPConstruct_Styles.cxx
src/STEPConstruct/STEPConstruct_Styles.hxx
src/STEPConstruct/STEPConstruct_UnitContext.cxx
src/STEPConstruct/STEPConstruct_UnitContext.hxx
src/STEPConstruct/STEPConstruct_ValidationProps.cxx
src/STEPConstruct/STEPConstruct_ValidationProps.hxx
src/STEPControl/STEPControl_ActorRead.cxx
src/STEPControl/STEPControl_ActorRead.hxx
src/STEPControl/STEPControl_ActorWrite.cxx
src/STEPControl/STEPControl_ActorWrite.hxx
src/STEPControl/STEPControl_Controller.cxx
src/STEPControl/STEPControl_Reader.cxx
src/STEPControl/STEPControl_Reader.hxx
src/StepAP214/StepAP214_Protocol.cxx
src/StepAP214/StepAP214_Protocol.hxx
src/StepData/StepData_StepModel.cxx
src/StepData/StepData_StepModel.hxx
src/StepToTopoDS/StepToTopoDS_TranslateCompositeCurve.cxx
src/StepToTopoDS/StepToTopoDS_TranslateCompositeCurve.hxx
src/StepToTopoDS/StepToTopoDS_TranslateEdgeLoop.cxx
src/StepToTopoDS/StepToTopoDS_TranslateEdgeLoop.hxx
src/TopoDSToStep/TopoDSToStep_MakeStepEdge.cxx
src/TopoDSToStep/TopoDSToStep_MakeStepEdge.hxx
src/TopoDSToStep/TopoDSToStep_MakeStepFace.cxx
src/TopoDSToStep/TopoDSToStep_MakeStepFace.hxx
src/TopoDSToStep/TopoDSToStep_MakeStepVertex.cxx
src/TopoDSToStep/TopoDSToStep_MakeStepVertex.hxx
src/TopoDSToStep/TopoDSToStep_Tool.cxx
src/TopoDSToStep/TopoDSToStep_Tool.hxx
src/XSAlgo/XSAlgo_AlgoContainer.cxx
src/XSAlgo/XSAlgo_AlgoContainer.hxx
src/XSAlgo/XSAlgo_AlgoContainer.lxx
src/XSControl/XSControl_TransferWriter.cxx
src/XSControl/XSControl_TransferWriter.hxx

index 2487684fa80a4f9da5013816384e73d0607bf282..be5ecdfdaefcbcb1fd6746ab6a5f81043f6b9a82 100644 (file)
@@ -370,6 +370,18 @@ Standard_Boolean BRepToIGES_BREntity::GetPCurveMode () const
 {
   return myPCurveMode;
 }
+
+void BRepToIGES_BREntity::SetConvertSurfaceMode(const Standard_Boolean theVal)
+{
+  Interface_Static::SetIVal("write.convertsurface.mode", theVal);
+  myConvSurface = theVal;
+}
+
+Standard_EXPORT void BRepToIGES_BREntity::SetPCurveMode(const Standard_Boolean theVal)
+{
+  Interface_Static::SetIVal("write.surfacecurve.mode", theVal);
+  myPCurveMode = theVal;
+}
            
 //=======================================================================
 //function : ~BRepToIGES_BREntity
index 18247ccf6776a5c0aaffbd4d050ccd1a3aa778ce..aa2577cedc5267b60ab1f586a5347d398a77bb6b 100644 (file)
@@ -109,15 +109,24 @@ public:
   //! Returns mode for writing pcurves
   //! (value of parameter write.surfacecurve.mode)
   Standard_EXPORT Standard_Boolean GetPCurveMode() const;
+
+  Standard_EXPORT void SetConvertSurfaceMode(const Standard_Boolean theVal);
+
+  Standard_EXPORT void SetPCurveMode(const Standard_Boolean theVal);
   
   Standard_EXPORT virtual ~BRepToIGES_BREntity();
 
+protected:
+
+  Standard_Boolean myConvSurface;
+  Standard_Boolean myPCurveMode;
+
 private:
+
   Handle(IGESData_IGESModel) TheModel;
   Standard_Real TheUnitFactor;
-  Standard_Boolean myConvSurface;
-  Standard_Boolean myPCurveMode;
   Handle(Transfer_FinderProcess) TheMap;
+
 };
 
 #endif // _BRepToIGES_BREntity_HeaderFile
index 19264ed464bfd047d8fc68bd50a1e8d3d4a097b5..d3dc98503768a0830abb7b127024688f0f1a18cf 100644 (file)
@@ -494,7 +494,7 @@ Handle(IGESSolid_Face) BRepToIGESBRep_Entity ::TransferFace(const TopoDS_Face& s
     GeomToIGES_GeomSurface GS;
     //S4181 pdn 17.04.99 Boolean flags in order to define write of elementary surfaces added.
     GS.SetBRepMode(Standard_True);
-    GS.SetAnalyticMode ( Interface_Static::IVal("write.convertsurface.mode") ==0 );
+    GS.SetAnalyticMode (myConvSurface == 0 );
     GS.SetModel(GetModel());
 
     Handle(Geom_Surface) st;
index 60332515c3b30c589fc7c4f1521e40489704573d..bf31556a951ad756b476205ebd1706db40b13f23 100644 (file)
@@ -140,7 +140,6 @@ private:
   Handle(IGESSolid_EdgeList) myEdgeList;
   Handle(IGESSolid_VertexList) myVertexList;
 
-
 };
 
 
index 423ceed56dc0ecfa2d5eedba44139dbbe2539b24..1f398234bb4d323d20464193443e250fe5f1db7f 100644 (file)
@@ -87,6 +87,7 @@
 GeomToIGES_GeomCurve::GeomToIGES_GeomCurve()
 :GeomToIGES_GeomEntity()
 {
+  myOffsetModeIVal = Interface_Static::IVal("write.iges.offset.mode");
 }
 
 
@@ -98,6 +99,7 @@ GeomToIGES_GeomCurve::GeomToIGES_GeomCurve
 (const GeomToIGES_GeomEntity& GE)
 :GeomToIGES_GeomEntity(GE)
 {
+  myOffsetModeIVal = Interface_Static::IVal("write.iges.offset.mode");
 }
 
 
@@ -815,7 +817,7 @@ Handle(IGESData_IGESEntity) GeomToIGES_GeomCurve::TransferCurve
   if (Precision::IsNegativeInfinite(Udeb)) U1 = -Precision::Infinite();
   if (Precision::IsPositiveInfinite(Ufin)) U2 = Precision::Infinite();
 
-  if (Interface_Static::IVal("write.iges.offset.mode") == 0)
+  if (myOffsetModeIVal == 0)
   {
     res = TransferCurve(GeomConvert::CurveToBSplineCurve(start),U1,U2);
     return res;
@@ -853,3 +855,14 @@ Handle(IGESData_IGESEntity) GeomToIGES_GeomCurve::TransferCurve
   res = OffsetC;  
   return res;
 }
+
+void GeomToIGES_GeomCurve::SetOffsetModeIVal(const Standard_Integer theVal)
+{
+  Interface_Static::SetIVal("write.iges.offset.mode", theVal);
+  myOffsetModeIVal = theVal;
+}
+
+Standard_Integer GeomToIGES_GeomCurve::GetOffsetModeIVal() const
+{
+  return myOffsetModeIVal;
+}
index 6eebea1dab0f2b2ebd10cb03069c356b87c75d21..75fa28ba248a14861324b0f64aa07498df8e2586 100644 (file)
@@ -92,7 +92,9 @@ public:
   
   Standard_EXPORT Handle(IGESData_IGESEntity) TransferCurve (const Handle(Geom_OffsetCurve)& start, const Standard_Real Udeb, const Standard_Real Ufin);
 
+  Standard_EXPORT void SetOffsetModeIVal(const Standard_Integer theVal);
 
+  Standard_EXPORT Standard_Integer GetOffsetModeIVal() const;
 
 
 protected:
@@ -104,7 +106,7 @@ protected:
 private:
 
 
-
+  Standard_Integer myOffsetModeIVal;
 
 
 };
index 7ca12a35a8b6950b219ab464d2cc07d1603e3bd5..a1831122dbaa617ccf662758a5162185ff7574c5 100644 (file)
@@ -100,6 +100,7 @@ GeomToIGES_GeomSurface::GeomToIGES_GeomSurface()
 {
   myBRepMode = Standard_False;
   myAnalytic = Standard_False;
+  myPlaneModeIVal = Interface_Static::IVal("write.iges.plane.mode");
 }
 
 
@@ -112,6 +113,7 @@ GeomToIGES_GeomSurface::GeomToIGES_GeomSurface(const GeomToIGES_GeomEntity& GE)
 {
   myBRepMode = Standard_False;
   myAnalytic = Standard_False;
+  myPlaneModeIVal = Interface_Static::IVal("write.iges.plane.mode");
 }
 
 
@@ -537,7 +539,7 @@ Handle(IGESData_IGESEntity) GeomToIGES_GeomSurface::TransferSurface(const Handle
   if (start.IsNull()) {
     return res;
   }
-  if (Interface_Static::IVal("write.iges.plane.mode") == 0){
+  if (myPlaneModeIVal == 0){
     Handle(IGESGeom_Plane) aPlane = new IGESGeom_Plane;
     Standard_Real A,B,C,D;
     start->Coefficients(A,B,C,D);
@@ -1347,3 +1349,13 @@ void GeomToIGES_GeomSurface::SetAnalyticMode(const Standard_Boolean flag)
   myAnalytic = flag;
 }
 
+void GeomToIGES_GeomSurface::SetPlaneModeIVal(const Standard_Integer theVal)
+{
+  Interface_Static::SetIVal("write.iges.plane.mode", theVal);
+  myPlaneModeIVal = theVal;
+}
+
+Standard_Integer GeomToIGES_GeomSurface::GetPlaneModeIVal() const
+{
+  return myPlaneModeIVal;
+}
index 28e7da67dccd432fd9709af2de9021ae9052f884..38e289e5ee63780c1758cc6bad8dbb4247bd56fe 100644 (file)
@@ -129,7 +129,9 @@ public:
   //! Setst flag for writing elementary surfaces
   Standard_EXPORT void SetAnalyticMode (const Standard_Boolean flag);
 
+  Standard_EXPORT void SetPlaneModeIVal(const Standard_Integer theVal);
 
+  Standard_EXPORT Standard_Integer GetPlaneModeIVal() const;
 
 
 protected:
@@ -145,6 +147,7 @@ private:
   Standard_Real TheLength;
   Standard_Boolean myBRepMode;
   Standard_Boolean myAnalytic;
+  Standard_Integer myPlaneModeIVal;
 
 
 };
index 836803c23228fb53767c068c9a4ff2c297a19ddc..f42e9ec98434b23f2bc675f313211307e8c3465d 100644 (file)
 
 IMPLEMENT_STANDARD_RTTIEXT(IGESControl_ActorWrite,Transfer_ActorOfFinderProcess)
 
-IGESControl_ActorWrite::IGESControl_ActorWrite ()  {  ModeTrans() = 0;  }
+IGESControl_ActorWrite::IGESControl_ActorWrite ()  
+{  
+  ModeTrans() = 0;  
+  myPrecRVal = Interface_Static::RVal("write.precision.val");
+  myMaxPrecRVal = Interface_Static::RVal("read.maxprecision.val");
+}
 
 Standard_Boolean  IGESControl_ActorWrite::Recognize
   (const Handle(Transfer_Finder)& start)
@@ -70,8 +75,8 @@ Handle(Transfer_Binder)  IGESControl_ActorWrite::Transfer
     if (shape.IsNull()) return NullResult();
 //  modified by NIZHNY-EAP Tue Aug 29 11:16:54 2000 ___BEGIN___
     Handle(Standard_Transient) info;
-    Standard_Real Tol = Interface_Static::RVal("write.precision.val");
-    Standard_Real maxTol = Interface_Static::RVal("read.maxprecision.val");
+    Standard_Real Tol = myPrecRVal;
+    Standard_Real maxTol = myMaxPrecRVal;
     shape = XSAlgo::AlgoContainer()->ProcessShape( shape, Tol, maxTol, 
                                                    "write.iges.resource.name", 
                                                    "write.iges.sequence", info,
@@ -113,3 +118,25 @@ Handle(Transfer_Binder)  IGESControl_ActorWrite::Transfer
 
   return NullResult();
 }
+
+void IGESControl_ActorWrite::SetPrecRVal(const Standard_Real theVal)
+{
+  Interface_Static::SetRVal("write.precision.val", theVal);
+  myPrecRVal = theVal;
+}
+
+void IGESControl_ActorWrite::SetMaxPrecRVal(const Standard_Real theVal)
+{
+  Interface_Static::SetRVal("read.maxprecision.val", theVal);
+  myMaxPrecRVal = theVal;
+}
+
+Standard_Real IGESControl_ActorWrite::GetPrecRVal() const
+{
+  return myPrecRVal;
+}
+
+Standard_Real IGESControl_ActorWrite::GetMaxPrecRVal() const
+{
+  return myMaxPrecRVal;
+}
index e6a17a8ea8509b54798a73555221a400f4d2b9f4..52b3be562eee583ccc25ad08d7179176262a8aba 100644 (file)
@@ -51,8 +51,13 @@ public:
                     const Handle(Transfer_FinderProcess)& FP,
                     const Message_ProgressRange& theProgress = Message_ProgressRange()) Standard_OVERRIDE;
 
+  Standard_EXPORT void SetPrecRVal(const Standard_Real theVal);
 
+  Standard_EXPORT void SetMaxPrecRVal(const Standard_Real theVal);
 
+  Standard_EXPORT Standard_Real GetPrecRVal() const;
+
+  Standard_EXPORT Standard_Real GetMaxPrecRVal() const;
 
   DEFINE_STANDARD_RTTIEXT(IGESControl_ActorWrite,Transfer_ActorOfFinderProcess)
 
@@ -63,7 +68,8 @@ protected:
 
 private:
 
-
+  Standard_Real myPrecRVal;
+  Standard_Real myMaxPrecRVal;
 
 
 };
index 3169a9a38a14f42bb060b6498d75ec9a9d9a2d38..7fee16d7681c91ce5baceb916976079647f1cbdd 100644 (file)
@@ -52,6 +52,7 @@ IMPLEMENT_STANDARD_RTTIEXT(IGESControl_IGESBoundary,IGESToBRep_IGESBoundary)
 //=======================================================================
 IGESControl_IGESBoundary::IGESControl_IGESBoundary() : IGESToBRep_IGESBoundary()
 {
+  myParModeIVal = Interface_Static::IVal("read.stdsameparameter.mode");
 }
 
 //=======================================================================
@@ -62,6 +63,7 @@ IGESControl_IGESBoundary::IGESControl_IGESBoundary() : IGESToBRep_IGESBoundary()
 IGESControl_IGESBoundary::IGESControl_IGESBoundary(const IGESToBRep_CurveAndSurface& CS) :
        IGESToBRep_IGESBoundary (CS)
 {
+  myParModeIVal = Interface_Static::IVal("read.stdsameparameter.mode");
 }
 
 //=======================================================================
@@ -302,7 +304,7 @@ static Standard_Boolean Connect (const Handle(ShapeAnalysis_Wire)& theSAW,
 #endif
          }
          //#74 rln 10.03.99 S4135: handling use of BRepLib::SameParameter by new static parameter
-         if (Interface_Static::IVal ("read.stdsameparameter.mode")) {
+         if (myParModeIVal) {
            Standard_Real first, last;
            BRep_Tool::Range(edge3d,first,last);
            // pdn 08.04.99 S4135 optimizing in computation of SPTol
@@ -405,3 +407,13 @@ static Standard_Boolean Connect (const Handle(ShapeAnalysis_Wire)& theSAW,
   return okCurve;
 }
 
+void IGESControl_IGESBoundary::SetParModeIVal(const Standard_Integer theVal)
+{
+  Interface_Static::SetIVal("read.stdsameparameter.mode", theVal);
+  myParModeIVal = theVal;
+}
+
+Standard_Integer IGESControl_IGESBoundary::GetParModeIVal() const
+{
+  return myParModeIVal;
+}
\ No newline at end of file
index 838508b2d7a734c7f89730bafecbf4adb7476541..658c6509d0bc0577531bc3addf46ad92dc14198a 100644 (file)
@@ -54,12 +54,20 @@ public:
   //! wire to contain only closed representation.
   Standard_EXPORT virtual void Check (const Standard_Boolean result, const Standard_Boolean checkclosure, const Standard_Boolean okCurve3d, const Standard_Boolean okCurve2d) Standard_OVERRIDE;
 
+  Standard_EXPORT void SetParModeIVal(const Standard_Integer theVal);
+
+  Standard_EXPORT Standard_Integer GetParModeIVal() const;
+
   DEFINE_STANDARD_RTTIEXT(IGESControl_IGESBoundary,IGESToBRep_IGESBoundary)
 
 protected:
 
   Standard_EXPORT virtual Standard_Boolean Transfer (Standard_Boolean& okCurve, Standard_Boolean& okCurve3d, Standard_Boolean& okCurve2d, const Handle(IGESData_IGESEntity)& icurve3d, const Handle(ShapeExtend_WireData)& scurve3d, const Standard_Boolean usescurve, const Standard_Boolean toreverse3d, const Handle(IGESData_HArray1OfIGESEntity)& curves2d, const Standard_Boolean toreverse2d, const Standard_Integer number, Handle(ShapeExtend_WireData)& lsewd) Standard_OVERRIDE;
 
+private:
+
+  Standard_Integer myParModeIVal;
+
 };
 
 #endif // _IGESControl_IGESBoundary_HeaderFile
index 8d4142b79d704088b77177e081a7c0684deec93b..0e6637e0b7d2cdad2be0b639cd21a539f4c1f026 100644 (file)
@@ -61,7 +61,7 @@ IGESControl_Reader::IGESControl_Reader ()
   SetWS (new XSControl_WorkSession);
   SetNorm("IGES");
   Standard_Integer onlyvisible = Interface_Static::IVal("read.iges.onlyvisible");
-  theReadOnlyVisible = (onlyvisible == 1);
+  myOnlyVisIVal = (onlyvisible == 1);
 }
 
 
@@ -77,7 +77,7 @@ IGESControl_Reader::IGESControl_Reader
   SetWS (WS,scratch);
   SetNorm ("IGES");
   Standard_Integer onlyvisible = Interface_Static::IVal("read.iges.onlyvisible");
-  theReadOnlyVisible = (onlyvisible == 1);
+  myOnlyVisIVal = (onlyvisible == 1);
  }
 
 
@@ -114,14 +114,14 @@ Standard_Integer  IGESControl_Reader::NbRootsForTransfer()
   Interface_ShareFlags SH (model,protocol);
    
   // sln 11.06.2002 OCC448
-  Interface_Static::SetIVal("read.iges.onlyvisible",theReadOnlyVisible);
+  Interface_Static::SetIVal("read.iges.onlyvisible",myOnlyVisIVal);
   
   Standard_Integer nb = model->NbEntities();
   for (Standard_Integer i = 1; i <= nb; i ++) {
     Handle(IGESData_IGESEntity) ent = model->Entity(i);
     if ( SH.IsShared(ent) || ! actor->Recognize (ent) ) continue;
     // on ajoute un traitement pour ne prendre que les entites visibles
-    if ( ! theReadOnlyVisible || ent->BlankStatus() == 0 ) {
+    if ( ! myOnlyVisIVal || ent->BlankStatus() == 0 ) {
       theroots.Append(ent);
     }
   }
@@ -320,3 +320,14 @@ void  IGESControl_Reader::PrintTransferInfo
     }
   }
 }
+
+void IGESControl_Reader::SetOnlyVisibleIVal(const Standard_Integer theVal)
+{
+  Interface_Static::SetIVal("read.iges.onlyvisible", theVal);
+  myOnlyVisIVal = theVal;
+}
+
+Standard_Integer IGESControl_Reader::GetOnlyVisibleIVal() const
+{
+  return myOnlyVisIVal;
+}
index 89146159363c01e56ff439625d57a6ddf4e3a605..b6646809ac3d21f088226626557a5d335f69062a 100644 (file)
@@ -97,7 +97,9 @@ public:
   //! Prints Statistics and check list for Transfer
   Standard_EXPORT void PrintTransferInfo (const IFSelect_PrintFail failwarn, const IFSelect_PrintCount mode) const;
 
+  Standard_EXPORT void SetOnlyVisibleIVal(const Standard_Integer theVal);
 
+  Standard_EXPORT Standard_Integer GetOnlyVisibleIVal() const;
 
 
 protected:
@@ -110,7 +112,7 @@ private:
 
 
 
-  Standard_Boolean theReadOnlyVisible;
+  Standard_Boolean myOnlyVisIVal;
 
 
 };
index 3116f1db604d1e6c5a5845dc79d3941d845fbb68..c09389ff507415db85c2e650efdda87536b68277 100644 (file)
@@ -18,7 +18,7 @@
 
 inline void IGESControl_Reader::SetReadVisible (const Standard_Boolean ReadRoot)
 {
theReadOnlyVisible = ReadRoot;
 myOnlyVisIVal = ReadRoot;
 }
 
 
@@ -29,5 +29,5 @@ inline void IGESControl_Reader::SetReadVisible (const Standard_Boolean ReadRoot)
 
 inline Standard_Boolean IGESControl_Reader::GetReadVisible ()const
 {
return  theReadOnlyVisible;
 return myOnlyVisIVal;
 }
index 735f49ac06d9e97d1adb7bf66ead52e68d750316..1a4518a114b54aa93fca17bcba57951b5e084387 100644 (file)
@@ -54,20 +54,29 @@ IGESControl_Writer::IGESControl_Writer ()
        myIsComputed (Standard_False)
 {
 //  faudrait aussi (?) prendre les parametres par defaut ... ?
+  myUnitCVal = Interface_Static::CVal("write.iges.unit");
+  myBRepModeIVal = Interface_Static::IVal("write.iges.brep.mode");
+  myPrecRVal = Interface_Static::RVal("write.precision.val");
+  myMaxPrecRVal = Interface_Static::RVal("read.maxprecision.val");
+  myPrecModeIVal = Interface_Static::IVal("write.precision.mode");
   IGESControl_Controller::Init();
   myEditor.Init(IGESSelect_WorkLibrary::DefineProtocol());
-  myEditor.SetUnitName(Interface_Static::CVal ("write.iges.unit"));
+  myEditor.SetUnitName(myUnitCVal);
   myEditor.ApplyUnit(); 
-  myWriteMode = Interface_Static::IVal ("write.iges.brep.mode");
   myModel = myEditor.Model();
 }
 
 IGESControl_Writer::IGESControl_Writer
   (const Standard_CString unit, const Standard_Integer modecr)
     :  myTP (new Transfer_FinderProcess(10000)) ,
-       myWriteMode (modecr) , myIsComputed (Standard_False)
+       myBRepModeIVal (modecr) , myIsComputed (Standard_False)
 {
 //  faudrait aussi (?) prendre les parametres par defaut ... ?
+  myUnitCVal = Interface_Static::CVal("write.iges.unit");
+  myBRepModeIVal = Interface_Static::IVal("write.iges.brep.mode");
+  myPrecRVal = Interface_Static::RVal("write.precision.val");
+  myMaxPrecRVal = Interface_Static::RVal("read.maxprecision.val");
+  myPrecModeIVal = Interface_Static::IVal("write.precision.mode");
   IGESControl_Controller::Init();
   myEditor.Init(IGESSelect_WorkLibrary::DefineProtocol());
   myEditor.SetUnitName(unit);
@@ -80,7 +89,14 @@ IGESControl_Writer::IGESControl_Writer
     :  myTP (new Transfer_FinderProcess(10000)) ,
        myModel (model) , 
        myEditor (model,IGESSelect_WorkLibrary::DefineProtocol()) ,
-       myWriteMode (modecr) , myIsComputed (Standard_False)     {  }
+       myBRepModeIVal (modecr) , myIsComputed (Standard_False)     
+{  
+  myUnitCVal = Interface_Static::CVal("write.iges.unit");
+  myBRepModeIVal = Interface_Static::IVal("write.iges.brep.mode");
+  myPrecRVal = Interface_Static::RVal("write.precision.val");
+  myMaxPrecRVal = Interface_Static::RVal("read.maxprecision.val");
+  myPrecModeIVal = Interface_Static::IVal("write.precision.mode");
+}
 
 Standard_Boolean IGESControl_Writer::AddShape (const TopoDS_Shape& theShape,
                                                const Message_ProgressRange& theProgress)
@@ -92,8 +108,8 @@ Standard_Boolean IGESControl_Writer::AddShape (const TopoDS_Shape& theShape,
   Message_ProgressScope aPS(theProgress, NULL, 2);
   //  modified by NIZHNY-EAP Tue Aug 29 11:16:54 2000 ___BEGIN___
   Handle(Standard_Transient) info;
-  Standard_Real Tol = Interface_Static::RVal("write.precision.val");
-  Standard_Real maxTol = Interface_Static::RVal("read.maxprecision.val");
+  Standard_Real Tol = myPrecRVal;
+  Standard_Real maxTol = myMaxPrecRVal;
   TopoDS_Shape Shape = XSAlgo::AlgoContainer()->ProcessShape( theShape, Tol, maxTol, 
                                                               "write.iges.resource.name", 
                                                               "write.iges.sequence", info,
@@ -104,7 +120,7 @@ Standard_Boolean IGESControl_Writer::AddShape (const TopoDS_Shape& theShape,
   //  modified by NIZHNY-EAP Tue Aug 29 11:17:01 2000 ___END___
   BRepToIGES_BREntity   B0;  B0.SetTransferProcess(myTP); B0.SetModel(myModel);
   BRepToIGESBRep_Entity B1;  B1.SetTransferProcess(myTP); B1.SetModel(myModel);
-  Handle(IGESData_IGESEntity) ent = myWriteMode?
+  Handle(IGESData_IGESEntity) ent = myBRepModeIVal?
     B1.TransferShape (Shape, aPS.Next()) : B0.TransferShape(Shape, aPS.Next());
   if (!aPS.More())
     return Standard_False;
@@ -123,9 +139,9 @@ Standard_Boolean IGESControl_Writer::AddShape (const TopoDS_Shape& theShape,
 
   Standard_Real oldtol = myModel->GlobalSection().Resolution(), newtol;
   
-  Standard_Integer tolmod = Interface_Static::IVal("write.precision.mode");
+  Standard_Integer tolmod = myPrecModeIVal;
   if (tolmod == 2)
-    newtol = Interface_Static::RVal("write.precision.val");
+    newtol = myPrecRVal;
   else {
     ShapeAnalysis_ShapeTolerance stu; 
     Standard_Real Tolv = stu.Tolerance (Shape, tolmod, TopAbs_VERTEX);
@@ -271,3 +287,57 @@ Standard_Boolean IGESControl_Writer::Write
 
   return res;
 }
+
+void IGESControl_Writer::SetUnitCVal(const Standard_CString& theVal)
+{
+  Interface_Static::SetCVal("write.iges.unit", theVal);
+  myUnitCVal = theVal;
+}
+
+void IGESControl_Writer::SetBRepModeIVal(const Standard_Integer theVal)
+{
+  Interface_Static::SetIVal("write.iges.brep.mode", theVal);
+  myBRepModeIVal = theVal;
+}
+
+void IGESControl_Writer::SetPrecRVal(const Standard_Real theVal)
+{
+  Interface_Static::SetRVal("write.precision.val", theVal);
+  myPrecRVal = theVal;
+}
+
+void IGESControl_Writer::SetMaxPrecRVal(const Standard_Real theVal)
+{
+  Interface_Static::SetRVal("read.maxprecision.val", theVal);
+  myMaxPrecRVal = theVal;
+}
+
+void IGESControl_Writer::SetPrecModeIVal(const Standard_Integer theVal)
+{
+  Interface_Static::SetIVal("write.precision.mode", theVal);
+  myPrecModeIVal = theVal;
+}
+
+Standard_CString IGESControl_Writer::GetUnitCVal() const
+{
+  return myUnitCVal;
+}
+
+Standard_Integer IGESControl_Writer::GetBRepModeIVal() const
+{
+  return myBRepModeIVal;
+}
+
+Standard_Real IGESControl_Writer::GetPrecRVal() const
+{
+  return myPrecRVal;
+}
+
+Standard_Real IGESControl_Writer::GetMaxPrecRVal() const
+{
+  return myMaxPrecRVal;
+}
+Standard_Integer IGESControl_Writer::GetPrecModeIVal() const
+{
+  return myPrecModeIVal;
+}
index 5f74b9696b484c75b82acd4b6846e1859fe18a9d..453ec6149239d440065d7048762aab3833d97bfc 100644 (file)
@@ -115,12 +115,36 @@ public:
   //! if the processor could not create the file).
   Standard_EXPORT Standard_Boolean Write (const Standard_CString file, const Standard_Boolean fnes = Standard_False);
 
+  Standard_EXPORT void SetUnitCVal(const Standard_CString& theVal);
+
+  Standard_EXPORT void SetBRepModeIVal(const Standard_Integer theVal);
+
+  Standard_EXPORT void SetPrecRVal(const Standard_Real theVal);
+
+  Standard_EXPORT void SetMaxPrecRVal(const Standard_Real theVal);
+
+  Standard_EXPORT void SetPrecModeIVal(const Standard_Integer theVal);
+
+  Standard_EXPORT Standard_CString GetUnitCVal() const;
+
+  Standard_EXPORT Standard_Integer GetBRepModeIVal() const;
+
+  Standard_EXPORT Standard_Real GetPrecRVal() const;
+
+  Standard_EXPORT Standard_Real GetMaxPrecRVal() const;
+
+  Standard_EXPORT Standard_Integer GetPrecModeIVal() const;
+
  private:
 
   Handle(Transfer_FinderProcess) myTP;
   Handle(IGESData_IGESModel) myModel;
   IGESData_BasicEditor myEditor;
-  Standard_Integer myWriteMode;
+  Standard_CString myUnitCVal;
+  Standard_Integer myBRepModeIVal;
+  Standard_Real myPrecRVal;
+  Standard_Real myMaxPrecRVal;
+  Standard_Integer myPrecModeIVal;
   Standard_Boolean myIsComputed;
 };
 
index 1856b5ba72e83ff5978f956f202d2c8a5c364ba8..36efb34d6300eb10073381b93bff087841ab2781 100644 (file)
@@ -256,21 +256,20 @@ Standard_Boolean  IGESData_IGESModel::ApplyStatic
     return Standard_True;
   }
 
-  Standard_CString val;
   if (param[0] == 'r') {
-    val = Interface_Static::CVal("write.iges.header.receiver");
-    if (!val || val[0] == '\0') return Standard_False;
-    theheader.SetReceiveName (new TCollection_HAsciiString(val));
+    myHeadRecCVal = Interface_Static::CVal("write.iges.header.receiver");
+    if (!myHeadRecCVal || myHeadRecCVal[0] == '\0') return Standard_False;
+    theheader.SetReceiveName (new TCollection_HAsciiString(myHeadRecCVal));
   }
   if (param[0] == 'a') {
-    val = Interface_Static::CVal("write.iges.header.author");
-    if (!val || val[0] == '\0') return Standard_False;
-    theheader.SetAuthorName (new TCollection_HAsciiString(val));
+    myHeadAuthorCVal = Interface_Static::CVal("write.iges.header.author");
+    if (!myHeadAuthorCVal || myHeadAuthorCVal[0] == '\0') return Standard_False;
+    theheader.SetAuthorName (new TCollection_HAsciiString(myHeadAuthorCVal));
   }
   if (param[0] == 'c') {
-    val = Interface_Static::CVal("write.iges.header.company");
-    if (!val || val[0] == '\0') return Standard_False;
-    theheader.SetCompanyName (new TCollection_HAsciiString(val));
+    myHeadCompCVal = Interface_Static::CVal("write.iges.header.company");
+    if (!myHeadCompCVal || myHeadCompCVal[0] == '\0') return Standard_False;
+    theheader.SetCompanyName (new TCollection_HAsciiString(myHeadCompCVal));
   }
   return Standard_True;
 }
@@ -624,3 +623,36 @@ Handle(TCollection_HAsciiString) IGESData_IGESModel::StringLabel(const Handle(St
   }
   return label;
 }
+
+void IGESData_IGESModel::SetHeaderReciever(const Standard_CString& theVal)
+{
+  Interface_Static::SetCVal("write.iges.header.receiver", theVal);
+  myHeadRecCVal = theVal;
+}
+
+void IGESData_IGESModel::SetHeaderAuthor(const Standard_CString& theVal)
+{
+  Interface_Static::SetCVal("write.iges.header.author", theVal);
+  myHeadRecCVal = theVal;
+}
+
+void IGESData_IGESModel::SetHeaderCompany(const Standard_CString& theVal)
+{
+  Interface_Static::SetCVal("write.iges.header.company", theVal);
+  myHeadRecCVal = theVal;
+}
+
+Standard_CString IGESData_IGESModel::GetHeaderReciever() const
+{
+  return myHeadRecCVal;
+}
+
+Standard_CString IGESData_IGESModel::GetHeaderAuthor() const
+{
+  return myHeadAuthorCVal;
+}
+
+Standard_CString IGESData_IGESModel::GetHeaderCompany() const
+{
+  return myHeadCompCVal;
+}
index c3224269cbe74c47091e368d46fac817aa7092d6..36ca4c3dafa7104e8bc09c1138712fed507d8de8 100644 (file)
@@ -152,7 +152,17 @@ public:
   //! i.e. a string "Dnn" with nn = directory entry number (2*N-1)
   Standard_EXPORT Handle(TCollection_HAsciiString) StringLabel (const Handle(Standard_Transient)& ent) const Standard_OVERRIDE;
 
+  Standard_EXPORT void SetHeaderReciever(const Standard_CString& theVal);
 
+  Standard_EXPORT void SetHeaderAuthor(const Standard_CString& theVal);
+
+  Standard_EXPORT void SetHeaderCompany(const Standard_CString& theVal);
+
+  Standard_EXPORT Standard_CString GetHeaderReciever() const;
+
+  Standard_EXPORT Standard_CString GetHeaderAuthor() const;
+
+  Standard_EXPORT Standard_CString GetHeaderCompany() const;
 
 
   DEFINE_STANDARD_RTTIEXT(IGESData_IGESModel,Interface_InterfaceModel)
@@ -167,6 +177,10 @@ private:
 
   Handle(TColStd_HSequenceOfHAsciiString) thestart;
   IGESData_GlobalSection theheader;
+  Standard_CString myHeadRecCVal;
+  Standard_CString myHeadAuthorCVal;
+  Standard_CString myHeadCompCVal;
+
 
 
 };
index 79b0de79c220adbe84ea2018bd2bbdd238dc8ecb..f170b87ee32263a651bea2ce951e1d542865ce91 100644 (file)
@@ -44,7 +44,10 @@ IMPLEMENT_STANDARD_RTTIEXT(IGESToBRep_Actor,Transfer_ActorOfTransientProcess)
 //purpose  : 
 //=======================================================================
 IGESToBRep_Actor::IGESToBRep_Actor ()
-{  thecontinuity = 0;  theeps = 0.0001;  }
+{  
+  thecontinuity = 0;
+  theeps = 0.0001;
+}
 
 
 //=======================================================================
@@ -55,6 +58,11 @@ void IGESToBRep_Actor::SetModel (const Handle(Interface_InterfaceModel)& model)
 {
   themodel = model;
   theeps = Handle(IGESData_IGESModel)::DownCast(themodel)->GlobalSection().Resolution();
+  myApproxd1IVal = Interface_Static::IVal("read.iges.bspline.approxd1.mode");
+  myFaultyEntIVal = Interface_Static::IVal("read.iges.faulty.entities");
+  myPrecModeIVal = Interface_Static::IVal("read.precision.mode");
+  myPrecRVal = Interface_Static::RVal("read.precision.val");;
+  mySurfaceCurIVal = Interface_Static::IVal("read.surfacecurve.mode");
 }
 
 
@@ -149,7 +157,7 @@ Handle(Transfer_Binder) IGESToBRep_Actor::Transfer
   if (mymodel.IsNull() || ent.IsNull()) return NullResult();
   Standard_Integer anum = mymodel->Number(start);
   
-  if (Interface_Static::IVal("read.iges.faulty.entities") == 0 && mymodel->IsErrorEntity(anum)) 
+  if (myFaultyEntIVal == 0 && mymodel->IsErrorEntity(anum)) 
     return NullResult();
   TopoDS_Shape shape;
 
@@ -170,15 +178,15 @@ Handle(Transfer_Binder) IGESToBRep_Actor::Transfer
     CAS.SetModel(mymodel);
     CAS.SetContinuity(thecontinuity);
     CAS.SetTransferProcess(TP);
-    Standard_Integer Ival = Interface_Static::IVal("read.precision.mode");
+    Standard_Integer Ival = myPrecModeIVal;
     if ( Ival == 0)
       eps = mymodel->GlobalSection().Resolution();
     else
-      eps = Interface_Static::RVal("read.precision.val"); //:10 ABV 11 Nov 97
+      eps = myPrecRVal; //:10 ABV 11 Nov 97
 //:10      eps = BRepAPI::Precision(); 
-    Ival = Interface_Static::IVal("read.iges.bspline.approxd1.mode");
+    Ival = myApproxd1IVal;
     CAS.SetModeApprox ( (Ival > 0) );
-    Ival = Interface_Static::IVal("read.surfacecurve.mode");
+    Ival = mySurfaceCurIVal;
     CAS.SetSurfaceCurve (Ival);
 
     if (eps > 1.E-08) {
@@ -221,5 +229,62 @@ Handle(Transfer_Binder) IGESToBRep_Actor::Transfer
 }
 
 
-    Standard_Real  IGESToBRep_Actor::UsedTolerance () const
-      {  return theeps;  }
+Standard_Real IGESToBRep_Actor::UsedTolerance () const
+{  
+  return theeps;  
+}
+
+void IGESToBRep_Actor::SetApproxd1IVal(const Standard_Integer theVal)
+{
+  Interface_Static::SetIVal("read.iges.bspline.approxd1.mode", theVal);
+  myApproxd1IVal = theVal;
+}
+
+void IGESToBRep_Actor::SetFaultyEntIVal(const Standard_Integer theVal)
+{
+  Interface_Static::SetIVal("read.iges.faulty.entities", theVal);
+  myFaultyEntIVal = myFaultyEntIVal;
+}
+
+void IGESToBRep_Actor::SetPrecModeIVal(const Standard_Integer theVal)
+{
+  Interface_Static::SetIVal("read.precision.mode", theVal);
+  myPrecModeIVal = theVal;
+}
+
+void IGESToBRep_Actor::SetPrecRVal(const Standard_Real theVal)
+{
+  Interface_Static::SetRVal("read.precision.val", theVal);
+  myPrecRVal = theVal;
+}
+
+void IGESToBRep_Actor::SetSurfaceCurIVal(const Standard_Integer theVal)
+{
+  Interface_Static::SetIVal("read.surfacecurve.mode", theVal);
+  mySurfaceCurIVal = theVal;
+}
+
+Standard_Integer IGESToBRep_Actor::GetApproxd1IVal() const
+{
+  return myApproxd1IVal;
+}
+
+Standard_Integer IGESToBRep_Actor::GetFaultyEntIVal() const
+{
+  return myFaultyEntIVal;
+}
+
+Standard_Integer IGESToBRep_Actor::GetPrecModeIVal() const
+{
+  return myPrecModeIVal;
+}
+
+Standard_Real IGESToBRep_Actor::GetPrecRVal() const
+{
+  return myPrecRVal;
+}
+
+Standard_Integer IGESToBRep_Actor::GetSurfaceCurIVal() const
+{
+  return mySurfaceCurIVal;
+}
index 2ad39d0df816671b57f0aeafde5c990828ccea33..3b2c7f602185697fdecec7600c6f3bf41a3c4939 100644 (file)
@@ -68,7 +68,25 @@ public:
   //! the file or from statics
   Standard_EXPORT Standard_Real UsedTolerance() const;
 
+  Standard_EXPORT void SetApproxd1IVal(const Standard_Integer theVal);
 
+  Standard_EXPORT void SetFaultyEntIVal(const Standard_Integer theVal);
+
+  Standard_EXPORT void SetPrecModeIVal(const Standard_Integer theVal);
+
+  Standard_EXPORT void SetPrecRVal(const Standard_Real theVal);
+
+  Standard_EXPORT void SetSurfaceCurIVal(const Standard_Integer theVal);
+
+  Standard_EXPORT Standard_Integer GetApproxd1IVal() const;
+
+  Standard_EXPORT Standard_Integer GetFaultyEntIVal() const;
+
+  Standard_EXPORT Standard_Integer GetPrecModeIVal() const;
+
+  Standard_EXPORT Standard_Real GetPrecRVal() const;
+
+  Standard_EXPORT Standard_Integer GetSurfaceCurIVal() const;
 
 
   DEFINE_STANDARD_RTTIEXT(IGESToBRep_Actor,Transfer_ActorOfTransientProcess)
@@ -84,6 +102,11 @@ private:
   Handle(Interface_InterfaceModel) themodel;
   Standard_Integer thecontinuity;
   Standard_Real theeps;
+  Standard_Integer myApproxd1IVal;
+  Standard_Integer myFaultyEntIVal;
+  Standard_Integer myPrecModeIVal;
+  Standard_Real myPrecRVal;
+  Standard_Integer mySurfaceCurIVal;
 
 
 };
index 70a41e7f51ae949dbc85bc9740a2f96bb94b2447..37f440966d4099ee3b7783d0ec6b32c14d7f0fc8 100644 (file)
@@ -74,6 +74,8 @@ IGESToBRep_CurveAndSurface::IGESToBRep_CurveAndSurface()
   myIsResolCom  (Standard_False),
   myTP          (new Transfer_TransientProcess())
 {
+  myOnlyVisibleIVal = Interface_Static::IVal("read.iges.onlyvisible");
+  myMaxPrecRVal = Interface_Static::RVal("read.maxprecision.val");
   UpdateMinMaxTol();
 }
 
@@ -104,6 +106,8 @@ IGESToBRep_CurveAndSurface::IGESToBRep_CurveAndSurface
   myIsResolCom  (Standard_False),
   myTP          (new Transfer_TransientProcess())
 {
+  myOnlyVisibleIVal = Interface_Static::IVal("read.iges.onlyvisible");
+  myMaxPrecRVal = Interface_Static::RVal("read.maxprecision.val");
   UpdateMinMaxTol();
 }
 
@@ -128,6 +132,8 @@ void IGESToBRep_CurveAndSurface::Init()
   mySurface.Nullify();
   myIsResolCom = Standard_False;
   myUVResolution = 0.;
+  myOnlyVisibleIVal = Interface_Static::IVal("read.iges.onlyvisible");
+  myMaxPrecRVal = Interface_Static::RVal("read.maxprecision.val");
   UpdateMinMaxTol();
 }
 
@@ -151,8 +157,9 @@ void IGESToBRep_CurveAndSurface::UpdateMinMaxTol()
 {
   //#74 rln 11.03.99 S4135: Setting maximum tolerances according to
   //static parameter
-  myMaxTol = Max (Interface_Static::RVal ("read.maxprecision.val"), myEpsGeom * myUnitFactor);
+  myMaxTol = Max (myMaxPrecRVal, myEpsGeom * myUnitFactor);
   myMinTol = Precision::Confusion();
+
 }
 
 //=======================================================================
@@ -258,7 +265,7 @@ TopoDS_Shape IGESToBRep_CurveAndSurface::TransferGeometry
   
   // sln 13.06.2002 OCC448: Avoid transferring invisible sub entities which
   // logically depend on the one
-  Standard_Integer onlyvisible = Interface_Static::IVal("read.iges.onlyvisible");
+  Standard_Integer onlyvisible = myOnlyVisibleIVal;
   
   if (IGESToBRep::IsCurveAndSurface(start)) {
     if(onlyvisible && start->BlankStatus() == 1)
@@ -653,7 +660,27 @@ Standard_Real IGESToBRep_CurveAndSurface::GetUVResolution()
   return myUVResolution;
 }
 
+void IGESToBRep_CurveAndSurface::SetOnlyVisibleIVal(const Standard_Integer theVal)
+{
+  Interface_Static::SetIVal("read.iges.onlyvisible", theVal);
+  myOnlyVisibleIVal = theVal;
+}
+
+void IGESToBRep_CurveAndSurface::SetMaxPrecRVal(const Standard_Real theVal)
+{
+  Interface_Static::SetRVal("read.maxprecision.val", theVal);
+  myMaxPrecRVal = theVal;
+}
 
+Standard_Integer IGESToBRep_CurveAndSurface::GetOnlyVisibleIVal() const
+{
+  return myOnlyVisibleIVal;
+}
+
+Standard_Real IGESToBRep_CurveAndSurface::GetMaxPrecRVal() const
+{
+  return myMaxPrecRVal;
+}
 
 
 
index 7d5db96d5e1aa89610901a756429d2db003fae27..b2f4340b6fa83fa592815019bd16c4ca20d9b9db 100644 (file)
@@ -191,7 +191,13 @@ public:
   
   Standard_EXPORT Standard_Real GetUVResolution();
 
+  Standard_EXPORT void SetOnlyVisibleIVal(const Standard_Integer theVal);
 
+  Standard_EXPORT void SetMaxPrecRVal(const Standard_Real theVal);
+
+  Standard_EXPORT Standard_Integer GetOnlyVisibleIVal() const;
+
+  Standard_EXPORT Standard_Real GetMaxPrecRVal() const;
 
 
 protected:
@@ -220,6 +226,8 @@ private:
   Standard_Boolean myIsResolCom;
   Handle(IGESData_IGESModel) myModel;
   Handle(Transfer_TransientProcess) myTP;
+  Standard_Integer myOnlyVisibleIVal;
+  Standard_Real myMaxPrecRVal;
 
 
 };
index ed156074ea86dc8e621a62155cb698248cf13c59..883a90ec4d9ce318a70c9683ecbf2e7fa29ff67f 100644 (file)
@@ -210,6 +210,12 @@ Standard_Integer IGESToBRep_Reader::LoadFile (const Standard_CString filename)
   theModel = model;
   theDone  = Standard_False;
   theShapes.Clear();
+  myApproxd1IVal = Interface_Static::IVal("read.iges.bspline.approxd1.mode");
+  myBSContinuityIVal = Interface_Static::IVal("read.iges.bspline.continuity");
+  myOnlyVisIVal = Interface_Static::IVal("read.iges.onlyvisible");
+  myPrecModeIVal = Interface_Static::IVal("read.precision.mode");
+  myPrecRVal = Interface_Static::RVal("read.precision.val");
+  mySurfaceCurIVal = Interface_Static::IVal("read.surfacecurve.mode");
   if ( theProc.IsNull() )
     theProc = new Transfer_TransientProcess (theModel->NbEntities());
   else 
@@ -368,7 +374,7 @@ static void TrimTolerances (const TopoDS_Shape& shape,
 //function : TransferRoots
 //purpose  : Transfers all Roots Entities
 //=======================================================================
-void  IGESToBRep_Reader::TransferRoots (const Standard_Boolean onlyvisible,
+void  IGESToBRep_Reader::TransferRoots (const Standard_Boolean theOnlyVisible,
                                         const Message_ProgressRange& theProgress)
 {
   if (theModel.IsNull() || theProc.IsNull()) return;
@@ -387,7 +393,7 @@ void  IGESToBRep_Reader::TransferRoots (const Standard_Boolean onlyvisible,
   theProc->SetRootManagement(Standard_True);
 //  PrepareTransfer();  -> protocol, actor
   theActor->SetModel(theModel);
-  Standard_Integer continuity = Interface_Static::IVal("read.iges.bspline.continuity");
+  Standard_Integer continuity = myBSContinuityIVal;
   theActor->SetContinuity (continuity);
   theProc->SetModel (theModel);
   theProc->SetActor (theActor);
@@ -399,24 +405,24 @@ void  IGESToBRep_Reader::TransferRoots (const Standard_Boolean onlyvisible,
   ShapeExtend_Explorer SBE;
 
   
-  Standard_Integer precisionMode = Interface_Static::IVal("read.precision.mode");
+  Standard_Integer precisionMode = myPrecModeIVal;
   Message_Msg msg2035("IGES_2035");
   msg2035.Arg(precisionMode);
   TF->Send (msg2035, Message_Info);
   if (precisionMode==1) {
     Message_Msg msg2040("IGES_2040");
-    msg2040.Arg(Interface_Static::RVal("read.precision.val"));//#70 rln 03.03.99
+    msg2040.Arg(myPrecRVal);//#70 rln 03.03.99
     TF->Send (msg2040, Message_Info);
   }
   Message_Msg msg2045("IGES_2045");
   msg2045.Arg(continuity);
   TF->Send (msg2045, Message_Info);
   Message_Msg msg2050("IGES_2050");
-  msg2050.Arg(Interface_Static::IVal("read.surfacecurve.mode"));
+  msg2050.Arg(mySurfaceCurIVal);
   TF->Send (msg2050, Message_Info);
 
   // sln 11.06.2002 OCC448
-  Interface_Static::SetIVal("read.iges.onlyvisible",onlyvisible);
+  SetOnlyVisIVal(theOnlyVisible);
   
   Message_ProgressScope PS (theProgress, "Root", nb);
   for (Standard_Integer i = 1; i <= nb && PS.More(); i++)
@@ -431,7 +437,7 @@ void  IGESToBRep_Reader::TransferRoots (const Standard_Boolean onlyvisible,
       TF->Send (msg2070, Message_Info);
     }
     // on ajoute un traitement pour ne prendre que les entites visibles
-    if ( ! onlyvisible || ent->BlankStatus() == 0 ) {
+    if ( ! theOnlyVisible || ent->BlankStatus() == 0 ) {
       TopoDS_Shape shape;
       theDone = Standard_True;
       try {
@@ -511,7 +517,7 @@ Standard_Boolean  IGESToBRep_Reader::Transfer(const Standard_Integer num,
   IGESToBRep_CurveAndSurface CAS;
   CAS.SetModel(theModel);
   Standard_Real eps;
-  Standard_Integer Ival = Interface_Static::IVal("read.precision.mode");
+  Standard_Integer Ival = myPrecModeIVal;
   Message_Msg msg2035("IGES_2035");
   msg2035.Arg(Ival);
   TF->Send (msg2035, Message_Info);
@@ -519,21 +525,21 @@ Standard_Boolean  IGESToBRep_Reader::Transfer(const Standard_Integer num,
     eps = theModel->GlobalSection().Resolution();
   else {
     //mjm : modif du 19/12/97 pour prise en compte effective du parametre
-    eps = Interface_Static::RVal("read.precision.val");
+    eps = myPrecRVal;
     Message_Msg msg2040("IGES_2040");
     msg2040.Arg(eps);//#70 rln 03.03.99
     TF->Send (msg2040, Message_Info);
     
   }
-  Ival = Interface_Static::IVal("read.iges.bspline.approxd1.mode");
+  Ival = myApproxd1IVal;
   CAS.SetModeApprox ( (Ival > 0) );
   Message_Msg msg2045("IGES_2045");
-  Ival = Interface_Static::IVal("read.iges.bspline.continuity");
+  Ival = myBSContinuityIVal;
   msg2045.Arg(Ival);
   TF->Send (msg2045, Message_Info);
   CAS.SetContinuity(Ival);
   Message_Msg msg2050("IGES_2050");
-  Ival = Interface_Static::IVal("read.surfacecurve.mode");
+  Ival = mySurfaceCurIVal;
   msg2050.Arg(Ival);
   TF->Send (msg2050, Message_Info);
   CAS.SetSurfaceCurve (Ival);
@@ -648,3 +654,69 @@ Standard_Boolean  IGESToBRep_Reader::Transfer(const Standard_Integer num,
     return C;
   }
 }
+
+void IGESToBRep_Reader::SetBSContinuityIVal(const Standard_Integer theVal)
+{
+  Interface_Static::SetIVal("read.iges.bspline.continuity", theVal);
+  myBSContinuityIVal = theVal;
+}
+
+void IGESToBRep_Reader::SetPrecModeIVal(const Standard_Integer theVal)
+{
+  Interface_Static::SetIVal("read.precision.mode", theVal);
+  myPrecModeIVal = theVal;
+}
+
+void IGESToBRep_Reader::SetPrecRVal(const Standard_Real theVal)
+{
+  Interface_Static::SetRVal("read.precision.val", theVal);
+  myPrecRVal = theVal;
+}
+
+void IGESToBRep_Reader::SetSurfaceCurIVal(const Standard_Integer theVal)
+{
+  Interface_Static::SetIVal("read.surfacecurve.mode", theVal);
+  mySurfaceCurIVal = theVal;
+}
+
+void IGESToBRep_Reader::SetOnlyVisIVal(const Standard_Integer theVal)
+{
+  Interface_Static::SetIVal("read.iges.onlyvisible", theVal);
+  myOnlyVisIVal = theVal;
+}
+
+void IGESToBRep_Reader::SetApproxd1IVal(const Standard_Integer theVal)
+{
+  Interface_Static::SetIVal("read.iges.bspline.approxd1.mode", theVal);
+  myApproxd1IVal = theVal;
+}
+
+Standard_Integer IGESToBRep_Reader::GetBSContinuityIVal() const
+{
+  return myBSContinuityIVal;
+}
+
+Standard_Integer IGESToBRep_Reader::GetPrecModeIVal() const
+{
+  return myPrecModeIVal;
+}
+
+Standard_Real IGESToBRep_Reader::GetPrecRVal() const
+{
+  return myPrecRVal;
+}
+
+Standard_Integer IGESToBRep_Reader::GetSurfaceCurIVal() const
+{
+  return mySurfaceCurIVal;
+}
+
+Standard_Integer IGESToBRep_Reader::GetOnlyVisIVal() const
+{
+  return myOnlyVisIVal;
+}
+
+Standard_Integer IGESToBRep_Reader::GetApproxd1IVal() const
+{
+  return myApproxd1IVal;
+}
index 63d61942eb78afc5ae62c5c7f2789f98599c7eed..cae6bf6070fd6a107fbe804980829dd615c1f62d 100644 (file)
@@ -110,7 +110,29 @@ public:
   //! - a compound containing the resulting shapes if there are several.
   Standard_EXPORT TopoDS_Shape OneShape() const;
 
+  Standard_EXPORT void SetBSContinuityIVal(const Standard_Integer theVal);
 
+  Standard_EXPORT void SetPrecModeIVal(const Standard_Integer theVal);
+
+  Standard_EXPORT void SetPrecRVal(const Standard_Real theVal);
+
+  Standard_EXPORT void SetSurfaceCurIVal(const Standard_Integer theVal);
+
+  Standard_EXPORT void SetOnlyVisIVal(const Standard_Integer theVal);
+
+  Standard_EXPORT void SetApproxd1IVal(const Standard_Integer theVal);
+
+  Standard_EXPORT Standard_Integer GetBSContinuityIVal() const;
+
+  Standard_EXPORT Standard_Integer GetPrecModeIVal() const;
+
+  Standard_EXPORT Standard_Real GetPrecRVal() const;
+
+  Standard_EXPORT Standard_Integer GetSurfaceCurIVal() const;
+
+  Standard_EXPORT Standard_Integer GetOnlyVisIVal() const;
+
+  Standard_EXPORT Standard_Integer GetApproxd1IVal() const;
 
 
 protected:
@@ -128,6 +150,12 @@ private:
   TopTools_SequenceOfShape theShapes;
   Handle(IGESToBRep_Actor) theActor;
   Handle(Transfer_TransientProcess) theProc;
+  Standard_Integer myBSContinuityIVal;
+  Standard_Integer myPrecModeIVal;
+  Standard_Real myPrecRVal;
+  Standard_Integer mySurfaceCurIVal;
+  Standard_Integer myOnlyVisIVal; // setter
+  Standard_Integer myApproxd1IVal;
 
 
 };
index 753531b91a8981723814bdea9b975421f9611204..6a8452c242fb03f77552d2ad7be23ccd4cf36411 100644 (file)
@@ -331,6 +331,7 @@ STEPCAFControl_Reader::STEPCAFControl_Reader()
   myMatMode(Standard_True),
   myViewMode(Standard_True)
 {
+  mySubshapesIVal = Interface_Static::IVal("read.stepcaf.subshapes.name");
   STEPCAFControl_Controller::Init();
 }
 
@@ -376,6 +377,7 @@ void STEPCAFControl_Reader::Init(const Handle(XSControl_WorkSession)& WS,
   myReader.SetWS(WS, scratch);
   myFiles.Clear();
   myMap.Clear();
+  mySubshapesIVal = Interface_Static::IVal("read.stepcaf.subshapes.name");
 }
 
 //=======================================================================
@@ -4582,7 +4584,7 @@ void STEPCAFControl_Reader::ExpandSubShapes(const Handle(XCAFDoc_ShapeTool)& Sha
   TColStd_MapOfTransient aRepItems;
 
   // Read translation control variables
-  Standard_Boolean doReadSNames = (Interface_Static::IVal("read.stepcaf.subshapes.name") > 0);
+  Standard_Boolean doReadSNames = (mySubshapesIVal > 0);
 
   if (!doReadSNames)
     return;
@@ -4942,3 +4944,14 @@ Standard_Boolean STEPCAFControl_Reader::GetViewMode() const
 {
   return myViewMode;
 }
+
+void STEPCAFControl_Reader::SetSubshapesIVal(const Standard_Integer theVal)
+{
+  Interface_Static::SetIVal("read.stepcaf.subshapes.name", theVal);
+  mySubshapesIVal = theVal;
+}
+
+Standard_Integer STEPCAFControl_Reader::GetSubshapesIVal() const
+{
+  return mySubshapesIVal;
+}
index 139df9cdab967c60ad9152b52c34e6d0142b1439..4da639523dc8100419f9d364121243b87bb40321 100644 (file)
@@ -263,6 +263,10 @@ protected:
   //! Convert name into UNICODE text.
   Standard_EXPORT virtual TCollection_ExtendedString convertName (const TCollection_AsciiString& theName) const;
 
+  Standard_EXPORT void SetSubshapesIVal(const Standard_Integer theVal);
+
+  Standard_EXPORT Standard_Integer GetSubshapesIVal() const;
+
 private:
 
   //! Internal method. Import all Datum attributes and set them to XCAF object. Set connection of Datum to GeomTolerance (theGDTL).
@@ -290,6 +294,7 @@ private:
   void prepareUnits(const Handle(StepData_StepModel)& theModel,
                     const Handle(TDocStd_Document)& theDoc) const;
 
+
 private:
 
   STEPControl_Reader myReader;
@@ -304,6 +309,7 @@ private:
   Standard_Boolean myMatMode;
   Standard_Boolean myViewMode;
   NCollection_DataMap<Handle(Standard_Transient), TDF_Label> myGDTMap;
+  Standard_Integer mySubshapesIVal;
 
 };
 
index aadce19df2e8a9850624baf7d15bdbb735f94ea4..9f0d445dce89d29798344b9eedbda5445bd4b2c6 100644 (file)
@@ -326,6 +326,10 @@ void STEPCAFControl_Writer::Init (const Handle(XSControl_WorkSession)& WS,
   myLabels.Clear();
   myGDTPresentationDM = new StepVisual_DraughtingModel();
   myGDTPrsCurveStyle = new StepVisual_HArray1OfPresentationStyleAssignment(1, 1);
+  myAssemblyModeCVal = Interface_Static::CVal("write.step.assembly");
+  myAssemblyModeIVal = Interface_Static::IVal("write.step.assembly");
+  mySchemaIVal = Interface_Static::IVal("write.step.schema");
+  mySubshapesIVal = Interface_Static::IVal("write.stepcaf.subshapes.name");
 }
 
 
@@ -542,7 +546,7 @@ Standard_Boolean STEPCAFControl_Writer::Transfer (STEPControl_Writer &writer,
   const Handle(StepData_StepModel) aModel = Handle(StepData_StepModel)::DownCast(writer.WS()->Model());
   prepareUnit(labels.First(), aModel); // set local length unit to the model
   // translate free top-level shapes of the DECAF document
-  Standard_Integer ap = Interface_Static::IVal ("write.step.schema");
+  Standard_Integer anAp = mySchemaIVal;
   TDF_LabelSequence sublabels;
   Message_ProgressScope aPS(theProgress, "Labels", labels.Length());
   for ( Standard_Integer i=1; i <= labels.Length() && aPS.More(); i++)
@@ -638,11 +642,11 @@ Standard_Boolean STEPCAFControl_Writer::Transfer (STEPControl_Writer &writer,
        }
       }
 */      
-      Standard_Integer assemblymode = Interface_Static::IVal ("write.step.assembly");
-      Interface_Static::SetCVal ("write.step.assembly", "On");
+      Standard_Integer anAssemblyMode = myAssemblyMode;
+      SetAssemblyCVal("On");
       writer.Transfer ( Sass, STEPControl_AsIs, Standard_True, aPS1.Next());
-      Interface_Static::SetIVal ("write.step.assembly", assemblymode);
-      Interface_Static::SetIVal ("write.step.schema", ap);
+      SetAssemblyIVal(anAssemblyMode);
+      SetSchemaIVal(anAp);
     }
   }
   if (aPS.UserBreak())
@@ -671,7 +675,7 @@ Standard_Boolean STEPCAFControl_Writer::Transfer (STEPControl_Writer &writer,
     
     // write G&DTs
     if(GetDimTolMode()) {
-      if (ap == 5) {
+      if (anAp == 5) {
         WriteDGTsAP242(writer.WS(), sublabels);
       }
       else {
@@ -700,7 +704,7 @@ Standard_Boolean STEPCAFControl_Writer::Transfer (STEPControl_Writer &writer,
   if ( GetPropsMode() ) 
     WriteValProps ( writer.WS(), sublabels, multi );
 
-  Interface_Static::SetIVal ("write.step.schema", ap);
+  SetSchemaIVal(anAp);
 
   // refresh graph
   writer.WS()->ComputeGraph ( Standard_True );
@@ -709,7 +713,7 @@ Standard_Boolean STEPCAFControl_Writer::Transfer (STEPControl_Writer &writer,
     *  Write names for the sub-shapes
     * ================================ */
 
-  if (Interface_Static::IVal("write.stepcaf.subshapes.name") != 0)
+  if (mySubshapesIVal != 0)
   {
     const Handle(XSControl_TransferWriter) &TW = this->ChangeWriter().WS()->TransferWriter();
     const Handle(Transfer_FinderProcess) &FP = TW->FinderProcess();
@@ -799,11 +803,11 @@ TopoDS_Shape STEPCAFControl_Writer::TransferExternFiles (const TDF_Label &L,
     EF->SetWS ( newWS );
     EF->SetName ( name );
     EF->SetLabel ( L );
-    Standard_Integer assemblymode = Interface_Static::IVal ("write.step.assembly");
-    Interface_Static::SetCVal ("write.step.assembly", "Off");
+    Standard_Integer anAssemblyMode = myAssemblyMode;
+    SetAssemblyCVal("Off");
     const Standard_CString multi = 0;
     EF->SetTransferStatus ( Transfer ( sw, Lseq, mode, multi, Standard_True, theProgress) );
-    Interface_Static::SetIVal ("write.step.assembly", assemblymode);
+    SetAssemblyIVal(anAssemblyMode);
     myLabEF.Bind ( L, EF );
     myFiles.Bind ( name->ToCString(), EF );
 
@@ -853,7 +857,7 @@ Standard_Boolean STEPCAFControl_Writer::WriteExternRefs (const Handle(XSControl_
   const Handle(XSControl_TransferWriter) &TW = WS->TransferWriter();
   const Handle(Transfer_FinderProcess) &FP = TW->FinderProcess();
   STEPConstruct_ExternRefs EFTool ( WS );
-  Standard_Integer schema = Interface_Static::IVal("write.step.schema");
+  Standard_Integer aSchema = mySchemaIVal;
   for ( Standard_Integer k=1; k <= labels.Length(); k++ ) {
     TDF_Label lab = labels(k);
     if ( XCAFDoc_ShapeTool::IsAssembly ( lab ) ) continue; // skip assemblies
@@ -876,7 +880,7 @@ Standard_Boolean STEPCAFControl_Writer::WriteExternRefs (const Handle(XSControl_
     }
 
     // add extern ref
-    const char* format = (schema == 3 ? "STEP AP203" : "STEP AP214");
+    const char* format = (aSchema == 3 ? "STEP AP203" : "STEP AP214");
     // try to get PD from SDR
     StepRepr_RepresentedDefinition RD = SDR->Definition();
     Handle(StepRepr_PropertyDefinition) aPropDef = RD.PropertyDefinition();
@@ -896,7 +900,7 @@ Standard_Boolean STEPCAFControl_Writer::WriteExternRefs (const Handle(XSControl_
     }
     EFTool.AddExternRef ( EF->GetName()->ToCString(), PD, format );
   }
-  EFTool.WriteExternRefs(schema);
+  EFTool.WriteExternRefs(aSchema);
   return Standard_True;
 }
 
@@ -4367,3 +4371,47 @@ Standard_Boolean STEPCAFControl_Writer::GetMaterialMode() const
 {
   return myMatMode;
 }
+
+void STEPCAFControl_Writer::SetAssemblyCVal(const Standard_CString& theVal)
+{
+  Interface_Static::SetCVal("write.step.assembly", theVal);
+  myAssemblyModeCVal = theVal;
+}
+
+void STEPCAFControl_Writer::SetAssemblyIVal(const Standard_Integer theVal)
+{
+  Interface_Static::SetIVal("write.step.assembly", theVal);
+  myAssemblyModeIVal = theVal;
+}
+
+void STEPCAFControl_Writer::SetSchemaIVal(const Standard_Integer theVal)
+{
+  Interface_Static::SetIVal("write.step.schema", theVal);
+  mySchemaIVal = theVal;
+}
+
+void STEPCAFControl_Writer::SetSubshapesIVal(const Standard_Integer theVal)
+{
+  Interface_Static::SetIVal("write.stepcaf.subshapes.name", theVal);
+  mySubshapesIVal = theVal;
+}
+
+Standard_CString STEPCAFControl_Writer::GetAssemblyCVal() const
+{
+  return myAssemblyModeCVal;
+}
+
+Standard_Integer STEPCAFControl_Writer::GetAssemblyIVal() const
+{
+  return myAssemblyModeIVal;
+}
+
+Standard_Integer STEPCAFControl_Writer::GetSchemaIVal() const
+{
+  return mySchemaIVal;
+}
+
+Standard_Integer STEPCAFControl_Writer::GetSubshapesIVal() const
+{
+  return mySubshapesIVal;
+}
index b021e05af1bb2b62316cb420876bc22d059c4f3a..164b5f90f0f1e767ed1dbc887224cc8cadea7246 100644 (file)
@@ -218,6 +218,22 @@ protected:
   Standard_EXPORT void prepareUnit(const TDF_Label& theLabel,
                                    const Handle(StepData_StepModel)& theModel);
 
+  Standard_EXPORT void SetAssemblyCVal(const Standard_CString& theVal);
+
+  Standard_EXPORT void SetAssemblyIVal(const Standard_Integer theVal);
+
+  Standard_EXPORT void SetSchemaIVal(const Standard_Integer theVal);
+
+  Standard_EXPORT void SetSubshapesIVal(const Standard_Integer theVal);
+
+  Standard_EXPORT Standard_CString GetAssemblyCVal() const;
+
+  Standard_EXPORT Standard_Integer GetAssemblyIVal() const;
+
+  Standard_EXPORT Standard_Integer GetSchemaIVal() const;
+
+  Standard_EXPORT Standard_Integer GetSubshapesIVal() const;
+
 private:
 
   Standard_EXPORT Handle(StepRepr_ShapeAspect) WriteShapeAspect(const Handle(XSControl_WorkSession) &WS,
@@ -240,7 +256,6 @@ private:
 
 private:
 
-
   STEPControl_Writer myWriter;
   NCollection_DataMap<TCollection_AsciiString, Handle(STEPCAFControl_ExternFile)> myFiles;
   STEPCAFControl_DataMapOfLabelShape myLabels;
@@ -257,6 +272,10 @@ private:
   Handle(StepVisual_DraughtingModel) myGDTPresentationDM;
   Handle(StepVisual_HArray1OfPresentationStyleAssignment) myGDTPrsCurveStyle;
   Handle(StepRepr_ProductDefinitionShape) myGDTCommonPDS;
+  Standard_Integer myAssemblyModeIVal;
+  Standard_CString myAssemblyModeCVal;
+  Standard_Integer mySchemaIVal;
+  Standard_Integer mySubshapesIVal;
 
 };
 
index 0b93e40b9eee964e3f7dd45a29b73f30fbcc09f0..2a015564f27ce321edd167b7bff00d39156209a5 100644 (file)
@@ -89,6 +89,8 @@ void STEPConstruct_ContextTool::SetModel (const Handle(StepData_StepModel)& aSte
     //  if (thePRPC.IsNull()) thePRPC = GetCasted(StepBasic_ProductRelatedProductCategory, ent);
     //}
   }
+  myProductNameCVal = Interface_Static::CVal("write.step.product.name");
+  mySchemaIVal = Interface_Static::IVal("write.step.schema");
 }
 
 //=======================================================================
@@ -111,7 +113,7 @@ void STEPConstruct_ContextTool::AddAPD (const Standard_Boolean enforce)
   Standard_Boolean noapd = theAPD.IsNull();
   if (noapd || enforce) theAPD  = new StepBasic_ApplicationProtocolDefinition;
 
-  switch (Interface_Static::IVal("write.step.schema")) { //j4
+  switch (mySchemaIVal) { //j4
   default:
   case 1:
     theAPD->SetApplicationProtocolYear (1997);
@@ -147,7 +149,7 @@ void STEPConstruct_ContextTool::AddAPD (const Standard_Boolean enforce)
   if (theAPD->Application().IsNull())
     theAPD->SetApplication (new StepBasic_ApplicationContext);
   Handle(TCollection_HAsciiString) appl;
-  switch (Interface_Static::IVal("write.step.schema")) { //j4
+  switch (mySchemaIVal) { //j4
   default:
   case 1:
   case 2: appl = new TCollection_HAsciiString ( "core data for automotive mechanical design processes" );
@@ -356,7 +358,7 @@ void STEPConstruct_ContextTool::AddPRPC (const Standard_Boolean enforce)
   Standard_Boolean noprpc = thePRPC.IsNull();
   if (noprpc || enforce) {
     //:i3 abv 1 Sep 98: ProSTEP TR9: generate PRODUCT_TYPE (derived) instead of PRPC
-    switch (Interface_Static::IVal("write.step.schema")) { //j4
+    switch (mySchemaIVal) { //j4
     default:
     case 1:
       thePRPC = new StepBasic_ProductType;
@@ -566,19 +568,24 @@ void STEPConstruct_ContextTool::SetIndex (const Standard_Integer ind)
 
 Handle(TCollection_HAsciiString) STEPConstruct_ContextTool::GetProductName () const
 {
-  Handle(TCollection_HAsciiString) PdtName;
-  if (Interface_Static::IsSet("write.step.product.name"))
-    PdtName = new TCollection_HAsciiString(Interface_Static::CVal("write.step.product.name"));
-  else PdtName = new TCollection_HAsciiString("Product");
-
-  for ( Standard_Integer i=1; i <= myLevel.Length(); i++ ) {
-    PdtName->AssignCat ((char*)( i >1 ? "." : " " ));
+  Handle(TCollection_HAsciiString) aPdtName;
+  if (!myProductNameCVal.IsEmpty())
+  {
+    aPdtName = new TCollection_HAsciiString(myProductNameCVal);
+  }
+  else
+  {
+    aPdtName = new TCollection_HAsciiString("Product");
+  }
+  for ( Standard_Integer i=1; i <= myLevel.Length(); i++ ) 
+  {
+    aPdtName->AssignCat ((char*)( i >1 ? "." : " " ));
     char buf[100];
     sprintf ( buf, "%d", myLevel.Value(i) );
-    PdtName->AssignCat ( buf );
+    aPdtName->AssignCat ( buf );
   }
 
-  return PdtName;
+  return aPdtName;
 }
 
 //=======================================================================
@@ -596,7 +603,8 @@ Handle(TColStd_HSequenceOfTransient) STEPConstruct_ContextTool::GetRootsForPart
   if ( ! SDRTool.PRPC().IsNull() ) seq->Append ( SDRTool.PRPC() );
 
   // for AP203, add required product management data
-  if ( Interface_Static::IVal("write.step.schema") == 3 ) {
+  if (mySchemaIVal == 3 ) 
+  {
     theAP203.Init ( SDRTool );
     seq->Append (theAP203.GetProductCategoryRelationship());
     seq->Append (theAP203.GetCreator());
@@ -626,7 +634,8 @@ Handle(TColStd_HSequenceOfTransient) STEPConstruct_ContextTool::GetRootsForAssem
   seq->Append ( assembly.ItemValue() );
   
   // for AP203, write required product management data
-  if ( Interface_Static::IVal("write.step.schema") == 3 ) {
+  if (mySchemaIVal == 3 ) 
+  {
     theAP203.Init ( assembly.GetNAUO() );
     seq->Append (theAP203.GetSecurity());
     seq->Append (theAP203.GetClassificationOfficer());
@@ -639,7 +648,24 @@ Handle(TColStd_HSequenceOfTransient) STEPConstruct_ContextTool::GetRootsForAssem
   return seq;
 }
 
+void STEPConstruct_ContextTool::SetProductNameCVal(const Standard_CString& theVal)
+{
+  Interface_Static::SetCVal("write.step.product.name", theVal);
+  myProductNameCVal = theVal;
+}
 
+void STEPConstruct_ContextTool::SetSchemaIVal(Standard_Integer theVal)
+{
+  Interface_Static::SetIVal("write.step.schema", theVal);
+  mySchemaIVal = theVal;
+}
 
+Standard_CString STEPConstruct_ContextTool::GetProductNameCVal() const
+{
+  return myProductNameCVal;
+}
 
-
+Standard_Integer STEPConstruct_ContextTool::GetSchemaIVal() const
+{
+  return mySchemaIVal;
+}
index 3f5da89e97f2c4d3e1466c645f9800e8ca58fcf6..62c9340d9ec0fcab45de436a17b5975315b3c1e2 100644 (file)
@@ -123,7 +123,15 @@ public:
   //! for assembly link identified by assembly (including NAUO and CDSR)
   Standard_EXPORT Handle(TColStd_HSequenceOfTransient) GetRootsForAssemblyLink (const STEPConstruct_Assembly& assembly);
 
+  Standard_EXPORT TCollection_HAsciiString GetWriteStepProductName() const;
 
+  Standard_EXPORT void SetProductNameCVal(const Standard_CString& theVal);
+
+  Standard_EXPORT void SetSchemaIVal(Standard_Integer theVal);
+
+  Standard_EXPORT Standard_Integer GetSchemaIVal() const;
+
+  Standard_EXPORT Standard_CString GetProductNameCVal() const;
 
 
 protected:
@@ -140,7 +148,8 @@ private:
   Handle(StepBasic_ApplicationProtocolDefinition) theAPD;
   STEPConstruct_AP203Context theAP203;
   Handle(StepGeom_Axis2Placement3d) myAxis;
-
+  Standard_CString myProductNameCVal;
+  Standard_Integer mySchemaIVal;
 
 };
 
index 18b9ee1a42d4487c0170084bf4f4b48384fad903..510a8d59525ca89812fbd319808e5129b5c15403 100644 (file)
@@ -52,6 +52,7 @@
 STEPConstruct_Part::STEPConstruct_Part() 
 {
   myDone = Standard_False;
+  mySchemaIVal = Interface_Static::IVal("write.step.schema");
 }
 
 //=======================================================================
@@ -64,11 +65,11 @@ void STEPConstruct_Part::MakeSDR(const Handle(StepShape_ShapeRepresentation)& SR
                                 const Handle(StepBasic_ApplicationContext)& AC)
 {
   // get current schema
-  Standard_Integer schema = Interface_Static::IVal("write.step.schema");
+  mySchemaIVal = Interface_Static::IVal("write.step.schema");
   
   // create PC
   Handle(StepBasic_ProductContext) PC;
-  switch (schema) {
+  switch (mySchemaIVal) {
   default :
   case 1: PC = new StepBasic_MechanicalContext;
           break;
@@ -93,7 +94,7 @@ void STEPConstruct_Part::MakeSDR(const Handle(StepShape_ShapeRepresentation)& SR
 
   // create PDF
   Handle(StepBasic_ProductDefinitionFormation) PDF;
-  switch (schema) {
+  switch (mySchemaIVal) {
   default:
   case 1: 
   case 2: 
@@ -111,7 +112,7 @@ void STEPConstruct_Part::MakeSDR(const Handle(StepShape_ShapeRepresentation)& SR
   // create PDC, depending on current schema
   Handle(StepBasic_ProductDefinitionContext) PDC;
   Handle(TCollection_HAsciiString) PDCname;
-  switch (schema) {
+  switch (mySchemaIVal) {
   default:
   case 1: 
   case 2: 
@@ -147,7 +148,7 @@ void STEPConstruct_Part::MakeSDR(const Handle(StepShape_ShapeRepresentation)& SR
 
   // and an associated PRPC
   Handle(TCollection_HAsciiString) PRPCName;
-  switch (Interface_Static::IVal("write.step.schema")) {
+  switch (mySchemaIVal) {
   default:
   case 1: 
     myPRPC = new StepBasic_ProductType; 
@@ -168,6 +169,7 @@ void STEPConstruct_Part::MakeSDR(const Handle(StepShape_ShapeRepresentation)& SR
   PRPCproducts->SetValue(1,P);
   myPRPC->Init ( PRPCName, Standard_False, 0, PRPCproducts );
   
+
   myDone = Standard_True;
 }
 
@@ -698,3 +700,13 @@ void STEPConstruct_Part::SetPRPCdescription (const Handle(TCollection_HAsciiStri
   myPRPC->SetDescription ( text );
 }
         
+void STEPConstruct_Part::SetSchemaIVal(const Standard_Integer theVal)
+{
+  Interface_Static::SetIVal("write.step.schema", theVal);
+  mySchemaIVal = theVal;
+}
+
+Standard_Integer STEPConstruct_Part::GetSchemaIVal() const
+{
+  return mySchemaIVal;
+}
index bf2cee7afab117f9fe3bf7a164d5b13325643f17..4cd48fd0c0291186523ec189379d05b4e17d719f 100644 (file)
@@ -136,7 +136,9 @@ public:
   
   Standard_EXPORT void SetPRPCdescription (const Handle(TCollection_HAsciiString)& text);
 
+  Standard_EXPORT void SetSchemaIVal(const Standard_Integer theVal);
 
+  Standard_EXPORT Standard_Integer GetSchemaIVal() const;
 
 
 protected:
@@ -152,6 +154,7 @@ private:
   Standard_Boolean myDone;
   Handle(StepShape_ShapeDefinitionRepresentation) mySDR;
   Handle(StepBasic_ProductRelatedProductCategory) myPRPC;
+  Standard_Integer mySchemaIVal;
 
 
 };
index b57aa6e87e8350265a5f26cf8dcb00d8b756226c..37cfe2303b39504ee10de573b28eb682ab31ce99 100644 (file)
@@ -87,6 +87,7 @@
 //=======================================================================
 STEPConstruct_Styles::STEPConstruct_Styles () 
 {
+  mySchemaIVal = Interface_Static::IVal("write.step.schema")
 }
      
 
@@ -98,6 +99,7 @@ STEPConstruct_Styles::STEPConstruct_Styles ()
 STEPConstruct_Styles::STEPConstruct_Styles (const Handle(XSControl_WorkSession) &WS)
      : STEPConstruct_Tool ( WS )
 {
+  mySchemaIVal = Interface_Static::IVal("write.step.schema")
 }
 
 
@@ -111,6 +113,7 @@ Standard_Boolean STEPConstruct_Styles::Init (const Handle(XSControl_WorkSession)
   myMapOfStyles.Clear();
   myStyles.Clear();
   myPSA.Clear();
+  mySchemaIVal = Interface_Static::IVal("write.step.schema")
   return SetWS ( WS );
 }
 
@@ -235,7 +238,8 @@ Standard_Boolean STEPConstruct_Styles::CreateMDGPR (const Handle(StepRepr_Repres
 //   Model()->AddWithRefs ( Repr ); add into the model upper
 
   // for AP203, add subschema name
-  if ( Interface_Static::IVal("write.step.schema") ==3 ) {
+  if (mySchemaIVal == 3) 
+  {
     APIHeaderSection_MakeHeader mkHdr ( Handle(StepData_StepModel)::DownCast ( Model() ) );
     Handle(TCollection_HAsciiString) subSchema = 
       new TCollection_HAsciiString ( "SHAPE_APPEARANCE_LAYER_MIM" );
@@ -788,3 +792,13 @@ Standard_Boolean STEPConstruct_Styles::DecodeColor (const Handle(StepVisual_Colo
   return Standard_False;
 }
 
+void STEPConstruct_Styles::SetSchemaIVal(const Standard_Integer theVal)
+{
+  Interface_Static::SetIVal("write.step.schema", theVal);
+  mySchemaIVal = theVal;
+}
+
+Standard_Integer STEPConstruct_Styles::GetSchemaIVal() const
+{
+  return mySchemaIVal;
+}
index bb2ed586715fbff7f7d96313fa872210a21d2fc3..5aaa8255782fc901292e8d22a2bccd50f7328773 100644 (file)
@@ -147,7 +147,9 @@ public:
   //! Returns True if OK or False if color is not recognized
   Standard_EXPORT static Standard_Boolean DecodeColor (const Handle(StepVisual_Colour)& Colour, Quantity_Color& Col);
 
+  Standard_EXPORT void SetSchemaIVal(const Standard_Integer theVal);
 
+  Standard_EXPORT Standard_Integer GetSchemaIVal() const;
 
 
 protected:
@@ -163,6 +165,7 @@ private:
   TColStd_IndexedDataMapOfTransientTransient myMapOfStyles;
   TColStd_IndexedMapOfTransient myStyles;
   TColStd_SequenceOfTransient myPSA;
+  Standard_Integer mySchemaIVal;
 
 
 };
index cefb2f6f5bec0fdb61818decfdb72574287ead96..bd1afa83b706c5d917b8989d27f49be7575b784a 100644 (file)
@@ -67,6 +67,7 @@ STEPConstruct_UnitContext::STEPConstruct_UnitContext()
     areaDone = volumeDone = Standard_False;
   //pdn file r_47-sd.stp initialize field.
   theUncertainty = RealLast();
+  myWriteUnitIVal = Interface_Static::IVal("write.step.unit");
 }
 
 //=======================================================================
@@ -92,7 +93,8 @@ void STEPConstruct_UnitContext::Init(const Standard_Real Tol3d)
   Standard_Boolean hasPref = Standard_True;
   StepBasic_SiPrefix siPref = StepBasic_spMilli;
   Standard_Real aScale = 1.;
-  switch (Interface_Static::IVal("write.step.unit"))
+  myWriteUnitIVal = Interface_Static::IVal("write.step.unit");
+  switch (myWriteUnitIVal)
   {
     case  1: uName = "INCH"; aScale = 25.4; break;
     default:
@@ -603,3 +605,15 @@ Standard_Boolean STEPConstruct_UnitContext::VolumeDone() const
 {
   return volumeDone;
 }
+
+void STEPConstruct_UnitContext::SetWriteUnitIVal(const Standard_Integer theVal)
+{
+  Interface_Static::SetIVal("write.step.unit", theVal);
+  myWriteUnitIVal = theVal;
+}
+
+Standard_Integer STEPConstruct_UnitContext::GetWriteUnitIVal() const
+{
+  return myWriteUnitIVal;
+}
+
index e1faad8f608a5e473819bf1424817d64bf9ce278..ffbe3d2832685d73719a1fe4053c1233da0489d8 100644 (file)
@@ -112,7 +112,9 @@ public:
   //! real factor (e.g. 1e6 for mega)
   Standard_EXPORT static Standard_Real ConvertSiPrefix (const StepBasic_SiPrefix aPrefix);
 
+  Standard_EXPORT void SetWriteUnitIVal(const Standard_Integer theVal);
 
+  Standard_EXPORT Standard_Integer GetWriteUnitIVal() const;
 
 
 protected:
@@ -143,7 +145,7 @@ private:
   Standard_Boolean planeAngleDone;
   Standard_Boolean solidAngleDone;
   Standard_Boolean hasUncertainty;
-
+  Standard_Integer myWriteUnitIVal;
 
 };
 
index 2676a871e59ddb3f652dbd701ae5ebf3e71e9f8c..4322f79968a950a1783f05c7d3bcf6510dc427be 100644 (file)
@@ -73,6 +73,7 @@
 //=======================================================================
 STEPConstruct_ValidationProps::STEPConstruct_ValidationProps () 
 {
+  mySchemaIVal = Interface_Static::IVal("write.step.schema");
 }
      
 //=======================================================================
@@ -83,6 +84,7 @@ STEPConstruct_ValidationProps::STEPConstruct_ValidationProps ()
 STEPConstruct_ValidationProps::STEPConstruct_ValidationProps (const Handle(XSControl_WorkSession) &WS)
      : STEPConstruct_Tool(WS)
 {
+  mySchemaIVal = Interface_Static::IVal("write.step.schema");
 }
 
 //=======================================================================
@@ -92,6 +94,7 @@ STEPConstruct_ValidationProps::STEPConstruct_ValidationProps (const Handle(XSCon
 
 Standard_Boolean STEPConstruct_ValidationProps::Init (const Handle(XSControl_WorkSession) &WS)
 {
+  mySchemaIVal = Interface_Static::IVal("write.step.schema");
   return SetWS ( WS );
 }
 
@@ -359,7 +362,8 @@ Standard_Boolean STEPConstruct_ValidationProps::AddProp (const StepRepr_Characte
   Model()->AddWithRefs ( PrDR );
 
   // for AP203, add subschema name
-  if ( Interface_Static::IVal("write.step.schema") ==3 ) {
+  if ( mySchemaIVal == 3 ) 
+  {
     APIHeaderSection_MakeHeader mkHdr ( Handle(StepData_StepModel)::DownCast ( Model() ) );
     Handle(TCollection_HAsciiString) subSchema = 
       new TCollection_HAsciiString ( "GEOMETRIC_VALIDATION_PROPERTIES_MIM" );
@@ -746,3 +750,14 @@ void STEPConstruct_ValidationProps::SetAssemblyShape (const TopoDS_Shape& shape)
   Handle(TransferBRep_ShapeMapper) mapper = TransferBRep::ShapeMapper(FinderProcess(),shape);
   FinderProcess()->FindTypedTransient(mapper,STANDARD_TYPE(StepBasic_ProductDefinition),myAssemblyPD);
 }
+
+void STEPConstruct_ValidationProps::SetSchemaIVal(const Standard_Integer theVal) 
+{
+  Interface_Static::SetIVal("write.step.schema", theVal);
+  mySchemaIVal = theVal;
+}
+
+Standard_Integer STEPConstruct_ValidationProps::GetSchemaIVal() const
+{
+  return mySchemaIVal;
+}
index 691a9dbd1b439c5b551c51c14d1a2a52fbb539c3..f686964932ac5c2fe69c0c04813b1902505f62ec 100644 (file)
@@ -121,7 +121,9 @@ public:
   //! Sets current assembly shape SDR (for FindCDSR calls)
   Standard_EXPORT void SetAssemblyShape (const TopoDS_Shape& shape);
 
+  Standard_EXPORT void SetSchemaIVal(const Standard_Integer theVal);
 
+  Standard_EXPORT Standard_Integer GetSchemaIVal() const;
 
 
 protected:
@@ -137,6 +139,7 @@ private:
   StepBasic_Unit areaUnit;
   StepBasic_Unit volUnit;
   Handle(StepBasic_ProductDefinition) myAssemblyPD;
+  Standard_Integer mySchemaIVal;
 
 
 };
index 0ce99cd8c68cb81ad8ceb0495d5a296a117dac47..b857f66b1b33ac6ee78be521f92412ccd1ea1808 100644 (file)
@@ -208,6 +208,19 @@ STEPControl_ActorRead::STEPControl_ActorRead()
 : myPrecision(0.0),
   myMaxTol(0.0)
 {
+  myAngleUnitIVal = Interface_Static::IVal("step.angleunit.mode");
+  myStepShapeReprIVal = Interface_Static::IVal("read.step.shape.repr");
+  myRelationshipIVal = Interface_Static::IVal("read.step.shape.relationship");
+  myShapeAspectIVal = Interface_Static::IVal("read.step.shape.aspect");
+  myProductCVal = Interface_Static::CVal("read.step.product.mode");
+  myReadAssemblyIVal = Interface_Static::IVal("read.step.assembly.level");
+  myNonmanifoldIVal = Interface_Static::IVal("read.step.nonmanifold");
+  myIdeasModeIVal = Interface_Static::IVal("read.step.ideas");
+  myConstructiveGeomIVal = Interface_Static::IVal("read.step.constructivegeom.relationship");
+  myRootTransformationIVal = Interface_Static::IVal("read.step.root.transformation");
+  myPrecisionModeIVal = Interface_Static::IVal("read.precision.mode");
+  myPrecisionRVal = Interface_Static::RVal("read.precision.val");
+  myMaxPrecisionRVal = Interface_Static::RVal("read.maxprecision.val");
 }
 // ============================================================================
 // Method  : STEPControl_ActorRead::Recognize
@@ -223,7 +236,7 @@ Standard_Boolean  STEPControl_ActorRead::Recognize
 
   if (start->IsKind(STANDARD_TYPE(StepRepr_NextAssemblyUsageOccurrence))) return Standard_True;
 
-  TCollection_AsciiString aProdMode = Interface_Static::CVal("read.step.product.mode");
+  TCollection_AsciiString aProdMode = myProductCVal;
   if(!aProdMode.IsEqual("ON"))
     if(start->IsKind(STANDARD_TYPE(StepShape_ShapeDefinitionRepresentation))) return Standard_True;
 
@@ -309,7 +322,7 @@ Handle(Transfer_Binder)  STEPControl_ActorRead::Transfer
     }
   }
   // [END] Get version of preprocessor (to detect I-Deas case) (ssv; 23.11.2010)
-  Standard_Boolean aTrsfUse = (Interface_Static::IVal("read.step.root.transformation") == 1);
+  Standard_Boolean aTrsfUse = (myRootTransformationIVal == 1);
   return TransferShape(start, TP, Standard_True, aTrsfUse, theProgress);
 }
 
@@ -519,14 +532,14 @@ static void getSDR(const Handle(StepRepr_ProductDefinitionShape)& PDS,
   // Flag indicating whether SDRs associated with the product`s main SDR
   // by SRRs (which correspond to hybrid model representation in AP203 since 1998) 
   // should be taken into account 
-  Standard_Integer readSRR = Interface_Static::IVal("read.step.shape.relationship");
+  Standard_Integer readSRR = myRelationshipIVal;
   
-  Standard_Integer readConstructiveGeomRR = Interface_Static::IVal("read.step.constructivegeom.relationship");
+  Standard_Integer aReadConstructiveGeomRR = myConstructiveGeomIVal;
   // Flag indicating whether SDRs associated with the product`s main SDR
   // by SAs (which correspond to hybrid model representation in AP203 before 1998) 
   // should be taken into account 
-  Standard_Integer readSA = Interface_Static::IVal("read.step.shape.aspect");
-  if ( ! readSA ) 
+  Standard_Integer aReadSA = myShapeAspectIVal;
+  if ( ! aReadSA ) 
     listSDRAspect->Clear();  
     
   // remember number of normal SDRs (not those found via ShapeAspect)
@@ -539,10 +552,10 @@ static void getSDR(const Handle(StepRepr_ProductDefinitionShape)& PDS,
   // possibly attached directly to intermediate assemblies (1)
   // Special mode (4) is used to translate shape attached to this product only,
   // ignoring sub-assemblies if any
-  Standard_Integer readAssembly = Interface_Static::IVal("read.step.assembly.level");
-  if ( readAssembly ==3 || ( readAssembly ==2 && listNAUO->Length() >0 ) ) 
+  Standard_Integer aReadAssembly = myReadAssemblyIVal;
+  if ( aReadAssembly ==3 || ( aReadAssembly ==2 && listNAUO->Length() >0 ) ) 
     listSDR->Clear();
-  else if ( readAssembly == 4 )
+  else if ( aReadAssembly == 4 )
     listNAUO->Clear();
   
   Standard_Integer nbEnt = listSDR->Length() + listNAUO->Length();
@@ -663,7 +676,7 @@ static void getSDR(const Handle(StepRepr_ProductDefinitionShape)& PDS,
             nbShapes++;
           }
         }
-        else if(readConstructiveGeomRR && anitem->IsKind(STANDARD_TYPE(StepRepr_ConstructiveGeometryRepresentationRelationship)))
+        else if(aReadConstructiveGeomRR && anitem->IsKind(STANDARD_TYPE(StepRepr_ConstructiveGeometryRepresentationRelationship)))
         {
           Handle(StepRepr_ConstructiveGeometryRepresentationRelationship) aCSRR =
             Handle(StepRepr_ConstructiveGeometryRepresentationRelationship)::DownCast(anitem);
@@ -826,7 +839,7 @@ Handle(TransferBRep_ShapeBinder) STEPControl_ActorRead::TransferEntity(
   Standard_Integer nsh = 0;
 
   // [BEGIN] Proceed with non-manifold topology (ssv; 12.11.2010)
-  Standard_Boolean isNMMode = Interface_Static::IVal("read.step.nonmanifold") != 0;
+  Standard_Boolean isNMMode = myNonmanifoldIVal != 0;
   Standard_Boolean isManifold = Standard_True;
   if ( isNMMode && sr->IsKind(STANDARD_TYPE(StepShape_NonManifoldSurfaceShapeRepresentation)) ) {
     isManifold = Standard_False;
@@ -838,8 +851,8 @@ Handle(TransferBRep_ShapeBinder) STEPControl_ActorRead::TransferEntity(
   } 
   // Special processing for I-DEAS STP case (ssv; 15.11.2010)
   else {
-    Standard_Integer isIDeasMode = Interface_Static::IVal("read.step.ideas");
-    if (isNMMode && myNMTool.IsIDEASCase() && isIDeasMode) {
+    Standard_Integer anIsIdeasMode = myIdeasModeIVal;
+    if (isNMMode && myNMTool.IsIDEASCase() && anIsIdeasMode) {
       isManifold = Standard_False;
       NM_DETECTED = Standard_True;
       #ifdef OCCT_DEBUG
@@ -1355,6 +1368,149 @@ Handle(TransferBRep_ShapeBinder) STEPControl_ActorRead::OldWay
   return shbinder;
 }
 
+void STEPControl_ActorRead::SetAngleUnitIVal(const Standard_Integer theVal)
+{
+  Interface_Static::SetIVal("step.angleunit.mode", theVal);
+  myAngleUnitIVal = theVal;
+}
+
+void STEPControl_ActorRead::SetStepShapeReprIVal(const Standard_Integer theVal)
+{
+  Interface_Static::SetIVal("read.step.shape.repr", theVal);
+  myStepShapeReprIVal = theVal;
+}
+
+void STEPControl_ActorRead::SetRelationshipIVal(const Standard_Integer theVal)
+{
+  Interface_Static::SetIVal("read.step.shape.relationship", theVal);
+  myRelationshipIVal = theVal;
+}
+
+void STEPControl_ActorRead::SetShapeAspectIVal(const Standard_Integer theVal)
+{
+  Interface_Static::SetIVal("read.step.shape.aspect", theVal);
+  myShapeAspectIVal = theVal;
+}
+
+void STEPControl_ActorRead::SetProductCVal(const Standard_CString& theVal)
+{
+  Interface_Static::SetCVal("read.step.product.mode", theVal);
+  myProductCVal = theVal;
+}
+
+void STEPControl_ActorRead::SetReadAssemblyIValconst(Standard_Integer theVal)
+{
+  Interface_Static::SetIVal("read.step.assembly.level", theVal);
+  myReadAssemblyIVal = theVal;
+}
+
+void STEPControl_ActorRead::SetNonmanifoldIVal(const Standard_Integer theVal)
+{
+  Interface_Static::SetIVal("read.step.nonmanifold", theVal);
+  myNonmanifoldIVal = theVal;
+}
+
+void STEPControl_ActorRead::SetIdeasModeIVal(const Standard_Integer theVal)
+{
+  Interface_Static::SetIVal("read.step.ideas", theVal);
+  myIdeasModeIVal = theVal;
+}
+
+void STEPControl_ActorRead::SetConstructiveGeomIVal(const Standard_Integer theVal)
+{
+  Interface_Static::SetIVal("read.step.constructivegeom.relationship", theVal);
+  myStepShapeReprIVal = theVal;
+}
+
+void STEPControl_ActorRead::SetRootTransformationIVal(const Standard_Integer theVal)
+{
+  Interface_Static::SetIVal("read.step.root.transformation", theVal);
+  myRootTransformationIVal = theVal;
+}
+
+void STEPControl_ActorRead::SetPrecisionModeIVal(const Standard_Integer theVal)
+{
+  Interface_Static::SetIVal("read.precision.mode", theVal);
+  myPrecisionModeIVal = theVal;
+}
+
+void STEPControl_ActorRead::SetPrecisionRVal(const Standard_Real theVal)
+{
+  Interface_Static::SetRVal("read.precision.val", theVal);
+  myPrecisionRVal = theVal;
+}
+
+void STEPControl_ActorRead::SetMaxPrecisionRVal(const Standard_Real theVal)
+{
+  Interface_Static::SetRVal("read.maxprecision.val", theVal);
+  myMaxPrecisionRVal = theVal;
+}
+
+Standard_Integer STEPControl_ActorRead::GetAngleUnitIVal() const
+{
+  return myAngleUnitIVal;
+}
+
+Standard_Integer STEPControl_ActorRead::GetStepShapeReprIVal() const
+{
+  return myStepShapeReprIVal;
+}
+
+Standard_Integer STEPControl_ActorRead::GetRelationshipIVal() const
+{
+  return myRelationshipIVal;
+}
+
+Standard_Integer STEPControl_ActorRead::GetShapeAspectIVal() const
+{
+  return myShapeAspectIVal;
+}
+
+Standard_CString STEPControl_ActorRead::GetProductCVal() const
+{
+  return myProductCVal;
+}
+
+Standard_Integer STEPControl_ActorRead::GetReadAssemblyIVal() const
+{
+  return myReadAssemblyIVal;
+}
+
+Standard_Integer STEPControl_ActorRead::GetNonmanifoldIVal() const
+{
+  return myNonmanifoldIVal;
+}
+
+Standard_Integer STEPControl_ActorRead::GetIdeasModeIVal() const
+{
+  return myIdeasModeIVal;
+}
+
+Standard_Integer STEPControl_ActorRead::GetConstructiveGeomIVal() const
+{
+  return myConstructiveGeomIVal;
+}
+
+Standard_Integer STEPControl_ActorRead::GetRootTransformationIVal() const
+{
+  return myRootTransformationIVal;
+}
+
+Standard_Integer STEPControl_ActorRead::GetPrecisionModeIVal() const
+{
+  return myPrecisionModeIVal;
+}
+
+Standard_Real STEPControl_ActorRead::GetPrecisionRVal() const
+{
+  return myPrecisionRVal;
+}
+
+Standard_Real STEPControl_ActorRead::GetMaxPrecisionRVal() const
+{
+  return myMaxPrecisionRVal;
+}
+
 //=======================================================================
 //function : TransferEntity
 //purpose  : 
@@ -1633,7 +1789,7 @@ Handle(Transfer_Binder) STEPControl_ActorRead::TransferShape(
   // Product Definition Entities
   // They should be treated with Design Manager
    // case ShapeDefinitionRepresentation if ProductMode != ON
-  TCollection_AsciiString aProdMode = Interface_Static::CVal("read.step.product.mode");
+  TCollection_AsciiString aProdMode = myProductCVal;
   if(!aProdMode.IsEqual("ON") && 
      start->IsKind(STANDARD_TYPE(StepShape_ShapeDefinitionRepresentation))) 
     shbinder = OldWay(start,TP, theProgress);
@@ -1754,7 +1910,7 @@ void STEPControl_ActorRead::PrepareUnits(const Handle(StepRepr_Representation)&
 
   if (!theGUAC.IsNull()) {
     stat1 = myUnit.ComputeFactors(theGUAC);
-    Standard_Integer anglemode = Interface_Static::IVal("step.angleunit.mode");
+    Standard_Integer anglemode = myAngleUnitIVal;
     Standard_Real angleFactor = ( anglemode == 0 ? myUnit.PlaneAngleFactor() :
                                  anglemode == 1 ? 1. : M_PI/180. );
     StepData_GlobalFactors::Intance().InitializeFactors(myUnit.LengthFactor(),
@@ -1769,15 +1925,15 @@ void STEPControl_ActorRead::PrepareUnits(const Handle(StepRepr_Representation)&
   }
 
 //  myPrecision = Precision::Confusion();
-  if (Interface_Static::IVal("read.precision.mode") == 1)  //:i1 gka S4136 05.04.99
-    myPrecision = Interface_Static::RVal("read.precision.val");
+  if (myPrecisionModeIVal == 1)  //:i1 gka S4136 05.04.99
+    myPrecision = myPrecisionRVal;
   else if (myUnit.HasUncertainty())
     myPrecision = myUnit.Uncertainty() * myUnit.LengthFactor();
   else {
     TP->AddWarning(theRepCont,"No Length Uncertainty, value of read.precision.val is taken");
-    myPrecision = Interface_Static::RVal("read.precision.val");
+    myPrecision = myPrecisionRVal;
   }
-  myMaxTol = Max ( myPrecision, Interface_Static::RVal("read.maxprecision.val") );
+  myMaxTol = Max ( myPrecision, myMaxPrecisionRVal );
   // Assign uncertainty
 #ifdef TRANSLOG
   if (TP->TraceLevel() > 1) 
@@ -1793,8 +1949,8 @@ void STEPControl_ActorRead::PrepareUnits(const Handle(StepRepr_Representation)&
 void  STEPControl_ActorRead::ResetUnits ()
 {
   StepData_GlobalFactors::Intance().InitializeFactors ( 1, 1, 1 );
-  myPrecision = Interface_Static::RVal("read.precision.val");
-  myMaxTol = Max ( myPrecision, Interface_Static::RVal("read.maxprecision.val") );
+  myPrecision = myPrecisionRVal;
+  myMaxTol = Max (myPrecision, myMaxPrecisionRVal);
 }
 
 //=======================================================================
index cebac50190a4b6741da478a398389326154605f1..ce0ad0ecb83af2bb20645c77f6283782ecb6d4ed 100644 (file)
@@ -172,6 +172,57 @@ protected:
                     const Handle(Transfer_TransientProcess)& TP,
                     const Message_ProgressRange& theProgress);
 
+  Standard_EXPORT void SetAngleUnitIVal(const Standard_Integer theVal);
+
+  Standard_EXPORT void SetStepShapeReprIVal(const Standard_Integer theVal);
+
+  Standard_EXPORT void SetRelationshipIVal(const Standard_Integer theVal);
+
+  Standard_EXPORT void SetShapeAspectIVal(const Standard_Integer theVal);
+
+  Standard_EXPORT void SetProductCVal(const Standard_CString& theVal);
+
+  Standard_EXPORT void SetReadAssemblyIValconst(Standard_Integer theVal);
+
+  Standard_EXPORT void SetNonmanifoldIVal(const Standard_Integer theVal);
+
+  Standard_EXPORT void SetIdeasModeIVal(const Standard_Integer theVal);
+
+  Standard_EXPORT void SetConstructiveGeomIVal(const Standard_Integer theVal);
+
+  Standard_EXPORT void SetRootTransformationIVal(const Standard_Integer theVal);
+
+  Standard_EXPORT void SetPrecisionModeIVal(const Standard_Integer theVal);
+
+  Standard_EXPORT void SetPrecisionRVal(const Standard_Real theVal);
+
+  Standard_EXPORT void SetMaxPrecisionRVal(const Standard_Real theVal);
+
+  Standard_EXPORT Standard_Integer GetAngleUnitIVal() const;
+
+  Standard_EXPORT Standard_Integer GetStepShapeReprIVal() const;
+
+  Standard_EXPORT Standard_Integer GetRelationshipIVal() const;
+
+  Standard_EXPORT Standard_Integer GetShapeAspectIVal() const;
+
+  Standard_EXPORT Standard_CString GetProductCVal() const;
+
+  Standard_EXPORT Standard_Integer GetReadAssemblyIVal() const;
+
+  Standard_EXPORT Standard_Integer GetNonmanifoldIVal() const;
+
+  Standard_EXPORT Standard_Integer GetIdeasModeIVal() const;
+
+  Standard_EXPORT Standard_Integer GetConstructiveGeomIVal() const;
+
+  Standard_EXPORT Standard_Integer GetRootTransformationIVal() const;
+
+  Standard_EXPORT Standard_Integer GetPrecisionModeIVal() const;
+
+  Standard_EXPORT Standard_Real GetPrecisionRVal() const;
+
+  Standard_EXPORT Standard_Real GetMaxPrecisionRVal() const;
 
 
 private:
@@ -185,7 +236,19 @@ private:
   Standard_Real myPrecision;
   Standard_Real myMaxTol;
   Handle(StepRepr_Representation) mySRContext;
-
+  Standard_Integer myAngleUnitIVal;
+  Standard_Integer myStepShapeReprIVal;
+  Standard_Integer myRelationshipIVal;
+  Standard_Integer myShapeAspectIVal;
+  Standard_CString myProductCVal;
+  Standard_Integer myReadAssemblyIVal;
+  Standard_Integer myNonmanifoldIVal;
+  Standard_Boolean myIdeasModeIVal;
+  Standard_Integer myConstructiveGeomIVal;
+  Standard_Integer myRootTransformationIVal;
+  Standard_Integer myPrecisionModeIVal;
+  Standard_Real myPrecisionRVal;
+  Standard_Real myMaxPrecisionRVal;
 
 };
 
index e83fd172790d2f9207faff67b356cb5832d695a7..9f73cd0dbe771a98b5d0f93a375e009664ff6312 100644 (file)
@@ -232,6 +232,13 @@ static Standard_Boolean IsManifoldShape(const TopoDS_Shape& theShape) {
 STEPControl_ActorWrite::STEPControl_ActorWrite ()
 : mygroup (0) , mytoler (-1.)
 {  
+  myAngleUnitIVal = Interface_Static::IVal("step.angleunit.mode");
+  mySchemaIVal = Interface_Static::IVal("write.step.schema");
+  myPrecisionModeIVal = Interface_Static::IVal("write.precision.mode");
+  myVertexModeIVal = Interface_Static::IVal("write.step.vertex.mode");
+  myNonmanifoldIVal = Interface_Static::IVal("write.step.nonmanifold");
+  myPrecisionRVal = Interface_Static::RVal("write.precision.val");
+  myMaxPrecisionRVal = Interface_Static::RVal("read.maxprecision.val");
   SetMode(STEPControl_ShellBasedSurfaceModel);
 }
 
@@ -468,7 +475,7 @@ Handle(Transfer_Binder) STEPControl_ActorWrite::Transfer (const Handle(Transfer_
   }
   Standard_Real aLFactor = model->WriteLengthUnit();
   aLFactor /= model->LocalLengthUnit();
-  Standard_Integer anglemode = Interface_Static::IVal("step.angleunit.mode");
+  Standard_Integer anglemode = myAngleUnitIVal;
   StepData_GlobalFactors::Intance().InitializeFactors (aLFactor, ( anglemode <= 1 ? 1. : M_PI/180. ), 1. );
 
   // create SDR
@@ -532,7 +539,7 @@ Standard_Boolean STEPControl_ActorWrite::IsAssembly (TopoDS_Shape &S) const
 {
   if ( ! GroupMode() || S.ShapeType() != TopAbs_COMPOUND ) return Standard_False;
   // PTV 16.09.2002  OCC725 for storing compound of vertices
-  if (Interface_Static::IVal("write.step.vertex.mode") == 0) {//bug 23950
+  if (myVertexModeIVal == 0) {//bug 23950
     if (S.ShapeType() == TopAbs_COMPOUND ) {
       Standard_Boolean IsOnlyVertices = Standard_True;
       TopoDS_Iterator anItr( S );
@@ -556,6 +563,83 @@ Standard_Boolean STEPControl_ActorWrite::IsAssembly (TopoDS_Shape &S) const
   return IsAssembly ( S );
 }
 
+void STEPControl_ActorWrite::SetGetAngleUnitIVal(const Standard_Integer theVal)
+{
+  Interface_Static::SetIVal("step.angleunit.mode", theVal);
+  myAngleUnitIVal = theVal;
+}
+
+void STEPControl_ActorWrite::SetSchemaIVal(const Standard_Integer theVal)
+{
+  Interface_Static::SetIVal("write.step.schema", theVal);
+  mySchemaIVal = theVal;
+}
+
+void STEPControl_ActorWrite::SetPrecisionModeIVal(const Standard_Integer theVal)
+{
+  Interface_Static::SetIVal("write.precision.mode", theVal);
+  myPrecisionModeIVal = theVal;
+}
+
+void STEPControl_ActorWrite::SetVertexModeIVal(const Standard_Integer theVal)
+{
+  Interface_Static::SetIVal("write.step.vertex.mode", theVal);
+  myVertexModeIVal = theVal;
+}
+
+void STEPControl_ActorWrite::SetNonmanifoldIVal(const Standard_Integer theVal)
+{
+  Interface_Static::SetIVal("write.step.nonmanifold", theVal);
+  myNonmanifoldIVal = theVal;
+}
+
+void STEPControl_ActorWrite::SetPrecisionRVal(const Standard_Real theVal)
+{
+  Interface_Static::SetRVal("write.precision.val", theVal);
+  myPrecisionRVal = theVal;
+}
+
+void STEPControl_ActorWrite::SetMaxPrecisionRVal(const Standard_Real theVal)
+{
+  Interface_Static::SetRVal("read.maxprecision.val", theVal);
+  myMaxPrecisionRVal = theVal;
+}
+
+Standard_Integer STEPControl_ActorWrite::GetAngleUnitIVal() const
+{
+  return myAngleUnitIVal;
+}
+
+Standard_Integer STEPControl_ActorWrite::GetSchemaIVal() const
+{
+  return mySchemaIVal;
+}
+
+Standard_Integer STEPControl_ActorWrite::GetPrecisionModeIVal() const
+{
+  return myPrecisionModeIVal;
+}
+
+Standard_Integer STEPControl_ActorWrite::GetVertexModeIVal() const
+{
+  return myVertexModeIVal;
+}
+
+Standard_Integer STEPControl_ActorWrite::GetNonmanifoldIVal() const
+{
+  return myNonmanifoldIVal;
+}
+
+Standard_Real STEPControl_ActorWrite::GetPrecisionRVal() const
+{
+  return myPrecisionRVal;
+}
+
+Standard_Real STEPControl_ActorWrite::GetMaxPrecisionRVal() const
+{
+  return myMaxPrecisionRVal;
+}
+
 //=======================================================================
 //function : TransferShape
 //purpose  : 
@@ -651,7 +735,7 @@ Handle(Transfer_Binder) STEPControl_ActorWrite::TransferShape
   Message_ProgressScope aPSRoot(theProgress, NULL, 2);
 
   // [BEGIN] Separate manifold topology from non-manifold in group mode 0 (ssv; 18.11.2010)
-  Standard_Boolean isNMMode = Interface_Static::IVal("write.step.nonmanifold") != 0;
+  Standard_Boolean isNMMode = myNonmanifoldIVal != 0;
   Handle(Transfer_Binder) aNMBinder;
   if (isNMMode && !GroupMode() && theShape.ShapeType() == TopAbs_COMPOUND) {
     TopoDS_Compound aNMCompound;
@@ -774,8 +858,7 @@ Handle(Transfer_Binder) STEPControl_ActorWrite::TransferShape
   // create a list of items to translate
   Handle(TopTools_HSequenceOfShape) RepItemSeq = new TopTools_HSequenceOfShape();
   
-  Standard_Boolean isSeparateVertices = 
-    Interface_Static::IVal("write.step.vertex.mode") == 0;//bug 23950
+  Standard_Boolean isSeparateVertices = myVertexModeIVal;//bug 23950
   // PTV 16.09.2002 OCC725 separate shape from solo vertices.
   Standard_Boolean isOnlyVertices = Standard_False;
   if (theShape.ShapeType() == TopAbs_COMPOUND) {
@@ -907,7 +990,7 @@ Handle(Transfer_Binder) STEPControl_ActorWrite::TransferShape
 //    if ( DMT.IsDone() ) aShape = DMT.ModifiedShape ( aShape );
 ////    aShape = TopoDSToStep::DirectFaces(xShape);
     Handle(Standard_Transient) info;
-    Standard_Real maxTol = Interface_Static::RVal("read.maxprecision.val");
+    Standard_Real maxTol = myMaxPrecisionRVal;
 
     Message_ProgressScope aPS1 (aPS.Next(), NULL, 2);
 
@@ -1191,7 +1274,7 @@ Handle(Transfer_Binder) STEPControl_ActorWrite::TransferShape
       GetCasted(StepRepr_RepresentationItem, ItemSeq->Value(rep));
     items->SetValue(rep,repit);
   }
-  Standard_Integer ap = Interface_Static::IVal("write.step.schema");
+  Standard_Integer ap = mySchemaIVal;
   Transfer_SequenceOfBinder aSeqBindRelation;
   if(ap == 3 && nbs > 1) {
     Standard_Integer j = 1;
@@ -1298,7 +1381,7 @@ Handle(Transfer_Binder) STEPControl_ActorWrite::TransferCompound
   TopoDS_Shape theShape = mapper->Value();
 
   // Inspect non-manifold topology case (ssv; 10.11.2010)
-  Standard_Boolean isNMMode = Interface_Static::IVal("write.step.nonmanifold") != 0;
+  Standard_Boolean isNMMode = myNonmanifoldIVal != 0;
   Standard_Boolean isManifold;
   if (isNMMode)
     isManifold = IsManifoldShape(theShape);
@@ -1309,8 +1392,7 @@ Handle(Transfer_Binder) STEPControl_ActorWrite::TransferCompound
   Handle(TopTools_HSequenceOfShape) RepItemSeq = new TopTools_HSequenceOfShape();
   // Prepare a collection for non-manifold group of shapes
   Handle(TopTools_HSequenceOfShape) NonManifoldGroup = new TopTools_HSequenceOfShape();
-  Standard_Boolean isSeparateVertices = 
-    (Interface_Static::IVal("write.step.vertex.mode") == 0);//bug 23950
+  Standard_Boolean isSeparateVertices = myVertexModeIVal == 0;//bug 23950
   // PTV OCC725 17.09.2002 -- begin --
   Standard_Integer nbFreeVrtx = 0;
   TopoDS_Compound aCompOfVrtx;
index 513e2eab43a8c858764f56f914f53b58b97631d5..acfd83cbe9a1dd30e1ea7ecb6f8964bc8861903f 100644 (file)
@@ -96,8 +96,33 @@ public:
   //! NOTE: this method can modify shape
   Standard_EXPORT virtual Standard_Boolean IsAssembly (TopoDS_Shape& S) const;
 
+  Standard_EXPORT void SetGetAngleUnitIVal(const Standard_Integer theVal);
 
+  Standard_EXPORT void SetSchemaIVal(const Standard_Integer theVal);
 
+  Standard_EXPORT void SetPrecisionModeIVal(const Standard_Integer theVal);
+
+  Standard_EXPORT void SetVertexModeIVal(const Standard_Integer theVal);
+
+  Standard_EXPORT void SetNonmanifoldIVal(const Standard_Integer theVal);
+
+  Standard_EXPORT void SetPrecisionRVal(const Standard_Real theVal);
+
+  Standard_EXPORT void SetMaxPrecisionRVal(const Standard_Real theVal);
+
+  Standard_EXPORT Standard_Integer GetAngleUnitIVal() const;
+
+  Standard_EXPORT Standard_Integer GetSchemaIVal() const;
+
+  Standard_EXPORT Standard_Integer GetPrecisionModeIVal() const;
+
+  Standard_EXPORT Standard_Integer GetVertexModeIVal() const;
+
+  Standard_EXPORT Standard_Integer GetNonmanifoldIVal() const;
+
+  Standard_EXPORT Standard_Real GetPrecisionRVal() const;
+
+  Standard_EXPORT Standard_Real GetMaxPrecisionRVal() const;
 
   DEFINE_STANDARD_RTTIEXT(STEPControl_ActorWrite,Transfer_ActorOfFinderProcess)
 
@@ -122,7 +147,13 @@ private:
   Standard_Integer mygroup;
   Standard_Real mytoler;
   STEPConstruct_ContextTool myContext;
-
+  Standard_Integer myAngleUnitIVal;
+  Standard_Integer mySchemaIVal;
+  Standard_Integer myPrecisionModeIVal;
+  Standard_Integer myVertexModeIVal;
+  Standard_Integer myNonmanifoldIVal;
+  Standard_Real myPrecisionRVal;
+  Standard_Real myMaxPrecisionRVal;
 
 };
 
index ceb1d99b81595a9b4e800c15b93e8086aaa0bbde..c6fcda38b9eccecaaa23cfeb35a460e1687dcc5c 100644 (file)
@@ -63,6 +63,8 @@ STEPControl_Controller::STEPControl_Controller ()
     RWHeaderSection::Init();  RWStepAP214::Init();
 
     Interface_Static::Init ("step","write.step.product.name",'t',"Open CASCADE STEP translator " OCC_VERSION_STRING);
+    Interface_Static::SetCVal("write.step.product.name", "");
+
     Interface_Static::Init ("step","write.step.assembly",'e',"");
     Interface_Static::Init ("step","write.step.assembly",'&',"enum 0");
     Interface_Static::Init ("step","write.step.assembly",'&',"eval Off");
index b7c003bc14ae90dbd5c2eafda77214aaa5561f40..e3d40eee245f55487046406e515d6ed4043253bc 100644 (file)
 STEPControl_Reader::STEPControl_Reader ()
 {
   STEPControl_Controller::Init();
+  myAllShapeIVal = Interface_Static::IVal("read.step.all.shapes");
+  myProductContextCVal = Interface_Static::CVal("read.step.product.context");
+  myProductContextIVal = Interface_Static::IVal("read.step.product.context");
+  myProductModeCVal = Interface_Static::CVal("read.step.product.mode");
   SetNorm ("STEP");
 }
 
@@ -88,6 +92,10 @@ STEPControl_Reader::STEPControl_Reader
 {
   STEPControl_Controller::Init();
   SetWS (WS,scratch);
+  myAllShapeIVal = Interface_Static::IVal("read.step.all.shapes");
+  myProductContextCVal = Interface_Static::CVal("read.step.product.context");
+  myProductContextIVal = Interface_Static::IVal("read.step.product.context");
+  myProductModeCVal = Interface_Static::CVal("read.step.product.mode");
   SetNorm ("STEP");
 }
 
@@ -126,7 +134,7 @@ Standard_Integer STEPControl_Reader::NbRootsForTransfer()
   Standard_Integer nb = Model()->NbEntities();
   for (Standard_Integer i = 1; i <= nb; i ++) {
     Handle(Standard_Transient) ent = Model()->Value(i);
-    if (Interface_Static::IVal("read.step.all.shapes") == 1) {
+    if (myAllShapeIVal == 1) {
       // Special case to read invalid shape_representation without links to shapes.
       if (ent->IsKind(STANDARD_TYPE(StepShape_ManifoldSolidBrep))) {
         Interface_EntityIterator aShareds = WS()->Graph().Sharings(ent);
@@ -186,9 +194,9 @@ Standard_Integer STEPControl_Reader::NbRootsForTransfer()
       }
       // determinate roots used ProductDefinitionContext
       if(IsRoot) {
-        const char *str1 = Interface_Static::CVal("read.step.product.context");
-        Standard_Integer ICS = Interface_Static::IVal("read.step.product.context");
-        if(ICS>1) {
+        const char *aStr1 = myProductContextCVal;
+        Standard_Integer anICS = myProductContextIVal;
+        if(anICS>1) {
           subs = graph.Shareds(PD);
           for(subs.Start(); subs.More(); subs.Next()) {
             Handle(StepBasic_ProductDefinitionContext) PDC = 
@@ -196,7 +204,7 @@ Standard_Integer STEPControl_Reader::NbRootsForTransfer()
             if (PDC.IsNull()) continue;
             const char *str2 = PDC->LifeCycleStage()->String().ToCString();
             const char *str3 = PDC->Name()->String().ToCString();
-            if( !( strcasecmp(str1,str2)==0 || strcasecmp(str1,str3)==0 ) )
+            if( !( strcasecmp(aStr1,str2)==0 || strcasecmp(aStr1,str3)==0 ) )
               IsRoot=Standard_False;
           }
         }
@@ -220,7 +228,7 @@ Standard_Integer STEPControl_Reader::NbRootsForTransfer()
         WS()->TransferReader()->TransientProcess()->RootsForTransfer()->Append(ent);
       }
     }
-    TCollection_AsciiString aProdMode = Interface_Static::CVal("read.step.product.mode");
+    TCollection_AsciiString aProdMode = myProductModeCVal;
     if(!aProdMode.IsEqual("ON")) {
       if(ent->IsKind(STANDARD_TYPE(StepShape_ShapeDefinitionRepresentation))) {
         Standard_Boolean IsRoot = Standard_True;
@@ -588,3 +596,47 @@ Standard_Boolean STEPControl_Reader::findUnits(
 
   return nbFind != 0;
 }
+
+void STEPControl_Reader::SetAllShapeIVal(const Standard_Integer theVal)
+{
+  Interface_Static::SetIVal("read.step.all.shapes", theVal);
+  myAllShapeIVal = theVal;
+}
+
+void STEPControl_Reader::SetProductContextCVal(const Standard_CString theVal)
+{
+  Interface_Static::SetCVal("read.step.product.context", theVal);
+  myProductContextCVal = theVal;
+}
+
+void STEPControl_Reader::SetProductContextIVal(const Standard_Integer theVal)
+{
+  Interface_Static::SetIVal("read.step.product.context", theVal);
+  myProductContextIVal = theVal;
+}
+
+void STEPControl_Reader::SetProductModeCVal(const Standard_CString theVal)
+{
+  Interface_Static::SetCVal("read.step.product.mode", theVal);
+  myProductModeCVal = theVal;
+}
+
+Standard_Integer STEPControl_Reader::GetAllShapeIVal() const
+{
+  return myAllShapeIVal;
+}
+
+Standard_CString STEPControl_Reader::GetProductContextCVal() const
+{
+  return myProductContextCVal;
+}
+
+Standard_Integer STEPControl_Reader::GetProductContextIVal() const
+{
+  return myProductContextIVal;
+}
+
+Standard_CString STEPControl_Reader::GetProductModeCVal() const
+{
+  return myProductModeCVal;
+}
\ No newline at end of file
index 1619174474cd5fcd16eeb9370ffe5d1d12496365..ba1690c4aeb20168a009635429d57b8a40e6eebb 100644 (file)
@@ -106,6 +106,22 @@ public:
   //! Returns system length unit used by transfer process
   Standard_EXPORT Standard_Real SystemLengthUnit() const;
 
+  Standard_EXPORT void SetAllShapeIVal(const Standard_Integer theVal);
+
+  Standard_EXPORT void SetProductContextCVal(const Standard_CString theVal);
+
+  Standard_EXPORT void SetProductContextIVal(const Standard_Integer theVal);
+
+  Standard_EXPORT void SetProductModeCVal(const Standard_CString theVal);
+
+  Standard_EXPORT Standard_Integer GetAllShapeIVal() const;
+
+  Standard_EXPORT Standard_CString GetProductContextCVal() const;
+
+  Standard_EXPORT Standard_Integer GetProductContextIVal() const;
+
+  Standard_EXPORT Standard_CString GetProductModeCVal() const;
+
 
 protected:
 
@@ -118,8 +134,10 @@ private:
   
   //! Returns  units for length , angle and solidangle for shape representations
   Standard_EXPORT Standard_Boolean findUnits (const Handle(StepRepr_RepresentationContext)& theReprContext, TColStd_Array1OfAsciiString& theNameUnits, TColStd_Array1OfReal& theFactorUnits);
-
-
+  Standard_Integer myAllShapeIVal;
+  Standard_CString myProductContextCVal;
+  Standard_Integer myProductContextIVal;
+  Standard_CString myProductModeCVal;
 
 
 };
index d4c4e3d074a32800a6c2a7e173e370050ab8ac89..118eda087dc1cc5d638814f3a7425c5c365a6a47 100644 (file)
@@ -1630,6 +1630,7 @@ StepAP214_Protocol::StepAP214_Protocol ()
   types.Bind(STANDARD_TYPE(StepKinematics_MechanismStateRepresentation), 801);
   types.Bind(STANDARD_TYPE(StepVisual_RepositionedTessellatedGeometricSet), 802);
   types.Bind(STANDARD_TYPE(StepVisual_RepositionedTessellatedItem), 803);
+  mySchemaIVal = Interface_Static::IVal("write.step.schema");
 }
 
 
@@ -1654,7 +1655,7 @@ Handle(Standard_Type)& atype) const
 
 Standard_CString StepAP214_Protocol::SchemaName() const
 {      
-  switch (Interface_Static::IVal("write.step.schema")) { //:j4
+  switch (mySchemaIVal) { //:j4
   default:
   case 1 : return schemaAP214CD;  break; 
   case 2 : return schemaAP214DIS; break; 
@@ -1687,3 +1688,13 @@ Handle(Interface_Protocol) StepAP214_Protocol::Resource
   return HeaderSection::Protocol();
 }
 
+void StepAP214_Protocol::SetSchemaIVal(const Standard_Integer theVal)
+{
+  Interface_Static::SetIVal("write.step.schema", theVal);
+  mySchemaIVal = theVal;
+}
+
+Standard_Integer StepAP214_Protocol::GetSchemaIVal() const
+{
+  return mySchemaIVal;
+}
index ab13ff90e81faf23578469daee078617e0864bcf..e4b5d1a5ab422306b8940d47dc509551e39594c7 100644 (file)
@@ -51,7 +51,9 @@ public:
   //! Returns a Resource, given its rank (between 1 and NbResources)
   Standard_EXPORT virtual Handle(Interface_Protocol) Resource (const Standard_Integer num) const Standard_OVERRIDE;
 
+  Standard_EXPORT void SetSchemaIVal(const Standard_Integer theVal);
 
+  Standard_EXPORT Standard_Integer GetSchemaIVal() const;
 
 
   DEFINE_STANDARD_RTTIEXT(StepAP214_Protocol,StepData_Protocol)
@@ -63,7 +65,7 @@ protected:
 
 private:
 
-
+  Standard_Integer mySchemaIVal;
 
 
 };
index 2768a85d19da1623be16a1f9fd08d8aa7c65aac4..8f3dffddcef3b9983b6a4c24b5ba933b31b00c34 100644 (file)
@@ -38,7 +38,8 @@ IMPLEMENT_STANDARD_RTTIEXT(StepData_StepModel,Interface_InterfaceModel)
 StepData_StepModel::StepData_StepModel () :mySourceCodePage((Resource_FormatType)Interface_Static::IVal("read.step.codepage")),
   myReadUnitIsInitialized(Standard_False), myWriteUnit (1.)
 {
-  switch (Interface_Static::IVal("write.step.unit"))
+  myWriteUnitIVal = Interface_Static::IVal("write.step.unit");
+  switch (myWriteUnitIVal)
   {
     case  1: myWriteUnit = 25.4; break;
     case  2: myWriteUnit = 1.; break;
@@ -247,4 +248,15 @@ void StepData_StepModel::SetWriteLengthUnit(const Standard_Real theUnit)
 Standard_Real StepData_StepModel::WriteLengthUnit() const
 {
   return myWriteUnit;
-}
\ No newline at end of file
+}
+
+void StepData_StepModel::SetWriteUnitIVal(const Standard_Integer theVal)
+{
+  Interface_Static::SetIVal("write.step.unit", theVal);
+  myWriteUnitIVal = theVal;
+}
+
+Standard_Integer StepData_StepModel::GetWriteUnitIVal() const
+{
+  return myWriteUnitIVal;
+}
index dce1d5beb0803e2aabbd75031f94b21b11aebec2..a3b2ba2bed7327ffb095cb674f8905ac67e9cc17 100644 (file)
@@ -120,6 +120,10 @@ public:
   //! False - the unit value was not initialized, the default value is used
   Standard_Boolean IsInitializedUnit() const { return myReadUnitIsInitialized; }
 
+  Standard_EXPORT void SetWriteUnitIVal(const Standard_Integer theVal);
+
+  Standard_EXPORT Standard_Integer GetWriteUnitIVal() const;
+
   DEFINE_STANDARD_RTTIEXT(StepData_StepModel,Interface_InterfaceModel)
 
 protected:
@@ -135,6 +139,7 @@ private:
   Resource_FormatType mySourceCodePage;
   Standard_Boolean myReadUnitIsInitialized;
   Standard_Real myWriteUnit;
+  Standard_Integer myWriteUnitIVal;
 
 
 };
index f3660ea1f39fe47406f864bbd1021c47c443b970..0c1c25ae23867388e500b341f1d978925d1b2651 100644 (file)
@@ -107,10 +107,11 @@ Standard_Boolean StepToTopoDS_TranslateCompositeCurve::Init (const Handle(StepGe
 
   Standard_Boolean SurfMode = ( ! S.IsNull() && ! Surf.IsNull() );
   Standard_Boolean isClosed = Standard_False;
+  mySurCurModeIVal = Interface_Static::IVal("read.surfacecurve.mode");
 
-  if ( SurfMode ) {
-    Standard_Integer modepcurve = Interface_Static::IVal("read.surfacecurve.mode");
-    if ( modepcurve ==-3 ) SurfMode = Standard_False;
+  if (SurfMode && mySurCurModeIVal == -3)
+  {
+    SurfMode = Standard_False;
   }
   
   Handle(ShapeExtend_WireData) sbwd = new ShapeExtend_WireData;
@@ -286,3 +287,14 @@ const TopoDS_Wire& StepToTopoDS_TranslateCompositeCurve::Value () const
 {
   return myWire;
 }
+
+void StepToTopoDS_TranslateCompositeCurve::SetSurCurModeIVal(const Standard_Integer theVal)
+{
+  Interface_Static::SetIVal("read.surfacecurve.mode", theVal);
+  mySurCurModeIVal = theVal;
+}
+
+Standard_Integer StepToTopoDS_TranslateCompositeCurve::GetSurCurModeIVal() const
+{
+  return mySurCurModeIVal;
+}
index 36d4d6c062df269c304314cc509068082701cf02..fe73051c8b576ee3a9310855ace4d2bcab01c448 100644 (file)
@@ -63,9 +63,11 @@ public:
   Standard_EXPORT const TopoDS_Wire& Value() const;
   
   //! Returns True if composite_curve contains a segment with infinite parameters.
-    Standard_Boolean IsInfiniteSegment() const;
+  Standard_Boolean IsInfiniteSegment() const;
 
+  Standard_EXPORT void SetSurCurModeIVal(const Standard_Integer theVal);
 
+  Standard_EXPORT Standard_Integer GetSurCurModeIVal() const;
 
 
 protected:
@@ -80,6 +82,7 @@ private:
 
   TopoDS_Wire myWire;
   Standard_Boolean myInfiniteSegment;
+  Standard_Integer mySurCurModeIVal
 
 
 };
index 9de5910cf6ad46c6ec8b1e82bb650c94ac3a6a18..31d14e0697e4ea4d262b1f9c21726b1ed50f966f 100644 (file)
@@ -226,7 +226,7 @@ void StepToTopoDS_TranslateEdgeLoop::Init(const Handle(StepShape_FaceBound)& Fac
     done     = Standard_True;
     return;
   }
-  Standard_Integer modepcurve = Interface_Static::IVal("read.surfacecurve.mode");
+  mySurCurModeIVal = Interface_Static::IVal("read.surfacecurve.mode");
   //  0,1 : suivre le code,  2 : ne prendre que pcurve,  3 : ne prendre que C3D
 
   BRep_Builder B;
@@ -498,7 +498,7 @@ void StepToTopoDS_TranslateEdgeLoop::Init(const Handle(StepShape_FaceBound)& Fac
       //   If modepcurve = 3, PCurve are ignored here
       // -----------------------------------------
 
-      else if (modepcurve == 3) {
+      else if (mySurCurModeIVal == 3) {
         aTool.ComputePCurve(Standard_True);
         hasPcurve = Standard_False;
       }
@@ -745,3 +745,13 @@ StepToTopoDS_TranslateEdgeLoopError StepToTopoDS_TranslateEdgeLoop::Error() cons
   return myError;
 }
 
+void StepToTopoDS_TranslateEdgeLoop::SetSurCurModeIVal(const Standard_Integer theVal)
+{
+  Interface_Static::SetIVal("read.surfacecurve.mode", theVal);
+  mySurCurModeIVal = theVal;
+}
+
+Standard_Integer StepToTopoDS_TranslateEdgeLoop::GetSurCurModeIVal() const
+{
+  return mySurCurModeIVal;
+}
index 878a065f58d93150e1ad7568b0963be47dcf2b97..afdf9253d3d38dbab121f803eabbcf23edd0337f 100644 (file)
@@ -51,7 +51,9 @@ public:
   
   Standard_EXPORT StepToTopoDS_TranslateEdgeLoopError Error() const;
 
+  Standard_EXPORT void SetSurCurModeIVal(const Standard_Integer theVal);
 
+  Standard_EXPORT Standard_Integer GetSurCurModeIVal() const;
 
 
 protected:
@@ -66,6 +68,7 @@ private:
 
   StepToTopoDS_TranslateEdgeLoopError myError;
   TopoDS_Shape myResult;
+  Standard_Integer mySurCurModeIVal;
 
 
 };
index e6d4c0cd90874a95454bbc689afca4bfac047e94..c3254ce29f5c0ac0a1e52e1d6ee74e0cbbac4fe4 100644 (file)
@@ -91,7 +91,8 @@ void TopoDSToStep_MakeStepEdge::Init(const TopoDS_Edge& aEdge,
   aTool.SetCurrentEdge(aEdge);
 
   // [BEGIN] Processing non-manifold topology (ssv; 11.11.2010)
-  Standard_Boolean isNMMode = Interface_Static::IVal("write.step.nonmanifold") != 0;
+  myNonmanifoldIVal = Interface_Static::IVal("write.step.nonmanifold");
+  Standard_Boolean isNMMode = myNonmanifoldIVal != 0;
   if (isNMMode) {
     Handle(StepShape_EdgeCurve) anEC;
     Handle(TransferBRep_ShapeMapper) aSTEPMapper = TransferBRep::ShapeMapper(FP, aEdge);
@@ -356,3 +357,15 @@ TopoDSToStep_MakeEdgeError TopoDSToStep_MakeStepEdge::Error() const
 {
   return myError;
 }
+
+void TopoDSToStep_MakeStepEdge::SetNonmanifoldIVal(const Standard_Integer theVal)
+{
+  Interface_Static::SetIVal("write.step.nonmanifold", theVal);
+  myNonmanifoldIVal = theVal;
+}
+
+Standard_Integer TopoDSToStep_MakeStepEdge::GetNonmanifoldIVal() const
+{
+  return myNonmanifoldIVal;
+}
+
index a9a30f25d704e86464400eafb331ea6a245663be..02eacba90f07d8e03b2e5f4034ed6cdb6114c6c6 100644 (file)
@@ -49,7 +49,9 @@ public:
   
   Standard_EXPORT TopoDSToStep_MakeEdgeError Error() const;
 
+  Standard_EXPORT void SetNonmanifoldIVal(const Standard_Integer theVal);
 
+  Standard_EXPORT Standard_Integer GetNonmanifoldIVal() const;
 
 
 protected:
@@ -64,6 +66,7 @@ private:
 
   Handle(StepShape_TopologicalRepresentationItem) myResult;
   TopoDSToStep_MakeEdgeError myError;
+  Standard_Integer myNonmanifoldIVal;
 
 
 };
index 5cf564b01fd25f524575f569d8cab224b7fdbb6b..1a13cb019a8563fe5e725e2fcc038f44ee71f0a1 100644 (file)
@@ -120,6 +120,7 @@ void TopoDSToStep_MakeStepFace::Init(const TopoDS_Face& aFace,
   // --------------------------------------------------------------
 
   //szv#4:S4163:12Mar99 SGI warns
+  myNonmanifoldIVal = Interface_Static::IVal("write.step.nonmanifold");
   TopoDS_Shape sh = aFace.Oriented(TopAbs_FORWARD);
   const TopoDS_Face ForwardFace = TopoDS::Face(sh);
   aTool.SetCurrentFace(ForwardFace);
@@ -127,7 +128,7 @@ void TopoDSToStep_MakeStepFace::Init(const TopoDS_Face& aFace,
     new TransferBRep_ShapeMapper(aFace);  // on ne sait jamais
 
   // [BEGIN] Processing non-manifold topology (another approach) (ssv; 10.11.2010)
-  Standard_Boolean isNMMode = Interface_Static::IVal("write.step.nonmanifold") != 0;
+  Standard_Boolean isNMMode = myNonmanifoldIVal != 0;
   if (isNMMode) {
     Handle(StepShape_AdvancedFace) anAF;
     Handle(TransferBRep_ShapeMapper) aSTEPMapper = TransferBRep::ShapeMapper(FP, aFace);
@@ -524,3 +525,14 @@ TopoDSToStep_MakeFaceError TopoDSToStep_MakeStepFace::Error() const
 {
   return myError;
 }
+
+void TopoDSToStep_MakeStepFace::SetNonmanifoldIVal(const Standard_Integer theVal)
+{
+  Interface_Static::SetIVal("write.step.nonmanifold", theVal);
+  myNonmanifoldIVal = theVal;
+}
+
+Standard_Integer TopoDSToStep_MakeStepFace::GetNonmanifoldIVal() const
+{
+  return myNonmanifoldIVal;
+}
index a0612f329bf2b4caceb33f69efc4469e860b183e..bf2bff67cc358ef257baf9b6105a674b5a58c0c7 100644 (file)
@@ -49,7 +49,9 @@ public:
   
   Standard_EXPORT TopoDSToStep_MakeFaceError Error() const;
 
+  Standard_EXPORT void SetNonmanifoldIVal(const Standard_Integer theVal);
 
+  Standard_EXPORT Standard_Integer GetNonmanifoldIVal() const;
 
 
 protected:
@@ -64,6 +66,7 @@ private:
 
   Handle(StepShape_TopologicalRepresentationItem) myResult;
   TopoDSToStep_MakeFaceError myError;
+  Standard_Integer myNonmanifoldIVal;
 
 
 };
index 24896e4fff6ee12c036dee65b7e2c253ae0d9423..31befce3ed5a50ed42eff2c5058cbdce90fd6826 100644 (file)
@@ -59,11 +59,11 @@ void TopoDSToStep_MakeStepVertex::Init(const TopoDS_Vertex& aVertex,
                                        TopoDSToStep_Tool& aTool,
                                        const Handle(Transfer_FinderProcess)& FP)
 {
-
+  myNonmanifoldIVal = Interface_Static::IVal("write.step.nonmanifold");
   aTool.SetCurrentVertex(aVertex);
 
   // [BEGIN] Processing non-manifold topology (ssv; 11.11.2010)
-  Standard_Boolean isNMMode = Interface_Static::IVal("write.step.nonmanifold") != 0;
+  Standard_Boolean isNMMode = myNonmanifoldIVal != 0;
   if (isNMMode) {
     Handle(StepShape_VertexPoint) aVP;
     Handle(TransferBRep_ShapeMapper) aSTEPMapper = TransferBRep::ShapeMapper(FP, aVertex);
@@ -124,3 +124,13 @@ TopoDSToStep_MakeVertexError TopoDSToStep_MakeStepVertex::Error() const
   return myError;
 }
 
+void TopoDSToStep_MakeStepVertex::SetNonmanifoldIVal(const Standard_Integer theVal)
+{
+  Interface_Static::SetIVal("write.step.nonmanifold", theVal);
+  myNonmanifoldIVal = theVal;
+}
+
+Standard_Integer TopoDSToStep_MakeStepVertex::GetNonmanifoldIVal() const
+{
+  return myNonmanifoldIVal;
+}
index 1105da6309513e611c8ff93d01b37dbf13065946..8bbacd47a91876c2be940d396945613f04c42c13 100644 (file)
@@ -49,7 +49,9 @@ public:
   
   Standard_EXPORT TopoDSToStep_MakeVertexError Error() const;
 
+  Standard_EXPORT void SetNonmanifoldIVal(const Standard_Integer theVal);
 
+  Standard_EXPORT Standard_Integer GetNonmanifoldIVal() const;
 
 
 protected:
@@ -64,6 +66,7 @@ private:
 
   Handle(StepShape_TopologicalRepresentationItem) myResult;
   TopoDSToStep_MakeVertexError myError;
+  Standard_Integer myNonmanifoldIVal;
 
 
 };
index 8158038100d91619b30ff03f31b8ab9cac8a094c..9f675713817beb092bb12814ba5c63ac2604e0fe 100644 (file)
@@ -338,3 +338,9 @@ Standard_Integer TopoDSToStep_Tool::PCurveMode () const
 {
   return myPCurveMode;
 }
+
+void TopoDSToStep_Tool::SetPCurveMode(const Standard_Integer theVal)
+{
+  Interface_Static::SetIVal("write.surfacecurve.mode", theVal);
+  myPCurveMode = theVal;
+}
index 2ea4c294a667b5de9b1e27c94b6f1d3554cfdfe9..9e1cb057a3a5399100fa3a328df48a472b9c4aee 100644 (file)
@@ -89,7 +89,7 @@ public:
   //! (initialized by parameter write.surfacecurve.mode)
   Standard_EXPORT Standard_Integer PCurveMode() const;
 
-
+  Standard_EXPORT void SetPCurveMode(const Standard_Integer theVal);
 
 
 protected:
index 60da82932b12933e6633d6b9c20397f27b695e70..ea66d6b878868ed1b2c761964cacba56815d50f7 100644 (file)
@@ -72,6 +72,8 @@ IMPLEMENT_STANDARD_RTTIEXT(XSAlgo_AlgoContainer,Standard_Transient)
 //=======================================================================
 XSAlgo_AlgoContainer::XSAlgo_AlgoContainer()
 {
+  myParModeIVal = Interface_Static::IVal("read.stdsameparameter.mode");
+  myUnitIVal = Interface_Static::IVal("xstep.cascade.unit");
   myTC = new XSAlgo_ToolContainer;
 }
 
@@ -82,7 +84,7 @@ XSAlgo_AlgoContainer::XSAlgo_AlgoContainer()
 
 void XSAlgo_AlgoContainer::PrepareForTransfer() const
 {
-  UnitsMethods::SetCasCadeLengthUnit(Interface_Static::IVal("xstep.cascade.unit"));
+  UnitsMethods::SetCasCadeLengthUnit(myUnitIVal);
 }
 
 //=======================================================================
@@ -357,7 +359,7 @@ Standard_Boolean XSAlgo_AlgoContainer::CheckPCurve (const TopoDS_Edge& E,
   B.Range(edge,face,w1,w2);
   B.SameRange(edge, Standard_False );
   //:S4136
-  Standard_Integer SPmode = Interface_Static::IVal("read.stdsameparameter.mode");
+  Standard_Integer SPmode = myParModeIVal;
   if ( SPmode ) 
     B.SameParameter (edge, Standard_False );
 
@@ -566,3 +568,25 @@ void XSAlgo_AlgoContainer::MergeTransferInfo(const Handle(Transfer_FinderProcess
     }
   }
 }
+
+void XSAlgo_AlgoContainer::SetParModeIVal(const Standard_Integer theVal)
+{
+  Interface_Static::SetIVal("read.stdsameparameter.mode", theVal);
+  myParModeIVal = theVal;
+}
+
+void XSAlgo_AlgoContainer::SetUnitIVal(const Standard_Integer theVal)
+{
+  Interface_Static::SetIVal("xstep.cascade.unit", theVal);
+  myUnitIVal = theVal;
+}
+
+Standard_Integer XSAlgo_AlgoContainer::GetParModeIVal() const
+{
+  return myParModeIVal;
+}
+
+Standard_EXPORT Standard_Integer XSAlgo_AlgoContainer::GetUnitIVal() const
+{
+  return myUnitIVal;
+}
index c83dbae22fd60d4080cd5c16edf3334fb2a8819b..b86510279bd7e9f481d2eaeb5a789615eb6fc1e7 100644 (file)
@@ -82,7 +82,13 @@ public:
   //! from item startTPitem
   Standard_EXPORT virtual void MergeTransferInfo (const Handle(Transfer_FinderProcess)& FP, const Handle(Standard_Transient)& info) const;
 
+  Standard_EXPORT void SetParModeIVal(const Standard_Integer theVal);
 
+  Standard_EXPORT void SetUnitIVal(const Standard_Integer theVal);
+
+  Standard_EXPORT Standard_Integer GetParModeIVal() const;
+
+  Standard_EXPORT Standard_Integer GetUnitIVal() const;
 
 
   DEFINE_STANDARD_RTTIEXT(XSAlgo_AlgoContainer,Standard_Transient)
@@ -96,6 +102,8 @@ private:
 
 
   Handle(XSAlgo_ToolContainer) myTC;
+  Standard_Integer myParModeIVal;
+  Standard_Integer myUnitIVal;
 
 
 };
index c8bcd8b353a1249f8f246ae10a6cd8f29b17317f..d94a9dae90b0e7f1f198f7fb5166ad65e30cd67a 100644 (file)
@@ -22,6 +22,8 @@
 
 inline  void XSAlgo_AlgoContainer::SetToolContainer(const Handle(XSAlgo_ToolContainer)& TC) 
 {
+  myParModeIVal = Interface_Static::IVal("read.stdsameparameter.mode");
+  myUnitIVal = Interface_Static::IVal("xstep.cascade.unit");
   myTC = TC;
 }
 
index 35347e0b71d805270de1e53b94d55c38f1f1d201..7dda904340ca2092b6b7978710203cfb4baab437 100644 (file)
@@ -145,7 +145,7 @@ IFSelect_ReturnStatus XSControl_TransferWriter::TransferWriteShape
   if (theModel.IsNull()) return IFSelect_RetVoid;
 
   TopoDS_Shape aShape = theShape;
-  Standard_Boolean isNMMode = Interface_Static::IVal("write.step.nonmanifold") != 0;
+  Standard_Boolean isNMMode = myNonmanifoldIVal != 0;
   if (isNMMode)
   {
     ShapeUpgrade_RemoveLocations aRemLoc;
@@ -222,3 +222,14 @@ Interface_CheckIterator XSControl_TransferWriter::ResultCheckList
   }
   return chl;
 }
+
+void XSControl_TransferWriter::SetNonmanifoldIVal(const Standard_Integer theVal)
+{
+  Interface_Static::SetIVal("write.step.nonmanifold", theVal);
+  myNonmanifoldIVal = theVal;
+}
+
+Standard_Integer XSControl_TransferWriter::GetNonmanifoldIVal() const
+{
+  return myNonmanifoldIVal;
+}
index ba1394e112d1ac7ac2eccdf75abc8bb033f88837..3cbbed42b557fe92887f8d408bc63dc0f4192f33 100644 (file)
@@ -22,6 +22,7 @@
 
 #include <Standard_Transient.hxx>
 #include <IFSelect_ReturnStatus.hxx>
+#include <Interface_Static.hxx>
 #include <Transfer_FinderProcess.hxx>
 class XSControl_Controller;
 class Interface_InterfaceModel;
@@ -65,6 +66,7 @@ class XSControl_TransferWriter : public Standard_Transient
   void SetController (const Handle(XSControl_Controller)& theCtl)
   {
     myController = theCtl;
+    myNonmanifoldIVal = Interface_Static::IVal("write.step.nonmanifold");
     Clear(-1);
   }
   
@@ -127,6 +129,10 @@ class XSControl_TransferWriter : public Standard_Transient
   //! instead of keeping the original Mapper, whenever known
   Standard_EXPORT Interface_CheckIterator ResultCheckList (const Handle(Interface_InterfaceModel)& theModel) const;
 
+  Standard_EXPORT void SetNonmanifoldIVal(const Standard_Integer theVal);
+
+  Standard_EXPORT Standard_Integer GetNonmanifoldIVal() const;
+
   DEFINE_STANDARD_RTTIEXT(XSControl_TransferWriter,Standard_Transient)
 
  private:
@@ -134,6 +140,7 @@ class XSControl_TransferWriter : public Standard_Transient
   Handle(XSControl_Controller) myController;
   Handle(Transfer_FinderProcess) myTransferWriter;
   Standard_Integer myTransferMode;
+  Standard_Integer myNonmanifoldIVal;
 };
 
 #endif // _XSControl_TransferWriter_HeaderFile