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 Theo,
it is actually intended: the program tries to identify a layout file with a technology. When you load it again it will use the same technology than you had before. The reasoning is that if you use multiple technologies, you would like to a…
Hi all,
I understand that you want to position the polygon by entering a numerical position.
There is "Edit/Move By" which will move the selected relative to the current position. I think I could add "Move To" which does the sa…
A brief comment of mine: I'd like to discourage the use of the D-shape types because they inherit the numerical issues involved with floating-point values. Plus you should be aware of potential overflow issues when transforming the double types to i…
Hi David,
Oh yes .. the Qt part of the documentation is a mess.
The reason is that this method is defined by the base class, QAbstractItemView. You'll find it there.
The Qt documentation was intended as a cross-reference. It's generated automatic…
Hi David,
QTreeView and QFileSystemModel are part of QT's model/view framework. In order to use that you'll have to become familiar with that (see for example http://qt-project.org/doc/qt-4.8/model-view-programming.html.
I have no experience with …
Hi David,
I'd suggest to put the core code into a normal .rb file and load or require this file from your .lym's.
The lym files are intended to be top level files. Here the meta information is required, but not for the files you include. The meta …
Hi NMF,
by "assign icon in IDE" you mean in the macro properties, right?
Right now you cannot assign an icon that way. That's because the function was intended to create menu entries.
But that's a nice feature suggestion.
Matthias
Well, sorry for mentioning this simple solution so late .. the "action...trigger" trick is basically just simulating the button click on the "Instance" button. No more and no less. That gives no control over what is happening aft…
Well, that can be done, but it's pretty complex. The recipe is that:
* Define a TCP/IP protocol that is capable of handling the communication you want to implement.
* Implement a TCP/IP server inside KLayout using a Ruby script. This script will li…
Hi all,
I really like what is going on here :-)
I have a suggestion how to enter the instance. Instead of creating the instance at 0,0 you can configure the editor with the requested parameters and enter Instance mode. This code will do this confi…
Ok, but If you want me to help you you'll have to provide a little more information. Just saying there are "build errors" is not sufficient.
First of all, RUBY is not optional unless you disable the respective settings in the project. The…
The Python integration was a snapshot of a fairly stable version. I'll try to provide a new one if possible, but I have to achieve some stability in the development branch first.
Matthias
Hi NMF,
I'm impressed :-)
To be frank, I can't reproduce the problem you had with "Object cannot be copied here in layout::add_pcell_variant in Action::triggered". I don't have your PCell code but I think it's related to that code. Maybe…
Hi Ganesh,
KLayout is not a UI component, if you mean that.
But you can run it as an external executable using "fork" or "system".
Is that what you intend?
Matthias
Hi Johannes,
there is no direct way to achieve this, I'm afraid.
Here is an indirect way:
* Create a new empty cell, for example "FILL"
* Instantiate your layout's top there with 0, 0 (no displacement, no rotation)
* Now create your fil…
Hi David,
thanks for the explanation. That is correct.
Basically the "D" types are provided whenever you do computations in physical space ("micron space"). The layout database uses integer types for compactness and (more impor…
Hi,
there are numerous vectorizers out on the net. If you need a CAD format, you can try online image to DXF translators (google for "image to dxf converter online").
Matthias
Well, that is already the case. I'm just concerned that writing and re-reading will modify the layout since the top level is added to the original cells. From my point of view, a write/read round trip should leave a layout the same as far as possibl…
Hi David,
you're right, the .lydrc is an XML wrapper around the DRC script. "eval_instance" only takes the script's text, not the XML tags.
Regarding the DRC's internals, the DRC engine is not as mystic as it looks. Actually, the DRC scr…
Hi Theo,
I can understand your concerns.
The idea is that the technology is some property assigned to a layout. The technology selector will allow you to change that assignment. Pushing this button says "I want to make this layout use that te…
Hi all,
to wrap that up:
* It is required to add a dummy instance for each top cell on the unnamed top entity. The transformation does not matter. One "Cx" for every top cell is sufficient.
* On reading, these top level calls can be igno…
Hi David,
It's a nice suggestion but it's somewhat contrary to the architecture, where the selected objects are independent and they even do not need to share the same scope - for example, you can has rulers and shapes inside the same selection and…
Hi David,
this is great!
I am terribly sorry I am really, really busy right now and I can't spend time on that. But I'll come back to that ...
Matthias
Hi David,
you're right. It's true that the list is not updated whenever you change something on the layer name, not just resetting the layer name.
The reason is a bit difficult to explain - basically the layer list entry is a "view" whic…
Hi David,
I have not tested that, but it should be possible this way:
engine = DRC::DRCEngine::newfn = "mydrc.lydrc"File.open(fn, "r") do |file| engine.instance_eval(file.read, fn)end
The first argument is the content of the …
Hi David,
That is strange. I just created a tiny sample, and ARC appears in the cell list obtained with layout.each_cell ... It's just that it's called "ARC", not "Basic.Arc(r=...)".
"each_cell" is supposed to deliver…
Hi David,
I'm impressed. I'd like to suggest to finally clear the selection:
begin ...ensure lv.cancel lv.commitend
Otherwise there is a tiny risk of having shapes inside the selection which are no longer valid which may cause a crash of the a…
Hi Theo,
I am still somewhat puzzled. I am trying to figure out what is the input and what is expected.
Maybe a word of caution regarding the layer mapping is in place.
Basically, the layer MAPPING is some kind of filtering on reading. That means…