diff --git a/.scripts/neo.py b/.scripts/neo.py index 9bedceb..6084630 100644 --- a/.scripts/neo.py +++ b/.scripts/neo.py @@ -115,8 +115,8 @@ def comp_format(filt, offset): t[p] = "{:.2f}".format(abs(float(t[p]) - offset[n])) rotation = float(t[rot]) rotation = rotation + offset[2] - if rotation > 180.0: - rotation = -1 * (360.0 - rotation) + # Wrap the phase [-180, 180] + rotation = (rotation + 180.0) % (2 * 180.0) - 180.0 t[rot] = "{:.2f}".format(rotation) out.append(t) return out diff --git a/README.md b/README.md index c624881..08269ef 100644 --- a/README.md +++ b/README.md @@ -1,42 +1,43 @@ # Dependencies -- [Kicad 6](https://www.kicad.org/) +- [Kicad 8](https://www.kicad.org/) - [git-lfs](https://git-lfs.com/) +- [kimelon](https://gitlab.com/Micromelon/education/hardware/kimelon) # Setup -1. Fork or clone and change origin remote-url. -2. Checkout dev (branch off dev if desired) -2. Rename/move files to match project name (make sure to update for [CI](#CI) too) +1. From an empty directory: `kimelon config --init --remote `; if git is already setup and pointing to the remote then drop `--remote` +2. Create a kicad project, based off of a template found in this directory 3. Lock the file you want to edit, see [Locking](#Locking) -4. Start editing. +4. Start editing +# Updating +`kimelon config` # Locking All kicad files are read-only by default, the file will need to be locked to your ssh key/gitlab account for it to be writable. -This can be done using `lock.sh {file name}`. -Once you are done editing the lock can be released using `unlock.sh {file name}`. - -Lock/unlock can only be done if there are any branches that aren't merged into `dev` (excluding `main`). +This can be done using `kimelon lock `. +See `kimelon lock --help` for more info. +Once you are done editing the lock can be released using `kimelon unlock `. +See `kimelon unlock --help` for more info. +Lock/unlock can't be done if there are any branches apart from `dev` & `main`. # CI -Edit lines 41 & 42 of .gitlab-ci.yml to match the naming/structure of your project/s. -You can add as many kicad projects as you like, as below: -``` - - DIR: 'proj1' - SCHEM: 'proj1.kicad_sch' - - DIR: 'proj2' - SCHEM: 'proj3.kicad_sch' - - DIR: 'proj3' - SCHEM: 'proj3.kicad_sch' -``` The following will be produced on any commit to dev & main branches or any commit on branch that has an active MR with said branches: - DRC & ERC - Step files - The following will be produced only on commits to main or commits on dev if it has an active MR with main: - JLCPCB compatible gerbers - PDFs of Schematic & PCB - BOM - Currently there are some ERC errors to do with buses (https://gitlab.com/kicad/code/kicad/-/issues/13285), so the docker image used for CI will be run on an older version to avoid them. +# Panels +[Kikit](https://github.com/yaqwsx/KiKit) is used to generate panels by placing a `json` file in your kicad project root folder. + +The templates in this repository all contain a default panel file with the following features: +- single board +- full frame, no tabs/gap between PCB and frame, vcuts +- Mounting hole + fiducial in each corner + +See examples of panel types/options [here](https://yaqwsx.github.io/KiKit/v1.3/panelization/examples/) +See syntax of `json` file [here](https://yaqwsx.github.io/KiKit/v1.3/panelization/cli/) diff --git a/micromelon_default/micromelon_default_panel.json b/micromelon_default/micromelon_default_panel.json new file mode 100644 index 0000000..77f03b7 --- /dev/null +++ b/micromelon_default/micromelon_default_panel.json @@ -0,0 +1,38 @@ +{ + // There can be C-like comments + "layout": { + "type": "grid", + "rotation": 0, + "rows": 1, + "cols": 1 + }, + "tabs": { + "type": "full" + }, + "cuts": { + "type": "vcuts", + "layer" : "Dwgs.User" + }, + "framing": { + "type": "tightframe", + "width": "8mm" + }, + "tooling": { + "type": "4hole", + "hoffset": "2.5mm", + "voffset": "4mm", + "size": "1.65mm" + }, + "fiducials": { + "type": "4fid", + "hoffset": "7mm", + "voffset": "4mm", + "coppersize": "2mm", + "opening": "4mm" + + }, + "post": { + "origin": "bl", + "millradius": "1mm" + } +} diff --git a/tcs_default/tcs_default_panel.json b/tcs_default/tcs_default_panel.json new file mode 100644 index 0000000..77f03b7 --- /dev/null +++ b/tcs_default/tcs_default_panel.json @@ -0,0 +1,38 @@ +{ + // There can be C-like comments + "layout": { + "type": "grid", + "rotation": 0, + "rows": 1, + "cols": 1 + }, + "tabs": { + "type": "full" + }, + "cuts": { + "type": "vcuts", + "layer" : "Dwgs.User" + }, + "framing": { + "type": "tightframe", + "width": "8mm" + }, + "tooling": { + "type": "4hole", + "hoffset": "2.5mm", + "voffset": "4mm", + "size": "1.65mm" + }, + "fiducials": { + "type": "4fid", + "hoffset": "7mm", + "voffset": "4mm", + "coppersize": "2mm", + "opening": "4mm" + + }, + "post": { + "origin": "bl", + "millradius": "1mm" + } +}