The conversion between TopoDS_Shapes, Vertices and Coordinates is driving me 
crazy.
My goal is to find the vertex coordinates of any displayed object. I found a 
few similar questions here and in the opencascade forums, but the replies seem 
not to work with pythonOCC. I am trying the following procedure:
1) extract all vertices with TopExp_Explorer
2) convert each TopoDS_Shape into a Vertex
3) get the coordinates using OCC.BRep.Brep_Tool.Pnt(vertex) ... not discussed 
in this post

Please have a look at the following code, which creates an Edge and attempts to 
extract the vertices.
Unfortunately in step 1) three shapes with ShapeType=Vertex are returned, the 
first two being identical and pointing to Null. Why?
In step 2) the method TopoDS.Vertex(vs[2]), applied to the third shape vs[2] 
complains about "<type 'exceptions.RuntimeError'>: Standard_TypeMismatch".

How do I retrieve the Vertex coordinates of an Edge or (later) any other Shape?

Regards,
Willy

The code example:
from OCC.BRepBuilderAPI import *
from OCC.TopoDS import *
from OCC.TopAbs import *
from OCC.TopExp import *
from OCC.gp import *

e=BRepBuilderAPI_MakeEdge(gp_Pnt(0,0,0),gp_Pnt(0,0,1)).Edge();
exp=TopExp_Explorer()
exp.Init(e,TopAbs_VERTEX)
vs=[exp.Current()]
exp.Next()
vs=vs+[exp.Current()]
exp.Next()
vs=vs+[exp.Current()] #strangely 3 vertices are found

print 'identical:'
print vs[0]==vs[1] #True
print vs[1]==vs[2] #False
print 'IsNull:'
print vs[0].IsNull() #True
print vs[1].IsNull() #True
print vs[2].IsNull() #False

tds=TopoDS()
vx=tds.Vertex(vs[2]) #ERROR: <type 'exceptions.RuntimeError'>: 
Standard_TypeMismatch
print vx



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

Reply via email to