Search code examples
pythonpython-3.xopencascade

How to get the vertex that I clicked on OCC widget?


I use OCC with python to visualize .igs and .stl format. In .stl file I have a mesh on my model and I want to know what vertex on this mesh was clicked. At least to get some kind of id. I see that the model that I choose automatically highlights without any settings, so I guess there is a way to do this. But I couldn’t find any information about it. Model with mesh


Solution

  • Okay, found it. In case someone else will need it:

     display = self.occWidget._display
     display.SetSelectionModeVertex() # This is the required function
     display.register_select_callback(recognize_clicked)
    

    where recognize_clicked is

    def recognize_clicked(shp, *kwargs):
    """ This is the function called every time
    a face is clicked in the 3d view
    """
    for shape in shp:
        print("Face selected: ", shape)
    

    Face selection - SetSelectionModeFace()

    Vertex selection - SetSelectionModeVertex()

    Edge selection - SetSelectionModeEdge()

    Shape selection - SetSelectionModeShape()

    Neutral (default) selection - SetSelectionModeNeutral()

    That is all the modes that I've found in other examples. Please, if you find more, write in a comment that resource.