{"id":27243341,"url":"https://github.com/buganini/kikakuka","last_synced_at":"2025-04-10T20:32:32.120Z","repository":{"id":248003601,"uuid":"827421554","full_name":"buganini/Kikakuka","owner":"buganini","description":"KiCad Workspace Manager \u0026 Interactive GUI Panelizer","archived":false,"fork":false,"pushed_at":"2025-03-30T04:54:48.000Z","size":13172,"stargazers_count":31,"open_issues_count":1,"forks_count":1,"subscribers_count":1,"default_branch":"main","last_synced_at":"2025-04-10T07:41:28.493Z","etag":null,"topics":[],"latest_commit_sha":null,"homepage":"","language":"Python","has_issues":true,"has_wiki":null,"has_pages":null,"mirror_url":null,"source_name":null,"license":"mit","status":null,"scm":"git","pull_requests_enabled":true,"icon_url":"https://github.com/buganini.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-07-11T16:09:13.000Z","updated_at":"2025-03-30T04:54:51.000Z","dependencies_parsed_at":"2024-07-11T21:18:35.129Z","dependency_job_id":"5d8bbcab-2d70-4784-b778-6310f8d08e06","html_url":"https://github.com/buganini/Kikakuka","commit_stats":null,"previous_names":["buganini/kikit-ui","buganini/kikakuka"],"tags_count":10,"template":false,"template_full_name":null,"repository_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/buganini%2FKikakuka","tags_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/buganini%2FKikakuka/tags","releases_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/buganini%2FKikakuka/releases","manifests_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/buganini%2FKikakuka/manifests","owner_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners/buganini","download_url":"https://codeload.github.com/buganini/Kikakuka/tar.gz/refs/heads/main","host":{"name":"GitHub","url":"https://github.com","kind":"github","repositories_count":248290041,"owners_count":21078923,"icon_url":"https://github.com/github.png","version":null,"created_at":"2022-05-30T11:31:42.601Z","updated_at":"2022-07-04T15:15:14.044Z","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":[],"created_at":"2025-04-10T20:31:39.604Z","updated_at":"2025-04-10T20:32:32.111Z","avatar_url":"https://github.com/buganini.png","language":"Python","funding_links":[],"categories":[],"sub_categories":[],"readme":"# KiCad Workspace Manager \u0026 Interactive GUI Panelizer\n\u003cimg src=\"resources/icon.png\" alt=\"Logo\" width=\"64\" height=\"64\"\u003e\n\nKikakuka (企画課, きかくか, Planning Section) (formerly Kikit-UI) is mainly built on top of [KiKit](https://github.com/yaqwsx/KiKit), [Shapely](https://github.com/shapely/shapely) and [PUI](https://github.com/buganini/PUI).\n\n# Features\n* Workspace Manager\n* Panelizer\n    * Interactive arrangement, what you see is what you get\n    * Freeform arrangement, not limited to M×N configuration\n    * Multiple different PCB panelization\n    * Auto/Manual tab creation\n    * Auto V-cut/mousebites selection\n    * Enable hole creation in panel substrate for extruded parts\n    * Does not require coding skill\n\n# kkkk file\nThe .kkkk file saves workspace information in JSON format.\n\n# kikit_pnl file\nThe .kikit_pnl file saves panelization settings in JSON format, with PCB paths stored relative to the file's location.\n\n# Global Alignment\n![Global Alignment](screenshots/global_alignment.gif)\n\n# Per-PCB Alignment\n![Per-PCB Alignment](screenshots/single_alignment.gif)\n\n# Substrate Hole\n![Substrate Hole](screenshots/substrate_hole.gif)\n\n# Tight Frame + Auto Tab + V-Cuts *or* Mousebites\n![UI](screenshots/tight_frame_autotab_autocut.png)\n## Output\n![Output](screenshots/tight_frame_autotab_autocut_output.png)\n## 3D Output\n![3D Output](screenshots/tight_frame_autotab_autocut_output_3d.png)\n\n# Tight Frame + Auto Tab + V-Cuts *and* Mousebites\n![UI](screenshots/tight_frame_autotab_vcuts_and_mousebites.png)\n\n# Loose Frame + Auto Tab + Mousebites\n![UI](screenshots/loose_frame_autotab_mousebites.png)\n## 3D Output\n![3D Output](screenshots/loose_frame_autotab_mousebites_output_3d.png)\n\n# Auto Tab\nTab position candidates are determined by the PCB edge and max_tab_spacing, prioritized by divided edge length (smaller first), and skipped if there is a nearby candidate (distance \u003c max_tab_spacing/3) with higher priority.\n\nIn the image below with debug mode on, small red dots are tab position candidates, larger red circles are selected candidates, and the two rectangles represent the two half-bridge tabs.\n![Auto Tab](screenshots/auto_tab.png)\n\n# Manual Tab\n![Manual Tab](screenshots/manual_tab.gif)\n\n# Run from source (Linux/macOS)\nMake sure your python can import `pcbnew`\n```\n\u003e python3 -c \"import pcbnew; print(pcbnew._pcbnew)\"\n\u003cmodule '_pcbnew' from '/usr/lib/python3/dist-packages/_pcbnew.so'\u003e\n```\nOn macOS, I have to use the python interpreter bundled with KiCAD\n```\nPYTHON=/Applications/KiCad/KiCad.app/Contents/Frameworks/Python.framework/Versions/Current/bin/python3\n```\n\nOn Linux, you should be able to just use the your default python3\n```\nPYTHON=python3\n```\n\nCreate a virtual environment and install dependencies\n```\n${PYTHON} -m venv --system-site-packages env\n./env/bin/pip3 install -r requirements.txt\n```\n\nRun\n```\n./env/bin/python3 kikakuka.py\n```\n\n# Run from source (Windows)\nOn Windows the Python interpreter is at `C:\\Program Files\\KiCad\\9.0\\bin\\python.exe`.\nBut however in my Windows environment venv is not working properly, here is how I run it with everything installed in the KiCad's environment.\n```\n\"C:\\Program Files\\KiCad\\9.0\\bin\\python.exe\" -m pip install -r requirements.txt\n\"C:\\Program Files\\KiCad\\9.0\\bin\\python.exe\" kikakuka.py\n```\n\n# CLI Usage\n```\n# Just open it\n./env/bin/python3 kikakuka.py\n\n# Start with PCB files\n./env/bin/python3 kikakuka.py a.kicad_pcb b.kicad_pcb...\n\n# Load file\n./env/bin/python3 kikakuka.py a.kikit_pnl\n\n# Headless export\n./env/bin/python3 kikakuka.py a.kikit_pnl out.kicad_pcb\n```\n\n# Contributors\n* @buganini\n* @dartrax\n","project_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Fbuganini%2Fkikakuka","html_url":"https://awesome.ecosyste.ms/projects/github.com%2Fbuganini%2Fkikakuka","lists_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Fbuganini%2Fkikakuka/lists"}