Matthias

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

About

Username
Matthias
Joined
Visits
1,515
Last Active
Roles
Member

Comments

  • Hi Lou, to be frank, the LIBNAME property has not received much attention so far. It's a single (and somewhat limited) property. There is no such feature in OASIS and other formats, so it did not make it into the layout attributes. It's not even pr…
  • Hello, no, no need to recompile. You'll find a lot of documentation about using and writing scripts here: http://www.klayout.de/doc/programming/index.html. Matthias
  • Hi, I see your point. I'll try to fix that in the next minor version. I should not be a big issue. Here is a script to disable some save functions: mw = RBA::Application::instance.main_windowmenu = mw.menumenu.action("file_menu.save").v…
  • Hi Thomas, In general cells (or PCell's) can be instantiated from within PCell's. But creating them would result in a pretty mess. Basically, the tool needs to be able to track the PCell variants and remove unused ones. Without telling which cell b…
  • Hi mprott, you're right, the klayout_vo.exe magically lost it's "viewer only" properties ... I'll fix that in the next minor release. Since that is I have not considered "save" a "modifying" operation, so it's there i…
  • Hi, I think that request is feasible, but to be frank, I have neglected the bookmark feature somewhat, so there is not quite a lot support for it. Specifically there is no command line option for that feature right now. The reason is that there are…
  • Hi Thomas, I did not intend to scare you with my comment about PCell's ... :-) What I wanted to say is that if you have a PCell and you want to detect duplicates that might mean you can test their PCell parameters to check whether they are identic…
  • Hi Elias, You can turn a Shapes container into a Shape array with a loop: shape_array = [] # will become and array of Shape objectsshapes = ... # a Shapes objectshapes.each { |s| shape_array << s } But this is not really efficient…
  • Hi Thomas, I missed the part about PCell's - this will complicate things since maintaining their instances is more tricky. Are your duplicates PCell actually instance duplicates? Regarding the $ suffixes: they are created when KLayout encounters i…
  • Hi David, thanks for this hint. Sorry again for messing things up ... Matthias
  • Hi, I'm afraid the font is really just an index ... I see some issues when a new font is added to the system. In that case, it's not guaranteed that the font will be added to the end and the indexes will shift. So what I am going to do is to add a…
  • Hi Thomas, basically copying the parameters should not be required. Your code is basically identical to the one I have given above (apart from the way you iterate arrays and the way you find the parent instances). Just replacing the cell_index sho…
  • Hi Thomas, sure it's accessible somewhere: you'll find the C++ code in layLayoutView.cc, method LayoutView::cm_cell_replace. You'll just need to translate it to Ruby ... Or use this sample: # this sample will replace all instances of cell "A…
  • Hi Thomas, I'm afraid you can't just replace one cell by another. But you can walk through all parents of the fell you want to replace and using Cell#each_parent_inst and identify the instances with ParentInstArray#child_inst. You can then use Inst…
  • Hi, /tmp/... ist probably the path where the build was made. That path is compiled in to indicate the location of the issue. The location indicates that the problem happens when a Qt object is prepared for use within a script. While this is done, …
  • Hi, you're right, the line was missing (lost in copy/paste) - I have edited the samples accordingly. Thanks for mentioning this. But I don't see your point. What's the problem? The documentation clearly says EdgeProcessor#simple_merge_p2p takes an…
  • Hi Canny, Without Qt binding support the Qt classes such as QDialog are not available. Please build again with -with-qtbinding. Matthias
  • Hi David, no worries - I really appreciate your contributions! :-) But did I really chose the font index for the parameter? I'm a bit scared now since what will happen if someone installs a third font which inserts itself between 0 and 1? I'll h…
  • Hi, I don't see an issue with the solution you proposed. Here is a working example: import pyapts = []pts.append(pya.Point(-1000, 300))pts.append(pya.Point(-300, 1000))pts.append(pya.Point(300, 1000))pts.append(pya.Point(1000, 300))pts.append(pya…
  • Hi all, If you want to avoid turning a full layer into polygons, you can select the shapes you want to join and use "Edit/Selection/Merge" to merge just these shapes. Any non-selected shapes won't be touched. In general, "merging&qu…
  • Hi Canny, I guess you have built KLayout without Qt binding support, right? If you build KLayout yourself (on Linux), you'll need to add --with-qtbinding to enable it. I admit this option should be default, but it will increase build times conside…
  • You guessed right, I saw it upcoming :-) I got used to using destroy a little myself. Not out of necessity, but mainly because if there are issues connected to that, those will pop up then rather than being triggered at some arbitrary point in time…
  • Hi David, The problem is easy to solve if you give the BrowserDialog a parent which is the dialog you call it from. Then there is a strict hierarchy of widgets and the priority is defined properly. Unfortunately there is no parent argument to the …
  • Hi all, @David: once again thanks for taking care of Canny's question. Please try the 0.24.1 which I have released yesterday. That should fix the problem too. The "dup" workaround still works but it should not be required and longer. Sor…
  • Hello, in order to do JDV you'd need a way to convert MALY to GDS/OAS, right? The other way involves trapezoid decomposition and maybe more advanced operations. That is not a straightforward task. Usually that's what your mask shop does. Conversi…
  • Hello, thanks for reporting that problem. That's a bug I'd say. I shall fix that in the next minor release. Thanks, Matthias
  • Hi, well, you can basically convert the sample into Ruby, but I doubt that you would like to do this. It's a big effort and frankly I have some doubts whether that will be successful in terms of functionality required and performance. I had a simi…
  • Hi Andski, you mean as an engine or as a UI component? Both options are not available right now, but I was asked several times already whether it's possible to export the features of KLayout rather than integrating a scripting engine into KLayout.…
  • Hi phil and David, the array resolution should be x = x0 + a.x*i + b.x*jy = y0 + a.y*i + b.y*j because a is the vector which forms the "a" axis and b is the vector which forms the "b" axis. Thanks, Matthias
  • Hi all, @David: thanks again for providing the script :-) The manual way is to use File/Import/Other File into Current. There are multiple options available and the feature is documented here: http://klayout.de/doc/manual/import_layout.html. The …