Nejsem v této oblasti žádný odborník, a také zde problém s monitorem nevyřeším.  Napíši tu pouze, co jsem si dal dohromady z toho, nač si o deskách VESA ještě vzpomínám:

Teoreticky je možné udělat VESA desku z běžné grafické desky té doby (pakliže technicky lze namapovat její grafickou pamě na příslušné adresy, atd. atd.) tím, že k ní dopíšeme a instalujeme driver, který bude obsahovat interrupt 0x4F s patřičným chováním.  V praxi však VESA desky na sobě měly ROMku s tímto driverem, která se našla při POSTu a připojila do systému interruptů.  Z toho ale plyne (protože tehdy FLASHky nebyly a jumpery na desce se k tomu neužívaly), že pokud monitor vyžadoval nějakou nestandardní frekvenci, musel k němu být (teď už čistě softwarový) driver, kterým se dala nastavit, uložit někde na disku, a užít při aktivaci příslušného interruptu přepínajícího režim.  Na druhé straně ale takovýto driver musel být dodán s VESA deskou (aby věděl, kam v ní má sáhnout).  Matně si vzpomínám, že jsem podobné drivery kdysi měl možná v rukou (a snad ani neužil, jelikož monitor synchronizoval i bez nich). 

Jinými slovy, deska může umět rozhraní VESA již sama o sobě, a přesto pro ni a nestandardní monitor může (a musí) existovat patřičný driver.  Třeba by se dal ještě dohledat i k té Vaší desce.

Mi_kes napsal:

...kdyz si na zacatku kresleni DPS "nasypu" soucastky a uz vim, ze treba ty, ty a ty (rekneme desitky kusu) budu potrebovat pootocit o 90-180-... stupnu, tak bych si predstavoval, ze si je zvyraznim a pak se mi nejakou mnozinovou operaci pootoci kazda zvlast a ne vsechny jako celek.

No, možná bych řekl, že u součástek ve výchozí poloze záleží relativně ještě tak nejméně na tom, kolem jakého středu je otáčíte -- stejně je budete ještě přesouvat.  To kdybyste si na desku již rozmístil dejme tomu tisíc diod, a polovinu omylem obráceně...

Snad by se to dalo řešit rozšířením menu Edit v souvislosti s náměty Ing. Peroutky v tomto vlákně: http://www.formica.cz/forum/viewtopic.php?id=156 .  Nevím ovšem, kdy se k tomu dostanu.

353

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

Ivo Löffler napsal:

A co místo napájecích značek používat Label (PLACE/LABEL)? Pojmenujte si všechny společné propoje (PLACE/ DRAW WIRE) stejným jménem, systém je bude vidět jako propojené i bez napájecích značek.

Součástky v editoru desky a/nebo symboly ve schematickém editoru zkrátka nemusejí přesně odpovídat fyzickým součástkám na desce.  Rozdíly přitom mohou jít oběma směry.  Na jedné straně se třeba upevňovací otvor či rohová značka desky počítá jako součástka (jsou-li jako součástka vytvořeny -- viz např. T_000 až T_200 ve standardní knihovně), na druhé straně lze počet součástek, jak mu Formica rozumí, uměle snížit, a to přinejmenším dvěma způsoby:
  *  Můžete si vytvářet jakési pseudosoučástky či supersoučástky, sestávající z více fyzických součástek (kupříkladu krystal včetně kondenzátorů na zem, relé včetně ochranné diody, LED i s předřadným odporem atd.).  Těm navíc mohou přesně odpovídat i pro ně vytvořené symboly ve schematu, takže vazba schematu a desky nebude nijak porušena.
  *  Již umístěná pouzdra -- všechna či jen některá -- můžete rozdrobit na prvky (příkazem Edit | Change | Explode), takže nebudou ovlivňovat ani počet součástek, ani vývodů.  Vzájemnou konsistenci schematu a desky to pochopitelně poruší (ledaže byste to udělal právě s těmi součástkami, které ve schematu žádnou obdobu nemají) a hlavně si musíte dát pozor, aby se Vám prvky těchto pouzder při další editaci desky nerozpadly.
Dříve či později ovšem takto narazíte na třetí omezení, totiž na maximální počet prvků.  To však leží relativně vysoko, takže např. ve volné verzi může na jednu součástku v průměru připadat až 100 prvků:

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

Takovéto postupy samozřejmě nelze nikterak doporučovat profesionálům, ale když někdo překračuje omezení své verze jen o pár procent...  Snad bych měl ještě zmínit, že Formica dovoluje nakreslit desku i zcela bez schematu a bez jakýchkoliv knihoven pouzder, přičemž výsledné matrice mohou teoreticky být zcela stejné jako při standardním postupu.  K tomu mohou existovat i jiné důvody, než se vyhnout omezením.  Jednou třeba napíšu i nějaký rychlokurs, jak to nejlépe dělat a jak se odtud popřípadě dostat zpět ke správnému schematu.

354

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

Dobrý den, děkuji za příspěvek.

