This is sample code on how to select invisible vertices and turn ON selected vertices. (3DF)
// only select vertices
HC_Open_Segment_By_Key(m_pHView->GetModelKey()); {
HC_Set_Selectability("faces=off,vertices=!on,edges=off");
HC_Set_Visibility("vertices=off");
} HC_Close_Segment();
m_pHView->Update();
// sub-entity selection
HC_Open_Segment_By_Key(m_pHView->GetViewKey()); {
HC_Set_Heuristics("selection level = entity, no related selection limit, no internal selection limit");
// select top half of screen
int count = HC_Compute_Selection_By_Area(".", "./scene/overwrite", "v", -1, 1, 0, 1);
if (count > 0)
{
HC_KEY selectionKey = -1;
HC_Show_Selection_Elements_Coun(&selectionKey, &count);
int *vertex1 = new int[count];
int *vertex2 = new int[count];
int *faces = new int[count];
for (int i = 0; i < count; i++) {
vertex1[i] = -1;
vertex2[i] = -1;
faces[i] = -1;
}
HC_Show_Selection_Elements(&selectionKey, &count, vertex1, vertex2, faces);
// create a list of selected vertices
int found = 0;
int *highlight_vertex_list = new int[count];
// Iterate through vertex1
// Compare vertex2 to determine if vertices is selected
// See Link on how to identify selected vertices/edges/faces //https://docs.techsoft3d.com/3df/latest/api_ref/3dgs/hc__proto_8h.html#_CPPv426HC_Show_Selection_ElementsP3KeyPiA_iA_iA_i
int ii=0;
for (ii = 0; ii < count; ii++)
{
if (vertex2[ii] == -1)
{
highlight_vertex_list[found] = vertex1[ii];
found++;
}
}
// visibility array, initialize to 1
char* visbility_on = new char[found];
std::fill(visbility_on, visbility_on + found, (char)1);
HC_MSet_Specific_Vertex_Vis(selectionKey, found, highlight_vertex_list, visbility_on);
// highlight array, initialize to 0 (black)
int color_size = found * 3;
float* highlight_vertex_color = new float[color_size];
memset(highlight_vertex_color, 0, sizeof(float) * color_size);
HC_MSet_Specific_Vertex_Colors_By_Value(selectionKey, "vertex", found, highlight_vertex_list, "RGB", highlight_vertex_color);
// delete all dynamic arrays
delete[] vertex1;
delete[] vertex2;
delete[] faces;
delete[] visbility_on;
delete[] highlight_vertex_color;
m_pHView->Update();
}
} HC_Close_Segment();
LINK:
Video: