]> SALOME platform Git repositories - modules/shaper.git/commitdiff
Salome HOME
Union of validator and filter functionalities.
authornds <natalia.donis@opencascade.com>
Wed, 25 Mar 2015 09:32:35 +0000 (12:32 +0300)
committernds <natalia.donis@opencascade.com>
Wed, 25 Mar 2015 09:32:35 +0000 (12:32 +0300)
Checking for edge is degenerated is performed inside attribute selection. Filters are not used anymore, but validators could not check the degenerated shape state because the attribute selection returns a compound shape for a degenerative edge set.

src/Model/Model_AttributeSelection.cpp

index 4e1f21b91afd30e2121a6e55db511d24dd1566cf..0e643036fad65573de5acb540bf444fb84576950 100644 (file)
@@ -86,7 +86,15 @@ void Model_AttributeSelection::setValue(const ResultPtr& theContext,
   TDF_Label aSelLab = selectionLabel();
   aSelLab.ForgetAttribute(kSIMPLE_REF_ID);
   aSelLab.ForgetAttribute(kCONSTUCTION_SIMPLE_REF_ID);
-  if (!theContext.get()) {
+
+  bool isDegeneratedEdge = false;
+  // do not use the degenerated edge as a shape, a null context and shape is used in the case
+  if (theSubShape.get() && !theSubShape->isNull() && theSubShape->isEdge()) {
+    const TopoDS_Shape& aSubShape = theSubShape->impl<TopoDS_Shape>();
+    if (aSubShape.ShapeType() == TopAbs_EDGE)
+      isDegeneratedEdge = BRep_Tool::Degenerated(TopoDS::Edge(aSubShape));
+  }
+  if (!theContext.get() || isDegeneratedEdge) {
     // to keep the reference attribute label
     TDF_Label aRefLab = myRef.myRef->Label();
     aSelLab.ForgetAllAttributes(true);