const Standard_Boolean EOnE,
const BRepFill_TrimEdgeTool& Trim) const
{
- if (myJoinType == GeomAbs_Intersection &&
- Vertices.Length() == 1 &&
- !EOnE)
- {
- TopTools_IndexedMapOfShape Vmap1, Vmap2;
- TopExp::MapShapes(Shape1, TopAbs_VERTEX, Vmap1);
- TopExp::MapShapes(Shape2, TopAbs_VERTEX, Vmap2);
- Standard_Boolean Adjacent = Standard_False;
- for (Standard_Integer i = 1; i <= Vmap1.Extent(); i++)
- for (Standard_Integer j = 1; j <= Vmap2.Extent(); j++)
- if (Vmap1(i).IsSame(Vmap2(j)))
- {
- Adjacent = Standard_True;
- break;
- }
- if (Adjacent)
- {
- Detromp(Shape1).Append(Vertices.First());
- Detromp(Shape2).Append(Vertices.First());
- return;
- }
- }
-
Standard_Integer ii = 1;
Standard_Real U1,U2;
TopoDS_Vertex V1,V2;
U2 = Params.Value(ii).X();
V2 = TopoDS::Vertex(Vertices.Value(ii));
- gp_Pnt2d P = Bis->Value((U2 + U1)*0.5);
- if (!Trim.IsInside(P)) {
+ gp_Pnt2d P = Bis->Value((U2 + U1)*0.5);
+ Standard_Boolean IsP_inside = Standard_True;
+ if (myJoinType == GeomAbs_Arc)
+ IsP_inside = Trim.IsInside(P);
+ if (!IsP_inside) {
if (!V1.IsNull()) {
Detromp(Shape1).Append(V1);
Detromp(Shape2).Append(V1);
if (!EOnE) {
if (!Precision::IsInfinite(U2)) {
gp_Pnt2d P = Bis->Value((U2 + U1)*0.5);
- if (!Trim.IsInside(P)) {
+ Standard_Boolean IsP_inside = Standard_False;
+ if (myJoinType == GeomAbs_Arc)
+ IsP_inside = Trim.IsInside(P);
+ if (!IsP_inside) {
if (!V1.IsNull()) {
Detromp(Shape1).Append(V1);
Detromp(Shape2).Append(V1);
--- /dev/null
+puts "============"
+puts "OCC25491"
+puts "============"
+puts ""
+#######################################################################
+# BRepOffsetAPI_MakeOffset algorithm crashes on customer's shape and big value of offset
+#######################################################################
+
+restore [locate_data_file bug25491_offset_lines_2.brep] a
+
+if [catch { mkoffset resoffset a 1 -35 i } ] {
+ puts "Error : mkoffset is wrong"
+} else {
+ renamevar resoffset_1 result
+
+ set length 120
+
+ set nb_v_good 5
+ set nb_e_good 5
+ set nb_w_good 1
+ set nb_f_good 0
+ set nb_sh_good 0
+ set nb_sol_good 0
+ set nb_compsol_good 0
+ set nb_compound_good 0
+ set nb_shape_good 11
+}
+
+smallview
+display a
+fit
+set only_screen_axo 1