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