576

(38 odpovědí, posláno do Testovací verze programu Layout)

Kombinování barev by vydalo na další samostatné téma.  Něco však o něm napíšu zde, v naději, že případní zájemci se sem dostanou přes hledací nástroje.

Jak víte, barvy se na obrazovce OR-ují.  Protože dnes padají v úvahu asi jen 24-bitové barevné režimy, znamená to, že se OR-ují byty jednotlivých barevných složek.  Z toho důvodu je třeba se vždy zamyslet nad přesným kódem barvy, nestačí se jen podívat na odstín.

Jestliže máte na nějaké vrstvě např. barvu (v příslušných složkách) 63, stane se při kombinování něco dost jiného než s barvou 64.  Příklad (v odstínech kyanové) vidíte zde:

BARVA 63 + BARVA 127 = BARVA 127
BARVA 64 + BARVA 127 = BARVA 191

BARVA 63 + BARVA 160 = BARVA 191
BARVA 64 + BARVA 160 = BARVA 224

Ještě zajímavější bude kombinování v případě, kdy se složky trochu navzájem liší:

BARVA 63, 63 + BARVA 127, 128 = BARVA 127, 191
BARVA 63, 63 + BARVA 128, 127 = BARVA 191, 127

577

(38 odpovědí, posláno do Testovací verze programu Layout)

kolin napsal:

Jeste jsem to ted zkousel obejit makrem, ale bohuzel jsem zjistil, ze makrem nelze zapinat a vypinat vrstvy tak, abych mohl konkretne definovat viditelnost prislusne vrstvy i za cenu dlouheho makra (musel bych obslouzit pokazde vsechny vrstvy). Lze jen enterem negovat stav viditelnosti, tedy ani tudy by pro me cesta nevedla.

Ve skutečnosti mohou makra nastavovat i absolutně určené hodnoty přepínačů (tj. nejen relativně k aktuální hodnotě).  K tomu slouží klávesy Ctrl-PgDn, Ctrl-PgUp a další, popsané v helpu pro menu.

Horší by to bylo s nastavováním odstínů barev v tom dialogovém okně, převzatém z Windows; to by makra nedokázala.  Možná by se občas hodilo vrstvy nikoliv zcela vypnout, nýbrž jen ztlumit (jeden návrhový systém -- teď si nevzpomínám, který -- např. uměl nastavit všem nepodstatným vrstvám společnou šedou barvu), ale dosud to je neekonomické: příliš pracné, mají-li se barvy za chvilku stejným postupem vracet zpátky.  Jakmile bych ten nový zásobník uchovávající barevná nastavení přidal do konfiguračního souboru, už by se to asi vyplatilo.

578

(38 odpovědí, posláno do Testovací verze programu Layout)

??asto chci vidět jen vodivý obrazec, případně jeho jedinou vrstvu (spousta podivností tak ihned padne do oka, zatímco při zobrazení dvou a více vrstev se na ně bez vynaložení pozornosti a trochy přemýšlení těžko přijde).  Jindy mě také zajímá, kde jsou součástky (takže chci vidět jejich vnější obrysy).  Nakonec potřebuji urovnat popisy součástek, a tak se starám už jen o vrstvu potisku a vrchní vodivou vrstvu.  U běžné dvouvrstvé desky s jednostrannou montáží to představuje asi pět různých kombinací vrstev.

Praktické zkušenosti mi přitom ukázaly, že spíše než individuální nastavování pohledu je pro mne daleko pohodlnější mít těch několik potřebných kombinací někde připravených a, kdykoliv jsem na pochybách, mezi nimi přepínat.  Současné řešení v testovací verzi dovoluje přepnout na další kombinaci jedinou klávesou, aniž bych opustil menu Graphics.  Vůbec si nepotřebuji pamatovat, v jakém pořadí je mám uložené; pokud neuvidím to, co chci, prostě přepnu na další.

Podívám-li se zpět, mohu říci, že to, jak bylo pracné si zobrazování přestavit na jiný pohled (a pak zase vracet zpět) občas ovlivňovalo samotný styl práce.  Teď není přepínání (mezi předem připravenými kombinacemi) o moc složitější než třeba změna měřítka kolečkem myši.  Ostatně pokud se nové příkazy Graphics | Roll Down a Graphics | Roll Up osvědčí, mohu je docela dobře na kolečko přidat (podmíněné Alt nebo jiným přesmykačem).

kolin napsal:

... co vas vedlo k uvaham o teto funkci?

Před časem jsem dostával také náměty, jak ukládat nastavení pod nějakým jménem (podobně jako to navrhujete Vy ve svém prvním příspěvku).  To mi však stále připadalo zbytečně složité pro uživatele i pro programátora.  Teprve při práci na řadě technologicky stejných desek jsem si ujasnil, že to asi vyžaduje spíše tohle.  (Velmi volnou analogii můžete vidět i u zoomu -- tam také dle potřeby zvětšujete a zmenšujete, aniž byste se staral, jaké konkrétní procento zvětšení tím nastavíte.)

kolin napsal:

... system, kdy si uzivatel uklada vsechny PNL nekam stranou do spolecneho adresare a doposavad to bylo tak, ze program vlastne vzdy u kazde desky sahal do jednoho stale stejneho adresare?

Ano.  Někdo má PNL soubory např. u schemat ve zcela jiném adresáři (a fyzicky třeba i na jiném počítači, protože schemata kreslí další pracovník).  Doposud program nikdy PNLN (a tedy ani cestu k němu) neměnil; vždy zůstávala ta, kterou si uživatel sám nastavil v dialogu pro otvírání PNL souboru (resp. parametrem předaným v příkazové řádce programu).  Z těchto důvodů se možná ukáže nutnost nové chování podmínit novým přepínačem -- počkáme, jaká bude další odezva.

580

(1 odpovědí, posláno do Dotazy a náměty k programu Layout)

Takovéto značení ve schematu podporuje Formica již od počátku: zatímco "index vývodu" musí být číslo (odpovídající číslu vývodu v Layoutu), "návěští vývodu" může být řetězec.  Způsob zadávání je zřejmý z obrázku.

http://www.formica.cz/files/forum/bga.png

Indexy je ovšem třeba v dialogu zadávat až po návěštích (jinak by se návěští odvozovala automaticky).  Možná stojí za úvahu nečíslovat zcela průběžně, ale pin B1 očíslovat 21, C1 41 atd., aby byla vzájemná korespondence obou značení lépe patrná.

V testovací verzi v archivu www.formica.cz/files/Layout-p98-test.zip jsem teď pokusně naprogramoval automatické odvození PNLN v případech 1b, 3a a 4 (poslední ovšem s výjimkou čtení při startu programu).  Prosím vyzkoušejte si, zda by Vám takovéto chování nevyhovělo lépe než dosavadní.