Ani já nejsem obchodník (ačkoliv Formicu mohu prodávat také přímo a občas to i skutečně dělám), a navíc toto fórum je určeno k diskusi technických otázek, nikoliv obchodních (viz též http://www.formica.cz/forum/misc.php?action=rules).  Proto bych se rád pokusil odpovědět Vám především z technického hlediska.

Na ceně nižších verzí Formiky má bohužel dost velký podíl cena hardwarového klíče.  Ta je 1280 Kč + DPH, kterou amatérovi již nikdo neproplatí.  Ohlédnu-li se zpět, je zřejmé, že těžiště důvodů, proč klíče užíváme, leží v historii.  (Možná je v tom i určitá neskromnost, vzpomenu-li si, jak mi v roce 1990 kdosi nabízel ke zkopírování -- jakožto dle jeho mínění praktickou věc -- mou vlastní utilitku pro práci s češtinou, která se k němu nějakými cestami dostala.  Kdyby se však podobnými cestami tehdy šířil i F. Mravenec, nyní bych se se vší pravděpodobností zabýval něčím jiným a Formica by zřejmě vůbec nevznikla.)  Dnes ale není vyloučeno, že časem budeme nějakou menší verzi prodávat bez klíče.

Sám se vždy cítím dost nesvůj, mám-li Formicu prodat někomu, o kom předpokládám, že ji použije jen k nevýdělečným účelům.  Návrhový software má uživateli vydělávat, a u velké většiny uživatelů to opravdu dělá.  Není-li užíván pouze příležitostně, jeho pořizovací cena je přitom jen malým zlomkem celkových nákladů na vývoj desek.  (Stačí ji porovnat s osobními náklady na návrháře.  Možná bych tu ještě poznamenal, že představíme-li si dva návrhové systémy, z nichž jeden umožňuje např. o 10 % efektivnější práci než ten druhý, jednoduchá kalkulace ukáže, že právě z důvodu osobních nákladů vychází při jen trochu pravidelnějším využívání ten méně efektivní systém i zadarmo drahý.)

Teoreticky by asi bylo možné zavést vedle standardních a výukových licencí ještě nějaké nevýdělečné (podobně jako jsou např. u Eaglu).  Možná k něčemu podobnému jednou dojde.  Ale dovolím si Vaši úvahu zcela obrátit:  Tak jako jsou uživatelé, o nichž vím, že Formicu užívají skutečně jen čas od času, jsou i firmy, které v ní navrhují desky za mnoho milionů ročně (a uvážíme-li cenu zařízení realizovaných na těchto deskách, je to ještě řádově více).  Z důvodu uvedeného v té dlouhé závorce v minulém odstavci bych jim tedy vlastně mohl účtovat více než ceníkovou cenu (a Formica by se jim pořád vyplácela).  Jenže zde je na první pohled ihned patrné, že takhle to nejde.  Proto se mi čistě na základě symetrie (programátoři pořád hledají nějaké symetrie) jaksi zdá, že v opačném případě také dost dobře nepůjde účtovat méně.


Ještě se zastavím u formátů Gerber a Excellon, které (v poněkud jiné souvislosti) zmiňujete:  Snad bych zde měl poznamenat, že libovolné výstupy z libovolné desky může ve Formice každý generovat zcela zdarma -- k tomu poslouží tzv. technologická verze (viz http://www.formica.cz/produkty.html).

Děkuji za námět.  Když se podívám do kódu, zvedají se skutečně jen spoje vedoucí k pinům.  Tehdy před lety mne k takovémuto řešení asi vedly dvě představy:
  1)  Pájecí body, které nejsou piny, v součástkách slouží jako upevňovací či montážní otvory, k nimž by spoje stejně neměly vést.  Ve skutečnosti však je hezkým protipříkladem hned třeba pouzdro TO3 (jak jej máme v knihovně), kde ze dvou zcela stejných padů jeden pinem je, a druhý není.
  2)  Jakmile takto ošetřím všechny pady, neměl bych vlastně pro symetrii stejným způsobem ošetřit i všechny segmenty spojové čáry, jež mohou být prvkem součástky také?  Jenže to by zacházelo příliš daleko, protože tím bych vnesl zas jiné nesymetrie.

Na jejich základě jsem to (záměrně, abych odpověděl na Vaši otázku) řešil takhle.  Ale máte pravdu, že pro praxi zde bude zřejmě lepší mezi piny a pady vůbec nerozlišovat.  Zdá se, že jde o úpravu na pouhých dvou řádkách kódu (neobjeví-li se nikde nějaké vedlejší účinky).  Přidám ji nejprve do pokusné verze, jakmile zas budu nějakou rozesílat.

356

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

Dobrý den, z programátorského hlediska není nijak obtížné tam příkazy pro zapnutí a vypnutí všech vrstev přidat (přičemž by ovšem zapomněly stávající nastavení).  V počátcích Formiky jsem to však neudělal, protože jsem se obával případu, kdy si začátečník vypne všechny vrstvy a bude pak na desce desorientován či ztratí jakoukoliv představu, co se mu tam vlastně děje.  (No a od té doby až dodnes to po mne nějak nikdo nechtěl.)  Zapnutí všech vrstev se vzdáleně podobá stávající příkaz Set Defaults, který ovšem mj. vnutí i "tovární" barvy.

Osobně by se mi jakožto uživateli líbilo mít tam nějaké další kvalifikátory -- např. povolit vše / horní polovinu vrstev / dolní polovinu vrstev / jen vodivé / jen nevodivé / jen vrstvu ukazatele (a tu třeba i dynamicky -- každá změna jeho vrstvy by překreslila obrazovku).  Co by bylo (těmito kvalifikátory) povolené, by se však kreslilo pouze tehdy, je-li ve stávajícím pravém sloupci On.  Co naopak povolené není, ale přesto tam má On, by se navíc mohlo volitelně kreslit nějakou jednotnou tmavošedou, která by neodváděla pozornost, ale poskytovala alespoň základní orientaci.  Potíž je pouze v tom, že pro řadu lidí jsou podobné věci jaksi přítěží a vlastně by je od Formiky spíše odrazovaly.

