From 409cc6f9817795c0d6dfbee0129ecc0c6245d3e2 Mon Sep 17 00:00:00 2001 From: isk Date: Thu, 1 Sep 2016 16:29:18 +0300 Subject: [PATCH] Update MeshVS_PrsBuilder & MeshVS_MeshPrsBuilder. --- src/MeshVS/MeshVS_MeshPrsBuilder.cxx | 33 +++++++++++++++++++++++----- src/MeshVS/MeshVS_PrsBuilder.hxx | 13 +++++++++++ 2 files changed, 40 insertions(+), 6 deletions(-) diff --git a/src/MeshVS/MeshVS_MeshPrsBuilder.cxx b/src/MeshVS/MeshVS_MeshPrsBuilder.cxx index 1253884018..029fd0d1db 100644 --- a/src/MeshVS/MeshVS_MeshPrsBuilder.cxx +++ b/src/MeshVS/MeshVS_MeshPrsBuilder.cxx @@ -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 ); diff --git a/src/MeshVS/MeshVS_PrsBuilder.hxx b/src/MeshVS/MeshVS_PrsBuilder.hxx index 967a19747b..282b0aa43c 100644 --- a/src/MeshVS/MeshVS_PrsBuilder.hxx +++ b/src/MeshVS/MeshVS_PrsBuilder.hxx @@ -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; }; -- 2.39.5