Při práci systémem "co deska, to adresář" (přičemž se v adresáři hromadí jednotlivá vývojová stadia v PCB souborech různých jmen) je požadavek automaticky zasáhnout do PNLN právě jen při změně cesty v PCBN docela logický, ale pro jiný styl práce přece jen trochu nepřirozený.  Vyšel jsem naopak z toho, že v tomto systému pravděpodobně bude v každém adresáři jen jeden PNL soubor.  I pokud se jmenuje jinak (tj. často jednodušeji) než deska, stačí tedy po automatické změně PNLN jen poklepat v dialogovém okně na jeho ikonu.  Nežádoucích automatických změn přitom nebude tak mnoho -- nastanou jedině v souvislosti s přečtením jiné verze desky s jiným PCBN (tedy dokonce nikoliv při samotném jejím zápisu pod jiným PCBN, což by byl případ 3b).

Sám jsem zvyklý pracovat většinou tak, že starším verzím desky dávám (v Exploreru) jinou příponu (např. z deska.pcb udělám deska.pcb.2).  Protože se typ souboru změní, staré verze mi nepřekážejí v explorerových oknech (což je i to užité pro otvírání souboru), takže mohu mít v jednom adresáři i více "projektů".  Zároveň se aktuální verze desky jmenuje stále stejně, takže se mi automaticky odvozuje správné PCBN.

Zásah, který jsem teď v programu udělal, tak asi přinese jednoznačné zhoršení pouze těm, kdo si ukládají PNL soubory ve zcela jiném adresáři než desky -- jim každé automatické odvození PNLN zapomene k tomuto adresáři cestu.

582

(38 odpovědí, posláno do Testovací verze programu Layout)

Po sesbírání prvních zkušeností jsem skutečně přidal příkazy Graphics | Roll Down a Graphics | Roll Up, které rotují obsah zásobníku tak, že se na obrazovku dostane naposled vložené, resp. nejdříve vložené (a dosud nezapomenuté) nastavení.  Rotuje se ovšem "skrz" aktuální nastavení (podobně jako v procesorech fungují instrukce Rotate Left / Right Through Carry).  Pokusný program s těmito příkazy si můžete stáhnout z archivu www.formica.cz/files/Layout-p98-test.zip .

Zároveň tam (zcela provizorně) zobrazuji i hodnotu stack pointeru, aby měl uživatel alespoň trochu představu, co vše je uloženo.  Protože však ukazuje na vrchol zásobníku (který je v poli indexovaném od nuly) a protože aktuální nastavení je mimo zásobník, rotace probíhá mezi  položkami, jejichž počet ve skutečnosti je o dva vyšší.

Pokud toto vše někomu připadá odpudivě programátorské, mohu s ním jedině souhlasit.  Východisko bych však hledal spíše v nalezení intuitivnějších a atraktivnějších jmen příkazů.  Jinými slovy, koncepce, kdy si uživatel ukládá svoje jednotlivá nastavení grafiky anonymně a pak mezi nimi může cyklicky přepínat, mi připadá výhodnější a sympatičtější než nastavení ukládat a vyvolávat např. pod předdefinovanými čísly nebo uživatelem zadanými jmény.  Myslím si, že uživatel jména ani čísla celkem nepotřebuje (vymýšlet si a pak pamatovat...) v situaci, kdy může snadno přepínat z jednoho anonymního nastavení na následující tak dlouho, až před sebou na obrazovce uvidí to, které mu vyhoví.

583

(16 odpovědí, posláno do Dotazy a náměty k programu Layout)

Výhody a nevýhody užívání inverzních vrstev bych osobně viděl zhruba takto:
+ Matrice pro vnitřní vrstvu vyjde řádově jednodušší, než kdyby na ní byla rozkreslovaná měděná plocha.  To však je především historická výhoda z dob clonkových fotoplotterů, rastrovým je to téměř jedno.
+ Počet prvků na desce je podstatně nižší.
+ Návrhář nemusí spojový obrazec vnitřní vrstvy aktivně vytvářet, vzniká mu sám.  (Musí jej ovšem zkontrolovat -- viz níže.)  Speciálně, nemusí kreslit segmenty spojových čar pro připojení tepelně isolovaných pájecích bodů.
+ Vrstvu lze zobrazovat, aniž by příliš zastiňovala ostatní.
??? Návrhář si však musí odvodit potřebné logické typy pájecích bodů a dosadit je do pouzder a typu prokovky.
??? Fyzické propojení není pájecím bodem typu Thermal zaručeno automaticky: může se např. stát, že jej budou obklopovat Annulusy ze čtyř stran tak těsně, že cestu od něj k měděné ploše přeruší.  Je tedy vždy třeba matrici před odesláním prohlédnout.
??? Program Layout "nerozumí" vodičům případně vytvořeným metodou dělicích čar.
??? Způsob připojení Thermalů je uniformní (konkrétně to jsou vždy čtyři propojky k okolní mědi v rozích čtverce) a návrhář jej nemůže příliš ovlivnit.

Protože rastrové fotoplottery zcela převládly a Formica umí zacházet se stále vyššími počty segmentů, výhod inverzních vrstev v průběhu času ubývá.  (Situaci by mohlo změnit automatické vytváření padů typu Thermal v nějaké příští verzi.)  Podíváte-li se do galerie, pěkné čtyřvrstvé desky tam jsou vytvořeny i bez inverzních vrstev (vedle desky rdh1 ještě www.formica.cz/galerie/j6.pdf , www.formica.cz/galerie/j6-2.pdf , www.formica.cz/galerie/j6.zip).

Samozřejmě pokud někdo při přípravě výroby zasahuje přímo do souborů RS274X (třeba kvůli zlacení přímých konektorů, apod.), může se asi stát v podstatě cokoliv.  Vzpomínám si už jen mlhavě, oč v Bekelu tehdy v září 2000 vlastně šlo; snad si tam chtěli z matric odvodit testovací program.  Matrice generované Formicou mají pájecí body typů Annulus a Thermal tvořeny obyčejnými oblouky a úsečkami, takže z toho hlediska pro zásahy nebyl žádný důvod.

Operovat zde s myšlenkou pokroku by mi připadalo trochu nadnesené, tohle je celkem přízemní záležitost.  Označím-li PNLN a PCBN jména příslušných souborů včetně cesty, pak je jasné, že defaultní PNLN mohu měnit jedině na základě nějaké události.  Tou může být např.:
1 start programu
1a start programu bez parametrů
1b start programu s PCBN jako parametrem
1c start programu s PNLN jako parametrem
2a otevření dialogu pro PNLN
2b vložení nového PNLN v dialogu
3 změna PCBN
3a změna PCBN při čtení PCB souboru
3aa - úspěšném
3ab - neúspěšném z důvodu neexistence (tj. otvírání/vytváření nového souboru)
3ac - neúspěšném z jiného důvodu
3b změna PCBN při zápisu PCB souboru (tj. ukládání desky pod novým jménem)
4 čtení PCB souboru bez změny PCBN (tj. aktualizace desky)
5 zápis PCB souboru bez změny PCBN (tj. průběžné ukládání práce na disk)
Změna defaultního PNLN by přitom asi ve všech případech představovala jeho odvození od aktuálního PCBN.

