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
Some looong time ago I coded some script which turned a Cadence schematic view into a Calibre rule deck.
The idea is to use schematic symbols to represent operations: there is a WIDTH check operation (with options), and AND, OR, NOT and various oth…
I wish I had ...
I am considering the code a special option inside the enclosure check. I think that is basically the most efficient way. I'm just wondering how much variations there are and how flexible such an option has to be.
Best regards,
Ma…
Hi dsenuka,
what's the platform you're on? If it's Windows 64bit, you can manually install pandas using this recipe: https://www.klayout.de/forum/discussion/1645/pandas-library-for-windows#latest
Matthias
I can't confirm this. I'm using "Save As" myself hundred times a day without issues along with many other users.
What exactly are you doing? And whats the platform you're on?
Matthias
Hi Laurent,
sorry for getting back so late.
"Trans.R90" does not work for some reason (that would actually be intuitive). But this works:
with texts from cells * where shape.text_string ~ "D<*>" do shape.text_rot = 1
He…
Hi,
I pushed the corresponding feature to 0.26.8 and it's released already.
Solution:
The solution consists of two methods: Cellmapping#for_multi_cells_full will create the target structure and prepare a mapping table and Layout#copy_tree_shapes …
Hi,
Maybe you need to explain what's the expected outcome.
I rebuilt your sample (file attached) and with the script above I get this result:
(Image)
which looks perfectly fine to me. According to your description only the rightmost one violate…
@jannek Works perfectly (I mean: crashes) :)
Thanks a lot for spending your time on providing this sample code! This helps a lot for debugging the issue (and providing a solution I hope).
I had to apply a small modification as "cell_view"…
@Ryan354,
I'm sorry, but I don't really understand the problem.
I guess you mean the following: if you import two cells using "copy_tree" in two different calls, the same subcell will appear twice in the target layout. You want to avoid …
Hi Scott,
that's easy. Just instantiate the new cells into a new top cell:
# needs to go before the "write"clip_top = clip_layout.create_cell("CLIP")for cc in clip_cells: clip_top.insert(pya.CellInstArray(cc, pya.Trans()))
Re…
Sorry, I don't understand the question.
I think you mean RubyMine IDE. But I assume you're using a standalone tool and it's not connected to KLayout. So I can only say how you manage memory within KLayout's process, not what RubyMine does internall…
I agree with the previous comment - once a hierarchy is lost, it can hardy be recovered. A cell hierarchy is typically a logical composition - based on devices or library cells.
You did not give details about the kind of mask you're trying to regen…
Hi Scott,
you gave me some headache before I found the problem :)
Here is the explanation: the box coordinates are actually left, bottom, right, top. So the list should be:
bblist = [ # Left, Bottom, Right, Top pya.Box.new(0, 0, 1000, 1000), p…
Hi Giovanni,
here is some code which demonstrates how to use the "ObjectInstPath" object you're looking for:
# Gets the current layout viewlv = pya.LayoutView.current()for object_path in lv.each_object_selected(): # We are looking for …
Sorry, I don't understand. DRC isn't based on conditionals. It's based on layers as collections of geometrical objects.
What's exactly your application?
Hi,
I like the second proposal of Eugene.
You can basically capture the events which indicated a new layout, but there is also the option to add a layout to a view which you also have to consider (with what consequences I don't know). If you want …
Hi Scott,
You can try this DRC script:
# files, layer, datatype[ [ "a.gds", 1, 0 ], [ "b.gds", 2, 0 ],..].each do |file,layer,datatype| source(file) input(layer, datatype).output(layer, datatype)end
However, this script wil…
Hi Thomas,
I'm afraid that XSection has reached the very limits of what is possible within this simple scheme. The topics you mention IMHO would require some simulation tool based on physical models for diffusion, etch and deposition. The simple po…
You can create markers for everything above 1.5µm by sizing down by 0.75µm. Checking if everything is above 1µm is a simple width statement:
geo = ... input layergeo.size(-1.5.um / 2).output("Markers for geo > 1.5µm")geo.width(1.0.um).…
Hi Eugene,
Thanks for you perfect test cases. It's very helpful for me to understand your problem.
Usually you don't need to use setHeaderItem. Your second approach is perfectly valid.
The first approach does not work for two reasons - one due to…
Hi Eugene,
For "show()" is pretty difficult to use "_destroy". When your dialog is opened and you re-run the macro, this is probably crash the application or cause weird effects.
The issue is only there for debugging and develo…
Hi Eugene,
thanks for your code. I understand what you mean now.
First of all, I'd suggest a small enhancement:
def qtimer_test(): main_window = pya.Application.instance().main_window() dialog = QTimer_Test_Dialog(main_window) dialog.exe…