{"id":16245315,"url":"https://github.com/mmalecki/pcb-jigify","last_synced_at":"2026-02-07T04:32:31.889Z","repository":{"id":256604693,"uuid":"855895600","full_name":"mmalecki/pcb-jigify","owner":"mmalecki","description":"PCB holding and testing jig generator","archived":false,"fork":false,"pushed_at":"2025-01-06T16:44:31.000Z","size":412,"stargazers_count":2,"open_issues_count":3,"forks_count":0,"subscribers_count":1,"default_branch":"latest","last_synced_at":"2025-09-25T12:46:44.749Z","etag":null,"topics":["3d-printing","cadquery","electronics","kicad","pcb"],"latest_commit_sha":null,"homepage":"","language":"Python","has_issues":true,"has_wiki":null,"has_pages":null,"mirror_url":null,"source_name":null,"license":null,"status":null,"scm":"git","pull_requests_enabled":true,"icon_url":"https://github.com/mmalecki.png","metadata":{"files":{"readme":"README.md","changelog":null,"contributing":null,"funding":null,"license":null,"code_of_conduct":null,"threat_model":null,"audit":null,"citation":null,"codeowners":null,"security":null,"support":null,"governance":null,"roadmap":null,"authors":null,"dei":null,"publiccode":null,"codemeta":null}},"created_at":"2024-09-11T16:22:32.000Z","updated_at":"2025-01-31T20:21:52.000Z","dependencies_parsed_at":"2024-09-16T01:08:25.862Z","dependency_job_id":null,"html_url":"https://github.com/mmalecki/pcb-jigify","commit_stats":null,"previous_names":["mmalecki/generated-pcb-holder-jig","mmalecki/pcb-jigify"],"tags_count":0,"template":false,"template_full_name":null,"purl":"pkg:github/mmalecki/pcb-jigify","repository_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/mmalecki%2Fpcb-jigify","tags_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/mmalecki%2Fpcb-jigify/tags","releases_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/mmalecki%2Fpcb-jigify/releases","manifests_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/mmalecki%2Fpcb-jigify/manifests","owner_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners/mmalecki","download_url":"https://codeload.github.com/mmalecki/pcb-jigify/tar.gz/refs/heads/latest","sbom_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/mmalecki%2Fpcb-jigify/sbom","scorecard":null,"host":{"name":"GitHub","url":"https://github.com","kind":"github","repositories_count":286080680,"owners_count":29186737,"icon_url":"https://github.com/github.png","version":null,"created_at":"2022-05-30T11:31:42.601Z","updated_at":"2026-02-07T03:35:06.566Z","status":"ssl_error","status_checked_at":"2026-02-07T03:34:57.604Z","response_time":63,"last_error":"SSL_read: unexpected eof while reading","robots_txt_status":"success","robots_txt_updated_at":"2025-07-24T06:49:26.215Z","robots_txt_url":"https://github.com/robots.txt","online":false,"can_crawl_api":true,"host_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub","repositories_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories","repository_names_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repository_names","owners_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners"}},"keywords":["3d-printing","cadquery","electronics","kicad","pcb"],"created_at":"2024-10-10T14:25:33.995Z","updated_at":"2026-02-07T04:32:31.868Z","avatar_url":"https://github.com/mmalecki.png","language":"Python","funding_links":[],"categories":[],"sub_categories":[],"readme":"# PCB Jigify!\n\n![An example PCB, its outline, and an automatically generated jig based on the outline](./docs/concept.png)\n\nGenerate holding and testing jigs for your PCBs directly from your PCB files!\n\nAdditional features:\n* embed magnets in the jigs\n* include registration features\n* tight KiCad integration\n\n## Installation\n\nUsing [pipx](https://pipx.pypa.io/stable/) ([installation instructions](https://pipx.pypa.io/stable/installation/)) is\nrecommended:\n\n```sh\npipx install pcb-jigify\n```\n\nAlternatively, if the above doesn't work for you (PyPi doesn't allow GitHub dependencies,\nso our CadQuery version is quite outdated), you can try installing directly from GitHub:\n\n```sh\npipx install git+https://github.com/mmalecki/pcb-jigify.git\n```\n\n## Usage\n\n### Holding jigs\nThis type of jig holds the PCB in place, for example for solder paste application.\n\n#### KiCad\nPCB Jigify integrates tightly with KiCad, but [can also be used with other ECADs](#dxf) that\nare able to export DXF files.\n\n##### Generate the jig\nYou can generate the most basic of jigs by passing in an input board, and output model file:\n\n```sh\npcb-jigify holding --output holder.step pcb.kicad_pcb\n```\n\n##### Optional: place registration features\nIf you have any registration features (for example, pins, such as used in the [eC-Registration system](https://www.eurocircuits.com/ec-registration-system/)), you can generate a jig with them included.\n\nFor example, to use a mounting hole as a registration feature, edit the mounting hole footprint to include the paste and one of the user layers. We'll be using the `User.Eco1` layer:\n\n![Default mounting hole KiCad footprint with both paste and `User.Eco1` layers enabled](./docs/registration-feature.png)\n\nIn manufacturing, this will cause the stencil to have the mounting hole etched through (because the paste layer indicates a stencil opening), the PCB drilled (as indicated by the drill point), and the holder to have a hole for press-fitting it (due to our very own `User.Eco1` indicator).\n\nThen, when generating the jig, pass the same registration layer, and how\ndeep the registration features should be cut into the jig, for example):\n\n```sh\npcb-jigify holding \\\n    --registration-layer User.Eco1 --registration-depth 2 \\\n    --output holder.step \\\n    pcb.kicad_pcb\n```\n\nto make a 2 mm cut into the jig using contents of `User.Eco1` layer.\n\nNote: the stencil, drilling and copper etching processes are separate parts of the manufacturing process. The quality of alignment of drilled holes in the PCB, etches in the stencil and the copper layer depends sorely on your manufacturer. In other words, know your limitations using this method.\n\n#### DXF\nDXF is a CAD file format many ECAD applications are able to output to.\n\n##### Generate the jig\n\nTo generate a jig from DXF files, pass in the edge cuts file, and optionally the registration layer, for example:\n\n```sh\npcb-jigify holding \\\n    [--registration-layer pcb-User_Eco1.dxf --registration-depth 2] \\\n    --output holder.step \\\n    pcb-Edge_Cuts.dxf\n```\n\n### Testing jigs\n\nTesting jigs utilizing pogo pins can be generated in a similar fashion.\n\nIn order to place testing features, pick a testing layer. We'll be using `User.Eco2` in our examples.\n\nAdd a \"copper\" layer `User.Eco2` to pads you want to target with test probes. They don't need to be test pads - you can add this layer to any pad, test probe will be placed at its center.\n\nYou will also need to pass in the test probe diameter and the holding length.  \nAs an example, for a [Mill-Max spring-loaded pin with solder cup termination (0955-0-15-20-71-14-11-0)](https://www.mill-max.com/products/discrete-spring-loaded-pins/spring-loaded-pin-with-solder-cup-termination/0955/0955-0-15-20-71-14-11-0), the diameter would be 0.889 mm (0.035\" in the datasheet), and the length 4.0894 mm (0.301\" - 0.140\" = 0.161\" in the datasheet).\n\n```sh\npcb-jigify testing \\\n    --testing-layer User.Eco2 --test-probe-diameter 0.889 --test-probe-length 4.0894 \\\n    --output tester.step \\\n    pcb.kicad_pcb\n```\n\nRegistration layer is also supported here, if desired.\n\nNote: due to small dimensions of most test probes, you may have to print the testing jigs on a resin printer.\n\n### Jig configuration\n\nPCB Jigify allows for in-depth configuration of some of the features of the jigs.\n\n#### Common\n\n* PCB fit - `--pcb-fit` - how much clearance should there be between the PCB\n  and the holder (default: 0.1 mm)\n\n## Tips, tricks, notes\n\n* Registration pins can be made from anything, including gold header pins stripped of their plastic part or bolts with their heads cut off\n* Slicers may complain about open edges or other faults in generated files. As long as the file looks printable, this shouldn't cause any issues.\n* If the generation of the jig fails for any reason, don't hesitate to [open an issue](https://github.com/mmalecki/pcb-jigify/issues/new), preferably with a DXF export of the board outline layer included.\n","project_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Fmmalecki%2Fpcb-jigify","html_url":"https://awesome.ecosyste.ms/projects/github.com%2Fmmalecki%2Fpcb-jigify","lists_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Fmmalecki%2Fpcb-jigify/lists"}