Přepnutí aktuální vrstvy jednou klávesou opět není obtížné naprogramovat.  Zkusím to přidat do nejbližší testovací verze.

Dovolil bych si ještě upozornit na vlákno http://www.formica.cz/forum/viewtopic.php?id=17 .  Tam se hledalo cosi podobného, ovšem s tím, že pohledy na desku byste si připravil předem a důraz by byl kladen na snadnost (pozdějšího) přepínání mezi nimi.

Dobrý den, také to v Layoutu verze 4.40 bohužel skutečně nejde (s výjimkou případu, že by součástky měly stejný typ pouzdra; pak byste je mohl označit, jednu z nich si otevřít v editoru součástky, posunout její nápisy a tuto změnu jednotně vnutit všem ostatním označeným).  Příkazy z menu Edit | Group / Window | ... se součástkou zacházejí vždy jedině jako s celkem.

Naopak schematický editor toto umí velmi pěkně, tam Vám to však asi je málo platné.

358

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

Jestliže toto vlákno po téměř půldruhém roce opět vyplynulo na povrch díky odkazu kolina v jiném vlákně, poznamenal bych zde, že kružnice byly mezitím ošetřeny v pokusné verzi, již někteří mají k disposici.  Až zas budu vystavovat nějakou testovací verzi (viz též http://www.formica.cz/forum/viewtopic.php?id=159), úprava se tam objeví.

Paradoxně je to právě (zde poměrně hrubá) aproximace kvadrantu osmiúhelníkem, která pomáhá ošetřit situace, v nichž např. potřebujete vést svislý (a stejně tak i diagonální) vodič co nejblíže kolem kružnice, jejíž střed může v jedné či obou osách ležet mimo rastr (tedy právě ty, na něž jsem poukazoval o dva příspěvky výše).  Prakticky vzato se tím problém vyřešil sám od sebe, zatímco veškerá snaha o vyšší přesnost by jej zde naopak odhalila v celé šíři.

359

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

Děkuji za ukázku.  Jsem teď v zahraničí a zdrojový text nemám s sebou, takže se na to nemohu přímo podívat, ale takhle po letech si nevzpomínám, že bych spoje běžící ke cursoru třídil dle šířky a vybíral z nich ten nejširší.  Ve všeobecnosti platí to, co jsem napsal ve vlákně, které citujete -- zastavení na isolační vzdálenosti je jen nástroj, který má pomáhat (a v 90% případů snad i pomůže), neklade si však za cíl zaručit, že isolační mezera nebude porušena.  Až budu v Praze, zamyslím se, zda by nešlo Vámi popsanou situaci jednoduše ošetřit.

360

(34 odpovědí, posláno do Dotazy a náměty ke schematickému editoru)

Dobrý den, jsem teď na cestě do zahraničí, takže mám trochu omezené možnosti se tím efektivně zabývat.

patoj napsal:

... tak se mi zobrazí : lib 440-A.pcb LINE 1 UNKNOW WORD.

To je podivné, takhle na dálku to na mne působí dojmem, že se buď pokoušíte knihovnu pouzder připojit ke schematickému editoru, anebo v souboru s uvedeným jménem omylem máte něco jiného než pouzdra.

patoj napsal:

Mohlo by to být tím, že požívám volně šířitelnou verzi 4.40 ?

Tuto možnost, pokud jde o program Layout, lze snadno vyloučit tím, že si zaregistrujete asociace přípon (*.pcb apod.) s prohlížečem:  Spustíte LayoutD.exe (jako ikonku má bílé, červeně orámované F) a v něm stisknete klávesy Alt-O - I - A a příkaz Open Layout pak zkusíte znovu.  (Zpět vše dostanete analogickým postupem z programu LayoutE.exe.)

361

(34 odpovědí, posláno do Dotazy a náměty ke schematickému editoru)

Dobrý den,

prosím přesvědčte se, zda název knihovny, v níž se hledané pouzdro nachází, vidíte mezi těmi, které Vám (v Layoutu) vypisuje příkaz Library | View.  Pokud ne, přidejte si ji tam.

(Nově doplněné knihovny Vám pouzdro daného jména nikdy neskryjí, nanejvýš jej mohou zastínit jeho jinou verzí pod stejným jménem.)

kolin napsal:

... jestli je spravne ci zadouci stavajici chovani ...

Dobrý den, jaksi tak povšechně bych řekl, že záleží na tom, z kterého hlediska správnost posuzovat -- zda funkce odpovídá názvu příkazu, zařazení na dané místo menu, anebo symetrii a konsistenci soustavy množinových operací či tomu, co by systém měl umět, a již pod jakýmkoliv jménem příkazu.

Představte si, že máte desku, kde jsou pájecí body typu N užity jednak v součástkách, jednak jako prokovky, a Vy chcete mít označené právě ty v součástkách (abyste je pak mohl hromadně změnit na jiný typ).  Nejjednodušší postup zřejmě bude označit typ N příkazem Select | Select | Pads | One Type, a pak užít Select | Qualify | Components | All.  Zde mi tedy stávající chování příkazu připadá žádoucí.

??ekl bych, že zdrojem nelogičnosti, na kterou poukazujete, je to, že označením součástky se ve Formice rozumí jednou označení jejích prvků, jindy zas příznaku (neviditelného, krom v 2. řádce okna), že součástka jako taková je označena -- vždy podle toho, co se zrovna lépe hodí.  Snažil jsem se vymyslet to tak, aby množinové operace i přesto (či právě takto) fungovaly jako celek rozumně.  Požadujeme-li, aby příkaz Select | Select | Components | All označil (navíc viditelně) součástky tak, jak je uživatel chápe a vidí, pak asi je z hlediska logiky a vzájemné symetrie množinových operací Select a Qualify potřebné, aby se příkaz, na který se ptáte, choval popsaným způsobem.

(Ze zmíněné symetrie operací mimochodem vyplývá také to, že zcela stejné pájecí body můžete stejně dobře označit i "obrácenou" dvojicí příkazů, totiž Select | Select | Components | All, a poté Select | Qualify | Pads | One Type.  Přitom právě takováhle symetrie podstatně zvyšuje intuitivní použitelnost množinových operací, podobně jako třeba komutativní zákon v aritmetice.  Totiž, umím si představit, že běžnému uživateli slova "intuitivní použitelnost množinových operací" asi znějí značně ironicky a někomu třeba i vyplavují adrenalin, ale ono ve skutečnosti stačí na počátku pochopit jen malý kousek určité abstrakce, a zbytek člověku přejde do krve právě kvůli těm symetriím.)

Naopak, kdybych důsledně rozlišoval mezi označením součástky a označením jejích prvků, uživatele bych tím nutil jednak určité operace dělat "poslepu", jednak užívat příkaz Select | ... | Components | Marked, a navíc -- aby to celé bylo použitelné -- bych zřejmě musel přidat příkaz, kterým se označení součástky přenese na její prvky (ledaže by se užívalo makro, které uvádím dole).  Příliš důslednosti může někdy být na škodu.

kolin napsal:

Pro nazornost, na obrazku jsou pomoci okenkoveho oznacovani uplne vybrane souc. C27, C38 a R24. Dale je vybrano nekolik elementu (pady) z Q1. Nyni provedu Select | Qualify | Components | All a nyni nastava ona otazka, zda by nemely zustat oznacene pouze C27, C38 a R24, zatimco pady od Q1 by mely zhasnout, protoze nenalezi k zadne oznacene soucastce:

Kde však je jádro potíží, ilustruje např. to, že z obrázku ve skutečnosti není vůbec patrné, které součástky jsou vybrány -- záleží to na vlajce, které si uživatel obvykle příliš nevšímá, a příkazy Select | ... | Components | All také ne (spíše jí vnucují nějakou hodnotu).  Pokud by ty pasivní součástky např. měly skrytý text (hodnotu, jméno pouzdra) někam odsunutý, také by nebyly označené, ačkoliv tak vypadají.

Mimochodem, pro zvýraznění právě jen označených součástek by šlo užít např. takovéhoto makra, které jejich označení "začistí" tak, jak zřejmě požadujete:

  <Ctrl-F10> "zvýrazni označené souč." (
    <Alt-S> <u> <p> <a> 
    <Alt-S> <u> <l> <a> 
    <Alt-S> <u> <a> <a> 
    <Alt-S> <u> <t> <a> 
    <Alt-S> <s> <c> <r>)

363

(34 odpovědí, posláno do Dotazy a náměty ke schematickému editoru)

Dobrý den, užitá knihovna prostě má jinou tabulku rozměrů pájecích bodů.  Můžete si ji však z ní snadno naimportovat příkazem Files | Read File Sections | Read File....

V zásadě stejná otázka byla diskutována již zde: http://www.formica.cz/forum/viewtopic.php?id=99 ; některé složitosti, k nimž by to případně mohlo vést, jsou zmíněny porůznu ve fóru.

364

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

Asi bychom neměli zapomínat, že celé barvení netlistu je v testovací verzi právě z toho důvodu, že je již od počátku řešeno provizorně, tedy pomocí uživatelských vlajek.  (Systémové řešení by zřejmě vypadalo spíše tak, jako zmiňuje pan Dubecký.)  Uživatelské vlajky oproti tomu provizorní nejsou, do testovací verze se dostaly jen z toho důvodu, že se neukládají do *.pcb souborů (kamž je zas nelze dosud přidat kvůli zpětné kompatibilitě formátu) a do "oficiální" verze těžko mohu přidat cosi, co nemá plnou podporu.

Více o tom, co lze (a nelze) od testovacích verzí čekat, píšu zde: http://www.formica.cz/forum/viewtopic.php?id=159 .   Mimochodem, také si říkám, zda bych neměl ve fóru udělat trochu úklid a všechna témata ze sekce Dotazy a náměty k programu Layout, která nakonec vedla k doplnění nějaké funkce do testovací verze, přesunout o dvě sekce níže.

kolin napsal:

Aha, takhle jste myslel tech 15 maximalnich vlajek.

Že to nebudete chtít takhle dělat mi bylo jasné, jinak bych program prostě přeložil s výše uvedenou několikařádkovou změnou a poslal Vám jej, což by mne stálo méně času, než se zde o tom rozepisovat.  Jenže na druhé straně jsou ty dosavadní čtyři uživatelské vlajky součástí pole (většinou) interních vlajek, implementovaných v jednom integeru, a já bych se musel podívat, jak je přeskupit, aby se mi tam ještě nějaká vešla.  Nevejde-li se, musel bych program upravovat více, a do provizorního řešení se mi zas nechce tolik investovat.

Mimoto bych řekl, že 15 barev zas tak snadno nerozeznáte od sebe.  Stačilo by osm?  (Také by se netlist dal kreslit širší čarou -- pomohlo by to někomu?)

kolin napsal:

..stale si nedokazu predstavit co presne mate na mysli...

Příklad:  Máte zemnicí spoj, k němuž jsou připojeny analogové i číslicové součástky.  Všechny ty číslicové si označíte nějakou vlajkou.  Pak by se Vám všechny vzdušné spojky mezi analogovou a číslicovou zemí mohly zobrazovat odlišnou barvou (protože by příslušná vlajka měla u každé z nich jinou hodnotu na jednom jejím koncovém pinu než na druhém).

365

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

kolin napsal:

Myslim ze tech 15 co jde, by melo stacit.

Patnáct jde se čtyřmi vlajkami.  Budete ale ochoten nastavovat si jejich kombinace?  (Např. všem vyšším napětím nastavit jednu vlajku, pak části z nich navíc jinou, atd.?)

Kód by pro jednoduchost mohl také vypadat nějak takhle:

function GetLinkColor (PinFlags: Flags_T): TColor;
begin
  if PinFlags and (UserFlagA or UserFlagB or UserFlagC or UserFlagD) = 0 then
    Result := ColorConfig.NetColor.Clr
  else begin
    if PinFlags and UserFlagA <> 0 then
      Result := NetColors [0].Clr
    else
      Result := 0;
    if PinFlags and UserFlagB <> 0 then
      Result := Result or NetColors [1].Clr;
    if PinFlags and UserFlagC <> 0 then
      Result := Result or NetColors [2].Clr;
    if PinFlags and UserFlagD <> 0 then
      Result := Result or NetColors [3].Clr;
  end;
end;

tzn. nenastavoval byste barvy pro jednotlivé kombinace vlajek, ale zkombinovaly by se samy z již nyní zadávaných barevných složek.  Pokud (dokud) byste měl piny vždy označeny nanejvýš jedinou vlajkou, celé by se to chovalo zcela identicky jako doposud.

kolin napsal:

Mate na mysli gumu, ktera spojuje dve barevne skupiny? K cemu jste myslel, ze by to mohlo byt dobre?

Třeba na nějaké desce s navzájem propojenými číslicovými a analogovými zeměmi, kde byste tak mohl studovat, jak spolu souvisejí.

366

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

kolin napsal:

Vidite Vy nejaky zadrhel, nebo nevyhodu?

Možná nějaký úhlový konektor, kde se mi přirozené místo pro popis zdá být ve středu řad vývodů, zatímco střed po zahrnutí upevňovacích otvorů mi připadá jaksi náhodný.  (Také bych musel přidávat novou metodu pro výpočet nového typu středu.)

367

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

kolin napsal:

Mohu Vas poprosit o navyseni poctu flagu?

Na kolik byste myslel? 

Také bych mohl udělat jinou věc.  Kód, kterým se nety barví, vypadá prostě takhle:

function GetLinkColor (PinFlags: Flags_T): TColor;
begin
  if      PinFlags and UserFlagA <> 0 then
    Result := NetColors [0].Clr
  else if PinFlags and UserFlagB <> 0 then
    Result := NetColors [1].Clr
  else if PinFlags and UserFlagC <> 0 then
    Result := NetColors [2].Clr
  else if PinFlags and UserFlagD <> 0 then
    Result := NetColors [3].Clr
  else
    Result := ColorConfig.NetColor.Clr;
end;

(Ani se mi nechtělo si tam kvůli nastavení 4 barev psát cyklus.)  Původně jsem pomýšlel na všelijaké triky, třeba možnost zobrazovat zvláštní barvou linky, které mají na každém konci jinou barvu, apod., ale nikdo neměl zájem, ačkoliv se mi zdálo, že na určité situace by se to třeba hodilo.  Teď tedy jsou k disposici 4 bity, a s nimi by šlo označit až 15 barev (plus tu základní).

kolin napsal:

Jen pro ukazku, jak jsem si zvykl pouzivat flagy na barveni gum:
(...)
..napsane to vypada ponekud slozite...

Nechcete sem dát staženou obrazovku s nějakou pěknou ukázkou?

368

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

Mi_kes napsal:

Vypis (seznam pad-u) jako kdyz pri natazeni netlistu program hlasi, jake jsou rozdily v pouzdrech. Poznamenal bych si, ktere to jsou a ty pak jeden po druhem podle uvahy od-editoval/nahradil.

Tohle by se asi udělat dalo, otázka však je, zda by to někomu něco řeklo.  Mám dojem, že ani ten seznam rozdílů v pouzdrech nikdo moc nečte.  (Seznam chybějících pouzder ano, s těmi prostě musí něco udělat.)  Zvýraznění by mohlo mít výhodu v tom, že by na desce bylo hned vidět, čeho se změny týkají.

Ještě (trošku stranou) malá poznámka o poznamenávání:  Poznamenat lze i pomocí Ctrl-Ins (do schránky) nebo Ctr-Alt-W (do souboru), stejně jako v každé tabulce (jakož i menu) Formiky.  Opisovat netřeba.

kolin napsal:

...jeste dve vylepseni:
- Vyskocila by tabulka se seznamem konfliktu, a v ni bych rovnou mohl rozhodnout, jestli pod danym cislem typu budou rozmery stavajici, nebo ty importovane.

Asi bych tam mohl vytvořit menu plné parametrů Pad number nnn, s hodnotami Ponechat a Převzít ze souboru.  To není takový problém.  Problém spíše je pustit uživatele k tomu, aby si desku v době existence tohoto menu mohl prohlížet všemi nástroji, které tam na to jsou.  Ale i pro uživatele je problém přenést si textovou informaci, kterou právě obdržel, na pady na desce, které tam vidí graficky.

Naopak jakmile jsou pájecí body, jejichž rozměry se mají přečíst, již zvýrazněny, zbytek je snadný pro uživatele i pro program:  Už teď tam na to je příkaz (resp. nastavení parametrů).  Samozřejmě načtením ani nenačtením se konflikty neodstraní, jsou-li již přímo v čísle typu padu (užitého na staré i nové desce).

kolin napsal:

Nebo:
- By bylo vhodne mit moznost importovanym druhem padu neprepisovat ten stavajici rozmer, ale rozmery importovaneho vlozit na jeste neobsazenou pozici. Timpadem by bylo vse v puvodnich rozmerech a bez prace.

Tohle už nějakou dobu je i moje idea, nejen pro tuto situaci, ale zejména při čtení z knihovny.  Zkoušel jsem ji diskutovat s některými uživateli, ale jejich názor byl spíše ten, že by to do tabulky rozměrů vnášelo chaos.  Pravdou jest, že takováto idea je dost protichůdná snaze uživatele si tabulku udržovat sám: pak mu do ní zkrátka nesmí zasahovat nikdo jiný (natož automaticky).

Neuspěl jsem (zřejmě z podobných důvodů) ani s myšlenkou na příkaz, který by u označených padů změnil jejich typ a zároveň popis rozměrů tohoto typu v tabulce přenesl (okopíroval) o zadaný displacement na jiné posice.  Příklad:  Na desce mám PadA a PadB, oba typu 20.  PadA si označím, zadám displacement 100, a výsledkem bude, že PadA se změní na typ 120 a jeho rozměry (tj. rozměry typu 120) se v tabulce okopírují z položky 20 do položky 120.

369

(34 odpovědí, posláno do Dotazy a náměty ke schematickému editoru)

Dobrý den, to se mi zdá být trošku kuriózní závada.  Možná někde je nějaké nedorozumění:  Nemá třeba to schema další listy?  (V takovém případě byste na ně mohl přejít pomocí Ctrl-Tab.)  Není část součástek schovaná kdesi za okrajem okna?  (O tom byste se mohl přesvědčit pomocí Zoom | Zoom All.)

Také byste mi mohl schema poslat na horsky@formica.cz, abych se na něj podíval.  Přijdete-li však na kořen problému sám, prosím napište o něm zde.

Edit: Možná jsem se jen dal nachytat na slovo "načtou".  Není to tak, že ty součástky na desce už jsou z dřívějška?  (O tom se můžete přesvědčit tím, že spustíte Layout a příslušný *.pcb soubor otevřete z něj, ne ze schematického editoru.)  V takovém případě by prostě stačilo dát tomu schematu nové jméno, a Layout by tak otvíral (tj. vytvářel) novou desku.

370

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

Existuje-li zde pro testovací verzi -- vlastně spíš verze -- samostatná část fóra, je patrně na místě pokusit se v ní také vyložit, co jsou a k čemu by mohly být dobré.  Editor Layout má svou "oficiální" verzi 4.40 z listopadu 2007 ke stažení na stránce Download, ale již v polovině roku 2006 bylo zřejmé, jak je žádoucí do ní v různých směrech doplňovat nové funkce.  To se i dělo, a ovšem vždy odděleně od oficiální verze; po čase jsem zjistil, že tak činím systematicky, a začal proto s řadou "testovacích verzí", které jsem zpočátku rozesílal pokročilejším uživatelům.  Od roku 2007 jsou dostupné i prostřednictvím tohoto fóra.

Testovací verze programu Layout pokrývají hned několik cílů zároveň: 
  1) přidávají nové funkce, včetně takových,
    1a) kterým dosud nelze (nejčastěji v zájmu kompatibility souborů) poskytnout plnou podporu -- viz např. uživatelské vlajky a barvení netlistu;
    1b) které se svým ad hoc řešením všelijak vymykají ze současné koncepce systému (takže v příštím vývoji budou muset být řešeny jinak a lépe integrovány) -- příkladem jsou třeba geometrické transformace a rotace;
    1c) které do systému vlastně nepatří, protože by jej posouvaly jinam (a zůstanou tedy trvale na úrovni testovacích verzí, případně z nich budou odstraněny) -- např. výstup pro POV-Ray a možná i poloautomatické kótování;
  2) testují konsistenci databáze po každé operaci (a na řadě dalších míst pomocí assertions);
  3) poskytují dodatečné informace, které potřebuji pro ladění (např. indexy do databáze -- viz obr. -- a příkazy pro skok na jim odpovídající prvky v menu Jump To).

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

