# qeda

> QEDA — a tool for creating libraries of electronic components

Latest version **0.4.1** (published 2019-02-06) · MIT license · 0 weekly downloads

## Install

```sh
npm install qeda
pnpm add qeda
yarn add qeda
bun add qeda
```

Provides the command `qeda`.

## Health

**Score 15/100 (F)** — status: abandoned.

Positive: no vulnerabilities.

Warnings: low downloads; no types; no esm support; pre 1.0.

Negative: abandoned; low maintenance score.

## Facts

| | |
|---|---|
| Version | 0.4.1 |
| Published | 2019-02-06 |
| First published | 2015-09-29 |
| Weekly downloads | 0 |
| License | MIT |
| TypeScript types | none |
| Module format | CommonJS |
| Dependencies | 7 |
| Unpacked size | 380.8 KB |
| Known vulnerabilities | 0 (+1 in 1 direct dependencies) |
| Install scripts | no |
| Author | QEDA Authors |
| Maintainers | noviga |
| Keywords | EDA, KiCad, schematics, PCB, electronics, library |

## Links

- npm: https://www.npmjs.com/package/qeda
- Repository: https://github.com/qeda/qeda
- Homepage: http://qeda.org
- Issues: https://github.com/qeda/qeda/issues
- npm.io page: https://npm.io/package/qeda

## Dependencies (7)