V současnosti se změna provádí jen v případech 1c, 2b.  Možná by mělo smysl uvažovat (jednotlivě) o doplnění případů 1b, 3 (anebo 3aa, 3ab, 3b), snad 4.   

Uvidím, vyvolá-li toto téma nějakou další odezvu.  (Něco z toho asi totiž již kdysi bylo diskutováno, a zřejmě tehdy byly nějaké výhrady, kvůli nimž jsem ponechal dosavadní řešení.)  Naprogramovat požadované chování, nejsou-li o něm žádné pochybnosti, je ostatně daleko méně pracné než sepisovat takovéto příspěvky.

585

(16 odpovědí, posláno do Dotazy a náměty k programu Layout)

Děkuji za Vaši pokusnou desku, kterou jste mi poslal; poslouží jako hezká ukázka.  Jen jsem tam pro zajímavost přidal číslování vrstev, upravil nějaké drobnosti, a desku vystavil zde: www.formica.cz/files/forum/invlayer-u-430.pcb .

http://www.formica.cz/files/forum/invlayer-u-430.png

Trocha komentáře:  V režimu Mark Track se lze snadno přesvědčit, které prvky program Layout chápe jako propojené inverzními vrstvami.  Obě prokovky vedle pouzdra U2 byly vloženy ručně; router je pak umí využít k jeho připojení.

Layout si pamatuje pathname a filename naposled čteného PNL souboru.  Otázka je, co by se mělo udělat, když v okamžiku otvírání dialogu pro zadání jména PNL souboru není zapamatovaná cesta k němu totožná s cestou k PCB souboru.  Když tam totiž vnutím cestu k PCB, musím zahodit i jméno PNL souboru, protože už nemá smysl.  Jak by se to líbilo uživatelům, kteří mají PNL soubory v jiném adresáři než desky?

Teď se to myslím po PNL souboru shání v tom adresáři, odkud byl čten posledně (a zároveň se nabízí jméno posledně čteného souboru).  Důvod, proč je to takhle naprogramované, vychází z toho, že uživatelé v každém projektu mívají (zjednodušeně řečeno) jedno schema, tj. netlist v souboru stále téhož jména, ale různá stadia vývoje desky v několika souborech s různými jmény.

Před časem jsem si o tom s někým dopisoval (myslím právě s panem Fürbachem), ale nedošlo se k nějaké jasné představě, jak by se měl příkaz chovat, aby každému uživateli v průměru ušetřil práci.  Uvažoval jsem i o tom, že bych přidal další příkaz (např. Update Netlist), který by neměl žádný dialog a automaticky by přečetl netlist ze souboru jména odvozeného od jména desky.  (To by pak uvolnilo cestu k hledání složitější logiky pro příkaz Load Netlist.)  Ale ani pak nebyla jasná specifikace požadovaného chování.

Technicky není problém do dialogu dosadit nějakou defaultní hodnotu např. po každém přečtení desky.  Problém je vymyslet žádoucí chování.  Co třeba přesně myslíte tím prvním otevřením?

Abych se přiznal, mě to zas tak strašlivá chyba nepřipadá.  Jde o chování popsané v helpu -- levému tlačítku zde odpovídá Enter, pravému Esc (a střednímu No) -- a je od přechodu pod Windows, tedy již sedm let, stále stejné.  Koneckonců tam máte ještě backup.

Již několikrát jsem měl nutkání nahradit tyto tradiční dialogy windowsovskými (i včetně ošetření maker), ale vždy se mi zdálo, že uživatelé jsou celkem zvyklí na současné chování.  Jednou to jistě udělám, jen co si rozmyslím dostatečně konsistentní chování.

Obecně jistě platí (a nejen pro návrhové systémy), že uživatel může dost snadno udělat něco jiného, než chce.  Podle mého názoru hlavním cílem programu není mu v tom zabránit, nýbrž snížit pravděpodobnost, že něco takového udělá a zároveň si toho nevšimne (tedy dříve, než se mu vrátí osazená série desek z výroby).  To je třeba důvod, proč se program ptá před smazáním jednotlivé součástky:  tu sice lze snadno ihned vrátit z undo bufferu, ale vyskytly se případy, že si uživatel smazal velkou součástku (např. typovou desku s konektorem), aniž by si toho včas všiml.  (Oproti tomu, když uživatel maže okénko, musí být srozuměn s tím, že si tak může smazat i součástky, takže tam dotaz asi není potřeba.)

589

(16 odpovědí, posláno do Dotazy a náměty k programu Layout)

Nejsem si úplně jist, zda dotazu správně rozumím, ale s inverzními napájecími vrstvami to vypadá zhruba takhle:

Rozhodnutí, že nějaká vodivá vrstva bude inverzní, je věc uživatele a Layout o něm "neví" (stejně jako neví o tom, že jiná vrstva bude sloužit třeba pro lepidlo).  Aby Layout fungoval konsistentně, měly by v ní být jen pady (mají-li otvor), a sice pady s ploškami pouze typů Annulus a Thermal, a čára tvořící obrys desky (to z technologických důvodů, aby se měď na hraně desky nedostala ven).  Layout pak bude všechny pájecí body, které mají Thermal na téže vrstvě, pokládat za spojené.  (To také znamená, že nevezme na vědomí žádné dělicí čáry, které na inverzní vrstvě případně nakreslíte; můžete je sice užít, ale pak za správnou konektivitu ponesete odpovědnost sám.)

Prokovky by měly mít na všech inverzních vrstvách typ Annulus, aby je autorouter užíval správně.  K inverzní vodivé vrstvě router sám připojit vodič prokovkou neumí -- uživatel to musí udělat ručně, pomocí dalšího logického typu prokovky, který má na příslušné vrstvě Thermal.

Odhlédneme-li od otázek kompatibility, věc má podle mého názoru pouze jediné dobré řešení:  Pady identifikovat jmény spíše než dosavadními čísly.  Samozřejmě i ve jménech se mohou vyskytnout konflikty, ale ty lze vždy ošetřit vytvořením nového unikátního jména ve tvaru <jméno typu padu>.<pořadové číslo> nebo <jméno knihovny>.<jméno typu padu> apod. 

??ísla se dosud užívají proto, že jednak by se k zavedení jmen hodila spíše dialogová okna ve stylu exploreru (která ale nejsou dost dobře slučitelná se současným ovládáním makry), jednak (trochu k mému překvapení) o zavedení jmen dosud nebyl příliš velký zájem -- pokročilejší uživatelé si většinou nějak zvykli na číslování a ti ostatní zřejmě tolik nepotřebují typy padů doplňovat, takže na zde diskutované problémy ani nenarazí.

