1 Naposledy upravil: kolin (2009-02-12 16:18:09)

Téma: Update pouzder

Mel bych zas maly namet na funkci. Jako je ve schematiku moznost smazat z lokalni knihovni pameti soucatku (Browse/Edit | Remove) a nechat jeji novejsi verzi prikazem Browse/Edit | Reload nahrat z knihovny, bylo by sikovne mit neco i v Layoutu, pomerne casto na to narazim pri omlazovani desek, nebo kdyz vytvorim pouzdro a zjistim, ze je na nem neco spatne.
Staci uplne jednoduse oznacene soucatky aby se nahradily temi z knihovny.
Cili neco jako:
- 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.
Bylo by neco takoveho mozne?

2

Re: Update pouzder

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.

3

Re: Update pouzder

Hm, je to zajimavy napad, mate pravdu ze takto to jde take..

Do struktury programu, pravda, nevidim, ale kdyz nad tim tak uvazuju, tak o to jednodussi by vznik noveho procesu mohl byt, kdyz uz ta nejhorsi cast je napsana pro Replace. Rekl bych, ze pak uz mnoho nechybi: zjistit si nazev prave aktualizovaneho pouzdra, jeho nacteni z knihovny, osetreni vicenasobne vysvicenych shodnych pouzder + vyvolani menu Replace, a dal jiz stavajici funkce pro onen Replace.. Ale predpokladam ze tak jednoduche to asi v realu neni..

Urcite se ale primlouvam, aby v te pristi verzi uz byla nejaka takova funkce, mozna pro uplnost i funkce pro hromadnou nahradu vice typu pozder. Nahrazovani timto zpusobem neni, jak pisete, uplne optimalni (prave kvuli te nutnosti znat obecne chovani programu, jeho filosofii, aby vedel ze musi hledat okliky a takoveto "vedlejsi efekty" funkci, a pak nejdriv pouzdro nekam davat, pak jit do jeho editace a pak teprve nahrazovat - to je vlastne dalsi "NE" pro potencionalniho zakaznika a "ach jo" pro toho stavajiciho :o)

4 Naposledy upravil: kolin (2009-02-16 15:14:05)

Re: Update pouzder

...jentak mimodek me napadlo dalsi vyuziti pro nahrazovani soucastek: pri tvorbe osazovaciho vykresu, kdy je vhodne mit soucastky uprostred pouzdra, idealne tam, kde je umistil autor predlohy pouzdra. Takto by se dalo nahradit lehce nouzove reseni vytvorene pred casem, ve vlakne http://www.formica.cz/forum/viewtopic.php?id=74 . Narozdil od reseni v onom vlakne dojde i k obnoveni umazanych casti predloh, ktere byly urezany napr.z prostorovych duvodu (u nas bezna vec).