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 William,
PluginRoot is an interface implemented by MainWindow, but it's not exposed as a base class of MainWindow. So that may explain this duality. MainWindow is a superset of plugin root, so that should not hurt. But maybe it's possible to red…
Hi Erwin,
thanks for answering, and I'm a bit sorry I have to correct you ...
By "in units of 90 degree" I meant that 0 = 0, 1 = 90, 2 = 180 and 3 = 270. Maybe the description is kind of misleading.
So 270 degree are actually:
pya.Tran…
Hi mikamar,
please use 0.25.x which has this issue fixed. It's not related to Qt5 or 4, it's a problem in 0.24.x.
And once you start using 0.25.x (0.25.4 is fine, but 0.25.5 is better), you should use the symbolic constants like you would do in C+…
Hi Mikamar,
Since some time now, the Action class does not need to be subclassed to implement a menu function. It's sufficient to use the "on_triggered" callback:
def handler_func(): pya.MessageBox.info("Info", "Menu acti…
Hi Erwin,
the setup.py procedure is still under development and it's a painful process to get all platforms running. Thomas uses his own fork and we're syncing from time to time. I'm usually the one who breaks his MacOS builds with my Windows fixes…
Hi Erwin,
I'm currently building a native PyPI module for Anaconda/Python3.6/MSVC2017. So you may not need WSL.
And yes, there is a dependency on curl, expat and zlib. Setuptools/disutils are very painful to deal with and everyone seems to hack ar…
Hi Mike,
the "fonts" folder is not created by default, but you can create it manually.
On Linux that is:
mkdir ~/.klayout/fonts
On Windows that is
mkdir %HOME%\KLayout\fonts
Matthias
Hello,
could you be a bit specific what code you mean and which classes you'd like to learn more about?
There is not specific "donut" shape type, but it should be fairly simple to create a polygon that represents one.
Matthias
Hi Laurent,
there is also "Edit/Selection/Resolve Arrays" which is resolve the array into single instances. The "create variants" function which Erwin suggested is somewhat smarter however as it tries to maintain partial arrays.…
Hi Erwin,
thanks for trying the new Python module - I hope we can release that soon in some official release.
Regarding your question: unfortunately, currently there is no way to subclass the internal objects of KLayout. Actually, there is no real…
Hi Laurent,
the syntax is:
instances of ...* where (cell.bbox.left == -200 && cell.bbox.right == 1340 && cell_name ~ "SPARE")
-200 is the left coordinate of the bounding box, 1340 the right one etc. All coordinates are g…
Hi Muheng,
In Python this will be
layout = pya.Layout()layout.read("yourfile.gds")cell = layout.cell("qqq")layer = layout.layer(1, 0)if cell.shapes(layer).is_empty(): print("Cell qqq in empty with respect to layer 1/0&quo…
Hi Muheng,
the concept of layers is orthogonal from the cells. So a layer is a property of the layout, not of the cell. By asking the layout for the layers, you cannot exclude cells from the information.
You could analyse your cells for shapes in …
Hi,
checkbox and drop-down menu is already there:
# A checkbox is a boolean value: param(:ab, TypeBoolean, "A bool") # Every parameter can be given a "choice" (a list of description/value pairs). # This will make it becom…
Hi Abdullah,
I'm sorry, but I don't think I can help here.
The function you depict is not a sine, it's rather "sin(x)/x" or something like this. Plus, your code is just partial, so it's lacking the interesting details. It's rather tediou…
Hi Luciano,
this script is for pasting into the macro editor. You can configure it to appear in the menu, so you can run it from there.
For more details about using macros see here: https://www.klayout.de/doc-qt4/programming/introduction.html
Mat…
Hi Theo,
As I understand AppImage, this package solves the distribution issue but not the deployment topic. I still need to support compatibility and provide the build infrastructure.
I'm still hoping to enter pull mode when the package managers p…
Hi,
the snap grid is for drawing - computed shapes currently use the database unit.
An easy way to achieve hard grid snapping is to change the database unit: use "save as" and enter a database unit of 0.05 instead of 0.001. But note that…
This sample was obviously made with the "rounded path" PCell. It can take any path and apply a rounding radius to the corners basically bending the path this way.
Matthias
I'll try to follow up on this, but please don't expect a quick response. Supporting yet another Linux variant is not on my top priority list.
Regards,
Matthias
Hi Oscar,
this question has been asked a couple of times before. It's actually possible, but my view is that is PCell is basically just a piece of code to be called and instantiating a PCell is just a very complicated way to call a function that ge…
Hi,
Apparently it's the STL - clang uses the same STL than gcc.
I can't say why this STL can't digest the KLayout iterators. I've been using many different STL implementations including (recently) the one from Microsoft. No issue so far. Maybe it'…
Hi Steven,
the DRC framework will do this for you:
# takes layer 1, datatype 0 and merges everything into polygons# writes the output to layer 100, 0input(1, 0).merged.output(100, 0)
For more details about DRC see here: https://www.klayout.de/doc…
Hi Yulia,
why do you use "split.collect"? The latter will deliver an enumerator which makes the string saying "#<Enumerator...>".
Just use "$input" for the input file name. That's it.
Matthias
Hi Hai,
thanks again for the explanation. I think I owe some more elaborate description of the corner's angle constraints. Maybe that will make things clearer.
Basically, the algorithms walks along the edge of the polygon in a way that "insid…
Hi Xyan,
You can use "Edit/Selection/Convert to static cell". This will turn a library cell into a normal cell without your layout. After this, you can edit this new cell.
Matthias