Hallo,
the easiest way to do so is by binding a macro to a toolbar button. Open the macro's properties and enter a toolbar menu path into the "Menu path" edit box. This will usually be "@toolbar.end" which means a new tool butto…
Hi Loren,
here is the basic code:
view = RBA::Application.instance.main_window.current_viewimage = RBA::Image::new("/home/matthias/Pictures/IMAGE.JPG")# TODO: set image.trans to establish a pixel-to-layout space conversionview.insert_ima…
Hi Tiboy,
I don't see the difference between a ruler and your request. when you pick a point and drag a ruler, the relative coordinates will be shown in the status bar. And snapping to objects is provided too.
What is inconvenient with the ruler?
…
Hi Dean,
the Cadence binary format is closed and not open to the public. Technically, it's possible to access the data through the ITK library or the OpenAccess API. Both are not open source - the ITK is a licensed feature and OpenAccess is availab…
Hallo,
I guess "mrubyioroy" is the one who built the KLayout binary you are using. The paths where he (or she?) did so are compiled-in so they are visible to you in that specific case.
The error message is a bad one and not specific. Bas…
Hi,
Thanks :-)
Well, but it's not quite that Cadence-like to copy all concepts.
First of all, a layout file is a library by itself in the sense that it can contain cells which you can use inside other cells. So if you create a file with "new…
Hi Dean,
that expression is ugly, right :-)
My suggestion is to decompose it into binary expressions:
l1 = NN NOT GPl2 = l1 AND OLl3 = l2 AND NWl4 = l3 SIZING 0.15l5 = NOT NWl6 = l5 SIZING 0.25l7 = l4 AND l6l8 = l7 OR l1l9 = l8 SIZING 0.20l10 = l…
Hi,
first of all, I'd add 'include RBA' after the module command. That includes the RBA namespace and makes the classes (Point, Path) known to your module. You can also write "RBA::Point" or "RBA::Path" instead.
Next, you'll ha…
Hi Ha,
well, renaming a cell does what it's supposed to ... It changes the name of the cell. Instances are not made by name, they are made by cell index.
If you want to make instances point to another cell, you have to use code like this
layout_c…
Hi,
there is no build-in function for that, but it's possible to code that in a script.
The "Useful script samples" may serve as a starting point (http://www.klayout.de/useful_scripts.html#calc_area_hier.rbm).
Matthias
Hi David,
there is a good reason for separating GDS layer/datatype and layer index - there is not necessarily a correspondence between both. Layers can be temporary (no GDS layer), there are file formats without layer numbers, just names (CIF, DXF)…
Hi David,
you can find the C++ PCell code in the "libBasic*" files. Each PCell has a .h and .cc file and the name corresponds to the PCell. But as I mentioned, I currently don't advertise this method of creating PCell's, because I don't w…
Hi Michael,
from your description I guess the array of cells got expanded into many identical cells. This can happen if you select all shapes from the array and create variants - KLayout will assume you want to edit every individual instance and cr…
Hi David,
I got some time now ...
Having a layer= method actually is a good suggestion. It's the OO style of thinking - but behind the scenes that method has to be mapped to code very similar to the one you presented above.
But your code does not…
Hi David,
it's basically quite simple - you have to apply the relevant transformations. It's easy if you choose to output the results to the current cell, because then the transformation is readily available through ObjectInstPath#trans as a CplxTr…
Here's one more comment:
The boolean operations are available with EdgeProcessor#boolean_p2p:
# "not" aka "erase":edge.boolean_p2p([ polygon_1 ], [ polygon_2 ], EdgeProcessor::ModeANotB, false, false)# "xor" aka "…
Hi David,
again, please be patient. I'll need some days to comment on this. Acually I am on vacation and my laptop's battery is running low ... :-)
Matthias
Hi David,
Right now that is somewhat tedious, but the next release will contain a DRC feature which among other checks includes a "strange polygon" check that detects self-intersecting polygons.
Matthias
Hi David,
the "module" is just a namespace, not a function that you can call. You can do the following:
File1.rb:module Test def Test.foo puts "Inside foo" endendFile2.lym:load "File1.rb"module Test puts "…
Hi jeak,
Is that circle made with a circle PCell? I don't think so - in that case it's a plain polygon and when you double click, all you will get is the list of coordinates. Or in other words, it's not a circle.
Or is it something else? When read…
Hi Hannes,
the object you'll have to insert is a CellInstArray object (this represents single as well as array instances or SREF/AREF's in GDS slang). This object takes a cell index which you can object from the top cell's Cell object with Cell#cel…
Hi Laurent,
thank you for the remark :-)
I'd like to add that it is possible to create images with Ruby scripts - that requires some learning but is probably the most efficient way to solve that problem.
Matthias
Hi jeak,
I can just guess what you mean by that question. If you mean the CIRCLE PCell: the center of the circle is the instantiation point of the PCell.
Matthias
Hi Hannes,
if you want to import the original top cell as an instance you'll have to create an instance of the new top cell rather than to import the instances of the child cells of the original top cell (that is what you do).
The corresponding co…
Hi OkGuy,
Right now it is not possible to specify input in that way. You can map input layers when reading (layer mapping table in the reader options - see http://www.klayout.de/doc/about/layer_mapping.html). That means you can map datatype 1-255 t…
Hi Laurent,
I am sorry, but I don't understand the question. The connectivity layers are stored inside the technology setup. You can export or import technology setups, if that is what you mean. Please see http://klayout.de/doc/about/technology_man…
Hi hman,
if you produce a snapshot with the "File/Snapshot" function, the scale is included if it is enabled in the view.
Maybe she does not have the scale enabled? Or are you using some script to produce the snapshots?
Matthias