Hi Yuting,

oh, sorry, I forgot to mention that I needed to extend the SMESHDS SWIG 
interface to obtain this functionality.
In file 
        src/wrapper/SWIG/linux_darwin/SMESHDS.i (assuming you are on a linux 
system)
add
        %extend SMESHDS_SubMesh {
                const SMDS_MeshElement * elemValue(int index) {
                        int i;
                        SMDS_ElemIteratorPtr iterator=$self->GetElements();
                        for (i=0; i<=index-1; i++) {
                                iterator->next();}
                        return iterator->next();
                }
        };
after 
        class SMESHDS_SubMesh interface definition (line 227 in my case)
and rerun the PythonOCC setup.py. I know this is a terrible way of doing this 
(in terms of efficiency), it should better be done e.g.
by providing an interface for SMDS_ElemIteratorPtr (maybe this has already been 
done ??). For me this was just a quick fix...

Again, sorry for not mentioning this.

Regards,
Mark
 


Am 28.09.2012 um 13:50 schrieb 张玉婷:

> Hi Mark,
> 
> Thanks for the hints of SMESH for submesh, it is really inspiring to know I 
> can extract submesh for any subshape of geometry.
> 
> Well, I tried your code, I have one problem right now is PythonOCC seems have 
> no function of "submeshds.elemValue()". I even check the SMESHDS_SubMesh 
> Class Reference 
> (http://docs.salome-platform.org/salome_6_4_0/tui/SMESH/classSMESHDS__SubMesh.html),
>  there is no such function. 
> 
> I am wondering is there any command that I can replace or I should import 
> some other package? I've already imported from OCC.Utils.Topology import *, 
> but still did not work.
> 
> Thanks in advance.
> 
> Regards,
> Yuting
> 
> On Tue, Sep 25, 2012 at 6:46 PM, Mark Blome <bl...@zib.de> wrote:
> 
> Hi Yuting,
> 
> if you have meshed your geometry with SMESH then you can easily extract a 
> submesh for any subshape of your geometry, e.g.
> 
> from OCC.Utils.Topology import Topo
> ...
> for edge in Topo(box).edges(): 
>       submesh = mesh.GetSubMesh(edge)
>       submeshds = submesh.GetSubMeshDS()
>       for ielem in range(submeshds .NbElements()):
>               elem = submeshds.elemValue(ielem)
>               n1 = elem.GetNode(0).GetID(); n2 = elem.GetNode(1).GetID();
>               ...
> To find out  which one of your shape edges you need to consider you can - for 
> example - check the location of the points of it's vertices. 
> 
> Regards,
> Mark
> 
> 
> Am 25.09.2012 um 15:06 schrieb 张玉婷:
> 
>> Hi Jelle,
>> 
>> Thanks for quick reply.
>> 
>> Yes, I am talking about FEM meshing. May I re-explain my question. I have a 
>> big modeling, I have meshed it already. What I want right now is: only to 
>> get the nodes index of  one end of the partial modeling (just the node on 
>> one edge). I am wondering is there any commands to get the specific edge 
>> index and the nodes index belonging to that edge, after meshing?
>> 
>> Regards,
>> Yuting
>> 
>> On Tue, Sep 25, 2012 at 2:46 PM, jelle feringa <jelleferi...@gmail.com> 
>> wrote:
>> 
>> I am trying to find the node indices belong to some wires, edges or surfaces 
>> (which are at some given locations). I am wondering is there such commands 
>> available in pythonocc? 
>> 
>> 
>> Hi Yuting,
>> 
>> Do you mean by nodes, vertices [ a bit FEM speak.. ]?
>> I think what you aim at is topology traversal.
>> 
>> Sure, try this:
>> 
>> In [13]: from OCC.BRepPrimAPI import BRepPrimAPI_MakeBox
>> 
>> In [14]: box = BRepPrimAPI_MakeBox(1,1,1).Shape()
>> 
>> In [15]: box
>> Out[15]: <OCC.TopoDS.TopoDS_Shape; proxy of <Swig Object of type 
>> 'TopoDS_Shape *' at 0x10f13a570> >
>> 
>> In [16]: from OCC.Utils.Topology import Topo
>> 
>> In [17]: from OCC.Utils.Construct import vertex2pnt
>> 
>> In [18]: for vert in Topo(box).vertices(): print vertex2pnt(vert).Coord()
>> 
>> 
>> 
>>  
>> (1.0, 1.0, 0.0)
>> 
>> 
>> 
>> 
>> 
>> _______________________________________________
>> Pythonocc-users mailing list
>> Pythonocc-users@gna.org
>> https://mail.gna.org/listinfo/pythonocc-users
>> 
>> 
>> _______________________________________________
>> Pythonocc-users mailing list
>> Pythonocc-users@gna.org
>> https://mail.gna.org/listinfo/pythonocc-users
> 
> 
> _______________________________________________
> Pythonocc-users mailing list
> Pythonocc-users@gna.org
> https://mail.gna.org/listinfo/pythonocc-users
> 
> 
> _______________________________________________
> Pythonocc-users mailing list
> Pythonocc-users@gna.org
> https://mail.gna.org/listinfo/pythonocc-users

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

Reply via email to