--- /dev/null
+puts "========="
+puts "CR24915"
+puts "========="
+puts ""
+###############################
+## Wrong intersection curves between two cylinders
+###############################
+
+proc checkList {List Tolerance D_good Limit_Tol} {
+ set L1 [llength ${List}]
+ set L2 10
+ set L3 5
+ set N [expr (${L1} - ${L2})/${L3} + 1]
+
+ for {set i 1} {${i} <= ${N}} {incr i} {
+ set j1 [expr ${L2} + (${i}-1)*${L3}]
+ set j2 [expr ${j1} + 2]
+ set T [lindex ${List} ${j1}]
+ set D [lindex ${List} ${j2}]
+ #puts "i=${i} j1=${j1} j2=${j2} T=${T} D=${D}"
+ if { [expr abs(${D} - ${D_good})] > ${Tolerance} } {
+ puts "Error : T=${T} D=${D}"
+ }
+ if { [expr abs(${D} - ${D_good})] > ${Limit_Tol}
+ && [expr abs(${D} - ${D_good})] <= ${Tolerance} } {
+ puts "Attention (critical value of tolerance) : T=${T} D=${D}"
+ }
+ }
+}
+
+puts "##############################"
+puts "#!!!Searh \"Attention\" keyword on this web-page for additinal checking!!!"
+puts "##############################"
+
+restore [locate_data_file bug24915_ft2.brep] b1
+restore [locate_data_file bug24915_ft3.brep] b2
+
+# 1. topology
+bclearobjects
+bcleartools
+baddobjects b1 b2
+bfillds
+bbuild r
+checkshape r
+
+# 2. geometry
+set MaxTol 1.5e-6
+set log [bopcurves b1 b2]
+
+mksurface s1 b1
+mksurface s2 b2
+
+regexp {Tolerance Reached=+([-0-9.+eE]+)\n+([-0-9.+eE]+)} ${log} full Toler NbCurv
+
+if {${Toler} > ${MaxTol}} {
+ puts "Error: Tolerance is too big!"
+}
+
+for {set i 1} {$i <= ${NbCurv}} {incr i} {
+ set log [dump c_$i]
+
+ regexp {Degree +([-0-9.+eE]+), +([-0-9.+eE]+) Poles, +([-0-9.+eE]+)} ${log} full Degree Poles KnotsPoles
+
+ set Knot 1
+ set exp_string "Knots :\n\n +${Knot} : +(\[-0-9.+eE\]+) +(\[-0-9.+eE\]+)"
+ regexp ${exp_string} ${log} full U1 Mult1
+
+ set Knot ${KnotsPoles}
+ set exp_string " +${Knot} : +(\[-0-9.+eE\]+) +(\[-0-9.+eE\]+)"
+ regexp ${exp_string} ${log} full U2 Mult2
+
+ dlog reset
+ dlog on
+ xdistcs c_$i s1 ${U1} ${U2} 100
+ set Log2 [dlog get]
+ set List2 [split ${Log2} {TD= \t\n}]
+ set Tolerance 1.6e-5
+ set Limit_Tol 1.0e-7
+ set D_good 0.
+ catch {checkList ${List2} ${Tolerance} ${D_good} ${Limit_Tol}}
+
+ dlog reset
+ dlog on
+ xdistcs c_$i s2 ${U1} ${U2} 100
+ set Log2 [dlog get]
+ set List2 [split ${Log2} {TD= \t\n}]
+ set Tolerance 1.6e-5
+ set Limit_Tol 1.0e-7
+ set D_good 0.
+ catch {checkList ${List2} ${Tolerance} ${D_good} ${Limit_Tol}}
+}
+
+smallview
+donly b2 c_2
+fit
+set only_screen_axo 1