0027185: Data Exchange - IGES - incorrect reading of DE for undefined entity IR-2020-09-18 WEEK-38
authorika <ika@opencascade.com>
Tue, 15 Sep 2020 14:20:35 +0000 (17:20 +0300)
committerbugmaster <bugmaster@opencascade.com>
Fri, 18 Sep 2020 15:17:21 +0000 (18:17 +0300)
Fix reading of pointers to color entity.

src/IGESData/IGESData_UndefinedEntity.cxx
tests/bugs/iges/bug27186
tests/de/iges_2/F9

index f055741..d3f3216 100644 (file)
@@ -218,7 +218,7 @@ Standard_Boolean IGESData_UndefinedEntity::ReadDir
   iapb = Standard_False;
   if (v[3] < -max) iapb = Standard_True;
   else if (v[3] < 0) {
-    anent = GetCasted(IGESData_IGESEntity,IR->BoundEntity((-1-v[3])/2));
+    anent = GetCasted(IGESData_IGESEntity,IR->BoundEntity((1-v[3])/2));
     if (!anent->IsKind(STANDARD_TYPE(IGESData_LineFontEntity))) iapb = Standard_True;
   }
   // Sending of message : Line Font Pattern field is incorrect.
@@ -232,7 +232,7 @@ Standard_Boolean IGESData_UndefinedEntity::ReadDir
   iapb = Standard_False;
   if (v[4] < -max) iapb = Standard_True;
   else if (v[4] < 0) {
-    anent = GetCasted(IGESData_IGESEntity,IR->BoundEntity((-1-v[4])/2));
+    anent = GetCasted(IGESData_IGESEntity,IR->BoundEntity((1-v[4])/2));
     if (!anent->IsKind(STANDARD_TYPE(IGESData_LevelListEntity))) iapb = Standard_True;
   }
 
@@ -276,7 +276,7 @@ Standard_Boolean IGESData_UndefinedEntity::ReadDir
 
   iapb = Standard_False;
   if (v[7] < 0 || v[7] > max) iapb = Standard_True;
-  else if (v[7] < 0) {
+  else if (v[7] > 0) {
     anent = GetCasted(IGESData_IGESEntity,IR->BoundEntity((1+v[7])/2));
     if (!anent->IsKind(STANDARD_TYPE(IGESData_LabelDisplayEntity))) iapb = Standard_True;
   }
@@ -290,9 +290,9 @@ Standard_Boolean IGESData_UndefinedEntity::ReadDir
   }
 
   iapb = Standard_False;
-  if (v[14] < 0 || v[14] > max) iapb = Standard_True;
+  if (v[14] < -max || v[14] > max) iapb = Standard_True;
   else if (v[14] < 0) {
-    anent = GetCasted(IGESData_IGESEntity,IR->BoundEntity((1+v[14])/2));
+    anent = GetCasted(IGESData_IGESEntity,IR->BoundEntity((1-v[14])/2));
     if (!anent->IsKind(STANDARD_TYPE(IGESData_ColorEntity)))
       {  thedstat += 512; v[14] = 0;  }
   }
index 27a4531..b6b386f 100644 (file)
@@ -1,5 +1,3 @@
-puts "TODO OCC27186 ALL: Directory Entry Error Status" 
-
 puts "========"
 puts "OCC27186"
 puts "========"
index a915418..2acfc66 100644 (file)
@@ -7,7 +7,7 @@ puts "TODO CR23096 ALL: LABELS : Faulty"
 set filename 919-004-T03-04-CP-VL.igs
 
 set ref_data {
-DATA        : Faulties = 0  ( 2 )  Warnings = 0  ( 0 )  Summary  = 0  ( 2 )
+DATA        : Faulties = 0  ( 1 )  Warnings = 0  ( 0 )  Summary  = 0  ( 1 )
 TPSTAT      : Faulties = 0  ( 2 )  Warnings = 310  ( 2179 )  Summary  = 310  ( 2181 )
 CHECKSHAPE  : Wires    = 0  ( 3 )  Faces    = 0  ( 3 )  Shells   = 0  ( 0 )   Solids   = 0 ( 0 )
 NBSHAPES    : Solid    = 0  ( 0 )  Shell    = 0  ( 0 )  Face     = 1457  ( 1455 )