Skip to content

Instantly share code, notes, and snippets.

@nmz787
nmz787 / open_source_cad_layerprops_converter.py
Last active January 27, 2023 07:47
converts a CSV to klayout, GDS3D, or Calibre layer-property files.
'''
usage:
open_source_layerprops_converter.py /path/to/num_to_names.csv /path/to/output/layerprops.ext -out_format klayout/gds3d/calibre
example CSV (not including this line):
1,0,metal0,drawing
1,2,metal0,via
2,0,metal1,drawing
'''
@nmz787
nmz787 / antlr_lexer_test.py
Created October 22, 2020 22:40
ANTLR Python Lexer unit-testing
from antlr4 import CommonTokenStream, InputStream, Token
# from mytool.parsers.error_listener import MyErrorListener
def getTokensFromText(input_string, MyLexer):
input_stream = InputStream(input_string)
lexer = MyLexer(input_stream)
# lexer.addErrorListener(MyErrorListener)
stream = CommonTokenStream(lexer)
stream.fill()
@nmz787
nmz787 / Gds2png.py
Created June 4, 2020 10:20
Gds to png
import os.path
from gdsCAD import *
from PIL import Image, ImageDraw
#l = core.GdsImport(os.path.abspath("wafer.GDS"), verbose=True)
#l2, l4 = utils.split_layers(a, [2,4])
l4_gds = core.GdsImport(os.path.abspath("die5_from_topleft_layer4_slits_shown.GDS"), verbose=True)
l2_gds = core.GdsImport(os.path.abspath("die5_from_topleft_layer2_shown.GDS"), verbose=True)
@nmz787
nmz787 / Lexer.g4
Last active May 19, 2020 23:23
ANTLR not working for some reason that I can't figure out
lexer grammar Lexer;
fragment WS: [\t ]+;
fragment NL: WS? ('\r'* '\n')+;
COLON_ATTRIBUTES: ('KeyId' |
'first key' |
'key' |
'key (interesting)' |
'key(# of 1second)' |
'key.subkey')+ -> mode(COLON_ATTRIBUTES_MODE);
@nmz787
nmz787 / Lexer.g4
Created May 19, 2020 23:06
Run with:
lexer grammar Lexer;
fragment WS: [\t ]+;
fragment NL: WS? ('\r'* '\n')+;
COLON_ATTRIBUTES: ('KeyId' |
'first key' |
'key' |
'key (interesting)' |
'key(# of 1second)' |
'key.subkey')+ -> mode(COLON_ATTRIBUTES_MODE);
@nmz787
nmz787 / mks_901p.py
Created December 29, 2019 10:21
work in progress MKS 901P vacuum transducer sensor library and command-line program.
"""
usage: mks_901p.py [-h] [--find_baud] [--baud BAUD] [-unit] serial_port
positional arguments:
serial_port the Windows COM port or path to a linux serial port
optional arguments:
-h, --help show this help message and exit
--find_baud tries to access the sensor over all supported baud rates,
prints which is successful
@nmz787
nmz787 / pbm_viewer.py
Last active January 3, 2020 08:28
PBM image viewer for gigapixel files - CTRL O to open a file, press enter in the text boxes to update screen
__license__ = """
This library is free software; you can redistribute it and/or
modify it under the terms of the GNU Lesser General Public License as
published by the Free Software Foundation; either version 2.1 of the
License, or (at your option) any later version.
As a special exception, the copyright holders of this library
hereby recind Section 3 of the GNU Lesser General Public License. This
means that you MAY NOT apply the terms of the ordinary GNU General
Public License instead of this License to any given copy of the
# -*- coding: utf-8 -*-
"""
Convert a dir of image files to a GDS file, all packed in together
"""
import os
import cv2
import sys
import math
from gdsCAD import *
@nmz787
nmz787 / convert_fib_str.py
Last active February 1, 2019 07:49
image 2 FIB and FIB 2 image - requires openCV, wxPython, PIL, numpy
#!/usr/bin/python
""" image 2 FIB and FIB 2 image
Usage:
convert_fib_str.py fromstr <str> [--video] [--out=<out_file_path>]
convert_fib_str.py tostr <image> [--out=<out_file_path>] [--stretch] [--invert]
"""
# from __future__ import print_function
import traceback
import sys
import math
@nmz787
nmz787 / rounded_cube_test.py
Last active September 14, 2018 21:48
test rounded edge.stl brlcad-python-tcl
from python_brlcad_tcl.brlcad_tcl import *
class rounded_cube(BrlCadModel):
def __init__(self, brl_db):
super(rounded_cube, self). __init__(brl_db)
self.center_name = None
self.edge = 10
c1 = [0, 0, 0]
c2 = [self.edge, self.edge, self.edge]