Jelle Feringa a écrit :

> Hi,
>
> I'm trying to acces the triangulation of an object.
> That's ok, until the moment I need to deal with Handle_*
> I'm not aware of the concept of Handle_ ( related to smart_pointers,  
> right? ) so go easy on me ;')
>
> What I'm trying write is similar to this C++ snippet found on OCC forum:
>
> TopoDS_Face F =TopoDS::Face(ex.Current());
> TopLoc_Location L;
> Handle (Poly_Triangulation) facing = BRep_Tool::Triangulation(F,L);
> TColgp_Array1OfPnt tab(1,(facing->NbNodes()));
> tab = facing->Nodes();
> Poly_Array1OfTriangle tri(1,facing->NbTriangles());
> tri = facing->Triangles();
>
>
> myT = occ.BRep_Tool().Triangulation(f, f.Location())
>
> So, when accessing myT, it only has Acces, DownCast and a couple of  
> other methods, not the .NbNodes / .NbTriangles methods I need to acces  
> the data on the triangle.
> What can I do to overcome this?
>
> Cheers & many thanks in advance,
>
> -jelle
>
>   
Hi Jelle,

The Triangulation method returns a Handle_Poly_Triangulation object and 
not a Poly_Triangulation object. Under C++, you can access all members 
fonctions of an object from its handle. It's not possible in pythonOCC: 
then Handle_* inherits from Handle_Standard_Transient class and the 
'->()' operator is not wrapped. You can just access methods of 
Handle_Standard_Transient (ie DownCast, Access etc.).

I do not know how to get the object pointed by a Handle_* object.

The OpenCascade handler management system (smart pointers) is the major 
issue I face in the development of pythonOCC (maybe because I do not 
understand it very well). I think that a more pythonic way for the 
wrapper would be to hide the handler mechanism to the end-users so they 
users have just to work with objects and not their Handle.

Best regards,

Thomas



_______________________________________________
Minerva-pythonocc mailing list
Minerva-pythonocc@gna.org
https://mail.gna.org/listinfo/minerva-pythonocc

Reply via email to