Do testovacích verzí se nové funkce dostávaly různým způsobem:  něco jsem doplnil dle individuálních požadavků uživatelů, někdy jsem si chtěl cosi vyzkoušet (např. 3D zobrazování) a potřeboval pro to mít vhodné prostředí.  Naprostá většina nových příkazů a parametrů je však soustředěna do menu Tools (tj. do samostatného podstromu v systému menu), jen maličkosti (např. barva pozadí, pár příkazů pro práci s okénkemvýběr makra z tabulky nebo centrování názvů součástek) jsou ve "starém" systému menu někde jinde.  Podobně je tomu i ve zdrojovém textu, takže uživatel, jenž s testovací verzí pracuje v těch částech, které obsahuje i ta "oficiální", se do nového kódu téměř nedostává.  Díky tomu jsou testovací verze od počátku užívány současně ke dvěma cílům, jež se obecně nezdají být právě v souladu, totiž k ověřování nových vlastností i k rutinní práci u pokročilejších uživatelů.  Stabilita dosud v praxi celkem nedělala problémy, a pro každý případ je zachován formát *.pcb souborů.  (Toto nemusí platit o případných pokusných verzích, které se však v tomto fóru neobjevují.)

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

Testovací verzi si nemůžete koupit (a již proto u ní formálně nelze nic zaručit), můžete si ji však volně stáhnout (např. pomocí odkazů různě roztroušených v tomto diskusním fóru) a užívat v přesně stejných mezích, jaké jsou dány vaším licenčním certifikátem pro "oficiální" verzi 4.40.  V době vkládání tohoto příspěvku je poslední testovací verze z října 2008 ke stažení zde: www.formica.cz/files/Layout-p99-test107.zip , případně pro Windows Vista zde:  www.formica.cz/files/Layout-p99-107-env12.zip .  V obou případech se předpokládá, že soubory v archivu nahradíte stejnojmenné soubory v oficiální instalaci.  K disposici jsou však též celé instalační sady s testovací verzí ze září 2008, www.formica.cz/files/Layout440p99p-test.exe pro klíče HASP a www.formica.cz/files/Layout440p99e-test.exe bez klíče, s omezením na 40 součástek a 150 vývodů.

