From 0d30b42cb114ec82ca6c2f47c45ecfc05c9fe65c Mon Sep 17 00:00:00 2001 From: ikochetkova Date: Thu, 4 Sep 2025 17:05:44 +0100 Subject: [PATCH] Shape Healing, STP Import - Revolved shape in STEP file is imported inverted (#699) Make the degenerated torus bounded in two values of parameters processed as a regular to insert a seam edge properly. --- .../TKShHealing/ShapeFix/ShapeFix_Face.cxx | 6 ++++++ tests/bugs/step/gh_bug378 | 8 ++++++++ 2 files changed, 14 insertions(+) create mode 100644 tests/bugs/step/gh_bug378 diff --git a/src/ModelingAlgorithms/TKShHealing/ShapeFix/ShapeFix_Face.cxx b/src/ModelingAlgorithms/TKShHealing/ShapeFix/ShapeFix_Face.cxx index 7376d2dea7..acee21dbaf 100644 --- a/src/ModelingAlgorithms/TKShHealing/ShapeFix/ShapeFix_Face.cxx +++ b/src/ModelingAlgorithms/TKShHealing/ShapeFix/ShapeFix_Face.cxx @@ -1687,6 +1687,12 @@ Standard_Boolean ShapeFix_Face::FixMissingSeam() Handle(Geom_ToroidalSurface) aTorSurf = Handle(Geom_ToroidalSurface)::DownCast(mySurf->Surface()); Standard_Boolean anIsDegeneratedTor = (aTorSurf.IsNull() ? Standard_False : aTorSurf->MajorRadius() < aTorSurf->MinorRadius()); + // if the second wire is not null, we don't need mark the torus as degenerated + // and should process it as a regular one. + if (anIsDegeneratedTor && !w2.IsNull()) + { + anIsDegeneratedTor = Standard_False; + } if (w1.IsNull()) return Standard_False; diff --git a/tests/bugs/step/gh_bug378 b/tests/bugs/step/gh_bug378 new file mode 100644 index 0000000000..b899a14a5a --- /dev/null +++ b/tests/bugs/step/gh_bug378 @@ -0,0 +1,8 @@ +puts "================================================" +puts "Revolved shape in STEP file is imported inverted" +puts "================================================" +puts "" + +stepread [locate_data_file gh_bug378.stp] a * +checkprops a_1 -v 10504.9 + -- 2.39.5