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 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…
Have you guys decided on curing my little Facebook blues (aka "How to search objects and work with them")???
Well, you have been successful ... :-)
I'll follow up on this, but I have to get some sleep now. See you tomorrow.
Matthias
Hi Simcha,
Are you sure?
My understanding is that the highest level is a unnamed entity and there is no equivalent in GDS, so there is no way to populate that space. In GDS, everything is inside cells and cells do not need to be called. So basical…
Thanks for cheering me up ... :-)
I'm not taking the Facebook thing too seriously to be honest.
The background was actually a different one: I don't have a real metrics about the impact of this project. I have some idea about the number of downloa…
Hi Mark,
thanks for this feedback and for mentioning the compatibility issue.
However, backward compatibility was not the initial design goal of the .lyp format. The 0.22.x version was not ignoring unknown keywords, so it chokes on the new "v…
Hi Itamar,
well, Ruby is basically slower than C++ code (which the query is).
But I think there is some room for improvement here: have you tried to use @text_array.push rather than setting the nth member?
Matthias