]> OCCT Git - occt.git/commitdiff
Data Exchange - Schema missed during export #343
authorPasukhin Dmitry <dpasukhi@opencascade.com>
Tue, 4 Feb 2025 16:27:16 +0000 (17:27 +0100)
committerGitHub <noreply@github.com>
Tue, 4 Feb 2025 16:27:16 +0000 (16:27 +0000)
Refactor model creating to apply schema based on DE parameters.
New model creating stage no more inject header info.

src/STEPControl/STEPControl_Controller.cxx
src/STEPControl/STEPControl_Reader.cxx
src/STEPControl/STEPControl_Writer.cxx
src/STEPEdit/STEPEdit.cxx

index 0743319ed4e875d420c4298a2be1aeb9ad5968ec..5521f9e80fa1f468cabe6fe6769bd5d6fd91076e 100644 (file)
@@ -15,7 +15,6 @@
 //    gka 05.04.99 S4136: parameters definitions changed
 
 #include <APIHeaderSection_EditHeader.hxx>
-#include <APIHeaderSection_MakeHeader.hxx>
 #include <IFSelect_EditForm.hxx>
 #include <IFSelect_SelectModelRoots.hxx>
 #include <IFSelect_SelectSignature.hxx>
index 3ef72df3cd52ad1a1e44f430ebcc7be0e4389a51..db7014213cf80afb094b063df62e6b79aa2e1f3b 100644 (file)
@@ -11,6 +11,7 @@
 // Alternatively, this file may be used under the terms of Open CASCADE
 // commercial license or contractual agreement.
 
+#include <APIHeaderSection_MakeHeader.hxx>
 #include <DE_ShapeFixParameters.hxx>
 #include <IFSelect_WorkLibrary.hxx>
 #include <Interface_EntityIterator.hxx>
@@ -101,6 +102,8 @@ IFSelect_ReturnStatus STEPControl_Reader::ReadFile(const Standard_CString filena
   Handle(StepData_StepModel) aStepModel = new StepData_StepModel;
   aStepModel->InternalParameters.InitFromStatic();
   aStepModel->SetSourceCodePage(aStepModel->InternalParameters.ReadCodePage);
+  APIHeaderSection_MakeHeader aHeaderMaker;
+  aHeaderMaker.Apply(aStepModel);
   IFSelect_ReturnStatus status = IFSelect_RetVoid;
   try
   {
@@ -143,6 +146,8 @@ IFSelect_ReturnStatus STEPControl_Reader::ReadFile(const Standard_CString   file
   Handle(StepData_StepModel) aStepModel = new StepData_StepModel;
   aStepModel->InternalParameters        = theParams;
   aStepModel->SetSourceCodePage(aStepModel->InternalParameters.ReadCodePage);
+  APIHeaderSection_MakeHeader aHeaderMaker;
+  aHeaderMaker.Apply(aStepModel);
   IFSelect_ReturnStatus status = IFSelect_RetVoid;
   try
   {
@@ -185,6 +190,8 @@ IFSelect_ReturnStatus STEPControl_Reader::ReadStream(const Standard_CString theN
   Handle(StepData_StepModel) aStepModel = new StepData_StepModel;
   aStepModel->InternalParameters.InitFromStatic();
   aStepModel->SetSourceCodePage(aStepModel->InternalParameters.ReadCodePage);
+  APIHeaderSection_MakeHeader aHeaderMaker;
+  aHeaderMaker.Apply(aStepModel);
   IFSelect_ReturnStatus status = IFSelect_RetVoid;
   try
   {
@@ -228,6 +235,8 @@ IFSelect_ReturnStatus STEPControl_Reader::ReadStream(const Standard_CString   th
   Handle(StepData_StepModel) aStepModel = new StepData_StepModel;
   aStepModel->InternalParameters        = theParams;
   aStepModel->SetSourceCodePage(aStepModel->InternalParameters.ReadCodePage);
+  APIHeaderSection_MakeHeader aHeaderMaker;
+  aHeaderMaker.Apply(aStepModel);
   IFSelect_ReturnStatus status = IFSelect_RetVoid;
   try
   {
index a061913a6f3e0650e07b8f34318112e3460308b0..2437a66de5f66193bad4a2d67129d522df1ad0b2 100644 (file)
@@ -13,6 +13,7 @@
 
 #include <STEPControl_Writer.hxx>
 
+#include <APIHeaderSection_MakeHeader.hxx>
 #include <DE_ShapeFixParameters.hxx>
 #include <Interface_InterfaceModel.hxx>
 #include <Interface_Macros.hxx>
@@ -140,10 +141,9 @@ IFSelect_ReturnStatus STEPControl_Writer::Transfer(const TopoDS_Shape&
     XSAlgo_ShapeProcessor::PrepareForTransfer(); // update unit info
     Model()->SetLocalLengthUnit(UnitsMethods::GetCasCadeLengthUnit());
   }
-  if (!thesession->Model().IsNull())
-  {
-    Handle(StepData_StepModel)::DownCast(thesession->Model())->InternalParameters = theParams;
-  }
+  Model()->InternalParameters = theParams;
+  APIHeaderSection_MakeHeader aHeaderMaker;
+  aHeaderMaker.Apply(Model());
   Handle(STEPControl_ActorWrite) ActWrite =
     Handle(STEPControl_ActorWrite)::DownCast(WS()->NormAdaptor()->ActorWrite());
   ActWrite->SetGroupMode(
@@ -156,6 +156,13 @@ IFSelect_ReturnStatus STEPControl_Writer::Transfer(const TopoDS_Shape&
 
 IFSelect_ReturnStatus STEPControl_Writer::Write(const Standard_CString theFileName)
 {
+  Handle(StepData_StepModel) aModel = Model();
+  if (aModel.IsNull())
+  {
+    return IFSelect_RetFail;
+  }
+  APIHeaderSection_MakeHeader aHeaderMaker;
+  aHeaderMaker.Apply(aModel);
   return thesession->SendAll(theFileName);
 }
 
@@ -177,6 +184,8 @@ IFSelect_ReturnStatus STEPControl_Writer::WriteStream(std::ostream& theOStream)
 
   StepData_StepWriter aWriter(aModel);
   aWriter.SendModel(aProtocol);
+  APIHeaderSection_MakeHeader aHeaderMaker;
+  aHeaderMaker.Apply(aModel);
   return aWriter.Print(theOStream) ? IFSelect_RetDone : IFSelect_RetFail;
 }
 
index 54529afe29051c141bb5562ab5c495f0fb0a919d..ac875950b3281c1dda624bb3ac01767fac59f8c0 100644 (file)
@@ -13,7 +13,6 @@
 
 #include <STEPEdit.hxx>
 
-#include <APIHeaderSection_MakeHeader.hxx>
 #include <IFSelect_SelectModelEntities.hxx>
 #include <IFSelect_SelectModelRoots.hxx>
 #include <IFSelect_SelectSignature.hxx>
@@ -38,8 +37,9 @@ Handle(Interface_Protocol) STEPEdit::Protocol()
 
 Handle(StepData_StepModel) STEPEdit::NewModel()
 {
-  APIHeaderSection_MakeHeader head;
-  return head.NewModel(STEPEdit::Protocol());
+  Handle(StepData_StepModel) stepmodel = new StepData_StepModel;
+  stepmodel->SetProtocol(STEPEdit::Protocol());
+  return stepmodel;
 }
 
 Handle(IFSelect_Signature) STEPEdit::SignType()