python-3.xpythonocc

How to get the distance between a point and a shape in pythonocc-core?


I had searched similar questions, With OpenCascade, how to do a collision detection of 2 shapes fast?.

Also ,here is the example srcipts: core_geometry_minimal_distance (code above)

But,It is hard for me to get any idea about : get the distance between a point and a shape.

Dose here have a easy way to get the distance between point and shape by pythonocc?

If it dose not, could anyane tell any idea about to get the distance?

In fact, I am trying to make a Adaptively Sampled Distance Fields.In my understanding,it is necessary to get a distance between point and shape during makeing it.

Also,Could anyone tell any idea about how to make a Adaptively Sampled Distance Fields?

If I do not explain clearly or use incorrect wording, tell me and I will fix it.


Solution

  • More than one week had gone.

    The example ,author showed is :

    https://github.com/tpaviot/pythonocc-demos/blob/master/examples/core_geometry_minimal_distance.py

    Just use BRepBuilderAPI_MakeVertex to make a shape which is just a point to replace the box in the example's code.such as :

    
    from OCC.Core.BRepExtrema import BRepExtrema_DistShapeShape
    from OCC.Core.BRepPrimAPI import BRepPrimAPI_MakeBox
    from OCC.Display.SimpleGui import init_display
    from OCC.Core.gp import gp_Pnt, gp_Ax2, gp_Circ
    
    from OCC.Extend.ShapeFactory import make_edge, make_vertex
    
    def compute_minimal_distance_between_cubes(b1,b2):
        display.DisplayShape([b1, b2])
    
        dss = BRepExtrema_DistShapeShape()
        dss.LoadS1(b1)
        dss.LoadS2(b2)
        dss.Perform()
    
        assert dss.IsDone()
    
        return dss.Value()
    
    

    and

    
    _point_pnt = gp_Pnt(x, y, z)
    
    vtx = BRepBuilderAPI_MakeVertex(_point_pnt).Shape() # shape type