Salome HOME
Porting Salome to OCCT 7.7.0
authorjfa <jfa@opencascade.com>
Tue, 7 Mar 2023 17:18:15 +0000 (17:18 +0000)
committerjfa <jfa@opencascade.com>
Tue, 7 Mar 2023 17:18:15 +0000 (17:18 +0000)
src/GEOMUtils/GEOMUtils.cxx
src/IGESPlugin/IGESPlugin_ExportDriver.cxx
src/STEPPlugin/STEPPlugin_ExportDriver.cxx

index 6528b650cd8de36fa3e7b9857143a08996205b39..4abf1f3b33b6e38bbc18eb93adbc17907628099a 100644 (file)
@@ -26,6 +26,8 @@
 
 #include <Utils_ExceptHandlers.hxx>
 
+#include <Basics_OCCTVersion.hxx>
+
 // OCCT Includes
 #include <BRepMesh_IncrementalMesh.hxx>
 
@@ -994,7 +996,9 @@ Standard_Real GEOMUtils::GetMinDistance
 
   // skl 30.06.2008
   // additional workaround for bugs 19899, 19908 and 19910 from Mantis
+#if OCC_VERSION_LARGE < 0x07070000
   aResult = GEOMUtils::GetMinDistanceSingular(theShape1, theShape2, thePnt1, thePnt2);
+#endif
 
   /*
   if (dist > -1.0) {
index fb647f8082d1f14bf346552d999bf156510a1994..8c3af7cfdd3ee7b3a44e1e95e79d9e886cabb2be 100644 (file)
@@ -24,6 +24,7 @@
 // KERNEL includes
 #include <utilities.h>
 #include <Basics_Utils.hxx>
+#include <Basics_OCCTVersion.hxx>
 
 // GEOM includes
 #include "GEOM_Function.hxx"
 // OOCT includes
 #include <IGESControl_Controller.hxx>
 #include <IGESControl_Writer.hxx>
+#include <IGESData_IGESModel.hxx>
 #include <Interface_Static.hxx>
 
+#include <XSAlgo.hxx>
+#include <XSAlgo_AlgoContainer.hxx>
+
 #include <TopoDS_Shape.hxx>
 #include <TopoDS_Iterator.hxx>
 
+#include <UnitsMethods.hxx>
+
 //=============================================================================
 /*!
  *  KindOfBRep
@@ -161,6 +168,13 @@ Standard_Integer IGESPlugin_ExportDriver::Execute(Handle(TFunction_Logbook)& /*l
   IGESControl_Writer ICW( "M", aBrepMode ); // export explicitly in meters
   Interface_Static::SetCVal( "xstep.cascade.unit", "M" );
 
+#if OCC_VERSION_LARGE >= 0x07070000
+  Interface_Static::SetCVal("write.iges.unit", "M");
+  XSAlgo::AlgoContainer()->PrepareForTransfer(); // update unit info
+  Standard_Real aScaleFactorMM = UnitsMethods::GetCasCadeLengthUnit();
+  ICW.Model()->ChangeGlobalSection().SetCascadeUnit(aScaleFactorMM);
+#endif
+
   // 09.03.2010 skl for bug 0020726
   // change default value "Average" to "Max"
   Interface_Static::SetCVal( "write.precision.mode", "Max" );
index c31bc1481c5a1d7d17b77d0af40e32b4ec257db9..4b684034b079b3a349b069789f30e5da3baa85b7 100644 (file)
@@ -25,6 +25,7 @@
 // KERNEL includes
 #include <utilities.h>
 #include <Basics_Utils.hxx>
+#include <Basics_OCCTVersion.hxx>
 
 // GEOM includes
 #include "GEOM_Function.hxx"
@@ -120,14 +121,20 @@ Standard_Integer STEPPlugin_ExportDriver::Execute(Handle(TFunction_Logbook)& /*l
     // Set "C" numeric locale to save numbers correctly
     Kernel_Utils::Localizer loc;
 
-    IFSelect_ReturnStatus status ;
-    //VRV: OCC 4.0 migration
+#if OCC_VERSION_LARGE < 0x07070000
     STEPControl_Writer aWriter;
     Interface_Static::SetCVal("xstep.cascade.unit","M");
     Interface_Static::SetCVal("write.step.unit", aWriteUnit.ToCString());
     Interface_Static::SetIVal("write.step.nonmanifold", 1);
-    status = aWriter.Transfer( aShape, STEPControl_AsIs );
-    //VRV: OCC 4.0 migration
+#else
+    STEPControl_Writer aWriterTmp;
+    Interface_Static::SetCVal("xstep.cascade.unit","M");
+    Interface_Static::SetCVal("write.step.unit", aWriteUnit.ToCString());
+    Interface_Static::SetIVal("write.step.nonmanifold", 1);
+    STEPControl_Writer aWriter;
+#endif
+
+    IFSelect_ReturnStatus status = aWriter.Transfer( aShape, STEPControl_AsIs );
     if( status == IFSelect_RetDone )
       status = aWriter.Write( aFileName.ToCString() );
 
@@ -137,7 +144,7 @@ Standard_Integer STEPPlugin_ExportDriver::Execute(Handle(TFunction_Logbook)& /*l
   }
   catch (Standard_Failure&)
   {
-      //THROW_SALOME_CORBA_EXCEPTION("Exception caught in STEPExport", SALOME::BAD_PARAM);
+    //THROW_SALOME_CORBA_EXCEPTION("Exception caught in STEPExport", SALOME::BAD_PARAM);
   }
   return 0;
 }