diff --git a/src/Adaptor3d/Adaptor3d_TopolTool.cxx b/src/Adaptor3d/Adaptor3d_TopolTool.cxx index 0fea9e6f2b..cfaa83dae2 100755 --- a/src/Adaptor3d/Adaptor3d_TopolTool.cxx +++ b/src/Adaptor3d/Adaptor3d_TopolTool.cxx @@ -976,6 +976,23 @@ void Adaptor3d_TopolTool::BSplSamplePnts(const Standard_Real theDefl, Standard_Boolean bUuniform = Standard_False; Standard_Boolean bVuniform = Standard_False; + //modified by NIZHNY-EMV Mon Jun 10 14:19:04 2013 + if (nbsu < theNUmin || nbsv < theNVmin) { + Standard_Integer aNb; + if (nbsu < nbsv) { + aNb = (Standard_Integer)(nbsv * ((Standard_Real)theNUmin)/((Standard_Real)nbsu)); + aNb = Min(aNb, 30); + bVuniform = (aNb > nbsv) ? Standard_True : bVuniform; + nbsv = bVuniform ? aNb : nbsv; + } else { + aNb = (Standard_Integer)(nbsu * ((Standard_Real)theNVmin)/((Standard_Real)nbsv)); + aNb = Min(aNb, 30); + bUuniform = (aNb > nbsu) ? Standard_True : bUuniform; + nbsu = bUuniform ? aNb : nbsu; + } + } + //modified by NIZHNY-EMV Mon Jun 10 14:19:05 2013 + if(nbsu < theNUmin) { nbsu = theNUmin; bUuniform = Standard_True; diff --git a/tests/bugs/modalg_5/bug23782 b/tests/bugs/modalg_5/bug23782 new file mode 100644 index 0000000000..999f5c316e --- /dev/null +++ b/tests/bugs/modalg_5/bug23782 @@ -0,0 +1,19 @@ +puts "=========" +puts "OCC23782" +puts "=========" +puts "" +################################################################################# +# Intersection algorithm produces wrong section curves for the attached faces +################################################################################# + +restore [locate_data_file bug23782_c.brep] f + +explode f +bsection result f_1 f_2 + +set nbsh_t 1 +set nb_v_good 2 +set nb_e_good 1 + +set 2dviewer 0 +