puts "================"
puts "OCC23165"
puts "================"
puts ""
###################################################################################################################
# BndLib_Add3dCurve::Add incorrectly segmented original B-Spline what resulting in wrong bounding box or exception.
###################################################################################################################

catch { pload XDE }

set BugNumber OCC23165

smallview 

# 1 step
set exception_status 0

restore [locate_data_file OCC23165-edge1.brep] e1 

donly e1
catch { bounding e1 } msg
fit

set index [lsearch $msg exception]
if {$index > -1} {
  set exception_status 1
} else {
  set e1_result [bounding e1]

  set e1_x1 [lindex ${e1_result} 0]
  set e1_y1 [lindex ${e1_result} 1]
  set e1_z1 [lindex ${e1_result} 2]
  set e1_x2 [lindex ${e1_result} 3]
  set e1_y2 [lindex ${e1_result} 4]
  set e1_z2 [lindex ${e1_result} 5]

  set e1_good_x1 -17.610622244944413
  set e1_good_y1 -0.010622244944394899
  set e1_good_z1 -3.0106222449443973
  set e1_good_x2 -17.589377755055537
  set e1_good_y2 5.700038816113608
  set e1_good_z2 -1.6251884728673096

  checkreal "e1_x1" ${e1_x1} ${e1_good_x1} 0 0.001
  checkreal "e1_y1" ${e1_y1} ${e1_good_y1} 0 0.001
  checkreal "e1_z1" ${e1_z1} ${e1_good_z1} 0 0.001
  checkreal "e1_x2" ${e1_x2} ${e1_good_x2} 0 0.001
  checkreal "e1_y2" ${e1_y2} ${e1_good_y2} 0 0.001
  checkreal "e1_z2" ${e1_z2} ${e1_good_z2} 0 0.001
}

# 2 step
restore [locate_data_file OCC23165-curve.rle] c 
mkedge result c 20 36

donly result
set res [bounding result]
fit

set x1 [lindex ${res} 0]
set y1 [lindex ${res} 1]
set z1 [lindex ${res} 2]
set x2 [lindex ${res} 3]
set y2 [lindex ${res} 4]
set z2 [lindex ${res} 5]

set good_x1 -17.6105835090592
set good_y1 -4.7133570660117909
set good_z1 -4.3679100133425806
set good_x2 -17.589416490940806
set good_y2 5.7000000802283299
set good_z2 -1.6252272087525899

checkreal "x1" ${x1} ${good_x1} 0 0.001
checkreal "y1" ${y1} ${good_y1} 0 0.001
checkreal "z1" ${z1} ${good_z1} 0 0.001
checkreal "x2" ${x2} ${good_x2} 0 0.001
checkreal "y2" ${y2} ${good_y2} 0 0.001
checkreal "z2" ${z2} ${good_z2} 0 0.001

if { ${exception_status} == 0 } {
   puts "${BugNumber}: OK"
} else {
   puts "${BugNumber}: Faulty"
}

checkview -display result -2d -path ${imagedir}/${test_image}.png
checkprops result -l 15.8888 
checksection result