+ add convenience methods to query/alter selection of mesh object
This commit is contained in:
parent
660a30ce01
commit
63e09bcbc2
|
@ -592,16 +592,24 @@ void MeshObject::getPointsFromSelection(std::vector<unsigned long>& inds) const
|
|||
MeshCore::MeshAlgorithm(this->_kernel).GetPointsFlag(inds, MeshCore::MeshPoint::SELECTED);
|
||||
}
|
||||
|
||||
unsigned long MeshObject::countSelectedFacets() const
|
||||
{
|
||||
return MeshCore::MeshAlgorithm(this->_kernel).CountFacetFlag(MeshCore::MeshFacet::SELECTED);
|
||||
}
|
||||
|
||||
bool MeshObject::hasSelectedFacets() const
|
||||
{
|
||||
unsigned long ct = MeshCore::MeshAlgorithm(this->_kernel).CountFacetFlag(MeshCore::MeshFacet::SELECTED);
|
||||
return ct > 0;
|
||||
return (countSelectedFacets() > 0);
|
||||
}
|
||||
|
||||
unsigned long MeshObject::countSelectedPoints() const
|
||||
{
|
||||
return MeshCore::MeshAlgorithm(this->_kernel).CountPointFlag(MeshCore::MeshPoint::SELECTED);
|
||||
}
|
||||
|
||||
bool MeshObject::hasSelectedPoints() const
|
||||
{
|
||||
unsigned long ct = MeshCore::MeshAlgorithm(this->_kernel).CountPointFlag(MeshCore::MeshPoint::SELECTED);
|
||||
return ct > 0;
|
||||
return (countSelectedPoints() > 0);
|
||||
}
|
||||
|
||||
std::vector<unsigned long> MeshObject::getPointsFromFacets(const std::vector<unsigned long>& facets) const
|
||||
|
|
|
@ -220,7 +220,9 @@ public:
|
|||
void addPointsToSelection(const std::vector<unsigned long>&) const;
|
||||
void removeFacetsFromSelection(const std::vector<unsigned long>&) const;
|
||||
void removePointsFromSelection(const std::vector<unsigned long>&) const;
|
||||
unsigned long countSelectedFacets() const;
|
||||
bool hasSelectedFacets() const;
|
||||
unsigned long countSelectedPoints() const;
|
||||
bool hasSelectedPoints() const;
|
||||
void getFacetsFromSelection(std::vector<unsigned long>&) const;
|
||||
void getPointsFromSelection(std::vector<unsigned long>&) const;
|
||||
|
|
|
@ -1697,6 +1697,13 @@ void ViewProviderMesh::deselectFacet(unsigned long facet)
|
|||
}
|
||||
}
|
||||
|
||||
bool ViewProviderMesh::isFacetSelected(unsigned long facet)
|
||||
{
|
||||
const Mesh::MeshObject& rMesh = static_cast<Mesh::Feature*>(pcObject)->Mesh.getValue();
|
||||
const MeshCore::MeshFacetArray& faces = rMesh.getKernel().GetFacets();
|
||||
return faces[facet].IsFlag(MeshCore::MeshFacet::SELECTED);
|
||||
}
|
||||
|
||||
void ViewProviderMesh::selectComponent(unsigned long uFacet)
|
||||
{
|
||||
std::vector<unsigned long> selection;
|
||||
|
@ -1766,6 +1773,24 @@ void ViewProviderMesh::removeSelection(const std::vector<unsigned long>& indices
|
|||
unhighlightSelection();
|
||||
}
|
||||
|
||||
void ViewProviderMesh::invertSelection()
|
||||
{
|
||||
const Mesh::MeshObject& rMesh = static_cast<Mesh::Feature*>(pcObject)->Mesh.getValue();
|
||||
const MeshCore::MeshFacetArray& faces = rMesh.getKernel().GetFacets();
|
||||
unsigned long num_notsel = std::count_if(faces.begin(), faces.end(),
|
||||
std::bind2nd(MeshCore::MeshIsNotFlag<MeshCore::MeshFacet>(),
|
||||
MeshCore::MeshFacet::SELECTED));
|
||||
std::vector<unsigned long> notselect;
|
||||
notselect.reserve(num_notsel);
|
||||
MeshCore::MeshFacetArray::_TConstIterator beg = faces.begin();
|
||||
MeshCore::MeshFacetArray::_TConstIterator end = faces.end();
|
||||
for (MeshCore::MeshFacetArray::_TConstIterator jt = beg; jt != end; ++jt) {
|
||||
if (!jt->IsFlag(MeshCore::MeshFacet::SELECTED))
|
||||
notselect.push_back(jt-beg);
|
||||
}
|
||||
setSelection(notselect);
|
||||
}
|
||||
|
||||
void ViewProviderMesh::clearSelection()
|
||||
{
|
||||
const Mesh::MeshObject& rMesh = static_cast<Mesh::Feature*>(pcObject)->Mesh.getValue();
|
||||
|
|
|
@ -138,6 +138,7 @@ public:
|
|||
/** @name Editing */
|
||||
//@{
|
||||
bool doubleClicked(void){ return false; }
|
||||
bool isFacetSelected(unsigned long facet);
|
||||
void selectComponent(unsigned long facet);
|
||||
void deselectComponent(unsigned long facet);
|
||||
void selectFacet(unsigned long facet);
|
||||
|
@ -145,6 +146,7 @@ public:
|
|||
void setSelection(const std::vector<unsigned long>&);
|
||||
void addSelection(const std::vector<unsigned long>&);
|
||||
void removeSelection(const std::vector<unsigned long>&);
|
||||
void invertSelection();
|
||||
void clearSelection();
|
||||
void deleteSelection();
|
||||
void getFacetsFromPolygon(const std::vector<SbVec2f>& picked,
|
||||
|
|
Loading…
Reference in New Issue
Block a user