From b95caec47da645dbbc4865c06a9e207605d35f81 Mon Sep 17 00:00:00 2001 From: ika Date: Thu, 10 Sep 2020 21:56:08 +0300 Subject: [PATCH] 0031466: Data Exchange - Cannot import layers from STeP file (7.4.0 regression) Return possibility to find layers fir subshapes. --- src/XCAFDoc/XCAFDoc_LayerTool.cxx | 24 +++++++++++++++--------- tests/bugs/xde/bug31466 | 22 ++++++++++++++++++++++ 2 files changed, 37 insertions(+), 9 deletions(-) create mode 100644 tests/bugs/xde/bug31466 diff --git a/src/XCAFDoc/XCAFDoc_LayerTool.cxx b/src/XCAFDoc/XCAFDoc_LayerTool.cxx index d633539d0f..3b14fefc14 100644 --- a/src/XCAFDoc/XCAFDoc_LayerTool.cxx +++ b/src/XCAFDoc/XCAFDoc_LayerTool.cxx @@ -449,7 +449,6 @@ Standard_Boolean XCAFDoc_LayerTool::SetLayer(const TopoDS_Shape& Sh, const Standard_Boolean shapeInOneLayer) { TDF_Label aLab; -// if (! myShapeTool->FindShape(Sh, aLab) ) return Standard_False; // PTV 22.01.2003 set layer for shape with location if it is necessary if (! myShapeTool->Search( Sh, aLab ) ) return Standard_False; SetLayer(aLab, LayerL, shapeInOneLayer); @@ -479,7 +478,8 @@ Standard_Boolean XCAFDoc_LayerTool::SetLayer(const TopoDS_Shape& Sh, Standard_Boolean XCAFDoc_LayerTool::UnSetLayers(const TopoDS_Shape& Sh) { TDF_Label aLab; - if (! myShapeTool->FindShape(Sh, aLab) ) return Standard_False; + if (!myShapeTool->Search(Sh, aLab) ) + return Standard_False; UnSetLayers(aLab); return Standard_True; } @@ -494,7 +494,8 @@ Standard_Boolean XCAFDoc_LayerTool::UnSetOneLayer(const TopoDS_Shape& Sh, const TCollection_ExtendedString& aLayer) { TDF_Label aLab; - if (! myShapeTool->FindShape(Sh, aLab) ) return Standard_False; + if (!myShapeTool->Search(Sh, aLab) ) + return Standard_False; return UnSetOneLayer(aLab, aLayer); } @@ -507,7 +508,8 @@ Standard_Boolean XCAFDoc_LayerTool::UnSetOneLayer(const TopoDS_Shape& Sh, const TDF_Label& aLayerL) { TDF_Label aLab; - if (! myShapeTool->FindShape(Sh, aLab) ) return Standard_False; + if (!myShapeTool->Search(Sh, aLab) ) + return Standard_False; return UnSetOneLayer(aLab, aLayerL); } @@ -520,7 +522,8 @@ Standard_Boolean XCAFDoc_LayerTool::IsSet(const TopoDS_Shape& Sh, const TCollection_ExtendedString& aLayer) { TDF_Label aLab; - if (! myShapeTool->FindShape(Sh, aLab) ) return Standard_False; + if (! myShapeTool->Search(Sh, aLab) ) + return Standard_False; return IsSet(aLab, aLayer); } @@ -534,7 +537,8 @@ Standard_Boolean XCAFDoc_LayerTool::IsSet(const TopoDS_Shape& Sh, const TDF_Label& aLayerL) { TDF_Label aLab; - if (! myShapeTool->FindShape(Sh, aLab) ) return Standard_False; + if (!myShapeTool->Search(Sh, aLab) ) + return Standard_False; return IsSet(aLab, aLayerL); } @@ -547,7 +551,8 @@ Standard_Boolean XCAFDoc_LayerTool::GetLayers(const TopoDS_Shape& Sh, Handle(TColStd_HSequenceOfExtendedString)& aLayerS) { TDF_Label aLab; - if (! myShapeTool->FindShape(Sh, aLab) ) return Standard_False; + if (!myShapeTool->Search(Sh, aLab)) + return Standard_False; return GetLayers(aLab, aLayerS); } @@ -560,7 +565,8 @@ Standard_Boolean XCAFDoc_LayerTool::GetLayers(const TopoDS_Shape& Sh, TDF_LabelSequence& aLayerLS) { TDF_Label aLab; - if (! myShapeTool->FindShape(Sh, aLab) ) return Standard_False; + if (!myShapeTool->Search(Sh, aLab)) + return Standard_False; return GetLayers(aLab, aLayerLS); } @@ -574,7 +580,7 @@ Handle(TColStd_HSequenceOfExtendedString) XCAFDoc_LayerTool::GetLayers(const Top { Handle(TColStd_HSequenceOfExtendedString) aLayerS = new TColStd_HSequenceOfExtendedString; TDF_Label aLab; - if ( myShapeTool->FindShape(Sh, aLab) ) + if (myShapeTool->Search(Sh, aLab)) aLayerS = GetLayers(aLab); return aLayerS; } diff --git a/tests/bugs/xde/bug31466 b/tests/bugs/xde/bug31466 new file mode 100644 index 0000000000..1bfd6d6359 --- /dev/null +++ b/tests/bugs/xde/bug31466 @@ -0,0 +1,22 @@ +puts "=================================================================================" +puts " 0031466: Data Exchange - Cannot import layers from STeP file (7.4.0 regression)" +puts "=================================================================================" +puts "" + +pload DCAF + +XNewDoc D +box b 1 1 1 +explode b f +XAddShape D b +XAddSubShape D b_1 0:1:1:1 +XAddLayer D myLayer +XSetLayer D 0:1:1:1:1 myLayer + +# check layer +set layer [XGetLayers D b_1] +if {$layer != "\"myLayer\" "} { + puts "Error: wrong result layer searching." +} + +Close D -- 2.20.1