To, co navrhujete Vy (tedy v podstatě anonymní pady), bych považoval za krok zpět.  Je sice pravda, že některé jednodušší systémy to právě takhle mají řešené, jenže pak uživateli v řadě situací chybějí nástroje, jak určit, který typ padu má na mysli.  Na druhé straně je nemyslitelné si každý typ padu vytvářet znovu, kdykoliv jej chce znovu užít, -- SMD pad může snadno mít 2 rozměry (plus případnou excentricitu) na každé ze tří vrstev (měď, maska, pasta) -- takže jej uživatel bude chtít alespoň odněkud okopírovat.  Avšak pokud typ padu nemá žádný identifikátor, půjde na něj nanejvýš ukázat na desce myší, zatímco složitější a efektivnější operace nebudou vůbec padat v úvahu.

kolin napsal:

Podle me to chce se nebat i velmi zasadnich zmen, nebo casem formica zrati dech i pres nekolik vyjimecne skvelych vlastnosti. V emailech jste psal ze uz mate nekolik let rozdelanou Formicu 5, proc ji neuvolnite?

Právě proto, že je jen rozpracovaná.  To, že je naprogramovaná nová databáze (dovolující např. otáčení o obecný úhel nebo zrovna ty pojmenované typy pájecích bodů), je málo platné, když nejsou dokončeny editační operace ani systém menu.  Od specifikací bývá k prodejnému programu docela dlouhá cesta.

kolin napsal:

Take by to chtelo udelat free verzi i posledni verze, nejlepe stejnym zpusobem jako eagle=omezenim velikosti desky a ne poctem prvku. Az nekdy skoncim u Papoucha, tak pro svoje domaci bastleni uz formicu nebudu moci pouzit a budu se muset ucit eagle.

Něco Vám pošlu e-mailem.

Děkuji za podrobný příspěvek s hodnotnými náměty, které ostatně vystačí ještě na celé další téma.  V tomto vlákně bych se však rád omezil na takové zásahy, které by šlo udělat v rámci stávajícího formátu *.PCB souborů. 

Možná bych měl zdůraznit, že body 1, 2 a 3 v mém minulém příspěvku nijak nemají povahu vzájemně se vylučujících variant (pouze 2a je alternativou k 2b); bod prostě 1 je nutným předpokladem pro bod 2 a k oběma lze navíc případně přidat bod 3.  (Zde bych ještě snad dovysvětlil, že bod 3 znamená doplnit příkaz, kterým uživatel může kdykoliv, tj. nezávisle na přebírání součástek z knihovny, připodobnit řazení tabulky pájecích bodů libovolnému jím zvolenému souboru.)  Z toho hlediska je návrh pana Dubeckého -- chápu-li jej správně -- alternativou k mému bodu 2.

stefan.dubecky napsal:

4) Na začátku by každá deska měla ve své tabulce definovány jen nejzákladnější pady, tedy průchody, případně nějaký speciální upevňovací otvor apaod.. Nic jiného. Teprve při natahování součástek na desku z knihoven (jiných desek) by se do této tabulky přidávaly další pady podle potřeby. ??íslování by klidně mohlo probíhat pouze vzestupně tak, jak se jednotlivé součástky budou umísovat (samozřejmě by šlo i zachovávat původní čísla v případě, že jsou ještě volná). Pokud by program našel již použitou definici padu, využil by ji bez ohledu na číslování (různá čísla jednoho typu padu u dvou různých knihoven by se sjednotila).

Když si to zkusím nějak interpretovat, algoritmicky bych zde oproti bodu 2 viděl hlavně tyto rozdíly:
* Určité posice v tabulce by byly zafixovány, takže by je čtení z knihovny nemohlo přepsat, ani kdyby se pájecí body těchto typů na desce nevyskytovaly.  (Pan Dubecký zmiňuje typy 0 a 1; mohly by to být třeba 0 až 9, které mají tu vlastnost, že se dají z tabulky vybírat klávesovými zkratkami.)
* Po konfliktu při čtení padu z knihovny by se prohledávala tabulka rozměrů (na desce), zda se v ní pad stejných rozměrů již nevyskytuje pod jiným číslem typu.  Rozdíl však je spíše důsledkem opomenutí či nedomyšlenosti z mé strany -- asi by se to muselo dělat v každém případě, jinak by se při čtení téhož padu (dokonce i se stejným číslem!) ze dvou různých knihoven mohl do tabulky dostal dvakrát.
* Je-li nutno rozměry přidat do tabulky, hledala by se volná posice od nejnižších čísel (takže by se tabulka vlastně budovala až při čtení knihovny).  Předpokládáme-li však, že čísla typů z knihovny budou pokud možno zachována, vlastně se dostáváme zpět k bodu 2b.

Naopak pouze z hlediska algoritmů pro čtení padů z knihovny nelze tak snadno zahrnout předpoklad, že se začíná s téměř prázdnou knihovnou.  Algoritmy ošetřující konflikty totiž musejí fungovat v každém stádiu návrhu, tedy i s libovolnou podobou tabulky rozměrů.

Pokusím-li se shrnout základní společné vlastnosti všech diskutovaných přístupů, vychází mi:
* Uživatel by ztratil dosavadní záruky, že pájecí bod, který si nadefinoval, najde vždy pod stejným číslem typu.
* Oproti tomu by však měl zaručeno, že rozměry pájecího bodu se budou přenášet spolu s pouzdrem, v němž je užit (až do případného vyčerpání posic v tabulce rozměrů na desce).

Sám bych zde asi zdůraznil jen potřebu najít takové algoritmy, aby se změny v číslování, které jsou pro ošetření konfliktů nevyhnutelné, uživateli jevily co nejmenší.

Z části příspěvku pana Dubeckého jsem si dovolil vytvořit nové vlákno, jelikož se mi zdá, že samostatné problémy, které se s ní pojí, mohou převážit otázky spojené s původním tématem konfliktu v rozměrech pájecích bodů.  Na druhé straně by zde každá změna v definici typu padů znamenala zásah do definice formátu *.PCB souborů (což je věcí další verze programu), a proto asi v tomto vláknu spíše než o bezprostředně použitelné náměty půjde o "náměty a úvahy".

stefan.dubecky napsal:

(...)
A ještě mám jeden návrh ohledně padůí. Souvisí to s tím, co jsem již napsal : s množstvím různých tupů SMD padů. Škoda je, že se tento počet ještě násobí 2 x, protože musím pro obě strany definovat dva různé pady. To je velká škoda, protože obě definice jsou téměř stejné, jen vrstvy jsou zrcadlené. Původní záměr pana Horského měnit velikost padu nahoře a dole v závislosti na technologii se bohužel nedá využít ze dvou důvodů:
i) při pájení vlnou je nutné rožšířit pady oproti pájení pastou pouze směrem od středu pouzdra. Naopak vnitřní strana padů se většinou může zkrátit. V každém případě to vede nejen ke změně rozměru padu, ale také k jeho posunutí.

Zde se stále nabízí jeden nástroj, a sice excentricita plošky oproti (pomyslnému) středu padu.  O ní jsem uvažoval již v dobách vzniku verze 4.0, tehdy především ve spojitosti s klasickou THT technologií, kde např. ve 3. konstrukční třídě může být pro pouzdro DIP14 výhodné užít oválné pady, ale vysunout je směrem od osy pouzdra, aby pod ním zůstalo více místa pro spoje.  Celkem však o to nebyl zájem a mám podezření, že ani ty Opposite Types nebyly nikdy příliš užívány pro změnu technologie ani u těch SMD součástek, u kterých by to šlo. 

