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;
+ }
}
}
// << "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 );
+ void SetIsCreateGroup(const Standard_Boolean theIsCreate)
+ {
+ myIsCreateGroup = theIsCreate;
+ }
+
+ const Handle(Graphic3d_ArrayOfPrimitives)& ArrayOfPrimitives() const
+ {
+ return myArrayOfPrimitives;
+ }
+
DEFINE_STANDARD_RTTIEXT(MeshVS_PrsBuilder,MMgt_TShared)
Standard_Integer myPriority;
Handle(PrsMgr_PresentationManager3d) myPrsMgr;
+protected:
+ mutable Handle(Graphic3d_ArrayOfPrimitives) myArrayOfPrimitives;
+ Standard_Boolean myIsCreateGroup;
};