česky english Vítejte, dnes je pátek 19. duben 2024

Dělení obřích souborů Gerber dat

DPS 1/2013 | Články
Autor: RNDr. Jiří Pokorný

Před časem jsem dostal od klienta tento zajímavý úkol: Rozdělit obří textové soubory velikosti až 1 GB, které obsahují popis dat ve formátu Gerber, do editovatelných menších souborů, se kterými si poradí běžný textový editor, např. Notepad. Zadání koresponduje s faktem, že firma klienta nabízí velmi přesné fotoplotování, zejména pro fotovoltaiku, kde velké Gerber soubory nejsou výjimkou. Pro jejich zpracování na fotoplotru je potřeba celý textový soubor rozdělit na menší části a ty podle potřeby upravit. Především to znamená mít možnost vstupovat do dílčích souborů, vkládat posloupnosti znaků pro definici hlavičky (header) a paty (foot) dílčího souboru a také do něj vkládat posloupnost znaků (split), které označují místo v souboru, kde dojde k jeho rozdělení.

Důvodem pro zadání této úlohy byla neúměrně dlouhá doba potřebná pro práci se souborem, kdy jinak jednoduché úlohy, jako jsou načtení, editování či uložení, trvají desítky minut i na velmi rychlém počítači.

A proč je nutné ruční rozdělování původního souboru? Data ve formátu Gerber obsahují sekce dat nejrůznějšího charakteru a žádný program není schopen automaticky rozpoznat konec takové sekce a vložit na toto místo rozdělovač (splitter). Necitlivé rozdělení dat uprostřed datové sekce je nemyslitelné. Proto byl tento úkol ponechán lidskému zásahu. Každý soubor v Gerber formátu musí obsahovat hlavičku a konec souboru, což jsou předem uživatelem definované řádky v souboru. Při dělení dat na více souborů tak musíme do každého místa, kde program nalezne rozdělovač (splitter), vložit posloupnost řádků definujících konec souboru a naopak nový soubor opatřit řádky s definicí hlavičky. Jaké tedy vzniklo řešení?

Nejdříve jsem zjistil, s jak velkým souborem je schopen Notepad pracovat, aniž bychom na operaci vkládání nového řádku nebo jinou úpravu textu čekali neúměrně dlouho. Podle výkonu počítače (někdo pracuje s notebookem, někdo s pracovní stanicí) jsem vypozoroval, že editovatelná velikost dat pro Notepad se pohybuje od 35 MB až po 50 MB. Proto jsem originální vstupní soubor rozdělil programově do takto velkých textových bloků (velikost bloku je v programu nastavitelná ve zmíněném intervalu). Pokud bychom tedy pracovali se vstupním souborem o velikosti 1 GB, vznikne kolem 20 souborů, každý o 50 MB.

Tak např. vstupní soubor o velikosti cca 243 MB je rozdělen do bloků, každý kolem 36 MB. Přitom se vždy načítají celé řádky o různé délce, takže program po načtení objemu dat přesahujícího definovanou velikost bloku vytvoří vždy nový soubor, přičemž poslední soubor má zbytkovou velikost. V tomto příkladu vzniklo 7 souborů s pracovním označením FILE_01.TXT, FILE_02.TXT, …, FILE_07.TXT.

Nyní je nutné na začátku prvního souboru definovat obsah hlavičky a na konci posledního souboru obsah paty souboru. Program tyto definice nutně potřebuje pro vsouvání do dílčích souborů – pokud definice chybí, program nás nepustí dále. Příklad hlavičky vypadá takto:

Dělení obřích souborů Gerber dat 1

Všechny řádky nad značkou XXXXH určují obsah hlavičky, kterou je uveden každý Gerber soubor.

Definice paty souboru je velmi jednoduchá, jsou to řádky za „foot“ značkou XXXXF, v našem případě jediný řádek:

Dělení obřích souborů Gerber dat 2

Vstup do jednotlivých souborů je v programu umožněn přes menu, kde lze vybrat soubor k editaci a pro vkládání potřebných oddělovačů. Každý zásah do souboru je vypsán do řádky za název souboru, tak např. H u prvního souboru znamená, že už je tam definovaná „header“ značka XXXXH, F u posledního souboru znamená už realizovanou definici „foot“ značky XXXXF, S značí vložení rozdělovací (split) značky XXXXS k rozdělení souboru.

Každý zásah do souboru je kontrolován programem. Program nakonec podle vložených značek vytvoří požadované dělení původního souboru na menší, s kterými už obsluha plotteru dokáže pracovat. Současně vznikne následující záznam o velikosti nových souborů ve formě textového souboru (příklad):

Dělení obřích souborů Gerber dat 3

Na závěr lze dodat, že vytvořený program má editovatelné definice značek, takže je jím možné dělit i jiné soubory než Gerber data. Jen si musíme být jisti, že námi definované značky jsou originální a v původním textu se nevyskytují.

Program byl od původního vzniku upraven pro práci s výkonnějším textovým editorem, např. Notepad++, který umí načítat větší objemy dat a je v případě velkých souborů několikrát rychlejší při manipulaci s textem. Jeho použitím se editační časy významně zkrátily.