]> OCCT Git - occt-copy.git/commitdiff
Update MeshVS_PrsBuilder & MeshVS_MeshPrsBuilder. CR0_AVD_OIT
authorisk <isk@opencascade.com>
Thu, 1 Sep 2016 13:29:18 +0000 (16:29 +0300)
committerisk <isk@opencascade.com>
Thu, 1 Sep 2016 13:29:18 +0000 (16:29 +0300)
src/MeshVS/MeshVS_MeshPrsBuilder.cxx
src/MeshVS/MeshVS_PrsBuilder.hxx

index 1253884018a5f2ce903e1455d406ddae298b0d8d..029fd0d1dbc23541f1137af8e01f7ed950004338 100644 (file)
@@ -158,10 +158,17 @@ void MeshVS_MeshPrsBuilder::BuildNodes ( const Handle(Prs3d_Presentation)& Prs,
 
   if ( k>0 )
   {
-    Prs3d_Root::NewGroup ( Prs );
-    Handle (Graphic3d_Group) aNodeGroup = Prs3d_Root::CurrentGroup ( Prs );
-    aNodeGroup->SetPrimitivesAspect ( aNodeMark );
-    aNodeGroup->AddPrimitiveArray (aNodePoints);
+    if (myIsCreateGroup)
+    {
+      Prs3d_Root::NewGroup(Prs);
+      Handle(Graphic3d_Group) aNodeGroup = Prs3d_Root::CurrentGroup(Prs);
+      aNodeGroup->SetPrimitivesAspect(aNodeMark);
+      aNodeGroup->AddPrimitiveArray(aNodePoints);
+    }
+    else
+    {
+      myArrayOfPrimitives = aNodePoints;
+    }
   }
 }
 
@@ -506,8 +513,22 @@ void MeshVS_MeshPrsBuilder::BuildElements( const Handle(Prs3d_Presentation)& Prs
   //  << "Face segs: " << aEdgeSegments->ItemNumber()  << " from " << aNbEdgePrimitives << std::endl
   //  << "Link segs: " << aLinkSegments->ItemNumber()  << " from " << aNbLinkPrimitives << std::endl;
 
-  DrawArrays ( Prs, aFaceTriangles, aEdgeSegments, aLinkSegments, aVolmTriangles,
-    !showEdges, HasSelectFlag, aFill, aBeam );
+  if (myIsCreateGroup)
+  {
+    DrawArrays ( Prs, aFaceTriangles, aEdgeSegments, aLinkSegments, aVolmTriangles,
+      !showEdges, HasSelectFlag, aFill, aBeam );
+  }
+  else
+  {
+    if (!aFaceTriangles.IsNull())
+    {
+      myArrayOfPrimitives = aFaceTriangles;
+    }
+    else if (!aEdgeSegments.IsNull())
+    {
+      myArrayOfPrimitives = aEdgeSegments;
+    }
+  }
 
   if ( !aCustomElements.IsEmpty() )
     CustomBuild ( Prs, aCustomElements, IDsToExclude, DisplayMode );
index 967a19747ba904bee69235166cedfd9570f89ab3..282b0aa43c8896e47127bf2ca5b4a8ba46a753ef 100644 (file)
@@ -106,6 +106,16 @@ public:
 
 
 
+  void SetIsCreateGroup(const Standard_Boolean theIsCreate)
+  {
+    myIsCreateGroup = theIsCreate;
+  }
+
+  const Handle(Graphic3d_ArrayOfPrimitives)& ArrayOfPrimitives() const
+  {
+    return myArrayOfPrimitives;
+  }
+
 
   DEFINE_STANDARD_RTTIEXT(MeshVS_PrsBuilder,MMgt_TShared)
 
@@ -142,6 +152,9 @@ private:
   Standard_Integer myPriority;
   Handle(PrsMgr_PresentationManager3d) myPrsMgr;
 
+protected:
+  mutable Handle(Graphic3d_ArrayOfPrimitives) myArrayOfPrimitives;
+  Standard_Boolean                            myIsCreateGroup;
 
 };