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