371

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

Pokud jde o detailní chování,

kolin napsal:

- zapamatuj si uhel, atributy (jmeno, hodnota, poznamka) a pozici soucastky (resp.jejiho pozicniho bodu) a mozna jeste neco,
- smaz ji,
- loadni pouzdro tehoz jmena z knihovny,
- prirad atributy patrici dane referenci soucastky,
- umisti pouzdro jeho pozicnim bodem na zapamatovane misto.

ona tam takováhle funkce vlastně už je.  Pracuje ovšem na úrovni jednotlivých druhů pouzder, nikoliv na úrovni desek.

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

Při vzniku verze 4.x, kdy jsem funkce doplňoval v pořadí z velké části daném poptávkou uživatelů, jsem byl sám trochu překvapen, že zájem o aktualizaci pouzder na desce dle knihovny není větší (ve skutečnosti se ke mne takový požadavek od uživatele tehdy vůbec nedostal).  Když jsem to po letech diskutoval myslím s panem Dubeckým, vysvětlil mi, jak to dělá on:  Stačí totiž
  1) převzít z knihovny jednotlivá pouzdra, která chceme na desce aktualizovat, a umístit je někam vedle desky (F4);
  2) otvírat jedno po druhém v editoru součástky a hned nahrazovat na desce (není to vůbec nic složitého, na pouzdro prostě ukážeme myší a stiskneme Alt-F10 A, případně Alt-F10 M, chceme-li se omezit na označená pouzdra, jak zmiňujete);
  3) pomocná pouzdra opět smažeme.

