Pinion — Nice-looking interactive diagrams for KiCAD PCBs

Related tags

Hardware pcb eda kicad
Overview

Pinion — Nice-looking interactive diagrams for KiCAD PCBs

Pinion is a simple tool that allows you to make a nice-looking pinout diagrams for your PCBs like this:

Screenshot

Live demo

The diagrams are static HTML & Javascript files that you can easily include in your documentation. You do not need any backend, so you can easily serve them on your web page or Github pages. It is really simple!

Documentation

The documentation is available at https://yaqwsx.github.io/Pinion.

Do you enjoy Pinion or does it save your time?

Then definitely consider supporting me on GitHub Sponsors or buy me a coffee:

ko-fi

Your support will allow me to allocate time to properly maintain my projects like this.

PS: Be sure to check out my other KiCAD & PCB related projects:

Pinion is broken. What can I do about it?

If something is not working as expected, please open an issue on GitHub. Please, provide as many resources as possible and clear instructions on reproduction of the bug.

If you have a proposal for a new feature or you are just unsure about Pinion usage, you can start a discussion on GitHub.

Comments
  • pinion generate throws error: pcbdraw returned non-zero exit status

    pinion generate throws error: pcbdraw returned non-zero exit status

    Hi,

    I have Ubuntu 20.04 through WSL on my Windows 10 Pro, pip installed Pinion, installed Kicad 6, installed imagemagick. (in that order, if that is important) Running the template command worked fine (then). When running the generate command, I encountered an issue I cannot resolve myself:

    $ pinion generate -b ../ATMega4809_Breakout.kicad_pcb --specification diagram.yaml publish

    Warning: component 'PinHeader_2x03_P2.54mm_Vertical' for footprint 'J2' from library 'Connector_PinHeader_2.54mm' was not found
    Warning: component 'SW_Push_1P1T_NO_CK_KMR2' for footprint 'SW1' from library 'Button_Switch_SMD' was not found
    Warning: component 'QFN-48-1EP_6x6mm_P0.4mm_EP4.2x4.2mm' for footprint 'U1' from library 'Package_DFN_QFN' was not foundWarning: component 'PinHeader_1x05_P2.54mm_Horizontal' for footprint 'J1' from library 'Connector_PinHeader_2.54mm' was not found
    Warning: component 'LED_RGB_5050-6' for footprint 'D1' from library 'LED_SMD' was not found
    Warning: component 'PinHeader_2x02_P2.54mm_Vertical' for footprint 'J3' from library 'Connector_PinHeader_2.54mm' was not found
    Warning: component 'Crystal_DS26_D2.0mm_L6.0mm_Horizontal.back' for footprint 'Y1' from library 'Crystal' was not found
    Traceback (most recent call last):
      File "/home/marius/.local/bin/pcbdraw", line 8, in <module>
        sys.exit(main())
      File "/home/marius/.local/lib/python3.8/site-packages/pcbdraw/pcbdraw.py", line 953, in main
        postprocess_svg(args.output, args.shrink)
      File "/home/marius/.local/lib/python3.8/site-packages/pcbdraw/pcbdraw.py", line 815, in postprocess_svg
        shrink_svg(svgfilepath, shrinkBorder)
      File "/home/marius/.local/lib/python3.8/site-packages/pcbdraw/pcbdraw.py", line 769, in shrink_svg
        paths = document.paths()
      File "/home/marius/.local/lib/python3.8/site-packages/svgpathtools/document.py", line 261, in paths
        return flattened_paths(self.tree.getroot(), group_filter,
      File "/home/marius/.local/lib/python3.8/site-packages/svgpathtools/document.py", line 143, in flattened_paths
        path = transform(parse_path(converter(path_elem)), path_tf)
      File "/home/marius/.local/lib/python3.8/site-packages/svgpathtools/path.py", line 309, in transform
        return transform_segments_together(curve, transformation)
      File "/home/marius/.local/lib/python3.8/site-packages/svgpathtools/path.py", line 191, in transform_segments_together
        transformed_segs = [transformation(seg) for seg in path]
      File "/home/marius/.local/lib/python3.8/site-packages/svgpathtools/path.py", line 191, in <listcomp>
        transformed_segs = [transformation(seg) for seg in path]
      File "/home/marius/.local/lib/python3.8/site-packages/svgpathtools/path.py", line 308, in <lambda>
        transformation = lambda seg: transform(seg, tf)
      File "/home/marius/.local/lib/python3.8/site-packages/svgpathtools/path.py", line 339, in transform
        return Arc(new_start, radius=new_radius, rotation=curve.rotation + rot,
      File "/home/marius/.local/lib/python3.8/site-packages/svgpathtools/path.py", line 1448, in __init__
        self._parameterize()
      File "/home/marius/.local/lib/python3.8/site-packages/svgpathtools/path.py", line 1503, in _parameterize
        raise ValueError("No such elliptic arc exists.")
    ValueError: No such elliptic arc exists.
    Traceback (most recent call last):
      File "/home/marius/.local/bin/pinion", line 8, in <module>
        sys.exit(cli())
      File "/home/marius/.local/lib/python3.8/site-packages/click/core.py", line 1128, in __call__
        return self.main(*args, **kwargs)
      File "/home/marius/.local/lib/python3.8/site-packages/click/core.py", line 1053, in main
        rv = self.invoke(ctx)
      File "/home/marius/.local/lib/python3.8/site-packages/click/core.py", line 1659, in invoke
        return _process_result(sub_ctx.command.invoke(sub_ctx))
      File "/home/marius/.local/lib/python3.8/site-packages/click/core.py", line 1395, in invoke
        return ctx.invoke(self.callback, **ctx.params)
      File "/home/marius/.local/lib/python3.8/site-packages/click/core.py", line 754, in invoke
        return __callback(*args, **kwargs)
      File "/home/marius/.local/lib/python3.8/site-packages/pinion/ui.py", line 83, in generate
        generate(specification=yaml.load(specification),
      File "/home/marius/.local/lib/python3.8/site-packages/pinion/generate.py", line 213, in generate
        fSource = generateImage(board.GetFileName(), outputdir / "front.png",
      File "/home/marius/.local/lib/python3.8/site-packages/pinion/generate.py", line 140, in generateImage
        subprocess.run(command, check=True)
      File "/usr/lib/python3.8/subprocess.py", line 516, in run
        raise CalledProcessError(retcode, process.args,
    subprocess.CalledProcessError: Command '['pcbdraw', '--shrink', '0', '../ATMega4809_Breakout.kicad_pcb', '/tmp/tmppa6it2b7/img.svg']' returned non-zero exit status 1.
    

    Is it an issue, that it does not find the libraries? I made the board under Windows, but would like to try out your tool.

    What can I do?

    Cheers, Marius

    edt: When generated the template, I did not apply any changes to that. I don't know if that is important.

    opened by Optoneer 22
  • ruamel_yaml error

    ruamel_yaml error

    Hi, The following command:

    pinion generate -b sample.kicad_pcb ./
    

    fails with error:

    File "_ruamel_yaml.pyx", line 302, in _ruamel_yaml.CParser.__init__
    TypeError: a string or stream input is required
    

    Traceback:

    Traceback (most recent call last):
    File "/home/test/envs/pinion/bin/pinion", line 8, in <module>
    sys.exit(cli())
    File "/home/test/envs/pinion/lib/python3.9/site-packages/click/core.py", line 1137, in __call__
    return self.main(*args, **kwargs)
    File "/home/test/envs/pinion/lib/python3.9/site-packages/click/core.py", line 1062, in main
    rv = self.invoke(ctx)
    File "/home/test/envs/pinion/lib/python3.9/site-packages/click/core.py", line 1668, in invoke
    return _process_result(sub_ctx.command.invoke(sub_ctx))
    File "/home/test/envs/pinion/lib/python3.9/site-packages/click/core.py", line 1404, in invoke
    return ctx.invoke(self.callback, **ctx.params)
    File "/home/test/envs/pinion/lib/python3.9/site-packages/click/core.py", line 763, in invoke
    return __callback(*args, **kwargs)
    File "/home/test/envs/pinion/lib/python3.9/site-packages/pinion/ui.py", line 83, in generate
    generate(specification=yaml.load(specification),
    File "/home/test/envs/pinion/lib/python3.9/site-packages/ruamel/yaml/main.py", line 432, in load
    constructor, parser = self.get_constructor_parser(stream)
    File "/home/test/envs/pinion/lib/python3.9/site-packages/ruamel/yaml/main.py", line 514, in get_constructor_parser
    loader = XLoader(stream)
    File "/home/test/envs/pinion/lib/python3.9/site-packages/ruamel/yaml/main.py", line 507, in __init__
    CParser.__init__(selfx, stream)
    File "_ruamel_yaml.pyx", line 302, in _ruamel_yaml.CParser.__init__
    TypeError: a string or stream input is required
    

    Environment:

    KiCad   5.1.10
    
    PcbDraw          0.8.0
    pcbnewTransition 0.1.0
    Pinion           0.2.0
    PyYAML           5.4.1
    ruamel.yaml      0.17.16
    ruamel.yaml.clib 0.2.6
    

    Any fix or workaround?

    Thanks!

    opened by amad3v 3
  • TH component not clickable from other side

    TH component not clickable from other side

    I feel like we should allow having a throughhole component clickable (highlight visible) from both sides.

    Suggested logic for driving the clickableness from both sides:

    isSMD = are all pads SMD
    clickableFromBothSides = !isSMD
    

    Current behaviour with a Stepdown component:

    Yes (highlighted): obrazek

    No (after switching sides): obrazek

    opened by dzarda 3
  • Pinion not compatible with latest version of PcbDraw

    Pinion not compatible with latest version of PcbDraw

    With latest pip version of Pinion and PcbDraw I got this error:

    n310-drive@n310 /r/n/harry-kicad> pinion generate --style rendered --board harry-kicad.kicad_pcb --specification pinout/test.yaml ./pinout
    Traceback (most recent call last):
      File "/home/n310-drive/.local/bin/pinion", line 8, in <module>
        sys.exit(cli())
      File "/usr/lib/python3/dist-packages/click/core.py", line 1128, in __call__
        return self.main(*args, **kwargs)
      File "/usr/lib/python3/dist-packages/click/core.py", line 1053, in main
        rv = self.invoke(ctx)
      File "/usr/lib/python3/dist-packages/click/core.py", line 1659, in invoke
        return _process_result(sub_ctx.command.invoke(sub_ctx))
      File "/usr/lib/python3/dist-packages/click/core.py", line 1395, in invoke
        return ctx.invoke(self.callback, **ctx.params)
      File "/usr/lib/python3/dist-packages/click/core.py", line 754, in invoke
        return __callback(*args, **kwargs)
      File "/home/n310-drive/.local/lib/python3.10/site-packages/pinion/ui.py", line 77, in generate
        from pinion.generate import generate
      File "/home/n310-drive/.local/lib/python3.10/site-packages/pinion/generate.py", line 14, in <module>
        from pcbdraw.pcbdraw import svg2ki
    ModuleNotFoundError: No module named 'pcbdraw.pcbdraw'
    

    But if I install PcbDraw from commit https://github.com/yaqwsx/PcbDraw/commit/1071f3ba48390abc18794c94c854a11541c87045 and latest Pinion there's no more ModuleNotFoundError

    EDIT: this commit: https://github.com/yaqwsx/PcbDraw/commit/fead173fb91041c5bc4e809aaee0574b13773e9f#diff-5e0ba9a3dd07d0b08ab5328458d98bd2b5bff2246b5be75cc4ce9f205ad6f206 deleted pcbdraw.pcbdraw module

    opened by minecraft2048 2
  • pcbdraw: no such option: --shrink

    pcbdraw: no such option: --shrink

    Getting an error when attempting to generate. I am running it on Ubuntu 20.04 Kicad 6.0.5. The following is the command I ran, and the output.

    pinion generate --style rendered -b grover_system_ctlr_hw/grover_system_ctlr_hw.kicad_pcb -s pinion_template.yaml pinion_diagram.html
    Usage: pcbdraw [OPTIONS] COMMAND [ARGS]...
    Try 'pcbdraw --help' for help.
    
    Error: No such option: --shrink
    Traceback (most recent call last):
      File "/home/keshav/.local/bin/pinion", line 8, in <module>
        sys.exit(cli())
      File "/home/keshav/.local/lib/python3.8/site-packages/click/core.py", line 1130, in __call__
        return self.main(*args, **kwargs)
      File "/home/keshav/.local/lib/python3.8/site-packages/click/core.py", line 1055, in main
        rv = self.invoke(ctx)
      File "/home/keshav/.local/lib/python3.8/site-packages/click/core.py", line 1657, in invoke
        return _process_result(sub_ctx.command.invoke(sub_ctx))
      File "/home/keshav/.local/lib/python3.8/site-packages/click/core.py", line 1404, in invoke
        return ctx.invoke(self.callback, **ctx.params)
      File "/home/keshav/.local/lib/python3.8/site-packages/click/core.py", line 760, in invoke
        return __callback(*args, **kwargs)
      File "/home/keshav/.local/lib/python3.8/site-packages/pinion/ui.py", line 83, in generate
        generate(specification=yaml.load(specification),
      File "/home/keshav/.local/lib/python3.8/site-packages/pinion/generate.py", line 213, in generate
        fSource = generateImage(board.GetFileName(), outputdir / "front.png",
      File "/home/keshav/.local/lib/python3.8/site-packages/pinion/generate.py", line 140, in generateImage
        subprocess.run(command, check=True)
      File "/usr/lib/python3.8/subprocess.py", line 516, in run
        raise CalledProcessError(retcode, process.args,
    subprocess.CalledProcessError: Command '['pcbdraw', '--shrink', '0', '--style', 'rendered', 'grover_system_ctlr_hw/grover_system_ctlr_hw.kicad_pcb', '/tmp/tmpp85ab36o/img.svg']' returned non-zero exit status 2.
    

    I am wondering whether the correct version of pcbdraw has been installed.

    pip show pcbdraw
    Name: PcbDraw
    Version: 1.0.0
    Summary: Utility to produce nice looking drawings of KiCAD boards
    Home-page: https://github.com/yaqwsx/PcbDraw
    Author: Jan Mrázek
    Author-email: [email protected]
    License: UNKNOWN
    Location: /home/keshav/.local/lib/python3.8/site-packages
    Requires: pyyaml, numpy, Pillow, click, pybars3, pcbnewTransition, lxml, pyVirtualDisplay, mistune, svgpathtools
    Required-by: Pinion
    

    Pinion version:

    pip show pinion
    Name: Pinion
    Version: 0.2.0
    Summary: Create interactive pinout diagrams for KiCAD PCBs
    Home-page: https://github.com/yaqwsx/Pinion
    Author: Jan Mrázek
    Author-email: [email protected]
    License: UNKNOWN
    Location: /home/keshav/.local/lib/python3.8/site-packages
    Requires: ruamel.yaml, pcbnewTransition, pcbdraw, click
    Required-by: 
    

    Cheers

    opened by keshav-raj-trekker 1
  • Bottom sliver not clickable

    Bottom sliver not clickable

    There's an unhappy DIV at the bottom of the page that apparently eats click and hover events, therefore not allowing interaction with the items hidden behind it: obrazek

    opened by dzarda 1
  • Signal as default pin name

    Signal as default pin name

    The template command uses the signal name only as a comment. A better solution would be to apply it directly as the pin name. This maximizes the usability even without human interaction.

    👍

                '3':
                    name: STM-I2C-SCL
                    description: ''
                    groups: []
    

    👎

                '3': # Connected to STM-I2C-SCL
                    name: IM4.3
                    description: ''
                    groups: []
    
    opened by dzarda 1
  • Unknown layer ID -1 error when trying to generate pinion diagram

    Unknown layer ID -1 error when trying to generate pinion diagram

    Hi, I get this error when trying following steps:

    1. pinion template --board keypad.kicad_pcb --output keypad_pinion_spec.yaml
    2. pinion generate rendered --board keypad.kicad_pcb --specification keypad_pinion_spec.yaml

    tried 2 different projects and both rendered and plotted options.

    Full error

    /builddir/build/BUILD/kicad-6.0.10/common/layer_id.cpp(180): assert ""false"" failed in LayerName(): Unknown layer ID -1
    Traceback (most recent call last):
      File "/home/mj/.local/bin/pcbdraw", line 8, in <module>
        sys.exit(main())
                 ^^^^^^
      File "/home/mj/.local/lib/python3.11/site-packages/pcbdraw/pcbdraw.py", line 938, in main
        walk_components(board, args.back, lambda lib, name, val, ref, pos:
      File "/home/mj/.local/lib/python3.11/site-packages/pcbdraw/pcbdraw.py", line 515, in walk_components
        orient = math.radians(module.GetOrientation() / 10)
                 ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
    TypeError: must be real number, not EDA_ANGLE
    Traceback (most recent call last):
      File "/home/mj/.local/bin/pinion", line 33, in <module>
        sys.exit(load_entry_point('Pinion==0.2.0', 'console_scripts', 'pinion')())
                 ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
      File "/usr/lib/python3.11/site-packages/click/core.py", line 1130, in __call__
        return self.main(*args, **kwargs)
               ^^^^^^^^^^^^^^^^^^^^^^^^^^
      File "/usr/lib/python3.11/site-packages/click/core.py", line 1055, in main
        rv = self.invoke(ctx)
             ^^^^^^^^^^^^^^^^
      File "/usr/lib/python3.11/site-packages/click/core.py", line 1657, in invoke
        return _process_result(sub_ctx.command.invoke(sub_ctx))
                               ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
      File "/usr/lib/python3.11/site-packages/click/core.py", line 1404, in invoke
        return ctx.invoke(self.callback, **ctx.params)
               ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
      File "/usr/lib/python3.11/site-packages/click/core.py", line 760, in invoke
        return __callback(*args, **kwargs)
               ^^^^^^^^^^^^^^^^^^^^^^^^^^^
      File "/home/mj/.local/lib/python3.11/site-packages/pinion/ui.py", line 83, in generate
        generate(specification=yaml.load(specification),
      File "/home/mj/.local/lib/python3.11/site-packages/pinion/generate.py", line 213, in generate
        fSource = generateImage(board.GetFileName(), outputdir / "front.png",
                  ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
      File "/home/mj/.local/lib/python3.11/site-packages/pinion/generate.py", line 140, in generateImage
        subprocess.run(command, check=True)
      File "/usr/lib64/python3.11/subprocess.py", line 569, in run
        raise CalledProcessError(retcode, process.args,
    subprocess.CalledProcessError: Command '['pcbdraw', '--shrink', '0', 'keypad.kicad_pcb', '/tmp/tmpylq492qm/img.svg']' returned non-zero exit status
    

    Versions: OS: Fedora 37 KiCAD Platform: Linux 6.0.12-300.fc37.x86_64 x86_64, 64 bit, Little endian, wxGTK, gnome-xorg, x11 Python 3.11.0 pinion, version 0.2.0 PcbDraw 0.9.0

    opened by f5AFfMhv 4
  • Search pins in diagram

    Search pins in diagram

    The diagrams Pinion creates are really useful. Sometimes you want to search for a specific pin, if you could enter part of the pin's name or function it would allow for finding a pin really fast. This way you have a similar option to the classical diagrams which show all pins at once, but with less information overload.

    opened by maelh 0
  • Links dead

    Links dead

    Hi,

    From the documentation, the link to the Python Package (https://nightly.link/yaqwsx/Pinion/workflows/build/main/pinion-package.zip) seems to be dead. Same for the link (https://yaqwsx.github.io/Pinion/installation/releases/pinion-latest.whl) but this one is not in the documentation anymore.

    opened by Keuronde 0
  • typo in documentation

    typo in documentation

    In the FAQ on this page https://yaqwsx.github.io/Pinion/faq/ the command to run a webserver to view your diagram is spelled wrong: pinion server -b -d should be pinion serve -b -d (so without the 'r').

    opened by dennisdebel 0
  • Suggestion and question

    Suggestion and question

    Hi -- I just used Pinion for the first time and really like it. A suggestion about the documentation -- I had trouble figuring out what the "source" option in the javascript call needed to point to. The docs say "Currently, the only option is source that has to contain a location to the source directory". I didn't know whether "source" meant the location of the kicad files, and it took some experimenting to find out it was just where the pinion files lived. It might be easier for newbies if that were made more clear, and even better, show what the contents of the "resources" directory might look like. (I put everything, including the .js and .css in a "tools" directory under my project, and that worked well.)

    Now the question -- you reference putting pinion on a github page. How is that done? Can the README.md file include javascript, or is some other approach required?

    Thanks very much for a really cool program!

    opened by n8ur 2
  • Fetch API cannot load

    Fetch API cannot load

    Chrome console output:

    Fetch API cannot load file:///home/XXXXXX/Desktop/Proyecto%20Final/proyecto-final-hardware/demo/spec.json. URL scheme "file" is not supported.
    

    I think you use the spec.json file as a file structure it's great but recently when I try this library the browsers (firefox and chrome) have the same problem, it is a normal beahviur or maybe I wrong?.

    That's my template.html script configuration:

      <script>
          pinion.setup(document.getElementById("root"), {
              source: "."
          });
      </script>
    

    Thanks and nice library :D.

    opened by cr0wg4n 5
Easyeda2kicad.py - Convert any LCSC components (including EasyEDA) to KiCad library

easyeda2kicad.py A Python script that convert any electronic components from LCSC or EasyEDA to a Kicad library Installation git clone https://github.

uPesy Electronics 150 Jan 6, 2023
Scapy: the Python-based interactive packet manipulation program & library. Supports Python 2 & Python 3.

Scapy Scapy is a powerful Python-based interactive packet manipulation program and library. It is able to forge or decode packets of a wide number of

SecDev 8.3k Jan 8, 2023
python scripts and other files to generate induction encoder PCBs in Kicad

induction_encoder python scripts and other files to generate induction encoder PCBs in Kicad Targeting the Renesas IPS2200 encoder chips.

Taylor Alexander 8 Feb 16, 2022
This is a pretty basic but relatively nice looking Python Pomodoro Timer.

Python Pomodoro-Timer This is a pretty basic but relatively nice looking Pomodoro Timer. Currently its set to a very basic mode, but the funcationalit

EmmHarris 2 Oct 18, 2021
KiCad bus length matching script.

KiBus length matching script This script implements way to monitor multiple nets, combined into a bus that needs to be length matched

Piotr Esden-Tempski 22 Mar 17, 2022
JLC2KICAD_lib is a python script that generate a component library for KiCad from the JLCPCB/easyEDA library.

JLC2KiCad_lib is a python script that generate a component library (schematic, footprint and 3D model) for KiCad from the JLCPCB/easyEDA library. This script requires Python 3.6 or higher.

Nicolas Toussaint 73 Dec 26, 2022
Automatically draw a KiCad schematic for a circuit prototyped on a breadboard.

Schematic-o-matic Schematic-o-matic automatically draws a KiCad schematic for a circuit prototyped on a breadboard. How It Works The first step in the

Nick Bild 22 Oct 11, 2022
Easyeda2kicad.py - Convert any LCSC components (including EasyEDA) to KiCad library

easyeda2kicad.py A Python script that convert any electronic components from LCSC or EasyEDA to a Kicad library Installation git clone https://github.

uPesy Electronics 150 Jan 6, 2023
PushForKiCad - AISLER Push for KiCad EDA

AISLER Push for KiCad Push your layout to AISLER with just one click for instant

AISLER 31 Dec 29, 2022
⚡KiCad library containing footprints and symbols for inductive analog keyboard switches

Inductive Analog Switches This library contains footprints and symbols for inductive analog keyboard switches for use with the Texas Instruments LDC13

Elias Sjögreen 3 Jun 30, 2022
Python package that generates hardware pinout diagrams as SVG images

PinOut A Python package that generates hardware pinout diagrams as SVG images. The package is designed to be quite flexible and works well for general

null 336 Dec 20, 2022
erdantic is a simple tool for drawing entity relationship diagrams (ERDs) for Python data model classes

erdantic is a simple tool for drawing entity relationship diagrams (ERDs) for Python data model classes. Diagrams are rendered using the venerable Graphviz library.

DrivenData 129 Jan 4, 2023
Simple python implementation with matplotlib to manually fit MIST isochrones to Gaia DR2 color-magnitude diagrams

Simple python implementation with matplotlib to manually fit MIST isochrones to Gaia DR2 color-magnitude diagrams

Karl Jaehnig 7 Oct 22, 2022
Draw tree diagrams from indented text input

Draw tree diagrams This repository contains two very different scripts to produce hierarchical tree diagrams like this one: $ ./classtree.py collectio

Luciano Ramalho 8 Dec 14, 2022
A C implementation for creating 2D voronoi diagrams

Branch OSX/Linux Windows master dev jc_voronoi A fast C/C++ header only implementation for creating 2D Voronoi diagrams from a point set Uses Fortune'

Mathias Westerdahl 481 Dec 29, 2022
A toolkit to generate MR sequence diagrams

mrsd: a toolkit to generate MR sequence diagrams mrsd is a Python toolkit to generate MR sequence diagrams, as shown below for the basic FLASH sequenc

Julien Lamy 3 Dec 25, 2021
CALPHAD tools for designing thermodynamic models, calculating phase diagrams and investigating phase equilibria.

CALPHAD tools for designing thermodynamic models, calculating phase diagrams and investigating phase equilibria.

pycalphad 189 Dec 13, 2022
Collection of SVG diagrams about how UTF-8 works

Diagrams Repository of diagrams made for articles on my blog. All diagrams are created using diagrams.net. UTF-8 Licenses Copyright 2022 Seth Michael

Seth Michael Larson 24 Aug 13, 2022
Plugin to manage site, circuit and device diagrams and documents in Netbox

Netbox Documents Plugin A plugin designed to faciliate the storage of site, circuit and device specific documents within NetBox Note: Netbox v3.2+ is

Jason Yates 38 Dec 24, 2022