Hi chhung,
First of all, I'd like so suggest a new solution - not based on Ruby but on the "Layout Queries" of "Search & Replace": open "Search & Replace" from the "Edit" menu. Chose the "Custom&…
Hi,
the node icon seems to be kind of hardcoded within Qt. It is style-dependent, so when you chose an explicit style (i.e. add "-style windows" to the command line), the representation changes. Usually the default style is the best one a…
Oh sorry .. that was already a preview to a new version ... :-)
That reminds me of keeping an eye on backward compatibility.
I have edited the code above. Please try again.
Matthias
Hi David,
here is a simple SVG exporter:
class SVGWriter def initialize(file) @file = File.open(file, "w") end def start(w, h) @file.puts(<<"END")<?xml version="1.0" encoding="UTF-8" standa…
Hi Bob,
Anisotropic scaling is not a core feature of KLayout, so I guess you are referring to a script like http://www.klayout.org/svn-public/klayout-resources/trunk/scripts/scale_anisotropic.lym.
You can basically modify the script any way you wa…
Hi,
DXF is all gray area ... there is no format as badly documented as DXF.
I could reproduce the problem, but frankly I am not really in a mood to debug Inkscape's importer. I am able to read my DXF files into SolidWorks, AutoDesk's TrueView and …
Hi,
thanks for that nicely prepared testcase.
The solution is quite simple: the true parameters are not "radius" .. but "actual_radius" etc. The working code is:
...circ_params = { "layer" => layer, "actual_r…
Hi simg,
KLayout has the concept of a "technology setup" which allows associating a layout with some "technology". A "technology" is basically a set of settings for specific purposes. For example, the net tracer requir…
Hi jakub,
please make sure you are using the latest version.
If the problem still exists, I'd ask you to send a simple test case (GDS file with a description how to reproduce the bug) to the mail address on the contact page. The effect you describ…
Hi Chris,
Windows is entirely different from Linux - on Windows, a program needs to be compiled as a console application in order to show stdout or stderr on the screen. Being a GUI application, KLayout isn't. Which explains the behaviour.
You'll …
Hi Canny,
I did not know property names with blanks are valid.
That means, the last blank will separate the value from the property name, right?
Matthias
Hi werk,
A boolean operation returns a layer object and that is never false in Ruby. The method to test whether a layer is empty is is_empty?. So this should work:
if !(l1.input(l, d) ^ l2.input(l, d)).is_empty? ...end
Another remark: please don…
Hi Vikas,
The code is hard to read since it lacks the indents (hint: use four blanks in front of each line that are supposed to be formatted as code).
But basically the code is quite good. You just need to add the following:
1.) To get the layer …
Hi,
KLayout utilizes Python as a built-in engine, not vice versa. Taking out the core features into an external library is possible technically, but that will require a license switch from GPL to LGPL. I don't have the resources for this step - spe…
Hi,
You did not mention DXF. That would have clarified things.
There are multiple reader options in KLayout which control the DXF reader's behaviour. Unlike DXF, GDS and OASIS are meant for representing physical mask data. These formats only featu…
Hi Vikas,
please see my mail. Here is my reply for others:
The RecursiveShapeIterator does not have a feature to access the instantiation path, although internally this information is available. You have access to the combined transformation along…
Hi,
very good :-)
That is exactly the preferred solution (instead of xor you can write a ^ b). The Region object is a newer one that shields you from the trouble with the edge processor and similar things.
Matthias
Hi Takeshi,
if your case is simple and you have a layout containing a single cell, the solution will be Layout#transform(trans) where trans is an ICplxTrans object with a magnification.
If your cell calls sub-cells there will be multiple solutions…
Hi Christian,
thanks for this nice feedback :-)
The Basic.TEXT PCell already has a "inverse" option. With this option, the text will be "holes". Did you try this option? It's available below the "magnification".
Rega…
Hi Olivier,
LEF/DEF is undergoing some development and there are flavours out there which may behave differently. Without a testcase I can't give any advise. I am not aware of renaming vias so I cannot tell whether this is the reason.
The usual ap…
Hi Allon,
which version are you using? Version 0.24.3 and before had a bug that rendered inverted boxes when sizing down layers containing a single box.
Newer versions should not exhibit this problem. If you still see this issue, you can send a te…
Hi,
There are basically two kind of layers: edge and polygon layers. You can ask a layer for it's type using polygon?. This method will return true if the layer is of polygon type. You can use this method in an if statement for example to perform d…
Hi,
There is another Matthias around but it's not me :-)
I had some trouble getting the code to work without the indents but I guess I got the idea.
The code contains some bugs and here is my version. It requires KLayout 0.24.x or later. The main…
Hi,
There is no "write only top level cell without subcells" option currently, but you can emulate this feature.
To do so, expand the tree of your top level cell so you see the child cells. Select all child cells in the cell tree and sel…
Hi Allon,
1.) A plugin can register and act on menu entries. You can basically grab the mouse in such a handler and act on mouse events. Is that what you are looking for?
2.) If you go for the solution of 1.) you can decide yourself when the plugi…
Hi Mike,
no sorry - I did not pursue this thread much further. Decomposition into parts is available but I don't know the requirements of FastCap. I understood this is tessellation and not just decomposition. I assume that a dumb trapezoid decompos…
Hi Thomas,
what do you mean by "shape coordinates"?
Like the polygon points:
shape.polygon.each_point_hull { |p| ... }
Or the bounding box center:
shape.bbox.center
Matthias
Hi Lukas,
Maybe here is a script which does what you want: it will selected paths and join them by concatenating the segments. I guess handling of end and start extensions and redundant points is missing but it may serve as a staring point:
mw = R…
Hi Dave,
as discussed before, opening the progress reporting API to Ruby code has severe implications. Which is why I am not considering this option right now.
But I think that the proposed solution is helpful in your case - if any user interface …