- scripts/mikilab_lib.py / mikilab_cli.py: typed Python API + JSON CLI
for add/update/remove/query, for other apps to integrate without
shelling out to add_component.py
- lib_common.py/import_component.py/import_batch.py: regenerate
sym-lib-table.global/fp-lib-table.global on every mutating call, not
just the project-local tables
- scripts/find_missing_3d_models.py: lists components with no 3D model
and search links to fill the gap
- docs/GUIDA_USO.md: practical Italian usage guide (companion to README.md)
- checkup fixes: removed orphan duplicate footprint
footprints/other/CP_20_1_ADI.kicad_mod, and a dangling
${easyeda2kicad}/tmp 3D model reference in AXP2101's footprint that
pointed at a file that never existed on disk
7.4 KiB
Guida rapida all'uso della libreria MIKILAB
Questa guida è il complemento pratico, in italiano, al
README.mdalla radice del repository (che resta il riferimento tecnico completo, in inglese, con anche la provenienza dettagliata di ogni componente). Qui trovi solo "cosa fare" per i compiti di tutti i giorni.
Cos'è
Una libreria KiCad personale e autonoma: simboli, footprint e modelli 3D per i progetti hardware di MIKILAB. Non dipende da nessun'altra cartella sul disco — puoi spostarla, zipparla o sincronizzarla su un'altra macchina e continua a funzionare.
mikylab_kikad_library/
├── sym-lib-table / fp-lib-table # registrano tutte le librerie
├── symbols/<categoria>/<Nome>.kicad_sym
├── footprints/<categoria>/<Nome>.pretty/<Nome>.kicad_mod
├── 3dmodels/<categoria>/<Nome>.step
├── scripts/ # tutti gli strumenti descritti qui sotto
└── MANIFEST.csv # log di provenienza, una riga per file
Categorie: analog, audio, display, fpga_cpld, interface,
logic, mechanical, memory, microcontrollers, other, power,
rf.
1. Installare la libreria in KiCad
Un solo progetto — se il tuo .kicad_pro sta dentro
mikylab_kikad_library/ (o copi sym-lib-table/fp-lib-table nella
cartella del progetto), KiCad li trova da solo grazie a ${KIPRJMOD}.
Nessuna configurazione extra.
Tutti i progetti (consigliato per una libreria personale):
- KiCad → Preferences → Configure Paths… → aggiungi
MIKILABche punta a/Users/michelebigi/Development/mikylab_kikad_library. - Rigenera le tabelle "globali" ogni volta che aggiungi componenti:
python3 scripts/generate_global_tables.py - Copia le righe
(lib ...)disym-lib-table.globalefp-lib-table.globaldentro le tabelle globali reali di KiCad (~/Library/Preferences/kicad/10.0/sym-lib-tableefp-lib-table), prima della parentesi finale. Vedi README §1 per lo script Python pronto che lo fa automaticamente (fai un backup prima). - Riavvia KiCad.
2. Usare simboli e footprint
- Schematico: cerca
MIKILAB_<Libreria>:<Simbolo>, es.MIKILAB_TPS7A2012PDBVR:TPS7A2012PDBVR. - PCB / footprint assignment:
MIKILAB_<Libreria>:<Footprint>, es.MIKILAB_SOT95P280X145_5N:SOT95P280X145-5N.
Se un footprint non mostra il corpo 3D, quasi sempre è uno dei ~48 casi
noti "${KISBLIB} gap" (footprint importati da fornitori il cui file
STEP originale non era incluso nell'export) — vedi la sezione checkup o
python3 scripts/check_library.py per l'elenco. Non è un errore da
correggere subito: pad, courtyard e serigrafia restano corretti, manca
solo la resa 3D.
3. Aggiungere un componente nuovo
Un componente singolo (hai già i file .kicad_sym/.kicad_mod/.step):
python3 scripts/add_component.py \
--name TPS7A2018PDBVR \
--symbol /percorso/TPS7A2018PDBVR.kicad_sym \
--footprint /percorso/SOT95P280X145-5N.kicad_mod \
--model /percorso/TPS7A2018PDBVR.step \
--category power
--footprint e --model sono opzionali. --category è opzionale,
viene auto-rilevata dal nome (altrimenti finisce in other).
Da uno zip SnapEDA ("Download KiCad"):
python3 scripts/import_snapeda.py --zip ~/Downloads/PARTNUMBER.zip [--category ...]
Da uno zip UltraLibrarian:
python3 scripts/import_ultralibrarian.py --zip ~/Downloads/PARTNUMBER.zip [--category ...]
Molti componenti insieme: una sottocartella per componente dentro una directory, poi:
python3 scripts/import_batch.py --source /percorso/batch_dir [--category power]
Tutti gli importer: rifiutano di sovrascrivere un componente esistente
(a meno di --update), deduplicano i footprint per contenuto (non per
nome file), rigenerano le lib-table da zero e appendono una riga a
MANIFEST.csv per ogni file toccato.
4. Aggiornare un componente esistente
Aggiungi --update allo stesso comando di import (qualunque sorgente:
file locali, SnapEDA, UltraLibrarian) per sostituire in-place
symbol/footprint/modello di un componente già presente, invece di
ottenere l'errore "esiste già":
python3 scripts/import_ultralibrarian.py --zip ~/Downloads/PARTNUMBER.zip --name NOME_ESISTENTE --update
--update non cambia la categoria di un componente — per ricategorizzare
serve remove + add nella nuova categoria (vedi §6).
5. Cercare / consultare componenti
Da riga di comando, senza scrivere Python:
python3 scripts/mikilab_cli.py list [--category power]
python3 scripts/mikilab_cli.py find --query tps22 [--category power]
python3 scripts/mikilab_cli.py get --name TPS7A2018PDBVR
Ogni comando stampa un JSON {"ok": true, "data": ...} su stdout.
Da Python, per integrare in un altro programma:
import sys
sys.path.insert(0, "/Users/michelebigi/Development/mikylab_kikad_library/scripts")
import mikilab_lib as mikilab
mikilab.list_components(category="power")
mikilab.find_components("tps22")
mikilab.get_component("TPS7A2018PDBVR")
6. Rimuovere / rinominare / ricategorizzare un componente
python3 scripts/mikilab_cli.py remove --name NOME
oppure mikilab.remove_component(name="NOME") in Python. Per spostare un
componente in un'altra categoria: remove seguito da un nuovo add
(--update) nella categoria corretta.
7. Controllare l'integrità della libreria
Da lanciare dopo ogni import/modifica manuale, e comunque periodicamente:
python3 scripts/check_library.py
Verifica: struttura delle cartelle, sintassi di simboli/footprint,
duplicati reali (per hash, non per nome), validità e portabilità dei
riferimenti ai modelli 3D, sintassi e coerenza di
sym-lib-table/fp-lib-table, e che ogni simbolo MIKILAB punti a un
footprint esistente. Esce con RESULT: OK se non ci sono errori (i
warning sono lacune note e documentate, non bloccanti — vedi README §4).
Per un elenco mirato dei componenti senza modello 3D (con link rapidi a SnapEDA/Octopart/UltraLibrarian per cercarlo):
python3 scripts/find_missing_3d_models.py
8. Verificare che non ci siano percorsi assoluti o dipendenze esterne
La libreria non deve mai contenere percorsi assoluti né dipendere da
kicad-personal-library. Puoi verificarlo in qualsiasi momento con:
grep -R "/Users/$(whoami)" --include="*.kicad_mod" --include="*.kicad_sym" .
grep -R "kicad-personal-library" .
Entrambi i comandi devono restituire nessun risultato (a parte, per il secondo, le menzioni storiche nel README).
Riferimento rapido comandi
| Cosa vuoi fare | Comando |
|---|---|
| Installare/aggiornare in tutti i progetti | python3 scripts/generate_global_tables.py |
| Aggiungere un componente (file locali) | python3 scripts/add_component.py --name ... --symbol ... [--footprint ...] [--model ...] [--category ...] |
| Aggiungere da zip SnapEDA | python3 scripts/import_snapeda.py --zip ... |
| Aggiungere da zip UltraLibrarian | python3 scripts/import_ultralibrarian.py --zip ... |
| Aggiungere molti componenti | python3 scripts/import_batch.py --source ... |
| Aggiornare un componente esistente | aggiungi --update al comando di import |
| Cercare un componente | python3 scripts/mikilab_cli.py find --query ... |
| Rimuovere un componente | python3 scripts/mikilab_cli.py remove --name ... |
| Controllare l'integrità della libreria | python3 scripts/check_library.py |
| Trovare componenti senza modello 3D | python3 scripts/find_missing_3d_models.py |