1
0
mirror of https://git.dev.opencascade.org/repos/occt.git synced 2025-06-20 11:54:07 +03:00
aml bcd1975693 0026560: BRepBndLib build too large bounding box in Z direction for planar spline edge.
Poles bounding box for curve added for bezier and bspline curves.
Method Poles() for Bezier curve added.

Test case for issue CR26560

Function to compute subshape max tolerance has been added.
Fixed bounding box expanding at Face/Face step of boolean operation.
Test cases are updated to the new behavior.
2015-10-08 10:07:27 +03:00

157 lines
4.1 KiB
Plaintext
Executable File

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
set e1_status 0
set status 0
set percent_max 0.1
proc GetPercent {Value GoodValue} {
set Percent 0.
if {${GoodValue} != 0.} {
set Percent [expr abs(${Value} - ${GoodValue}) / abs(double(${GoodValue})) * 100.]
} elseif {${Value} != 0.} {
set Percent [expr abs(${GoodValue} - ${Value}) / abs(double(${Value})) * 100.]
} else {
set Percent 0.
}
return ${Percent}
}
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
set e1_x1_percent [GetPercent ${e1_x1} ${e1_good_x1}]
set e1_y1_percent [GetPercent ${e1_y1} ${e1_good_y1}]
set e1_z1_percent [GetPercent ${e1_z1} ${e1_good_z1}]
set e1_x2_percent [GetPercent ${e1_x2} ${e1_good_x2}]
set e1_y2_percent [GetPercent ${e1_y2} ${e1_good_y2}]
set e1_z2_percent [GetPercent ${e1_z2} ${e1_good_z2}]
if {${e1_x1_percent} > ${percent_max}} {
puts "Faulty ${BugNumber} : x1 for e1 is wrong"
set e1_status 1
}
if {${e1_y1_percent} > ${percent_max}} {
puts "Faulty ${BugNumber} : y1 for e1 is wrong"
set e1_status 1
}
if {${e1_z1_percent} > ${percent_max}} {
puts "Faulty ${BugNumber} : z1 for e1 is wrong"
set e1_status 1
}
if {${e1_x2_percent} > ${percent_max}} {
puts "Faulty ${BugNumber} : x2 for e1 is wrong"
set e1_status 1
}
if {${e1_y2_percent} > ${percent_max}} {
puts "Faulty ${BugNumber} : y2 for e1 is wrong"
set e1_status 1
}
if {${e1_z2_percent} > ${percent_max}} {
puts "Faulty ${BugNumber} : z2 for e1 is wrong"
set e1_status 1
}
}
# 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
set x1_percent [GetPercent ${x1} ${good_x1}]
set y1_percent [GetPercent ${y1} ${good_y1}]
set z1_percent [GetPercent ${z1} ${good_z1}]
set x2_percent [GetPercent ${x2} ${good_x2}]
set y2_percent [GetPercent ${y2} ${good_y2}]
set z2_percent [GetPercent ${z2} ${good_z2}]
if {${x1_percent} > ${percent_max}} {
puts "Faulty ${BugNumber} : x1 is wrong"
set status 1
}
if {${y1_percent} > ${percent_max}} {
puts "Faulty ${BugNumber} : y1 is wrong"
set status 1
}
if {${z1_percent} > ${percent_max}} {
puts "Faulty ${BugNumber} : z1 is wrong"
set status 1
}
if {${x2_percent} > ${percent_max}} {
puts "Faulty ${BugNumber} : x2 is wrong"
set status 1
}
if {${y2_percent} > ${percent_max}} {
puts "Faulty ${BugNumber} : y2 is wrong"
set status 1
}
if {${z2_percent} > ${percent_max}} {
puts "Faulty ${BugNumber} : z2 is wrong"
set status 1
}
if { ${status} == 0 && ${exception_status} == 0&& ${e1_status} == 0 } {
puts "${BugNumber}: OK"
} else {
puts "${BugNumber}: Faulty"
}
set 2dviewer 1
set length 15.8888