logo

Thread

logo
the fair gds editor

Introduction
Screenshots
License
Download
Userinterface
Function Index
White Papers
Community
Contact

Use your OpenID:

getopenID

mouse left
no help

Documentation of the macro programming language

by anonymous - 5 Mar 2009, 16:28 CET

Having played around a little with LayoutEditor, I'm very interested in learning more, in particular, about the scripting language.

I've tried to "reverse engineer" the language by recording macros but it is not conducive to learning about how to select elements etc.

I end up with code looking like this:

layout->drawing->point(23333082,42144247);
layout->drawing->cSelect();

which is pretty much useless for generalization.

How can I learn more about this and learn proper methods for scripting (with cells) in LayoutEditor.

Great software by the way!

by Juergen Thies - 5 Mar 2009, 16:50 CET

The scripting language is basicly a C++ code with some additional LayoutEditor spezific classes. A basic introdution can be found here.

Selecting/deselecting is possible via the drawingField class. It is accessible via 'layout->drawing->...[command].

Some other usefull commands are in the class cell. The current displayed cell is accessible via 'layout->drawing->currentCell->...[command].


There are also some example macros with comments shipped with the LayoutEditor.

by anonymous - 22 Jun 2009, 14:59 CEST

Going on from the earlier question ...

What is the canonical way of doing the following:

layout->drawing->point(200, 200);
layout->drawing->point(-200, -200);
layout->drawing->box();
layout->drawing->selectAll();
layout->booleanTool->setA();
layout->drawing->point(0,0);
layout->drawing->point(100,0);
layout->drawing->circle();
// How to specify the right circle?
layout->drawing->cSelect();
layout->booleanTool->setB();
layout->booleanTool->AminusB();

I'd be nice to be able to do this in a less primitive way.

by Juergen Thies - 22 Jun 2009, 15:48 CEST

a more clear way would be:

cell *c=layout->drawing->currentCell;
c->addBox(-200,-200,400,400,105);
point center;
center.set(0,0);
c->addCircle(106,center,100);
layout->booleanTool->addLayerA(105);
layout->booleanTool->addLayerB(106);
layout->booleanTool->aMinusB();

by anonymous - 22 Jun 2009, 16:35 CEST

Many thanks, I will try it out rightaway.


Please log in to post!