V každém případě by zavedení excentricity znamenalo:
1) nový parametr u každé vrstvy v popisu každého logického typu (samozřejmě může být většinou nulový, takže uživateli nemusí tolik vadit);
2) nový bit u každého pájecího bodu (protože by již nestačilo rozlišovat orientaci 0 a 90°, ale bylo by nutno doplnit 180 a 270°);
3) pro uživatele možná navíc trochu zmatku (či nezvyku) při vytváření SMD pouzder, než by si ujasnil, co bude pokládat za pomyslný střed pájecího bodu (mimochodem ve zdrojových textech pro program Genlib jako střed beru konec pájecího bodu dle výkresu v normě, a zavedení excentricity by naopak mohlo uživateli k akceptování takovéhoto pravidla uvolnit ruce, čímž by se vyhnul nutnosti všelijakých přepočtů).

stefan.dubecky napsal:

Navíc některá pouzdra, třeba běžná SO s roztečí 1,27 mm, by navíc měla mít na jedné straně (kde vlna končí) širší poslední pady pro odtržení vlny.

Zde už by šlo o posuv v dalším směru, takže by ani výše zmíněná excentricita nestačila.  Na druhé straně se mi však nezdá příliš praktické řešit problém tzv. záchytných pájecích bodů na úrovni knihoven, jelikož pak by musela u každého pouzdra existovat samostatná varianta pro každou jeho přípustnou orientaci vůči pohybu vlny.  Spíše bych to asi ošetřil ručním umístěním padu (stejného typu jako pro piny) na příslušný konec pouzdra (i za tu cenu, že bych jej musel připojit fiktivním vodičem, aby mi DRC nehlásilo chyby).  To však je jen můj názor -- rád se seznámím i s jinými.

stefan.dubecky napsal:

Zkrátka - jiná technologie vede automaticky k jiné definici pouzdra, takže měnit rozměry padu při otáčení nemá smysl.
ii) navíc spodní strana nemusí být vždy pájena vlnou, někdy je pasta na obou stranách.

Takže bych narhoval - pokud má pad nastaven "Opposite Type" sám na sebe, zrcadlit při přesunu SMD padu na opačnou stranu vždy všechny vrstvy. Případ, kdy bych chtěl u součástky při jejím zrcadlení ponechat pady na původní straně (tedy na opačné, než zbytek součástky), si opravdu nedovedu ani teoreticky představit (v nejhorším by se tento nadmíru podivný případ dal řešit právě jiným oposite typem). Ono se to vlastně týká i klasických padů - tam by zrcadlení také mělo automatický probíhat.

To by vlastně znamenalo, že každý pad (tj. nikoliv pad type) by musel obsahovat další bit, který by udával zrcadlení.  (Ve spojení s výše zmíněnou excentricitou by to mohlo vést na stejný popis orientace, jaký se užívá např. u nápisů.)  Bylo by však nejprve třeba zvážit, lze-li opravdu vše zrcadlit automaticky:  Např. plošky typu Thermal by po zrcadlení připojily pad k jiné inverzní vrstvě.

stefan.dubecky napsal:

Pokud by náhodou nějaký pad byl definován asymetricky tak asi není důvod, proč se součástkou nepřetáčet i tento pad, jinak se součástka ve skutečnosti změní. Možnost jiného  "Opposite Type" bych ponechal beze změny.

Tímto řešením by se jednak  rozšířil prostor pro další definice padů (a to výrazně, protože SMD plošek je ve srovnání s klasickými podstatně více typů), jednak by definovaní nového padu bylo rychlejší.

Na tomto místě je možná vhodné připomenout, že s Opposite Type se už nyní pojí všelijaké nedůslednosti.  Tak např. má-li je uživatel v tabulce zadány nekonsistentně (k typu A je opačný typ B, ale k B již opačný typ není A), může se dočkat docela překvapivých jevů při čtení pouzdra z knihovny.  V takové situaci by se program asi mohl chovat trochu robustněji, aby důsledky nekonsistence minimalizoval.  Ale horší by bylo vymýšlet dostatečně robustní chování pro příkaz Files | Read File Sections, který umí přečíst i jen část tabulky pájecích bodů.  Co jestli se některý nově přečtený typ odkazuje na opačný pad, který přečten nebyl?  To by se třeba ještě dalo ošetřit, ale co když naopak ten přečtený typ přemazal jiný, na který jakožto na opačný odkazoval nějaký typ, který v tabulce zůstává...?

Když už je to takhle, asi by si uživatel, který potřebuje šetřit posice v tabulce a přidává typ padu, o němž , že se vyskytne jen na jedné straně desky, mohl dovolit mu zadat odkaz sám na sebe jakožto na opačný.  Samozřejmě bude záležet především na uživatelově celkovém stylu zacházení s tabulkou rozměrů, stojí-li mu uspořená čísla typů za další vnesenou nekonsistenci a zejména lze-li se opravdu spolehnout, že se součástka s dotyčným typem nikdy nedostane na spodní stranu desky.  Nějakých zákeřných chyb bych se zde už tolik neobával: na opačnou stranu desky se součástka může dostat jen ruční editací a to, že má pady z nesprávné strany desky, je při ní dost nápadné.  (To už je spíše nebezpečí, že si člověk součástku během otáčení omylem ozrcadlí, a nevšimne si toho, protože to nebude vidět na jejích pájecích bodech.)

Do budoucna (tj. do verze s jiným formátem *.PCB souborů a s jinou databází) však asi stojí za úvahu, zda dosavadní koncept Opposite Pad Type neopustit zcela a nenahradit jej právě zrcadlením, které se ve většině situací skutečně jeví jako výhodnější řešení.  Zde asi mohou k rozhodnutí nejvíce přispět zkušenosti z praxe.

No, k tomu systému "pouze varovat" bych asi měl trošku výhrad jakožto programátor: pracnost se mi nezdá úměrná přírůstku užitné hodnoty. 

Jde o to, že v každém případě se musejí načíst a ukládat tabulky rozměrů všech knihovních souborů.  To asi představuje více programování, než manipulace s tabulkou rozměrů.  Na druhé straně dnes uživatel nemá žádný nástroj, kterým by mohl snadno dělat takové transakce s tabulkou rozměrů, jako je odsunutí jednoho typu padu do jiné položky tabulky (ačkoliv na toto existuje příkaz) a zároveň přečíslování typu padu v desce (ačkoliv to pomocí množinových operací také jde).  Tím méně je může dělat hromadně, tj. pro více typů najednou.  Přitom, obecně řečeno, právě tohle je postup odstraňování kolizí, jakmile byly detekovány.  (Kromě toho si nejsem jist, zda mohu kolizi lehce zjistit před začátkem čtení souboru, a v jeho průběhu už deska byla změněna.)  V ideálním případě by mohl být užit systém, kdy po detekci kolize následuje dotaz, a zásahy do tabulky rozměrů až po kladné odpovědi.

