mirror of
https://git.dev.opencascade.org/repos/occt.git
synced 2025-04-06 18:26:22 +03:00
0026016: BRepPrimAPI_MakeRevol crash
Correctly treat the case when the line is a trimmed curve. Test-case for issue #26016
This commit is contained in:
parent
e9e33e9167
commit
24e40cc2dc
@ -435,8 +435,17 @@ void BRepSweep_Rotation::SetGeneratingPCurve
|
|||||||
if (AS.GetType()==GeomAbs_Plane){
|
if (AS.GetType()==GeomAbs_Plane){
|
||||||
gp_Pln pln = AS.Plane();
|
gp_Pln pln = AS.Plane();
|
||||||
gp_Ax3 ax3 = pln.Position();
|
gp_Ax3 ax3 = pln.Position();
|
||||||
Handle(Geom_Line) GL = Handle(Geom_Line)::DownCast
|
Handle(Geom_Curve) aC = BRep_Tool::Curve(TopoDS::Edge(aNewEdge),Loc,First,Last);
|
||||||
(BRep_Tool::Curve(TopoDS::Edge(aNewEdge),Loc,First,Last));
|
Handle(Geom_Line) GL = Handle(Geom_Line)::DownCast(aC);
|
||||||
|
if (GL.IsNull()) {
|
||||||
|
Handle(Geom_TrimmedCurve) aTrimmedCurve = Handle(Geom_TrimmedCurve)::DownCast(aC);
|
||||||
|
if (!aTrimmedCurve.IsNull()) {
|
||||||
|
GL = Handle(Geom_Line)::DownCast(aTrimmedCurve->BasisCurve());
|
||||||
|
if (GL.IsNull()) {
|
||||||
|
Standard_ConstructionError::Raise("BRepSweep_Rotation::SetGeneratingPCurve");
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
gp_Lin gl = GL->Lin();
|
gp_Lin gl = GL->Lin();
|
||||||
gl.Transform(Loc.Transformation());
|
gl.Transform(Loc.Transformation());
|
||||||
point = gl.Location();
|
point = gl.Location();
|
||||||
|
21
tests/bugs/modalg_6/bug26016
Normal file
21
tests/bugs/modalg_6/bug26016
Normal file
@ -0,0 +1,21 @@
|
|||||||
|
puts "========"
|
||||||
|
puts "OCC26016"
|
||||||
|
puts "========"
|
||||||
|
puts ""
|
||||||
|
##@@###########################
|
||||||
|
# BRepPrimAPI_MakeRevol crash
|
||||||
|
###############################
|
||||||
|
|
||||||
|
smallview
|
||||||
|
|
||||||
|
restore [locate_data_file OCC26016-revolve-crash.brep] a
|
||||||
|
revol r a 0 0 0 0 1 0 90
|
||||||
|
set bug_info [checkshape r]
|
||||||
|
|
||||||
|
if {[string compare $bug_info "This shape seems to be valid"] != 0} {
|
||||||
|
puts "ERROR: OCC26016 is reproduced"
|
||||||
|
}
|
||||||
|
|
||||||
|
donly r
|
||||||
|
fit
|
||||||
|
set only_screen_axo 1
|
Loading…
x
Reference in New Issue
Block a user