**********************************
Welcome to gdsCAD's documentation!
**********************************
Introduction
============
gdsCAD is a simple, but powerful, Python package for creating, reading, and
manipulating GDSII layout files. It's suitable for scripting and interactive
use. It excels particularly in generating designs with multiple incrementally
adjusted objects. gdsCAD uses matplotlib to visualize everything from individual
geometry primitives to the entire layout.
Gallery
=======
.. image:: /Gallery.png
:target: examples.html
A Simple Example
================
.. currentmodule:: gdsCAD.core
Here is a simple example that shows the creation of some text with alignment
features. It involves the creation of drawing geometry, :class:`Cell`\ s and
a :class:`Layout`\ . The result is saved as a GDSII file, and also displayed
to the screen::
import os.path
from gdsCAD import *
# Create some things to draw:
amarks = templates.AlignmentMarks(('A', 'C'), (1,2))
text = shapes.Label('Hello\nworld!', 200, (0, 0))
box = shapes.Box((-500, -400), (1500, 400), 10, layer=2)
# Create a Cell to hold the objects
cell = core.Cell('EXAMPLE')
cell.add([text, box])
cell.add(amarks, origin=(-200, 0))
cell.add(amarks, origin=(1200, 0))
# Create two copies of the Cell
top = core.Cell('TOP')
cell_array = core.CellArray(cell, 1, 2, (0, 850))
top.add(cell_array)
# Add the copied cell to a Layout and save
layout = core.Layout('LIBRARY')
layout.add(top)
layout.save('output.gds')
layout.show()
.. plot::
import os.path
from gdsCAD import *
# Create some things to draw:
amarks = templates.AlignmentMarks(['A', 'C'], [1,2])
text = shapes.Label('Hello\nworld!', 200, (0, 0))
box = shapes.Box((-500, -400), (1500, 400), 8, layer=2)
# Create a Cell to hold the objects
cell = core.Cell('EXAMPLE')
cell.add([text, box])
cell.add(amarks, origin=(-200, 0))
cell.add(amarks, origin=(1200, 0))
# Create two copies of the Cell
top = core.Cell('TOP')
cell_array = core.CellArray(cell, 1, 2, (0, 850))
top.add(cell_array)
# Add the copied cell to a Layout and save
layout = core.Layout('LIBRARY')
layout.add(top)
layout.save('output.gds')
layout.show()
Contents
========
.. toctree::
:maxdepth: 2
userguide.rst
examples.rst
api/api.rst
versions.rst
Installation
============
1. Start by getting a working version of `Python `_.
For Windows users this is most easily done by installing one of the major
scientific distributions:
* `Canopy `_\
* `Python (x,y) `_\
* `Anaconda `_
#. gdsCAD has the following mandatory dependency (it's installed as standard by
most scientific distributions (Canopy, Anaconda, Python(x,y)):
* `numpy `_
For visualizing objects these packages are also required:
* `matplotlib `_
* `shapely `_
* `descartes `_
DXF import requires:
* `dxfgrabber `_
#. Download gdsCAD from `PyPi `_
#. Unzip the package and run ``python setup.py install`` from the command line.
#. Start Python and type ``import gdsCAD``. If you don't recieve any import
warnings then you're ready to go.
Getting Started
===============
Once you have ``gdsCAD`` installed, start by reading the :doc:`userguide`
and reviewing the :doc:`examples`. More advanced use will benefit from referring
to the :doc:`api/api`.
License
=======
gdsCAD is free software: you can redistribute it and/or modify
it under the terms of the GNU General Public License as published by
the Free Software Foundation, either version 3 of the License, or
(at your option) any later version.
This program is distributed in the hope that it will be useful,
but WITHOUT ANY WARRANTY; without even the implied warranty of
MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
GNU General Public License for more details.
You should have received a copy of the GNU General Public License
along with this program. If not, see .
Indices and tables
==================
* :ref:`genindex`
* :ref:`modindex`
* :ref:`search`