Není sporu, že tento postup je několikanásobně složitější, než by bylo užití jediného příkazu, kupodivu ale není zas tak složitý, aby někoho před Vámi přiměl se na mne s takovým požadavkem v minulých letech obrátit.

Ve zdrojovém textu současné verze je výměna pouzder poměrně složitá (nové pouzdro se musí např. zapojit místo starého, tudíž napřed zkontrolovat, zda vůbec má odpovídající piny, a v záporném případě odpojit z netlistu) a navíc závislá na tom, z jakého místa programu se volá.  V příští verzi mi to sice vychází složitě také, aspoň však na to stačí jediný přiřazovací příkaz, který lze vyvolávat z různých míst zdrojového textu.  Zajímavější spíše jsou podmínky, za kterých by se tak mělo stát.

To souvisí s konceptem "prostupných" součástek (viz též http://www.formica.cz/principy.html#180), které Formica nejen umožňuje, ale přímo podporuje.  Pouzdra tak vlastně jsou jakési klece na prvky, které odtud sice nemůžete vyjmout, ale můžete je v té kleci všelijak posouvat či měnit, často aniž byste k tomu vůbec potřeboval otevřít editor součástky.  Pokud vím, jiné systémy tohle nedovolují, takže pro jakoukoliv modifikaci pouzdra si tam musíte otevřít editor knihovny a v něm vytvořit pouzdro nové.  Na druhé straně součástky ve Formice (zatím) nemají příznak (či vlajku), která by indikovala jejich editaci po převzetí z knihovny.  (Do pouzder sice bude v příští verzi doplněn atribut, udávající čas poslední modifikace, tím se to však zcela neřeší.)  V zásadě za tím ovšem vězí klasický (a netriviální) problém, jak algoritmicky opět sloučit změny, souběžně vzniklé na různých cestách.

372

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

V rámci možností testovací verze postupujete zcela správně.  Program Vám o obecný úhel nedovolí otočit stávající součástku, a to především ze dvou důvodů:

  1) Operace je nevratná.  Tím nemám na mysli, že by k ní neexistovalo undo, nýbrž to, že v důsledku zaokrouhlovacích chyb nemusíte dalším otočením o nějaký doplněk do celistvého násobku 90° (např. dalším otočením o stejný úhel s opačným znaménkem, abych to nepsal tak složitě) získat původní pouzdro, nýbrž v obecném případě poněkud jiné.  (Podobně také např. otočením pouzdra o 11° a pak o 22° obecně dostanete něco trochu jiného než otočením o 33° v jediné operaci.)  Proto jsem chtěl trochu podpořit, aby původní pouzdro někde (v knihovně či přímo na desce) zůstávalo co nejdéle neporušené.

  2) Protože rotace součástek na desce kolem jejich středů neexistuje (jak jsem zmínil výše), nejsou ve standardní verzi programu Layout ani procedury, které by tyto otáčené součástky (a již o násobek 90° nebo o obecný úhel) odpojily z databáze a poté do ní zatřídily znovu.  Jsou-li však otáčeny v seznamu ukazatele, mohu užít procedury ze standardní verze.  Samozřejmě naprogramovat lze leccos, ale spíš než odstraňovat dílčí nedostatky nouzového řešení (a tento dle mého názoru zdaleka není hlavní -- horší jsou problémy s nekruhovými pájecími body, zejména těmi hranatými) se mi zdá lepší investovat programátorský čas do čistého řešení obecných rotací v nějaké příští verzi.

