Stránka 2 z 2

Re: KiCAD - plocha/procento medi na PCB

Napsal: 13. 3. 2025, 9:17
od lapa
pifko:

Tak stridave uspechy:
* Nejdriv jsem bojoval se slash/backslash v ceste k programu/skriptu cu.py (nazval jsem ho stejne jako ty v tom prikladu) - ač jede ve Win, chce Unix like path - to mi nedošlo :) - ty slash v příkladu máš, ale myslel jsem, že jedeš v Unix/Linux prostředí.
* Pak se podarilo spustit, ale boj s kodovanim v odsud zkopirovanem skriptu - vyreseno kompletnim zrusenim diakritiky (nez abych bojoval s umistenim definice kodovani do skriptu)
* pak drobna syntakticka chyba (asi preklep) ve skriptu: print(f"...

No a pak prvni problem s tim, ze nejaky popisek, co jsem chtel vyleptat na spodni desku PCB, jsem oznacil jako vrstvu B.Cu misto DwgsUser a z toho chyba TEXTE... nema atribut item.GetArea.
Text jsem zmenil do vrstvy DwgsUser a poposlo to dal :) .

Ted jsem se zariznul na chybe
if item.GetLayer() in layers:
AttributeError: 'BOARD' object has no attribute 'GetFootprints'

a s tim si momentalne nevim rady.
Koukam do objektoveho modelu KiCADu (BOARD jako nejvyšší objekt a jeho metody), ale chce to hlubsi studium nebo upravit nejak skript, aby BOARD ignoroval.
Ale toho se nebojim, alespon si obcerstvim objektove programovani.
Python se mi libi cim dal vic :lol:.

Budu bojovat :).

Moc diky za pomoc s konzoli a ten skript.

Re: KiCAD - plocha/procento medi na PCB

Napsal: 14. 3. 2025, 8:18
od Thomeeque
Tu mojí poznámku ohledně nepřesnosti jsi přehlédl nebo k tomu jen nic nemáš?

Pokud přesuneš text do jiného layeru, nezapočítá se ti (další nepřesnost).

Na boardu mohou být i další prvky, například zóny (alá ground plate). Nicméně s těmi to bude ještě nepřesnější, zřejmě ti vyjde více mědi, než kolik na desce bude před leptáním. Taky by se u nich musel zohledňovat fill mode a další legrácky.

Pokud chceš spolehlivou rozumně přesnou hodnotu pro všechny možné scénáře, troufám si tvrdit, že tímto stylem nemáš šanci. Spolehlivá cesta je přes render do bitmapy (primitivní, ale účinná). Nenašel jsem možnost exportu do bitmapy, ale generuje to SVG, s tím už by se dalo pracovat..

GetArea chybu můžeš řešit pomocí hasattr (ve smyslu, že nespadne program, plocha prvku se samozřejmě nezapočte).

Kód: Vybrat vše

import pcbnew

def calculate_copper_area():
    pcb = pcbnew.GetBoard()
    layers = [pcbnew.F_Cu, pcbnew.B_Cu]
    total_area = {layer: 0 for layer in layers}

    for item in pcb.GetDrawings():
        if item.GetLayer() in layers:
            if hasattr(item, "GetArea"):
                total_area[item.GetLayer()] += item.GetArea()
            else:
                print(f"Ignored item: {item.GetClass()}")

    for zone in pcb.Zones():
        if zone.GetLayer() in layers:
            total_area[zone.GetLayer()] += zone.GetBoundingBox().GetArea()

    for module in pcb.GetFootprints():
        for pad in module.Pads():
            if pad.GetLayer() in layers:
                total_area[pad.GetLayer()] += pad.GetBoundingBox().GetArea()

    for track in pcb.GetTracks():
        if track.GetLayer() in layers:
            total_area[track.GetLayer()] += track.GetWidth() * track.GetLength()

    nm2_to_mm2 = 1e-12

    print("\n**Celkova plocha Cu na PCB:**")
    for layer, area in total_area.items():
        print(f"- {pcbnew.LayerName(layer)}: {area * nm2_to_mm2:.2f} mm2")

if __name__ == "__main__":
    calculate_copper_area()
