Hi Jim,
you can use master or any other branch, but without warranty.
The usual approach (and the one favoured by GitHub) is: features are developed in branches. When they are considered stable enough they are integrated into the master (pull request). Hence the master is kind of "latest greatest", but with a certain risk of being spoiled. There are also forks from other user with their own masters and branches. Don't confuse them with the ones from the KLayout project.
But eventually, when the master is considered to have a sufficient quality, a release is made by creating a release tag (https://github.com/KLayout/klayout/releases). A release is a snapshot which is then turned into Windows binaries, Linux packages, PyPI wheels etc. This this is a lengthy process and I don't want to do this too often.
Matthias
Hi Jean,
To move a shape that you have already drawn, use the "move" mode. Select this mode, pick the shape you want to move and drop it at the desired location.
To resize a box, use the "Partial mode". This lets you select a c…
Just a note from my side: in the upcoming 0.22 version there will be a way to flip/rotate just the view - that is, the layout is shown flipped for example, but the file itself will not change.
Maybe that will be helpful in certain applications, for…
Hi Ken,
sorry of the late answer.
For b.): you're right. This will set the dabase layer name accordingly and then it's shown in the layer list.
For a.): I don't think there is a straightforware solution currently. If I understand you correctly, y…
Hi Ken,
That is actually possible. Here is a simple solution:
Change the constructor of the XSectionGenerator object (around line 490 of the script), so you can supply a file path
# The main class that creates a cross-section fileclass XSectionGe…
Hallo,
Thank you for that nice feedback :-)
I'll put the status bar request on top of my TODO stack as well, but it grows from day to day, so I can't tell when to deliver it.
Best regards,
Matthias
Hi,
I'll put the scaling function on my TODO list, but it has grown pretty long now. So I can't promise such a function soon.
If you want to scale a layout in code, here is a sample:
ly = ... # layout to scalenew_dbu = ... # new database unit# co…
Hi chhung,
the easiest solution is to flatten the layout. After that there is no hierarchy and the text coordinates should correspond to the coordinates as seen from the top cell. But that modifies the layout and bloats up you data potentially.
A …
Hi chhung,
first, I'd apply the changes suggested above. I'd also suggest to use Layout#each_cell to iterate over all cells and test for shape.is_text? before using shape.text.
But the reason for the problem appears to be something different. I su…
Hello,
well, doing it properly and efficient simply requires a couple of lines of code ... :-)
Basically, KLayout is an application, not a library. It's build on some kind of framework which you could reuse (given you observe the implications of t…
Hi Stefan,
I guess you use "Delete cell" from the cell tree. This operation deletes the cell as a whole (and in consequence of that all instances of it).
To delete a specific instance, reduce the hierarchy levels such that the instance y…
Hi chhung,
I guess the problem is caused because when you multiply a Point object with a double value (the DBU), it still stays an integer coordinate point object.
For example:
RBA::Point.new(100,200)*0.1 -> RBA::Point(10,20)
But:
RBA::Point…
Hi David,
Given the latest KLayout version, a CIF circle is converted to a single-point round-ended GDS path or to a OASIS circle object. You can check that by double-clicking at such a circle. The properties of that circle should show a path with …
Hi Jisha,
I'd suggest you create a patch with your changes. That should simplify the task of applying your changes to KLayout's current code base.
One (elaborate) way of doing so is for example to employ the Subversion configuration management sys…
Hi Jisha,
I'd suggest you create a patch with your changes. That should simplify the task of applying your changes to KLayout's current code base.
Best regards,
Matthias
Hi David,
this is a job for the layer processing framework http://www.klayout.de/useful_scripts.html#layer_proc.rbm. The ruby module itself contains some documentation about how to write processing scripts.
Although it is intended as an interactiv…
Hello,
right now the easiest way to convert a layout to a different database unit is to write it to a temporary file and use the options provided by the '''writer''' to scale the layout:
ly = ... # layout to writenew_dbu = ... # new database unit …
Hi footang,
Thank you for that suggestion. Actually I figured that the path might be pretty long, so it won't display in the limited space of the status bar.
If you double click the item and choose "Instantiation" in the properties dialo…
Hi Canny,
I think the problem is caused because not every integer between 0 and l3.cells might be a valid cell index. The program should not segmentation fault, but I can't exclude that in every case.
To find the cell called "TOP" better…
Hallo,
right now it is not possible to modify built-in dialogs in Ruby. Or at least not to the extent you wish that to happen. Under certain circumstances you might be able use qt4ruby for that purpose but I that's a stony path to walk ..
If you …
Hi Canny,
unfortunately not all functions are available as script methods. One of them is "adjust origin". Since it is more like a "beautification" of a cell, I did not consider it work making a script method out of that.
Howev…
Hi Canny,
Ok, given that requirement the script looks somewhat different
## This program is free software; you can redistribute it and/or modify# it under the terms of the GNU General Public License as published by# the Free Software Foundation; e…
Hallo,
you can move an instance when it's shown as a box. Decrease the hierarchy level until the instance is shown as a box instead of the detailed view. Then you can pick the box as any other object and move/delete/rotate the instance.
Regarding …
Apparently it does not have to do with the linking mode, but they dropped the "." in Ruby 1.9.2. Here is a discussion thread about that: http://stackoverflow.com/questions/4965556/why-isnt-current-directory-on-my-ruby-path.
The solution a…
Hi Stefan,
thanks for the hint regarding statically linked ruby. I did not know that it behaves differently compared to the dynamically linked one.
Best regards,
Matthias
Hi David,
thanks for that hint. I just copied and pasted my command line, but of course the binary usually is located in the path. I already edited my comment.
Matthias
Hi chhung,
your script is missing a tiny but important detail: the "if" inside the "lsrc.each_cell_bottom_up do |cisrc| ..." loop is missing.
See my code above:
# Now process all (but only these) cells which are part of that …
Hallo David,
there may be numerous reasons why the script is not working which I can't figure out without details.
However the the CIF->GDS conversion there is a simple solution if you work on Linux: if you build KLayout, it will create a coupl…
Hi chunng,
the problem is caused by the test for the cell name:
lsrc.each_cell_bottom_up do |cisrc| if lsrc.cell_name(cisrc) == srccellname ... endend
is not confining the copy to a subtree. Instead it will only select the cell with srccell…