- [crc](https://npm.io/package/crc.md) ^3.8.0
- [nopt](https://npm.io/package/nopt.md) ^4.0.1
- [mkdirp](https://npm.io/package/mkdirp.md) ^0.5.1
- [js-yaml](https://npm.io/package/js-yaml.md) ^3.12.0
- [sprintf-js](https://npm.io/package/sprintf-js.md) ^1.1.1
- [sync-request](https://npm.io/package/sync-request.md) ^6.0.0
- [svg-path-parser](https://npm.io/package/svg-path-parser.md) ^1.1.0

## Alternatives

- [vest](https://npm.io/package/vest.md) — 50.1K weekly downloads
- [@regle/core](https://npm.io/package/@regle/core.md) — 47.0K weekly downloads
- [typeof-arguments](https://npm.io/package/typeof-arguments.md) — 12.5K weekly downloads
- [@lokalise/projects-engine-contracts](https://npm.io/package/@lokalise/projects-engine-contracts.md) — 978 weekly downloads
- [@osjwnpm/nam-laboriosam-quibusdam](https://npm.io/package/@osjwnpm/nam-laboriosam-quibusdam.md) — 70 weekly downloads

## Recent versions

- 0.4.1 (latest) — 2019-02-06
- 0.4.0 — 2018-07-26
- 0.3.9 — 2018-02-08
- 0.3.8 — 2017-07-25
- 0.3.7 — 2017-07-19
- 0.3.6 — 2017-05-01
- 0.3.5 — 2017-04-04
- 0.3.4 — 2017-03-05
- 0.3.3 — 2017-03-04
- 0.3.2 — 2017-02-27
- 0.3.1 — 2017-01-28
- 0.3.0 — 2017-01-22
- 0.2.12 — 2017-01-21
- 0.2.11 — 2016-11-06
- 0.2.10 — 2016-11-02
- … 74 more at https://npm.io/package/qeda/versions

## README

[![NPM version](http://img.shields.io/npm/v/qeda.svg)](https://npmjs.org/package/qeda)
[![Dependencies](https://david-dm.org/qeda/qeda.svg)](https://david-dm.org/qeda/qeda)
[![devDependency Status](https://david-dm.org/qeda/qeda/dev-status.svg)](https://david-dm.org/qeda/qeda#info=devDependencies)

QEDA
====

QEDA is a Node.js library aimed to simplify creating libraries of electronic components for using in EDA software. You can easily create both symbols for schematic and land patterns for PCB.

Features
========

* Downloading component definitions from global repository
* Generating schematic symbols:
  - Single and multi part IC (dual-in-line, quad)
  - Connector
  - Capacitor, crystal, diode, FET, fuse, inductor, LED, pushbutton, resistor, switch, test point, transistor, TVS
  - Power supply, ground
  - GOST style alternative
* Borrowing packages dimensions from standards:
  - Industrial (JEDEC, JEITA)
  - Manufacturer's (NXP)
* Land pattern calculation according to IPC-7351 (tending to comply latest IPC-7351C):
  - Chip Array
  - Dual (CFP, DIP, SOIC, SOJ, SOL, SON, SOP)
  - Grid Array (BGA, CGA, LGA)
  - Mounting hole
  - Oscillator (corner concave, side concave, side flat)
  - Quad (CQFP, QFN, QFP)
  - Radial lead (Cylindrical)
  - SOT (SOT143, SOT223, SOT23, SOTFL)
  - Test point
  - TO (\*PAK)
  - Two Pin (Aluminum Electrolytic Capacitor, Chip, Crystal, Molded body, MELF, SOD, SODFL)
  - Custom element
* Generating libraries:
  - KiCad format
* 3D models generation

Installation
============

QEDA module for using in scripts as well as command line interface:

    npm install -g qeda

Examples
========

First example will download component descriptions from [library repository](https://github.com/qeda/library/) then save them to disk and add to library manager. Last string is to generate component library in KiCad format (schematic symbols for [Eeschema](http://kicad-pcb.org/discover/eeschema/) as well as PCB footprints for [PcbNew](http://kicad-pcb.org/discover/pcbnew/)).

CLI
---

Run in terminal (note that component names are case insensitive but power and ground nets are not):

```
qeda reset
qeda add altera/5m1270zt144
qeda add analog/ad9393
qeda add st/l3gd20h
qeda add ti/iso722
qeda power +5VDC
qeda power +3V3DC
qeda ground GNDDC
qeda ground signal/GNDS
qeda ground earth/GNDE
qeda ground chassis/GNDCH
qeda generate mylib
```
And find generated files in `./kicad` directory.

[Read more](http://qeda.org/doc/qeda/utility/) about available commands.

From script
-----------

Example is written on CoffeeScript but one can use vanilla JavaScript.

[script.coffee](./examples/script/script.coffee):

```coffeescript
Qeda = require 'qeda'

lib = new Qeda.Library
lib.add 'Altera/5M1270ZT144' # Add Altera MAX V CPLD
lib.add 'Analog/AD9393' # Add Analog Devices HDMI interface
lib.add 'ST/L3GD20H' # Add STMicroelectronics gyroscope
lib.add 'TI/ISO722' # Add Texas Instruments digital isolator
lib.power '+5VDC' # Add power supply symbol
lib.power '+3V3DC' # Add another power supply symbol
lib.ground 'GNDDC' # Add ground symbol
lib.ground 'Signal/GNDS' # Add signal ground symbol
lib.ground 'Earth/GNDE' # Add earth ground symbol
lib.ground 'Chassis/GNDCH' # Add chassis ground symbol
lib.generate 'mylib'
```

Run it:

    coffee script.coffee

And find generated files in `./kicad` directory.

Custom component description
----------------------------

Any electronic component is described using YAML-file located in `./library` directory (or some subdirectory within). You can clone all available descriptions from <https://github.com/qeda/library>, add your ones, copy from any source. Then just point correspondent path as parameter for `qeda add ...` command or `Qeda.Library.add` method (without `./library/` prefix and `.yaml` suffix).

[library/dummy.yaml](./examples/custom/library/dummy.yaml):

```yaml
name: Dummy

pinout:
  DIN: 1
  ~DOUT: 2
  Vcc: 3
  GND: 4, 5
  NC: 6-8

properties:
  power: Vcc
  ground: GND
  in: DIN
  out: ~DOUT
  nc: NC
  inverted: ~DOUT

schematic:
  symbol: IC
  left: DIN, NC
  right: ~DOUT, NC
  top: Vcc
  bottom: GND

housing:
  outline: JEDEC MS-012 AA
```

[Read more](http://qeda.org/doc/qeda/component/) about component description.  

Then run in terminal:

```
qeda reset
qeda add dummy
qeda generate dummy
```
Or create [custom.coffee](./examples/custom/custom.coffee):

```coffeescript
Qeda = require 'qeda'

lib = new Qeda.Library
lib.add 'Dummy' # Adding custom element
lib.generate 'dummy'
```

And run:

    coffee custom.coffee

Result:

![Symbol](./doc/images/dummy.png)
![Footprint](./doc/images/soic.png)

Documentation
=============

Please refer to [Documentation](http://doc.qeda.org/) section on the website for additional information.

License
=======

Source code is licensed under [MIT license](./LICENSE).

Coming soon
===========

* Generating libraries:
  - Eagle XML format
* SMD land pattern calculation:
  - LCC
  - PLCC
* Through-hole land pattern calculation:
  - Axial lead
  - Oscillator
  - PGA
  - Radial lead
  - SIP
  - TO (Flange mount)
  - TO (Cylindrical)
  - Wire

---
_Source: https://npm.io/package/qeda · Machine-readable twin of the npm.io package page. Health data is recomputed on every publish._
