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
[email protected]
https://mail.gna.org/listinfo/pythonocc-users