mirror of
https://git.dev.opencascade.org/repos/occt.git
synced 2025-08-14 13:30:48 +03:00
0026419: [Regression?] Export of a reversed face leads to crash in 6.9.0 although proceeded in 6.8.0
Take basis surface from trimmed surfaces during IGES writing, because pcurves will be transformed, so trim will be shifted, accorded to new face bounds, fix updating of seam edge, change condition of using Segment during exporting periodic BSpline surfaces to IGES (if bounds are not in one period). Test cases for issue CR26419
This commit is contained in:
@@ -274,7 +274,7 @@ Handle(IGESData_IGESEntity) GeomToIGES_GeomSurface::TransferSurface(const Handle
|
||||
Vmin += vShift;
|
||||
Vmax += vShift;
|
||||
}
|
||||
if ( Abs(uShift) > Precision::PConfusion() || Abs(vShift) > Precision::PConfusion()) {
|
||||
if (PeriodU || PeriodV) {
|
||||
Standard_Boolean isNeedSegment = Standard_True;
|
||||
isNeedSegment = Abs(Umax-Umin) > Precision::PConfusion() &&
|
||||
Abs(Vmax-Vmin) > Precision::PConfusion();
|
||||
@@ -283,7 +283,7 @@ Handle(IGESData_IGESEntity) GeomToIGES_GeomSurface::TransferSurface(const Handle
|
||||
vMaxShift = ShapeAnalysis::AdjustToPeriod(Vfin, V0, V1);
|
||||
isNeedSegment &=
|
||||
(PeriodU && Abs(uShift - uMaxShift) > Precision::PConfusion()) ||
|
||||
(PeriodV && Abs(vShift - vMaxShift) > Precision::PConfusion());
|
||||
(PeriodV && Abs(vShift - vMaxShift) > Precision::PConfusion());
|
||||
if (isNeedSegment) {
|
||||
try {
|
||||
OCC_CATCH_SIGNALS
|
||||
@@ -294,7 +294,7 @@ Handle(IGESData_IGESEntity) GeomToIGES_GeomSurface::TransferSurface(const Handle
|
||||
PeriodU = Standard_False;
|
||||
if ((V1 - V0) - (Vmax - Vmin) > Precision::PConfusion())
|
||||
PeriodV = Standard_False;
|
||||
mysurface = bspl;
|
||||
mysurface = bspl;
|
||||
}
|
||||
}
|
||||
catch ( Standard_Failure ) {
|
||||
@@ -303,10 +303,9 @@ Handle(IGESData_IGESEntity) GeomToIGES_GeomSurface::TransferSurface(const Handle
|
||||
cout << "Warning: Exception in Segment(): " ;
|
||||
Standard_Failure::Caught()->Print(cout);
|
||||
#endif
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
//unperiodize surface to get neccessary for IGES standard number of knots and mults
|
||||
if ( mysurface->IsUPeriodic() ) {
|
||||
mysurface->SetUNotPeriodic();
|
||||
|
Reference in New Issue
Block a user