]> OCCT Git - occt.git/commitdiff
Data Exchange - STEP Export ignore write schema #355
authorPasukhin Dmitry <dpasukhi@opencascade.com>
Mon, 10 Feb 2025 15:26:39 +0000 (16:26 +0100)
committerGitHub <noreply@github.com>
Mon, 10 Feb 2025 15:26:39 +0000 (15:26 +0000)
Refactor StepData_StepModel constructor and initialization logic for write unit

src/StepData/StepData_StepModel.cxx
src/StepData/StepData_StepModel.hxx

index d90c3204fdadb3ff5f5361916a2069412c02d9cc..46394c96ec87b18792b59b6775b6620152a89b70 100644 (file)
 IMPLEMENT_STANDARD_RTTIEXT(StepData_StepModel, Interface_InterfaceModel)
 
 // Entete de fichier : liste d entites
-StepData_StepModel::StepData_StepModel()
-    : myReadUnitIsInitialized(Standard_False),
-      myWriteUnit(1.)
-{
-  switch (InternalParameters.WriteUnit)
-  {
-    case 1:
-      myWriteUnit = 25.4;
-      break;
-    case 2:
-      myWriteUnit = 1.;
-      break;
-    case 4:
-      myWriteUnit = 304.8;
-      break;
-    case 5:
-      myWriteUnit = 1609344.0;
-      break;
-    case 6:
-      myWriteUnit = 1000.0;
-      break;
-    case 7:
-      myWriteUnit = 1000000.0;
-      break;
-    case 8:
-      myWriteUnit = 0.0254;
-      break;
-    case 9:
-      myWriteUnit = 0.001;
-      break;
-    case 10:
-      myWriteUnit = 10.0;
-      break;
-    case 11:
-      myWriteUnit = 0.0000254;
-      break;
-    default:
-      GlobalCheck()->AddWarning("Incorrect write.step.unit parameter, use default value");
-  }
-}
+StepData_StepModel::StepData_StepModel() {}
 
 Handle(Standard_Transient) StepData_StepModel::Entity(const Standard_Integer num) const
 {
@@ -263,12 +224,54 @@ Standard_Real StepData_StepModel::LocalLengthUnit() const
 
 void StepData_StepModel::SetWriteLengthUnit(const Standard_Real theUnit)
 {
-  myWriteUnit = theUnit;
+  myWriteUnit              = theUnit;
+  myWriteUnitIsInitialized = Standard_True;
 }
 
 //=================================================================================================
 
 Standard_Real StepData_StepModel::WriteLengthUnit() const
 {
+  if (!myWriteUnitIsInitialized)
+  {
+    myWriteUnitIsInitialized = Standard_True;
+    switch (InternalParameters.WriteUnit)
+    {
+      case UnitsMethods_LengthUnit_Inch:
+        myWriteUnit = 25.4;
+        break;
+      case UnitsMethods_LengthUnit_Millimeter:
+        myWriteUnit = 1.;
+        break;
+      case UnitsMethods_LengthUnit_Foot:
+        myWriteUnit = 304.8;
+        break;
+      case UnitsMethods_LengthUnit_Mile:
+        myWriteUnit = 1609344.0;
+        break;
+      case UnitsMethods_LengthUnit_Meter:
+        myWriteUnit = 1000.0;
+        break;
+      case UnitsMethods_LengthUnit_Kilometer:
+        myWriteUnit = 1000000.0;
+        break;
+      case UnitsMethods_LengthUnit_Mil:
+        myWriteUnit = 0.0254;
+        break;
+      case UnitsMethods_LengthUnit_Micron:
+        myWriteUnit = 0.001;
+        break;
+      case UnitsMethods_LengthUnit_Centimeter:
+        myWriteUnit = 10.0;
+        break;
+      case UnitsMethods_LengthUnit_Microinch:
+        myWriteUnit = 0.0000254;
+        break;
+      default: {
+        myWriteUnitIsInitialized = Standard_False;
+        GlobalCheck()->AddWarning("Incorrect write.step.unit parameter, use default value");
+      }
+    }
+  }
   return myWriteUnit;
 }
index 3fadceeee2e2f6444d97c77175a03b88c42a1ca6..0fe7c53f8cd9be4b3fc1b5a6c51bba3ef6cbb108 100644 (file)
@@ -131,13 +131,13 @@ public:
 
   DEFINE_STANDARD_RTTIEXT(StepData_StepModel, Interface_InterfaceModel)
 
-protected:
 private:
   Interface_EntityList             theheader;
   Handle(TColStd_HArray1OfInteger) theidnums;
-  Standard_Boolean                 myReadUnitIsInitialized;
-  Standard_Real                    myWriteUnit;
-  Standard_Real                    myLocalLengthUnit;
+  mutable Standard_Real            myWriteUnit              = 1.0;
+  Standard_Real                    myLocalLengthUnit        = 1.0;
+  Standard_Boolean                 myReadUnitIsInitialized  = false;
+  mutable Standard_Boolean         myWriteUnitIsInitialized = false;
 };
 
 #endif // _StepData_StepModel_HeaderFile