I've got an algorithm, which behaves a little strange since I've decided to use my function to perform OR operation on all objects which belongs to one list. The function I'm talking about looks like this:

procedure(or_shapes(cv shape_list)

*prog((ret_shapes)*

* if((length(shape_list)<2)
then*

* ts_ui_warning("ts_or_one_list_ver_2_shape_points"
"Entry list smaller than 2 elements!")*

* return(shape_list)*

* );if*

*ret_shapes=dbLayerOr(cv
lppA shape_list)*

*return(ret_shapes)*

*);prog*

*);procedure*

The lppA is a layer purpose pair which is a defined global. I'm also using an empty CV to perform the operation. From Cadence manual I figured out that this function should perform OR operations on all shapes given on shape_list. What I mean is operation which for overlapping regions of shapes in shape_list returns this overlapping region only once.

And now the usage and the limitations. My algorithm in pseudo code looks something like this:

* in_area=Area(seed)*

* seed=Oversize(seed, k)*

* after_oversize=Area(seed)*

* seed=or_shapes(seed)*

* out_area=Area(seed)*

And now some background. Area(x) returns valid area of she list, which I've checked. In seed at the beginning there are some shapes which do not overlap (I've executed the or_shapes procedure). Oversize(x,k) oversizes all shapes in x by the factor k. And the problem is that the out_area<in_area (after_oversize>in_area), while it shouldn't be. In worst case the out_area should be equal to in_area. Maybe the dbLayerOr function has some limitations, or maybe I'm doing something else wrong. Any suggestions would be much appreciated.