From f0a4b37b5d15234f0d6d58f0dee245d0eec0eb80 Mon Sep 17 00:00:00 2001 From: sshutina Date: Wed, 23 Jul 2025 15:14:46 +0100 Subject: [PATCH] Add API to get vertex by index from sensitive --- .../Select3D_SensitivePrimitiveArray.cxx | 17 +++++++++++++++++ .../Select3D_SensitivePrimitiveArray.hxx | 3 +++ 2 files changed, 20 insertions(+) diff --git a/src/Select3D/Select3D_SensitivePrimitiveArray.cxx b/src/Select3D/Select3D_SensitivePrimitiveArray.cxx index 8c0d0d3fdc..3a4956283c 100644 --- a/src/Select3D/Select3D_SensitivePrimitiveArray.cxx +++ b/src/Select3D/Select3D_SensitivePrimitiveArray.cxx @@ -395,6 +395,23 @@ bool Select3D_SensitivePrimitiveArray::InitTriangulation (const Handle(Graphic3d return true; } +// ======================================================================= +// function : GetVertex +// purpose : +// ======================================================================= +std::vector Select3D_SensitivePrimitiveArray::GetVertex (const Standard_Integer theIndex) const +{ + std::vector aVertices; + aVertices.reserve(3); + Graphic3d_Vec3i aTriNodes; + const Standard_Integer anIndexOffset = theIndex * 3; + getTriIndices(myIndices, anIndexOffset, aTriNodes); + aVertices.push_back (getPosVec3(aTriNodes[0])); + aVertices.push_back (getPosVec3(aTriNodes[1])); + aVertices.push_back (getPosVec3(aTriNodes[2])); + return aVertices; +} + // ======================================================================= // function : InitPoints // purpose : diff --git a/src/Select3D/Select3D_SensitivePrimitiveArray.hxx b/src/Select3D/Select3D_SensitivePrimitiveArray.hxx index 28002d8ecb..2f409c17b4 100644 --- a/src/Select3D/Select3D_SensitivePrimitiveArray.hxx +++ b/src/Select3D/Select3D_SensitivePrimitiveArray.hxx @@ -195,6 +195,9 @@ public: //! Return the second node of last topmost detected edge or -1 if undefined (axis picking). Standard_Integer LastDetectedEdgeNode2() const { return myDetectedEdgeNode2; } + //! Return vertex by index. + Standard_EXPORT std::vector GetVertex (const Standard_Integer theIndex) const; + //! Dumps the content of me into the stream Standard_EXPORT virtual void DumpJson (Standard_OStream& theOStream, Standard_Integer theDepth = -1) const Standard_OVERRIDE; -- 2.39.5