mirror of
https://github.com/Open-Cascade-SAS/OCCT.git
synced 2026-09-25 08:07:05 +08:00
0025179: BRepMesh cannot build a mesh on specific geometry
Check for zero division in GCPnts_TangentialDeflection Check that mid point does not coincide with end points Test case for issue CR25179
This commit is contained in:
@@ -382,9 +382,13 @@ void GCPnts_TangentialDeflection::PerformCurve (const TheCurve& C)
|
||||
V1.Subtract (MiddlePoint.XYZ ());
|
||||
L1 = V1.Modulus ();
|
||||
L2 = V2.Modulus ();
|
||||
Standard_Real angg = V1.CrossMagnitude(V2)/(L1*L2);
|
||||
if (L1 > LTol && L2 > LTol) ACoef = angg/AngleMax;
|
||||
else ACoef = 0.0;
|
||||
if (L1 > LTol && L2 > LTol)
|
||||
{
|
||||
Standard_Real angg = V1.CrossMagnitude(V2) / (L1 * L2);
|
||||
ACoef = angg / AngleMax;
|
||||
}
|
||||
else
|
||||
ACoef = 0.0;
|
||||
|
||||
if (ACoef >= FCoef) Coef = ACoef; //On retient le plus penalisant
|
||||
else Coef = FCoef;
|
||||
|
||||
Executable
+37
@@ -0,0 +1,37 @@
|
||||
puts "============"
|
||||
puts "CR25179"
|
||||
puts "============"
|
||||
puts ""
|
||||
###################################################################################
|
||||
# BRepMesh cannot build a mesh on specific geometry
|
||||
###################################################################################
|
||||
|
||||
restore [locate_data_file bug25179_nurbs-with-partial-seam.brep] result
|
||||
|
||||
tclean result
|
||||
incmesh result 0.1
|
||||
|
||||
set trinfo_s [trinfo result]
|
||||
regexp {([0-9]+) triangles} ${trinfo_s} str nbtri_s
|
||||
regexp {([0-9]+) nodes} ${trinfo_s} str nbnod_s
|
||||
regexp {deflection ([0-9.+e-]+)} ${trinfo_s} str defl_s
|
||||
|
||||
if { ${nbtri_s} == 0 } {
|
||||
puts "Error: shape contains 0 triangles"
|
||||
}
|
||||
|
||||
if { ${nbnod_s} == 0 } {
|
||||
puts "Error: shape contains 0 nodes"
|
||||
}
|
||||
|
||||
if { ${defl_s} == 0 } {
|
||||
puts "Error: deflection is 0"
|
||||
}
|
||||
|
||||
if [catch { tricheck result } ] {
|
||||
puts "Error : Problem of build a mesh on specific geometry"
|
||||
} else {
|
||||
puts "OK : Building a mesh on specific geometry is good"
|
||||
}
|
||||
|
||||
set 3dviewer 1
|
||||
Reference in New Issue
Block a user