Jinak:
- print(f" není překlep, asi jsi tam měl jinou chybu
- na problém 'BOARD' object has no attribute 'GetFootprints' jsem nenarazil (projel jsem několik dem)
- program pouštím v KiPython konzoli takto:

Kód: Vybrat vše

exec(open("/Users/thmq/IdeaProjects/MiscUtils/KiCAD/chat.py").read())

Re: KiCAD - plocha/procento medi na PCB

Napsal: 14. 3. 2025, 9:11
od lapa
Tomiiik:
Vsechno respektuji, ale zjistil jsem dost zasadni problem - ze mam verzi 5.1.12 a moc vyssich asi nepujde do Win7 64bit spustit ... :lol:.

Ta 'BOARD' object has no attribute 'GetFootprints' prave souvisi s verzi - jedno forum/web to presne popsal ...

Jestli se ty tebou popsane chyby v plochach nascitaji, tak do bude asi v nizsich desitkach procent - coz je i tak pokrok vuci dosavadni skoro uplne neznalosti/nesledovani vzhledem k cili - odhad vycerpanosti chloridu :).

Zatim jsem ten skript orezal tak, ze alespon nepada a dava nejake vysledky - bude dalsi badani.

Vzhledem k tomu, ze jsem vubec neznal Python ani objektovy model pcbnew jako takovy, jsem spokojen ...
Beru to cele jako hobby - coz nekomu muze pripadat dost nevazne ...

Jak se da v te konzoli donutit, aby zapomnel posledni importovany skript a nacetl jeho novou verzi?
To jsem neobjevil a nez jsem zjistil, ze z nejakeho duvodu nerefreshuje puvodne importovany skript jeho novym importem, tak jsem se dost vztekal, proc spousti porad tu puvodni verzi?

Zatim vsem dik.

Re: KiCAD - plocha/procento medi na PCB

Napsal: 14. 3. 2025, 9:32
od lapa
Tomiiik:
Ten tvuj zpusob spousteni mi vyresil to mnou dotazovane neimportovani aktualizovane verze skriptu.
Dik.

Re: KiCAD - plocha/procento medi na PCB

Napsal: 14. 3. 2025, 12:42
od Thomeeque
Bezva 👍

Kdyby sis chtěl výsledky s něčím porovnat: https://thmq.mysteria.cz/pcbCu/

Screenshot 2025-03-14 at 13.40.54.png

:) T.

PS: Umí to i SVG, akorát to zatím výstup z KiCADu otevírá v dost malém rozlišení, to ještě zkoumám..

Screenshot 2025-03-14 at 13.46.01.png

Re: KiCAD - plocha/procento medi na PCB

Napsal: 14. 3. 2025, 3:51
od lapa
Tomiik:
Dik za odkaz, muzu s tim porovnavat.

No napadlo mne te inspirovat, ze bys tam jeste dal hodnotu pixelu copperPixels prevedenou na cm2, mohl bych v tom svem pinozeni na KiCAD.PCBNEW zpomalit.
Pokud bys znal DPI (mozna z obrazku) a/nebo rozmery desky (zadal by uzivatel nebo se da asi spocitat z tvych board udaju a DPI), mozna by to slo.
Je to challenge :) ?

Re: KiCAD - plocha/procento medi na PCB

Napsal: 14. 3. 2025, 4:04
od Thomeeque
SVG obrázek, vygenerovaný KiCADem, fyzické rozměry obsahuje, takže by to mělo jít celkem snadno, měl jsem to v plánu, až se popasuju s tím nízkým rozilšením 👍 Jen jsem to už dnes musel nechat být, poladim časem..

Re: KiCAD - plocha/procento medi na PCB

Napsal: 14. 3. 2025, 4:53
od lapa
Thomeeque píše: 14. 3. 2025, 4:04 SVG obrázek, vygenerovaný KiCADem, fyzické rozměry obsahuje, takže by to mělo jít celkem snadno, měl jsem to v plánu, až se popasuju s tím nízkým rozilšením 👍 Jen jsem to už dnes musel nechat být, poladim časem..
Nespecha to, uz tak je to pekne ... :)

Re: KiCAD - plocha/procento medi na PCB

Napsal: 15. 3. 2025, 7:47
od Thomeeque
Je to tam :) T.

Screenshot 2025-03-15 at 20.47.20.png

Re: KiCAD - plocha/procento medi na PCB

Napsal: 16. 3. 2025, 8:51
od lapa
Paráda.