Ještě bych teď počkal, zda do diskuse nepřispěje někdo z těch uživatelů, kteří mají tabulku padů zcela zaplněnou.

Tohohle problému si jsem již nějaký ten rok dobře vědom.  V jeho plném rozsahu však asi půjde nejen o detekci konfliktů rozměrů, ale především o jejich vyřešení.  Před několika měsíci jsem o tom korespondoval v souvislosti s řazením tabulky rozměrů pájecích bodů v testovací verzi (možná se pokusím vyhledat, co jsem tehdy napsal, a použít znovu tady), ale nedospělo se k jasnému závěru.

Dovolím si připomenout původní koncepci, dnes skoro 15 let starou:  (a) V desce mají pájecí body (číslované) logické typy; jim odpovídající rozměry jsou popsány v tabulce.  (b) V případě změny technologie lze celou tabulku vyměnit, a knihovny přesto zůstanou zachovány.  (c) Uživateli jsou logické typy presentovány pod jejich čísly.  (d) Tato čísla se užijí i pro uživatelské definování clonek a vrtáků.  Na tomhle základě lze zvažovat, co by se dalo nyní dělat.

Při zachování současného formátu souborů, tj. v rámci současné verze 4.x, se mi jeví ještě tak nejlepší takovéto řešení:

1) Knihovny budou čteny do paměti (a pouzdra z nich zobrazována v náhledovém okně) včetně rozměrů padů (které dosud jsou při čtení knihovních souborů zcela ignorovány).

2) Při ručním nebo automatickém (během čtení *.PNL souboru) převzetí pouzdra z knihovny se zkontrolují rozměry padů.  V případě konfliktu se pady čteného pouzdra přečíslují a pod výsledným číslem se přidají jejich rozměry do tabulky rozměrů.  Teď jde o to, jaké číslo zvolit, tzn. kterou položku v tabulce přepsat.  K tomu se nabízejí položky (tj. typy padů) dvou druhů -- jednak prázdné (s nulovými rozměry), jednak nepoužité na desce.
2a) Je možné začít od prázdných a nepoužitých typů, po jejich vyčerpání pokračovat nepoužitými.  Přitom by se začínalo např. od nejvyšších čísel typů.
2b) Zcela jiná možnost je začít od nepoužitých (nestarat se, zda jsou prázdné) a snažit se zachovat číslo.  Důsledkem by bylo např. to, že při čtení *.PNL souboru odkazujícího na pouzdra z jediné knihovny by se de facto převzalo číslování typů z této knihovny (jelikož na počátku čtení je deska prázdná a nepoužité jsou všechny typy).

3) V průběhu času mě také napadla ještě jedna možnost, jak si tabulku dodatečně zorganizovat, a sice vnutit pořadí čtením jiné tabulky rozměrů.  Fungovalo by to docela jednoduše:  Tak, jako nyní lze do desky přečíst tabulku rozměrů z externího souboru, novým příkazem by se přečetlo jen jejich číslování.  Pokud by se v tabulce na desce vyskytovaly typy stejných rozměrů jako v té externí, vnutila by se jim čísla těch externích.  Deska jako taková by se samozřejmě nezměnila, jen by pady na ní mohly přitom dostat jiná čísla typů.

Vrátím-li se k výchozí koncepci, lze nyní začít trochu uvažovat o širších důsledcích:
* Při řešení dle 2a dvě desky se zcela stejnými pouzdry mohou mít dvě různá číslování typů padů následkem (čistě jen) toho, že v příslušných *.PNL souborech se pouzdra objevila v různém pořadí.  Totéž ale může teoreticky nastat i při řešení dle 2b, budou-li užity nejméně dvě knihovny.
* Největší potíž bych asi viděl v bodu (c).  Obávám se, že dělat automatické zásahy do číslování padů může mít na uživatele podobný dopad, jako kdyby se ve městě přečíslovaly tramvaje, či ještě spíše jako kdyby se přečíslovávaly každé ráno.
* Další problém nastává při uživatelském definování nástrojů (clonek a vrtáků), protože to se do konfiguračních souborů příslušných zařízení ukládá pod čísly logických typů.  Není sporu, že toto je nebezpečná věc, která může způsobit zkažené matrice či desky.  Praktická otázka (kterou neumím dobře posoudit) spíše je, jak často se dnes předefinování ještě užívá.  Clonkové fotoplottery už asi jsou historie, půjde tu zřejmě především o vrtačky.
* Co spojové čáry?  Z hlediska symetrie by podobné mechanismy asi měly být zavedeny i pro ně, ale v praxi jistě zdaleka nejsou tak potřebné.
* Dosavadní e-mailová  diskuse vedla víceméně k závěru, že nejlepší možná bude do logiky kolem tabulek rozměrů raději moc nezasahovat, protože na současný stav si každý jednotlivý uživatel v podstatě už nějak zvykl.  Na druhé straně by však úspěšné řešení asi dovolilo kvalitativně lepší využití cizích uživatelských knihoven, které je doposud omezeno zejména odlišnými tabulkami rozměrů.

Omlouvám se, že jsem se tak obšírně rozepsal.  Jde však o podstatný a docela komplikovaný problém, který je třeba důsledně promyslet do všech podrobností před každým pokusem o jeho programátorské řešení.  Uvidíme, jaké názory se teď objeví v diskusi.

595

(5 odpovědí, posláno do Dotazy a náměty k programu Layout)

Program kdysi užitý pro filtraci soubor? ve formátu RS-274X jsem te? našel p?eložený (a rad?ji jsem ve zdrojáku moc nepátral, co vlastn? je uvnit?).  Pro Vaše soubory (v palcovém formátu 4.4) bylo t?eba zm?nit d?litel 1000 v konfig. souboru na 10000.  Vedle toho jsem vynechal všechny konverze clonek, takže logické typy odpovídají p?ímo D-kód?m sníženým o 10.  Musíte si je tedy množinovými operacemi sám zm?nit na n?co rozumného.  Program a cfg je zde: www.formica.cz/files/forum/Read274.zip .  Užití vidíte z obrázku. 

http://www.formica.cz/files/forum/read274x.png

Jako ukázku výsledku posílám n?které vrstvy: www.formica.cz/files/forum/prevedeno.zip (zbývající z nich ostatn? samy vyplynou).  Alespo? je z potisku vid?t, jak složité pro Gerber je vyrovnat se s plochami.

Druhou desku nelze bez úprav p?evést,  mj. proto, že program nepodporuje p?evod kruhových oblouk? (užitých pro zaoblení roh? té antény).  Být to moje, asi bych ze zdrojového souboru vyhodil grepem ?ádky obsahující "I" nebo "J", výsledek p?evedl a oblouky pak dokreslil ru?n? v editoru -- to lze stihnout za pár minut, tedy o dost rychleji, než dopisovat program.

