This can be done directly in the SWIG wrapper. For the TopoDS_Shape 
class, the != operator is already wrapped with python (a call to 
IsNotEqual() method). Don't know why the == operator is ignored. 
Certainly a stupid mistake from me.

Thomas

Jelle Feringa a écrit :
> By the way, it would be easy to reassign IsEqual -> ==
>
> In [21]: def cmp(self, other):
>    ....:     print 'comparing'
>    ....:     return self.IsEqual(other)
>    ....:
>
> In [22]: TopoDS_Edge.__cmp__ = cmp
>
> In [23]: edg1 == edg1A
> comparing
>
> Out[23]: True
>
> Could be useful, right?
>
> -jelle
>
>
>
> On Mar 27, 2009, at 8:42 AM, Thomas Paviot wrote:
>
>> Jelle,
>>
>> Had a look on your Topo._loop_topo method. Here is your code:
>>
>> topo_set = set()
>>   while self.topExp.More():
>>      topo_item = topoTypes[topologyType]( self.topExp.Current() )
>>       if topo_item in topo_set:
>>           pass
>>       else:
>>           yield topo_item
>>           topo_set.add(topo_item)
>>       self.topExp.Next()
>>
>>
>> I think that the line 'if topo_item in topo_set' is not safe, ie you 
>> cannot ensure that this item is really in the set. I suggest you 
>> rather use a builtin OCC comparison method like IsEqual or IsSame. 
>> Extracted from TopoDS_Shape.hxx:
>>
>> """
>> The IsEqual() method returns True if two shapes are equal, i.e. if 
>> they share the same TShape with the same Locations and Orientations.
>> """
>>
>> """
>> The IsSame() method returns True if two shapes are same, i.e. if they 
>> share the same TShape with the same Locations. *Orientations may differ*
>> """
>>
>> Here is a fix to your script (that uses IsEqual). You can see that 
>> the output is different. Did'nt try the IsSame() method.
>>
>> topo_set = set()
>>       while self.topExp.More():
>>           topo_item = topoTypes[topologyType](self.topExp.Current())
>>           #
>>           # Check if already in the set
>>           #
>>           EQUAL = False
>>           for item in topo_set:
>>               if topo_item.IsEqual(item):
>>                   EQUAL = True
>>                   break
>>           if not EQUAL:
>>               yield topo_item
>>               topo_set.add(topo_item)
>>           self.topExp.Next()
>>
>> Cheers,
>>
>> Thomas
>>
>> Jelle Feringa a écrit :
>>> Hi,
>>>
>>> The topology module has been reworked ( OCC.Utils.topology ).
>>> Now its easy to find the faces related to a vertex ( & visa versa ), 
>>> the edges incident to a vertex or a face ( & visa versa ).
>>> Also you can get the ordered edges or vertices from a wire.
>>>
>>> I made a test case showing how to fillet a vertex of a cube.
>>> See the image attached.
>>>
>>> Cheers,
>>>
>>> -jelle
>>>
>>>
>>> ------------------------------------------------------------------------ 
>>>
>>>
>>>
>>>
>>>
>>>
>>>
>>> ------------------------------------------------------------------------ 
>>>
>>>
>>> ------------------------------------------------------------------------ 
>>>
>>>
>>> _______________________________________________
>>> 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