Dobrý den, ještě než se dostanu k jádru věci, dovolím si zmínit jednu drobnost, čímž zároveň ukážu strukturu Vaší součástky:
Pomocné pájecí body by se možná hodilo elektricky spojit s ploškami vytvořenými ze segmentů spojové čáry; tím se vyloučí zbytečné indikace porušení izolační vzdálenosti.
Váš požadavek je dost speciální hlavně z toho důvodu, že potřebujete, aby Vám jedno pouzdro v partlistu generovalo tři položky. Formica však o tom teď nemá žádnou informaci a v databázi verze 4.x neposkytuje ani žádný způsob, jak popsat, že určitá součástka je jemněji strukturována na další součástky. Napadají mne ale dva způsoby, jak problém s trochou úsilí obejít.
Napřed ještě řeknu, že u součástek, které mají nějaké vývody, se za jejich střed považuje střed (nejmenšího, dle souřadnic x, y orientovaného) obdélníka opsaného středům těch vývodů. Pro generování partlistu se tento střed bere jako referenční bod; možnost zadat jiný tam není. (Podrobněji to je popsané někde v helpu.) Z toho důvodu by zřejmě bylo vhodné vývody 1 a 3 prohodit s pomocnými nečíslovanými pájecími body, protože -- jak předpokládám -- referenční body diod R a G asi chcete mít v jejich středech. (Nemusím jistě připomínat, že k tomu slouží editor součástky a příkaz Replace | Replace All Components. Potíž je spíše v tom, že touto operací se pouzdra zároveň posunou vůči desce, takže nezbývá než je vrátit zpět, nejlépe v režimu Move Goup.)
1) Jedna možnost tedy je vygenerovat partlist natřikrát a spojit dohromady textovým editorem. Pro jedno generování byste však v součástkách odmazal vývody 3 až 6, pro druhé 1, 2, 5 a 6, a konečně pro třetí vývody 1 až 4. I pokud to snad vypadá složitě, s pomocí příkazu Undo se to dá rychleji provést než vysvětlit.
Zbývá ovšem vyrovnat se s tím, že se v těch třech souborech opakují stejná jména, a také s orientací součástek (ta je naštěstí u všech trojic diod na desce táž). Oboje bych asi bez větších rozpaků řešil nahrazováním textu v textovém editoru.
2) Druhou možnost zde nebudu rozvádět do podrobností, zmíním jen, že Formica je otevřený systém alespoň potud, že partlist je (resp. může být) generován v Partlist.dll, jejíž zdrojové texty jsou součástí instalační sady. Zde uvedu pouze klíčovou proceduru:
procedure ProcessPartlist (var CompDescr: array of PCompDescr; const BoardDescr: TBoardDescr;
Write: TWriteProc);
type
TSide = (Top, Bottom, Undefined);
var
Side: TSide;
i: Integer;
const
MarkStrs: array [Boolean] of string [1] = ('-', '*');
OrientStrs: array [0..7] of string [5] = ('R0', 'R90', 'R180', 'R270', 'MR0', 'MR90', 'MR180', 'MR270');
SideStrs: array [TSide] of string [3] = ('TOP', 'BOT', ' ');
function CompSide (Layers: TLayers; Mirrored: Boolean): TSide;
begin
with BoardDescr do begin
Layers := Layers * [BotLayer, TopLayer];
if Layers = [BotLayer, TopLayer] then // piny jsou na obou stranách
if Mirrored then
Result := Bottom // klasická sou?ástka je zrcadlena
else
Result := Top
else if Layers = [TopLayer] then
Result := Top // piny jsou jen shora
else if Layers = [BotLayer] then
Result := Bottom // piny jen zdola
else { Layers = [] }
Result := Undefined;
end;
end {CompSide};
begin
Write ('Partlist from FORMICA 4.40 / P96 Copyright (C) 1986 - 2005 by Petr Horský'^M^J);
DecimalSeparator := '.';
for Side := Top to Undefined do
for i := 0 to High (CompDescr) do
with CompDescr [i]^ do
if CompSide (PinLayers, Mirrored) = Side then
Write (Format ('%s'^I'%s'^I'%s'^I'%3d'^I'%s'^I'%8.3f'^I'%8.3f'^I'%s'^I'%s'^M^J,
[Underscore (Name),
Underscore (Value),
Underscore (Pckg),
NoOfPins,
MarkStrs [Marked],
Center.x,
Center.y,
OrientStrs [Angle div 90],
SideStrs [Side]]));
end {ProcessPartlist};
Není nereálné si ji ad hoc upravit tak, aby z jedné součástky generovala tři položky, lišící se (mj.) o známý offset. Pokud byste chtěl postupovat touto cestou, jsem Vám samozřejmě k disposici pro další konsultace.
3) Zde se už nebudu zabývat tím, jak problém řešit, nýbrž jak zamezit tomu, aby vůbec vznikl. V dané situaci bych patrně zvažoval, zda není výhodnější místo každé "sdružené" součástky umístit trojici samostatných diod (přičemž bych u každé ponechal ty dvě okrové kružnice -- jestli se ve výsledku překryjí, je to jen dobře). Musel bych ale trošku přemýšlet, jak nejlépe ošetřit vazbu na *.pnl soubor.