]> OCCT Git - occt.git/commitdiff
0033331: Data Exchange, Step Import - Unsupported Representation Items
authordpasukhi <dpasukhi@opencascade.com>
Mon, 20 Feb 2023 12:45:48 +0000 (12:45 +0000)
committerdpasukhi <dpasukhi@opencascade.com>
Mon, 20 Feb 2023 12:45:48 +0000 (12:45 +0000)
Fixed problem with iteration on Null RI

src/STEPCAFControl/STEPCAFControl_Reader.cxx
tests/bugs/step/bug33331 [new file with mode: 0644]

index a6fcbc31e2a00399817fd786cbf19173e79d38cc..614422b07b7c7c8e75f9fd7d0496da2fbe17aca0 100644 (file)
@@ -4647,9 +4647,16 @@ void collectRepresentationItems(const Interface_Graph& theGraph,
   const Handle(StepShape_ShapeRepresentation)& theRepresentation,
   NCollection_Sequence<Handle(StepRepr_RepresentationItem)>& theItems)
 {
-  Handle(StepRepr_HArray1OfRepresentationItem) aReprItems = theRepresentation->Items();
-  for (Standard_Integer itemIt = aReprItems->Lower(); itemIt <= aReprItems->Upper(); itemIt++)
-    theItems.Append(aReprItems->Value(itemIt));
+  for (StepRepr_HArray1OfRepresentationItem::Iterator anIter(theRepresentation->Items()->Array1());
+       anIter.More(); anIter.Next())
+  {
+    const Handle(StepRepr_RepresentationItem)& anReprItem = anIter.Value();
+    if (anReprItem.IsNull())
+    {
+      continue;
+    }
+    theItems.Append(anReprItem);
+  }
 
   Interface_EntityIterator entIt = theGraph.TypedSharings(theRepresentation, STANDARD_TYPE(StepRepr_RepresentationRelationship));
   for (entIt.Start(); entIt.More(); entIt.Next())
diff --git a/tests/bugs/step/bug33331 b/tests/bugs/step/bug33331
new file mode 100644 (file)
index 0000000..73cc77d
--- /dev/null
@@ -0,0 +1,14 @@
+puts "===================================="
+puts "0033331: Data Exchange, Step Import - Unsupported Representation Items"
+puts "===================================="
+puts ""
+
+pload DCAF
+catch {Close D}
+
+param "read.stepcaf.subshapes.name" 1
+
+ReadStep D [locate_data_file bug33331.stp]
+
+param "read.stepcaf.subshapes.name" 0
+Close D