Před nějakou dobou jsem sestavil ukázkový soubor, demonstrující užití transformací v menu Tools, zejména právě rotací.  Můžete si jej prohlédnout zde: rotace2.pcb, případně zde: rotace2.pdf.  V rychlosti jsem z něj také udělal dva výřezy.  ??asem bych asi měl něco napsat ještě o menu Tools jako takovém.

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

http://www.formica.cz/files/forum/rotace1.gif

kolin napsal:

Jeste mam pro p.Peroutku tip: vzdy, kdyz rozmistim popisky referenci, vyvolam jeste "Jump To - Component" a projedu cely seznam soucastek, pricemz koukam do nahledu na pozice popisek; delam to zejmena kvuli tomu, abych se ujistil, ze jsem presunul veskere popisky.

Vidím, že se diskuse již tradičně štěpí, zasahujíc tak do dalších a dalších témat.  Z mého pohledu to nepochybně je v pořádku, Formica úmyslně má funkce co možná provázané a pokročilejší uživatel by měl především uvidět jejich souvislosti.  Potíž je spíše v tom, že diskusní fórum pro to nabízí podporu jen malou, ne-li žádnou.  Otázkou pak zůstává, jak se s tím vším vyrovná laskavý čtenář, který se bude snažit cosi najít ke konkrétnímu tématu.  Asi mu nezbyde než zkoušet vyhledávání klíčových slov v záhlaví fóra (Hledat).

