From a2ba5b88eb3d14b4420fcd91d4f18c384c3fe0ae Mon Sep 17 00:00:00 2001 From: Alex Shvartzkop Date: Sat, 11 May 2024 04:21:53 +0300 Subject: [PATCH] Data Exchange, Step Export - Significantly improve transfer speed. Surface was always computed, but is only used when the edge doesn't have a 3D curve (rare case). -75% transfer time on some models. --- src/TopoDSToStep/TopoDSToStep_MakeStepEdge.cxx | 5 +++-- 1 file changed, 3 insertions(+), 2 deletions(-) diff --git a/src/TopoDSToStep/TopoDSToStep_MakeStepEdge.cxx b/src/TopoDSToStep/TopoDSToStep_MakeStepEdge.cxx index dcf86c2ddb..a7ea2149a3 100644 --- a/src/TopoDSToStep/TopoDSToStep_MakeStepEdge.cxx +++ b/src/TopoDSToStep/TopoDSToStep_MakeStepEdge.cxx @@ -134,8 +134,7 @@ void TopoDSToStep_MakeStepEdge::Init(const TopoDS_Edge& aEdge, if ( count < 2 ) isSeam = Standard_False; } - BRepAdaptor_Curve CA = BRepAdaptor_Curve(aEdge); - BRepAdaptor_Surface SA = BRepAdaptor_Surface(aTool.CurrentFace()); + BRepAdaptor_Curve CA = BRepAdaptor_Curve(aEdge); if (aEdge.Orientation() == TopAbs_INTERNAL || aEdge.Orientation() == TopAbs_EXTERNAL ) { @@ -262,6 +261,8 @@ void TopoDSToStep_MakeStepEdge::Init(const TopoDS_Edge& aEdge, #ifdef OCCT_DEBUG std::cout << "Warning: TopoDSToStep_MakeStepEdge: edge without 3d curve; creating..." << std::endl; #endif + BRepAdaptor_Surface SA = BRepAdaptor_Surface(aTool.CurrentFace()); + if ((SA.GetType() == GeomAbs_Plane) && (CA.GetType() == GeomAbs_Line)) { U1 = CA.FirstParameter(); -- 2.39.1.windows.1