Hi Uwe,

You need to set the edge Range in IntTools_EdgeFace.  See below:

ef = IntTools_EdgeFace()
ef.SetEdge(e.Edge())
ef.SetFace(f.Face())
ef.SetRange(0.0, 1.0)
ef.Perform()
cprts = ef.CommonParts() 
print 'Range', ef.Range().First(), ef.Range().Last()
print 'e intersects f?:', 1 - cprts.IsEmpty()

I couldn't find documentation to understand the arguments for the SetRange 
function well, but I think they're parametric parameters, in which case, the 
0.0 to 1.0 arguments are probably correct.

You can iterate over the common parts like this:

for count in range(cprts.Length()):
    cprt = cprts(1 + count)
    if cprt.Type() == TopAbs_VERTEX:
        print 'intersected at a vertex'
    elif cprt.Type() == TopAbs_EDGE:
        print 'intersected at an edge'

To actually find the point of intersection, you'll need to investigate 
yourself.  cprt is not a TopoDS structure.

To discover these answers, I grep'd the OCC source code for 
IntTools_EdgeFace.  I found some examples in BOPTools_Paver, or something 
like that.  Then, I ported it to pythonocc.  It's messy, but that's the way 
I've been wading through OCC.  Perhaps that methodology may help you.

- Charles



_______________________________________________
Pythonocc-users mailing list
Pythonocc-users@gna.org
https://mail.gna.org/listinfo/pythonocc-users

Reply via email to