Forum Replies Created
-
AuthorPosts
-
Keith
KeymasterYes, an update of the server's PHP version has caused date()/mktime() errors. This will be fixed in the near future. Apologies in the meantime.
Keith
KeymasterYes the enclosure checks use opposite edges – geomEnclose2 already does this.
Keith
KeymasterMin and max area rules are in microns squared. If the docs say otherwise then they will be corrected…
Keith
KeymasterThe Python interface is nearly done, just have to do the multi enclosure check, which is a variant of the existing conditional enclosure check. Hopefully will be finished and tested by 17/4/16.
The interface code recognises rules like this:
out_layer = geomAllowedEncs(layer1, layer2, 10,10,4],[2,28,2],[0,32,2, message)
The rule triplets are of the form [enc1, enc2, max_num_enc1] where enc1 is the smaller enclosure, enc2 is the larger enclosure, and max_num_enc1 is the maximum number of edges that can have the smaller enclosure.
Another question though: is the 'default' rule of 10nm enclosure on all 4 edges an absolute rule, or is it the minimum? i.e. if you have an enclosure of say 20nm on all sides, should this fail?
Keith
KeymasterYou need to OR the two flags together.
Keith
KeymasterNot at present. It could probably be done though. I'll see how much is involved.
Keith
KeymasterThe optional message has also been added to geomAllowedWidths() now.
Keith
KeymasterOK so some more questions:
1. For the multiple enclosure rule, is it a general case that there is e.g. a larger rule for 2 sides and a smaller rule for the other two sides (28 on 2 sides, 2 on other 2)? Or can the number of sides with larger/smaller rule be other than 2?
2. The example has 1 default rule (10nm all sides) plus 2 other rules (28/2 and 32/0). Can there be e.g. 1 default rule and 1 or more other rules? Or no default rule and 1 or more other rules?
Is this type of rule only for enclosure?
Keith
KeymasterThe geomAllowedWidths issue is fixed in 4.4.67. It now correctly obeys the 'horizontal' and 'vertical' flags:
horizontal: tracks running horizontally only are considered. More precisely, the width of objects with two projecting horizontal edges is checked.
vertical: tracks running vertically only are considered. The width of objects with two projecting vertical edges is checked.
none: the minimum width of objects is checked.
Keith
KeymasterIf you want the shape to be exactly 0.064 x 0.064 then use the following:
geomArea(layer, 0.004096, 0.004096)
geomWidth(layer, 0.064)The first flags any shapes that have area smaller or bigger than 0.064 x 0.064.
The second traps shapes where one edge is > 0.064 and one < 0.064 but the area passes the first check.I will have a look as to why geomAllowedWidths() should treat width/height differently. As with no flags, w/h = 0.064 and h/w = 0.065 should pass.
Keith
KeymasterThe issue is that it's seeing the 0.064 as being a valid width and hence the shape passes the rule.
What should it do if there was a track of say width = 0.064 and height 0.100?
Only thing you can do is use the horizontal/vertical flags to differentiate width and height.
About the comment/message, this is a limitation of the way the function is wrapped in Python. I hope to resolve this at some point.
Keith
KeymasterIn 4.4.67 I will add the following. If p is a polygon, then
pt = p[0]
will return the Point at index 0 etc.
p[0].x
gives the x coord at index 0
Keith
KeymasterHmm, this could be improved. Given a polygon p,
pl = p.ptlist()
pts = pointList(pl, p.nPoints())
x0 = pts.at(0).x
y0 = pts.at(0).yetc
I'll see if I can make it a bit more easy in Python so ptlist() returns a Python list.
Keith
KeymasterOK I see what you are trying to do.
It is not trivial so may take a little while to get a fully tested implementation.
Keith
KeymasterIt will be in 4.4.67 to be released on 10th April
-
AuthorPosts