Protože rotace součástek patrně souvisí až s testovací verzí (menu Tools je jen tam), dovolil jsem si založit nové téma http://www.formica.cz/forum/viewtopic.php?pid=736#p736 -- fórum jednotlivé příspěvky přesouvat (ani kopírovat) neumí.

Postup, který uvádí kolin, má výhodu v tom, že zobrazuje součástky isolovaně, bez (pro daný účel rušivých) prvků okolo.  Mimochodem, pro iterování součástkami v desce se mi často hodilo jednoduché makro:

Macros (
  <Ctrl-J> "iteruj součástkami" (<Alt-J><c><RArr><Enter>)
  <Shift-Ctrl-J> "iteruj součástkami zpět" (<Alt-J><c><LArr><Enter>)
)

To mi pak za příznivých okolností (součástky se nepřekrývají; jsem na vrstvě, kde součástky nic nezastiňuje) prochází součástkami v abecedním pořadí pouhými stisky Ctrl-J.  (A Shift-Ctrl-J ovšem postupuje opačným směrem.)

374

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

Protože rotace součástek asi souvisí až s testovací verzí (menu Tools je jen tam), dovolil jsem si založit nové téma zde -- fórum jednotlivé příspěvky přesouvat (ani kopírovat) bohužel neumí.

kolin napsal:

Je to mozna spise na jine tema, ale myslim pripady, kdy mam vlozene pouzdro a potrebuju ho rotovat. Neprisel jsem na to, jak to udelat jinak, nez zapnout kopirovaci funkci, pouzdro zkopirovat a pred polozenim na desku nastavit v "Tools - Rotate" uhel. Cili nemohu jen jednoduse oznacit soucastku a zmenit jeji uhel. Ale je pravda, ze tuto funkci pouzivam do roka asi dvakrat, takze takova tragedie to neni, jen je to takove krkolomne a pokud to neznaly uzivatel bude chtit udelat, bude si s tim asi muset chvili hrat. A take se to neda pouzit na nastaveni konkretniho uhlu.

Předpokládám, že máte na mysli rotace součástek jen o obecný úhel?  Co se týče rotací označených součástek o násobky 90°, samostatný příkaz k tomu není; hlavně proto, že mne nenapadlo, že by jej někdo mohl potřebovat.  Jelikož po rotaci asi stejně bude vždy nutno přesněji upravit polohu, měl jsem za to, že stačí s jednotlivými součástkami dělat obě operace zároveň v režimu ukazatele Move Component (po Alt-F8).

kolin napsal:

(...) ostatne nejen u textu, zatim to je mozne pouze u vybranych rezimu kurzoru (...)

Nevím, zda jsem Vám rozuměl.  Co máte na mysli?