Net?eba vysv?tlovat, že program by mohl být daleko komfortn?jší, nap?. by mohl z definice clonek sám generovat logické typy.  Dokud jsem jej však užíval sám (pro p?evod r?zných desek k testování autorouteru), p?ipadalo mi daleko jednodušší ud?lat pot?ebné zásahy ru?n?, v editoru a p?ípadn? i v gerberovských souborech.

596

(5 odpovědí, posláno do Dotazy a náměty k programu Layout)

Jak jsem v?era napsal, vystavený program p?evádí formát RS-274D.  (A to v n?m ješt? nesm?jí být ani taková neškodná makra, jako je G54 z Formiky, která by ?lov?k ostatn? mohl zahodit i textovým editorem -- nic podstatného to ned?lá, jen upozor?uje na vým?nu clonky, která se stejn? pozná z následujícího D-kódu.)  Vaše soubory jsou v RS-274X, což je nejsnáze vid?t práv? z t?ch "%".

Edit 25.7.2007: V n??em asi bylo nedorozum?ní -- práv? jsem si konverzi soubor? vygenerovaných Formikou sám zkusil, jen tak bez jakéhokoliv konfigura?ního souboru, a po syntaktické stránce tam problém nebyl v?bec žádný.  G54 ani nic podobného ve skute?nosti nijaké potíže ned?lá, takže celá závorka, kterou jsem o odstavec výše napsal, je bezp?edm?tná.  M?žete se p?esv?d?it na tomto p?íkladu: www.formica.cz/files/forum/r-gerber-zpetne-cteni.zip .  (Konfigura?ní soubor pat?í k Layoutu, byl užit p?i generování gerberovských soubor?.)  Bez konfigura?ního souboru pro R-GERBER.EXE pochopiteln? vycházejí logické typy i vrstvy nesmyslné, to však je jiná otázka.  Pozor, protože jde o DOSovský program, je nutno jména soubor? vždy zadávat ve formátu 8.3 .

Program pro filtraci RS-274X, který jsem také zmínil, ovšem není s vystaveným totožný.  Momentáln? od n?j mám jen zdrojový text.  Snad budu mít ve?er chvilku se na n?j podívat blíže, a s ním i na Vaše soubory.

597

(8 odpovědí, posláno do Dotazy a náměty k programu Layout)

Převodu desek z Eaglu, na který se objevil dotaz v sousedním tématu, se týká stránka www.formica.cz/eagle.html .  Eagle desky ukládá do binárních souborů, jejichž dešifrováním nemám vůbec v úmyslu se zabývat; z toho důvodu jsem k převodu užil ULP běžící v Eaglu, a protože generují přímo soubory PCB, byla nutná všelijaká zjednodušení (jako kupříkladu je mapování prvků na předdefinované logické typy).

Při převodu často dělají problémy čísla pinů např. ve tvaru 1-1, 1-2, 1-3, ..., 1A, 1B...  ULP na citované stránce je všechny převede na jedničku, což při čtení do Layoutu pak vede ke konfliktu.  Shodou okolností jsem se tím před pár dny zabýval -- rozpracované ULP, které v takovém případě k očíslování užije pořadí vývodů v pouzdře, si můžete stáhnout zde: www.formica.cz/files/forum/pokusy-Formica4-L.ulp .  Ještě však u toho není hotové menu a není zabudována ani možnost užít výhradně pořadí (tj. na jména pinů vůbec nehledět).

Narazíte-li snad na nějaké potíže, můžete mi také příslušné BRD soubory poslat.

598

(5 odpovědí, posláno do Dotazy a náměty k programu Layout)

P?ed více než 10 lety jsem napsal p?evodní program z formátu Gerber RS-274D.  Nebyl myslím nikdy ší?en, ale m?žete si jej stáhnout zde: www.formica.cz/files/forum/R-GERBER.ZIP .  Uživatelský komfort od n?j ne?ekejte, ale kdybyste pot?eboval, možná bych k tomu n?kde našel i zdrojové texty.

Asi neuškodí znovu p?ipomenout, že klasický formát Gerber se odvolává prost?ednictvím tzv. D-kód? na clonky clonkového kotou?e, avšak popis jejich rozm?r? neobsahuje.  Takovéto informace (kup?íkladu že D21 je ?tvere?ek o stran? 1,5 mm, apod.) je proto t?eba p?edat n?jakým paralelním kanálem.  Vedle gerberovských soubor? vystavených na internetu bývají ob?as i n?jaké textové soubory s popisem clonek (?asto tytéž soubory, které provázely ty první k výrobci -- jsou ostatn? obdobou pr?vodních soubor?, které z firmy zasíláte výrobci).  Nejsou-li dostupné, nezbyde, než gerberovské soubory prohlédnout a rozm?ry si domyslet.  U t?ch plošných cívek, které zmi?ujete, by to asi nem?l být velký problém.

Informace o clonkách je samoz?ejm? t?eba n?kudy p?edat i výšezmín?nému programu.  K tomu slouží jeho konfigura?ní soubor, jehož p?íklad zde rad?ji uvádím (v zipu totiž ?áste?n? je ješt? ?eština Kamenických):

{ KONFIGURA?NÍ SOUBOR PROGRAMU R-GERBER.EXE }
{ ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ }

{ Soubor R-Gerber.Cfg je konfigura?ní soubor pro program R-Gerber.Exe, který
  p?evádí p?íkazové soubory pro fotoplottery Gerber do formátu desek systemu
  FORMICA 4.0 (*.PCB).                                                       }

{ Z hlediska syntaxe tento konfigura?ní soubor obsahuje (vedle libovolných
  komentá??, uzav?ených ve složených závorkách) pouze celá ?ísla se znaménkem.
  Soubor sestává ze dvou (tri) ?ástí: první definuje transformaci sou?adnic
  z jednotek fotoplotteru do vnitrnich jednotek programu (0,001" ci 0,025 mm)
  druhá korespondenci mezi clonkami fotoplotteru a logickými typy základních
  prvk? v systému FORMICA 4.0.                                               }


{ 1. P?EVOD SOU?ADNIC }
{ ~~~~~~~~~~~~~~~~~~~ }

     1000   { hodnota Px,                                                    }
     1000   { hodnota Qx; koeficienty pro p?epo?et sou?adnic   (Qx > 0)      }
      000   { hodnota Dx; vodorovný offset, udaný v jednotkách fotoplotteru  }

     1000   { hodnota Py,                                                    }
     1000   { hodnota Qy; koeficienty pro p?epo?et sou?adnic   (Qy > 0)      }
      000   { hodnota Dy; svislý offset, udaný v jednotkách fotoplotteru     }

{ Výše definované hodnoty jsou použity k p?epo?tu sou?adnic podle vztah?

  GridX := Round (Px * Int (GerberX - Dx) / Qx)

  GridY := Round (Py * Int (GerberY - Dy) / Qy)                              }


{ 2. CISLO VRSTVY }
{ ~~~~~~~~~~~~~~~ }

      14 { cislo vrstvy, na kterou budou umisteny segmenty                }


{ 3. P?EVOD CLONEK }
{ ~~~~~~~~~~~~~~~~ }

{ P?evod kód? clonek na logické typy základních prvk? je definován tabulkou,
  obsahující libovolný po?et trojic celých ?ísel.   První ?íslo z trojice
  vždy ur?uje kód clonky na clonkovém kotu?i, druhé, resp. t?etí ?íslo udává
  logický typ spojové ?áry, resp. pájecího bodu, který bude generován,
  jestliže je clonka s tímto kódem použita pro kreslení spojové ?áry, resp.
  expozici pájecího bodu.                                                    }

{ P?ípustné rozsahy hodnot jsou 10 až 99 pro kód clonky, 0 až 15 pro logický
  typ spojové ?áry a 0 až 63 typ pájecího bodu.   Clonky, jejichž kódy se
  v tabulce nevyskytují, jsou prevedeny na (logicke typy)-10 nebo potlaceny. }

{ kód clonky   typ spojové ?áry   typ pájecího bodu                          }
     10               1                  -1
     11               3                  -1 {potlaceno}
     12               4                  -1
     13               5                  -1
     14              10                  -1
     15              11                  -1
     70              -1 {potlaceno}       3
     71              -1 {potlaceno}       3 {R 15 ???}
     20              -1 {potlaceno}       4
     21              -1 {potlaceno}      16 {R}
     22              -1 {potlaceno}       7 {???}
     23              -1 {potlaceno}       7 {R}
     24              -1 {potlaceno}       8
     25              -1 {potlaceno}       8 {R}
     26              -1 {potlaceno}      12
     30              -1 {potlaceno}       4
     31              -1 {potlaceno}      16 {R}
     32              -1 {potlaceno}       7 {???}
     33              -1 {potlaceno}       7 {R}


{ POZNAMKY                                                                   }
{ ========

  1) Program a zejmena jeho popis je ve zcela provizornim stavu.
  2) Je-li k dispozici puvodni navrhovy system, je treba mu zabranit
     v rozkreslovani pajecich bodu, samozrejme i za cenu, ze se k prevodu
     pouziji "smluvene" D-kody.   Jinak by totiz nebyl program R-Gerber
     schopen odlisit pajeci body od spojovych car.
  3) Je vhodne mit dva konfiguracni soubory, pro kazdou stranu desky jeden.
     V jednom z nich je pak mozno potlacit vrtane (vicevrstve) pajeci body,
     ktere by se jinak ve vysledne desce objevovaly na temze miste dvakrat.  }

Program je t?eba opakovan? užít na jednotlivé vrstvy (tj. gerberovské soubory) a vygenerované PCB soubory se?íst dohromady v editoru Layout.  Nebude-li Vám n?co jasné (a prostoru pro nejasnosti tu asi je víc než dost), zeptejte se nebo pošlete výchozí soubory.

Jiná v?c však jsou soubory ve formátu RS-274X, které mj. obsahují definice clonek (mezi znaky "%" -- podle toho je poznáte).  Na to jsem si provizorn? také napsal kus programu (který jsem užil nap?. k p?evodu té desky SBC6120).  Definice sice ne?te, alespo? je však zahazuje, takže lze v zásad? užít výše popsaný postup.

P?evod z Eaglu je zcela odlišné téma a založím tudíž pro n?j další vlákno.

599

(38 odpovědí, posláno do Testovací verze programu Layout)

Matně si vzpomínám, že před několika lety proběhla korespondence o možnosti ukládat a obnovovat nastavení grafiky.  Tehdy se diskutovalo o ukládání pod nějakým jménem (např. "Pouze horní strana" apod.).  To se mi ze systémového hlediska příliš nelíbilo, a námět jsem proto odložil.  Nyní jsem se k němu vrátil -- je to ostatně úloha složitosti přiměřené dnešní teplotě vzduchu.

Rozdíl je v tom, že nastavení grafiky ukládám do zásobníku, takže pojmenování odpadá.  ??ešení ovšem stojí na dávném principu, na němž je vystavěn celý program Layout, totiž že uživatel ví, co dělá, a naopak tento princip dále utvrzuje.  Tak mi kromě zásobníku stačilo doplnit jen tři příkazy:

Graphics | Save ukládá aktuální nastavení grafiky na vrchol zásobníku (nejstarší uložené je ztraceno, je-li zásobník zaplněn).
Graphics | Restore obnovuje nastavení z vrcholu zásobníku (aktuální nastavení je ztraceno) a překreslí obrazovku.
Graphics | Exchange vymění nastavení grafiky na vrcholu zásobníku s aktuálním a překreslí obrazovku.

Program opět je v archivu www.formica.cz/files/Layout-p98-pokusy11.zip .

Příklad užití: V menu Graphics dám Save, pak nastavím pohled na horní vrstvy, uložím pomocí příkazu Save, nastavím pohled na dolní vrstvy, a mezi oběma pohledy teď mohu přepínat příkazem Exchange, aniž bych menu Graphics vůbec opustil.  Až se mi přepínání omrzí, dám dvakrát Restore a vrátím se tak k výchozímu pohledu.

Zásobník má nyní hloubku 8 položek (do každé z nichž se ukládá nastavení všech parametrů z menu Graphics).  Za úvahu by možná stálo přidat příkaz(y) Graphics | Roll Up / Down, kterým by uživatel mohl procházet dokola skrz celý zásobník, aniž by kteroukoliv z jeho položek zahodil.  (Pak by možná bylo lépe zásobník zkrátit; cyklování by se však v každém případě omezovalo pouze na obsazené položky.)  Pro rozumné řešení asi je klíčová odpověď na otázku, mezi kolika nastaveními uživatel v praxi potřebuje přepínat.

Celý zásobník by přirozeně bylo možno ukládat do konfiguračního souboru (za cenu opětné změny jeho formátu).  Přidám jej tam, pokud se funkce osvědčí (a jakmile se délka zásobníku ustálí).  Na druhé straně současný stav automaticky řeší mazání zásobníku, což se může také někdy hodit.

600

(9 odpovědí, posláno do Testovací verze programu Layout)

Ze souboru, který jsem mezitím dostal, plyne, že problém byl shodou okolností také zp?soben kótováním segmentu, který byl p?íliš blízko okraje pracovní plochy (což sice nevedlo k nápis?m mimo ni, jak jsem psal prve, ale k segmentu kótovací šipky s jednou sou?adnicí zápornou, na které se pak jakási úklidová procedura zhroutila).  Program už jsem nahradil v archivu zmín?ném na po?átku vlákna -- te? se požaduje, aby segment ke kótování ležel uvnit? pracovní plochy alespo? o 75 vnit?ních jednotek, což by snad m?lo vždy sta?it.

Mimochodem, krátké segmenty na desce m?žete velmi efektivn? hledat pomocí p?íkazu Select | Select | Lines | Short -- ?asto se jedná o všelijaké smetí, u n?hož je vhodné se zamyslet, jak se na desku dostalo.