Abstrakt

     Tisk sice patří mezi poslední kroky k dokončení zpracovávaného projektu, avšak jeho důležitost je značná. Tiskové zpracování se odráží v celkovém vzhledu tisknutých materiálů. Bakalářská práce se zaměřuje na tiskové funkce v systému KOKEŠ. První část práce popisuje stávající funkce systému, jejich využití a návrh na vytvoření funkcí nových. V další části jsou nově vzniklé funkce popsány z hlediska jejich řešení, vzhledu a ovládání. Jedná se o funkce řešící problematiku skládání technických výkresů a soutisku různých druhů dat.
     Součástí práce je taky stručný popis použitých prostředků pro programování v systému KOKEŠ Basic. Výsledkem jsou tedy funkce, které jsou součástí systému KOKEŠ a jsou využívány v praxi.

Klíčová slova: tisk, systém KOKEŠ, programování

Abstract

     The print belongs among last steps towards finishing the elaborating project; however its importance is high. The print elaboration is reflected in the general appearance of the printing materials. The bachelor’s thesis is aimed at the printing functions in the KOKEŠ System. The first part of the thesis describes the current system’s functions, their use and a proposal for creating new ones. In the other part, new created functions are described in term of their solution, appearance and control. These are the functions solving the questions of folding of technical plans and printing of different types of data together.
     A brief description of the used resources for programming in the KOKEŠ Basic System is also a part of the thesis. The results are therefore functions, which are a part of KOKEŠ System and are used in the practise.

Keywords: print, KOKEŠ System, programming

Seznam použitých zkratek

ČVUT České vysoké učení technické
ČÚZK Český úřad zeměměřický a katastrální
ČSN Česká státní norma
OS Operační systém
IMIP Institut městské informatiky hl. m. Prahy
DOS Disk Operating System (diskový operační systém)
ESRI The Economic and Social Research Institute (ekonomický a společenský institut)
MS Microsoft = název firmy
ZMVM ČR Základní mapa velkého měřítka České republiky

ÚVOD

     Bakalářská práce s názvem Programování tiskových funkcí v systému KOKEŠ Basic byla vyhotovena v rámci bakalářského studia oboru Geodézie a kartografie na ČVUT v Praze.
     Jako téma předkládané práce jsem si zvolil problematiku tisků v systému KOKEŠ. Přestože systém poskytuje mnoho variant tiskového výstupu, postupem času se nároky a požadavky mění, ať už z řad uživatelů nebo i právních předpisů v daném oboru.
     Jedním z cílů této práce je tedy navrhnout funkci řešící problematiku skládání technických výkresů dle ČSN 01 3111 společně s jejím rozšířením na libovolný formát. Výsledkem má být tisk vybrané části výkresu na tiskárnu či do výkresu, tak aby vybraná část byla doplněna o síť křížků, podle kterých by se vytisknutá grafika složila a tudíž vyhovovala uvedené normě. Dalším cílem práce je upravit stávající funkci pro soutisk různých typů dat, kterými může být například text, grafika či obrázek. Samotné řešení funkce lze rozdělit na dvě části. Jednak na tu část, která pomocí voleb dialogu naplní vlastně definovaný textový soubor, a dále na část, která vyzvedne obsah souboru a provede samotný tisk.
     Bakalářská práce je rozdělena do čtyř kapitol. V první kapitole je uveden popis systému, ve kterém jsou funkce vytvářeny, a dále popis základních použitých prvků pro psaní zdrojových kódů. Druhá kapitola se zabývá stávajícími tiskovými funkcemi systému a návrhem nových funkcí. Poslední dvě kapitoly se věnují konkrétním úlohám, které jsou v práci řešeny.
     Práce není psána jako popis funkcí z programátorského hlediska, ale je zaměřena na pohled uživatele, kterého především zajímá, co funkce dělají a proč, a tudíž k čemu mu mohou sloužit, dále jak se ovládají a jaký mají vzhled.

1 INTERAKČNÍ GRAFICKÝ SYSTÉM KOKEŠ

     Autorem systému je společnost GEPRO, spol. s r.o., která byla založena v roce 1991 a dnes se řadí mezi nejvýznamnější producenty softwaru v oblasti geoinformačních technologií a geodézie v České republice. Kromě systému KOKEŠ firma vyvíjí systémy MISYS pro oblast geoinformačních systémů, systém PROLAND pro zpracování pozemkových úprav, systém UPLAN pro pořizování územně plánovací dokumentace a další aplikace pro rozšíření uvedených systémů.

1.1 Základní informace o systému

     Systém KOKEŠ je systém, jehož hlavní použití má být a je v geodézii a projektování. Systém se skládá z jednotlivých modulů. Základní modul se nazývá ZÁKLAD, pracuje se seznamy souřadnic, výpočetními funkcemi a grafickými vstupy a výstupy. Dalším modulem je modul VEKTOR, který obsahuje prvně uvedený modul a navíc obstarává práci s vektorovou kresbou včetně topologických operací. Modul STANDARD v sobě zahrnuje oba uvedené moduly, a dále pracuje s rastrovými daty.
     Pro další rozšíření systému je možno použít moduly pro tvorbu geometrických plánů, výpočet a vyrovnání prostorových geodetických sítí, pro vstup z jiných systémů (Microstation, AutoCAD, ESRI) do systému KOKEŠ a výstup do již uvedených systémů, dále pro konverzi, transformaci a úpravu rastrových dat aj. Jelikož je systém vytvářen po jednotlivých funkcích, usnadňuje to jeho vývoj, není tedy problém ho rozšířit, což je i uživatelsky příjemné.
     Systém používá široké spektrum uživatelů, od malých firem, většinou geodeticky zaměřených (není to však pravidlem), až po důležité státní instituce, mezi které patří především Český úřad zeměměřický a katastrální (ČÚZK), Katastrální úřady, Zeměměřický úřad, Institut městské informatiky hl. m. Prahy (IMIP), Ministerstvo financí, Ministerstvo vnitra, Armáda České republiky.
     V letech 1988–1995 vznikal systém KOKEŠ pro platformu DOS. Poslední verze pro DOS byla verze osm. V dalších letech tedy vznikal systém pro platformu OS Microsoft Windows, nyní je k dispozici verze osm.

1.1.1 Vývojové prostředí

     Z názvu KOKEŠ Basic je zřejmé, že program vznikl z programovacího jazyka Basic. Jelikož schopnosti samotného Basicu nebyly nejvhodnější k programování pod OS Windows a pro vývoj geodetického softwaru, byl jazyk značně upraven a rozšířen. Vznikl tedy programovací jazyk KOKEŠ Basic, který umožňuje jednak spolupráci s OS Windows, dále však obsahuje mnoho interních funkcí, které se nacházejí v jádru systému, a kterými lze plně řídit celý program.
     Dále je možno připojovat knihovny z jazyka C, které se označují příponou h, a vytvářet vlastní hlavičkové soubory značené příponou inc. Zdrojový kód není nutné psát v KOKEŠ Basicu, lze využít libovolný textový editor. Soubor je nutno uložit s příponou bas a nelze ho rovnou přeložit do spustitelného modulu. Snadnější cestou je použití prostředí pro vývoj maker přímo v systému KOKEŠ, navíc je zde možné překlad a spuštění makra, odladění zdrojového kódu, vložení různých struktur (makra, procedury, helpy aj.), dále nástroj pro návrh dialogu a bohatá nápověda (funkcí, procedur aj.).

1.2 Použité prostředky v systému KOKEŠ Basic

     V této kapitole jsou popsány základní prvky, které byly při programování tiskových funkcí použity. Jedná se zejména o strukturu maker, dialogů, vlastních funkcí a vložených souborů nebo jejich částí.

1.2.1 Makro

     Makro je uživatelská funkce, díky které lze nějakou operaci vyvolat. Definice makra má tento tvar:

macro jméno [transparent | internal] [help kontextové_číslo]
[quickhelp "vysvětlující_text"]
     deklarace proměnných
     blok příkazů
end macro

     Jediným povinným parametrem je jméno makra. Dále lze definovat parametry nepovinné (uvedené v hranatých závorkách), kterými jsou:

transparent – pokud je v době jeho spuštění aktivní jiný povel, nebude aktivní povel přerušen, ale jeho provádění bude pozastaveno do ukončení nově spuštěného modelu.
internal – pokud je v době jeho spuštění aktivní jiný povel, nebude aktivní povel nijak ovlivněn – tato makra by neměla proto obsahovat příkazy input a print.
help – umožňuje připojit k uživatelské funkci stránku s nápovědou. Ta musí být umístěna v souboru, jehož jméno musí být shodné s názvem modulu. Soubory s nápovědou jsou umístěny v adresáři HELP a jsou vytvářeny speciálními programy, např. ForeHelp.
quickhelp – určuje obsah nápovědy, která se objeví na stavovém řádku, pokud uživatel zadá povel spouštějící toto makro.

     V těle makra se nachází povinná deklarace proměnných, každá proměnná musí být tudíž nějakým způsobem deklarována. Překladač Basicu proměnné vyhradí určité místo podle jejího typu (int, real, string aj.), a zároveň kontroluje, zda je vymezený prostor používán povoleným způsobem.
     Dále je zde posloupnost příkazů a řádkových bloků. Řádkový blok je posloupnost příkazů na jednom řádku, oddělených dvojtečkou. Soubor s příponou bas může obsahovat více maker, které jsou pak součástí jednoho modulu s příponou kbe.

1.2.2 Dialog

     Dialog lze chápat jako speciální typ definice nového typu proměnné. Povolenými prvky této proměnné jsou předdefinované typy prvků dialogů. Tvar a obsah dialogu lze definovat ručně nebo vizuálně pomocí návrháře dialogů, který je součástí systému KOKEŠ Basic. Definice dialogu je:

begin dialog název_typu vlevo nahoře šířka výška titulek [vlajky]
   typ_prvku název_prvku vlevo nahoře šířka výška titulek [ID] [vlajky]
   typ_prvku ...
     ...
   typ_prvku ...

sub název_prvku.událost(parametry)
end sub
     ...
end dialog

     Opět jako u maker zde vystupují povinné a nepovinné parametry. Dialog tedy musí mít své jméno (název_typu), zadané umístění od levého horního rohu programu (vlevo, nahoře) a svůj vlastní rozměr (šířka, výška), dále pak titulek, který se zobrazí v liště dialogu při jeho spuštění. Nepovinnými prvky jsou pak tzv. vlajky, které zajišťují chování dialogu (uživatel může měnit rozměr dialogu atd.).
     Aby však nebyl dialog prázdný, musí obsahovat prvky dialogů, které mají podobnou strukturu jako samotný dialog a udávají, zda je prvek text dialogu, editační pole dialogu nebo prvek jiný. Chování dialogu zajistíme uvnitř dialogu funkcemi pro jednotlivé prvky dialogů, tzv. událostmi prvku, kde se použijí deklarace proměnných a bloky příkazů, jako v případě makra.

1.2.3 Funkce

     S funkcí jsme se už setkali v těle dialogu, jednalo se však o funkci předdefinovanou. Systém nám však umožňuje psát i funkce vlastní. Definice funkce je následující:

sub jméno(seznam vstupních parametrů)
   deklarace proměnných
   blok příkazů
   return návratová hodnota
end sub

     Každá funkce má svůj název a seznam vstupních parametrů. Uvedené parametry (jejich počet není daný) musí mít přiřazené typy jednotlivých proměnných, dále se parametry využívají k operacím v samotném tělu funkce. Ta je ukončena buď příkazem return s návratovou hodnotou (pokud má funkce vracet konkrétní typ proměnné) nebo posledním příkazem funkce.
     Funkce musí být umístěna mimo dialog nebo makro, aby popřípadě bylo možné z dialogu nebo makra její volání. Není však důležité, zda je funkce před nebo za samotným makrem nebo dialogem.

1.2.4 Vložené soubory a import

     Do svého modulu je možné zahrnout i jiný soubor, což je vhodné při vkládání opakujících se procedur, definici nových datových typů a volání procedur z jiných modulů. Vložení souboru do zdrojového textu se provádí zápisem:

#include <vložený_soubor>

     Pokud překladač dosáhne příkazu #include, otevře a začne překládat za ním uvedený soubor. Jestliže není v nastavení systému navolena cesta přímo do adresáře, kde se soubor nachází, je potřeba kromě názvu samotného souboru v definici uvést i jeho cestu. Po přeložení vloženého souboru začne překladač pokračovat dalším řádkem modulu. Vkládané soubory lze řetězit, tzn. že vložený soubor může obsahovat další vložený soubor. Při vkládání je však potřeba dát pozor, aby vložený soubor neobsahoval opět vložený soubor, jehož je sám součástí.
     Pokaždé však nemáme potřebu vkládat celý soubor, ale třeba jenom určitou proměnnou nebo potřebnou funkci. V tom případě je vhodné použít import ve tvaru:

string retezec$ import KNIHOVNA
sub int test (int a, real b) import KNIHOVNA

     Tímto zápisem tedy dosáhneme toho, že proměnná typu string a funkce test jsou od této chvíle připraveny k použití, jako bych si je definoval ve vlastním modulu. Jméno modulu je potřeba napsat velkými písmeny a musí se shodovat se jménem modulu v době překladu.

2 PŘEHLED TISKOVÝCH FUNKCÍ

     Tisk představuje v dnešní době důležitou etapu v práci s grafickými daty, a to proto, že ve většině případů naší práce s daty nám nestačí pouze zobrazení na obrazovce počítače. Vyžadujeme výstup dat na papír či do jiného dokumentu pomocí nainstalované tiskárny, dále třeba tisk do rastru nebo metasouboru. Tiskové funkce se neliší pouze tím, kam budou výstupní data poslána, ale taky přístupem k datům, zejména pak způsob jejich prezentace (symboly, vrstvy, přídavné rámy či tabulky aj.).

2.1 Stávající funkce a jejich využití

     Před samotným tiskem je však potřeba myslet na několik věcí. Základním předpokladem je mít načtené soubory (výkresy, seznamy souřadnic atd.), které se mají tisku účastnit, popřípadě nastavit jejich pořadí pro tisk. Dále je potřeba nastavit zobrazení tak, jak má být použito při tisku. Tedy zda se bude tisknout podle barev vrstev (každá vrstva má přiřazenou jednu barvu) nebo barev čar (každý prvek je nakreslen jednou barvou - kreslícím klíčem). Možno je nastavit i informace, které se budou tisknout u seznamu souřadnic, výkresů, případně textů. Výkres může mít definovanou vlastní technologii, kdy se kresba na plotru provádí jiným způsobem, než jsou data zobrazena na obrazovce. Pokud zmíněná dvojakost pro technologii není obvyklá, obě varianty kresby poskytnou stejný výsledek, v opačném případě je potřeba se rozhodnout, zda bude tisk proveden podle obrazovky či tiskárny. Dalším krokem je nastavení Tabulky barev podle tiskárny, na které se bude tisknout. Před samotným tiskem je ještě nutno nastavit tiskárnu. Toto nastavení se provádí standardním dialogem MS Windows, pro aktuálně nainstalované tiskárny, kde se volí formát, orientace, zdroj papíru a další možnosti, které tiskárna umožňuje.
     Všechny dále uvedené funkce pro tisk se vztahují k verzi č. 8.18.

2.1.1 Tisk okna

     Jak už je z názvu patrné, tisk se vztahuje k aktivnímu oknu. Na výběr je mnoho variant rozsahu tisku zobrazované grafiky:

Současné měřítko a střed – metoda už nepotřebuje další vstup uživatele. Tiskne se aktivní okno dané měřítkem a středem.
Měřítko, střed (roh) – uživatel zadá měřítko a střed (roh) výřezu. Oblast tisku je omezena nastaveným formátem papíru.
Měřítko, výřez – uživatel zadá měřítko a výřez. Ve zvoleném měřítku se vejde na tisknutou plochu určitá část území. Pokud velikost území je překročena, upozorní nás změna kurzoru a při zadání výřezu chybové hlášení, poté je nabízeno nové zadání výřezu.
Výřez (zaplní papír) – zadává se pouze výřez. Měřítko je určeno tak, aby se vybraná část zobrazila co nejlépe na dostupném papíru, tím pádem není měřítko celočíselné, je vypsáno před tiskem na konzolu.
Pokládání papíru – zadává se měřítko a poloha papíru. Hranice tisknuté části terénu je zobrazena pomocnou konstrukcí, která je chycena myší za levý dolní roh, je možno ji posunovat a natáčet. Pomocná konstrukce po jejím zadání je sice viditelná na obrazovce, lze tedy provádět souvislý tisk, samotného tisku se však neúčastní, po překreslení okna konstrukce zmizí.

     K těmto funkcím lze navolit další nastavení jako je tisk rámečku vybrané grafiky, nastavení okrajů, tisk loga, rektifikace tiskárny a zkreslení tisku. Je nutno počítat s tím, že zvolení tohoto nastavení se projeví až po znovuspuštění této funkce.

2.1.2 Tisk s rámem

     Obsah aktivního okna je doplněn o rámové údaje. Tyto údaje je potřeba načíst jako samostatný výkres. Na výběr je buď připojit rám souřadnicově, ve společném měřítku nebo tak, že výkres i rám mohou mít měřítka rozdílné. Kresba, která se do rámu nevejde, bude oříznuta. Funkce je navíc ještě doplněna o nastavení okrajů a loga, kde lze volit příslušné parametry.

2.1.3 Rám ze vzoru

     Funkce generuje mimorámové údaje mapového listu podle vzorového výkresu, který obsahuje neměnnou část mimorámových údajů (mapový rám a rámové značky). Dále pak část měnnou, která obsahuje údaje specifické pro jednotlivé mapové listy (souřadnicový a výškový systém, vyhotovitel aj.). Po spuštění funkce je potřeba vybrat už předem připravený vzorový výkres. Po jeho výběru je pomocí funkce Klady map, zadáním bodu uvnitř mapového listu, určena poloha mapového rámu a označení mapového listu. Vygenerované údaje lze zkopírovat do otevřeného výkresu nebo použít pro tisk mapového listu. Funkce je v nynější podobě použitelná pouze pro klady ZMVM ČR.

2.1.4 Snímek mapy

     Jedná se o nejčastější a nejuniverzálnější nástroj pro tisk. Funkce zobrazí obdélník, který zobrazuje tisknutou plochu. Obdélník lze natáčet, měnit u něj bod tahání, zároveň měnit měřítko, což se okamžitě projeví i do velikosti výřezu. Dále je možno doplnit tisk o mimorámové údaje, zvolit tiskárnu nebo si vybrat tisk do rastru, popřípadě do metasouboru. Dialog navíc umožňuje nastavit okraje tisku, zobrazuje aktuální velikost papíru na který má být tisk prováděn, a lze přistoupit na rozdíl od jiných funkcí pro tisk rovnou k nastavení tiskárny. Ve výsledku tato funkce jednodušším způsobem spojuje Tisk okna, Tisk s rámem, Tisk do rastru a Tisk do metasouboru.

2.1.5 Prezentační tisk

     Funkce by měla sloužit k soutisku různých typů informací, jako je například text, část grafiky, pomocný výkres a další. Makro pracuje s textovým souborem, který čte, popřípadě mění jeho obsah. Soubor má příponu kpt. Tento postup je výhodný zejména v případě, kdy se výstup provádí opakovaně s určitými rozdíly (změna textu nebo měřítka grafiky aj.).
     Po spuštění funkce lze tedy otevřít už existující soubor a provést samotný tisk, nebo obsah souboru změnit pomocí Návrháře pod tlačítkem Upravit. Změnu obsahu souboru je možné provést i přímo v textovém tvaru, v tomto případě však uživatel musí znát strukturu každého typu pro tisk, který představuje v souboru jeden řádek. Parametry zadané uživatelem je možno uložit pro pozdější tisk.
     Návrhář tedy představuje vizuální formu změny souboru , kdy je vidět zjednodušeně, jak bude výsledný výstup vypadat. Po vybrání konkrétního typu tisku je požadováno jeho jméno a umístění. Každý typ má různé možnosti nastavení, které ovlivní, jak bude při výstupu vypadat a jak se bude chovat.
     Při samotném tisku mohou nastat dvě možnosti. Buď proběhne tisk rovnou bez dalších dotazů nebo je uživatel vybízen k zadání potřebných údajů pro požadovaný tisk . Úprava této funkce je také předmětem bakalářské práce a proto bude řešena dále v kapitole 4.

2.1.6 Tisk s formulářem

     Tato funkce slouží k soutisku zadaných textů ve vytvořeném formuláři a k tisku vybrané grafiky. Před spuštěním samotné funkce je potřeba nadefinovat formulář.

     Nastavení tisku s formulářem – pomocí dialogu lze nadefinovat název a okraje formuláře, textový obsah formuláře, dále jeho polohu, velikost, font, vlastnosti fontu a zarovnání.

     Tisk s formulářem pracuje podobně jako Tisk okna, stejně tak má shodné nastavení okrajů, nastavení tisku loga, možnost vypnutí rámečku vybrané grafiky, rektifikace tiskárny a zkreslení tisku.

2.1.7 Tisk do metasouboru

     Tuto funkci můžeme považovat za obdobnou jako Tisk okna s tím rozdílem, že výstup výkresu aktivního okna je prováděn do metasouboru. Zvolit tedy můžeme z nabídky:

     Způsob ovládání a filozofie funkcí jsou totožné jako u Tisk okna, proto zde není popis uveden. Tisknout lze opět v libovolném měřítku, z aktivního okna se převezme úhel, zobrazená data a způsob jejich prezentace. Důležité je podotknout, že výstup je vždy omezen pouze na jeden metasoubor. Před samotným tiskem je vyvolán standardní dialog, ve kterém se zadává název souboru. U způsobu pokládání papíru je tento dialog volán opakovaně, pokud položíme více listů. Veškerý výstup do metasouboru se řídí nastavením pro tiskárnu. Lze zde nastavit velikost vykreslené plochy v milimetrech, rozlišení v dpi, černé pozadí, rámeček kolem vybrané oblasti pro tisk a průhlednost.

2.1.8 Tisk do rastru

     Tato funkce je určena k převedení výřezu zadaného obsahu do rastru. Po spuštění systém požaduje zadání výřezu. Výřez bude tisknout jak kresbu vektorovou, tak i rastrovou. Dále je zde potřeba zadat, kam se bude nový soubor ukládat a jakou bude mít příponu. Na výběr je formát bmp, cit, gif nebo ras. Poslední dialog nabízí změnu velikosti pixelu, barevné hloubky a barvy pozadí (černá × bílá), je zde i možnost prohlížení právě otevřených rastrů. Velikost pixelu a barevná hloubka výrazně ovlivňuje velikost výsledného rastru.

2.1.9 Tisk do rastru expert

     Jedná se o rozšíření funkce Tisk do rastru. Rozšíření spočívá v rozmanitosti zadání výřezu a ve vlastnostech exportované grafiky. Po spuštění funkce je uživatel tázán, jakým způsobem vybere požadovanou grafiku. Obsah nabídky je stejný jako u funkce Tisk okna, tj. současné měřítko a střed, měřítko a střed, měřítko a roh, měřítko výřez, výřez (zaplní papír) a pokládání papíru. Poslední položkou nabídky je Nastavení, ve kterém se volí počet pixelů na výšku a šířku, rozlišení v dpi, barvy, dále možnost černého pozadí, zoomu a souřadnicového připojení.

2.2 Návrh nových funkcí

     Z předchozích funkcí je zřejmé, že systém KOKEŠ umožňuje tisk mnoha způsoby, které se mohou v určitých tiskových funkcích prolínat. Tento jev se stává dvojsečnou zbraní, v některých případech velice usnadní práci, jindy trošku dezorientuje uživatele. Část tiskových funkcí jsou funkce obecné a tedy často využívané (např. Tisk okna, Snímek mapy), jiné byly vytvořeny tzv. „namíru“ konkrétním uživatelům, a proto jejich plná funkčnost a hlavně využití jsou občas omezené, přesto zůstávají součástí systému.
     Jak je tomu v každém oboru, zvláště pak v konkrétních programech, během práce se objevují stále nové požadavky na jeho rozšíření a funkčnost. Jedním z požadavků zákazníků na systém KOKEŠ bylo vytvořit funkci, která by řešila skládání velkoformátových výkresů. Tuto problematiku obsahuje ČSN 01 3111. Další z návrhů zmiňoval mít možnost tvorby soutisku různých druhů informací, jako je například obrázek, text, grafika. Tuto oblast tisku by měla řešit stávající funkce Prezentační tisk, která se však během používání projevila jako neplně funkční.
     Tyto dva požadavky na tiskový výstup (skládání velkoformátových výkresů a Prezentační tisk) jsou předmětem mé bakalářské práce, a proto jejich popis, ať už z hlediska zpracování, nebo i používání bude popsán v následujících kapitolách.


3 SKLÁDÁNÍ VÝKRESŮ

     Tuto funkci jsem naprogramoval na požadavek uživatelů, kteří využívají systém KOKEŠ. Výsledkem funkce je vytisknutý výkres, který obsahuje značky pro složení výkresu podle jednotlivých typů uvedených v normě (kapitola 3.3), kterými jsou Volné řazení do souborů, Přímé svázání nebo sešití a Svázání s proužkem pro zachycení>.

3.1 Skládání výkresů v praxi

     Ačkoli se problematika skládání velkoformátových výkresů zdá být na první pohled zcela zřejmá a triviální, v praxi tomu tak často není. Každý, kdo neskládá výkresy větších rozměrů denně, se nad problematikou určitě zamyslí. Základem úspěchu je znalost normy ČSN 01 3111, na kterou odkazuje vyhláška č. 26/2007 Sb., o zápisech vlastnických a jiných věcných práv k nemovitostem, ve znění pozdějších předpisů (dále jen „katastrální vyhláška“). Dalším důležitým předpokladem je také umístění popisového pole ve výkresu, které po složení musí být na líci složeného výkresu.

3.2 Katastrální vyhláška

     Dle § 78 odst. 5 katastrální vyhlášky „má geometrický plán základní formát A4 a vyhotovuje se jen po jedné straně podložky. Geometrický plán větších rozměrů se do základního formátu skládá postupem podle bodů 3b a 3c ČSN 01 3111 Skládání výkresů, aby složení nebránilo prohlížení jednotlivých částí geometrického plánu po jeho spojení s listinou. Skládá-li se z více listů nebo archů, tyto se spolu pevně spojí a spojení se překryje přelepkou nesoucí na zadní straně geometrického plánu otisk razítka ověřovatele umístěný zčásti na nálepce a zčásti na geometrickém plánu samém.“

3.3 ČSN 01 3111

     Tato norma stanoví způsoby skládání kopií a výtisků technických výkresů různých rozměrů na formát A4 pro účely ukládání a nebo předávání.

Druhy formátů řešené normou
formát orientace rozměr [mm]
A0 šířka 1189x841
A1 šířka 841x594
výška 594x841
A2 šířka 594x420
výška 420x594
A3 šířka 420x297
výška 297x420

Tabulka 3.1: Formáty definované ČSN 01 3111

     Výkresy všech formátů se skládají nejdříve podél myšlených čar přehybů kolmých k dolnímu okraji výkresu, pak podle myšlených čar přehybů rovnoběžných s dolním okrajem výkresu. Pořadí skládání udávají čísla u myšlených čar přehybů. Po složení výkresu musí být základní popisové pole na líci složeného výkresu.

     Základní formáty výkresů se skládají:

  1. pro volné řazení do souborů (příloha 1, tab. 1),
  2. pro přímé svázání nebo sešití (příloha 1, tab. 2),
  3. pro svázání s proužkem pro zachycení (příloha 1, tab. 3).

     U metody přímého svázání nebo sešití je možné místo přehybu horního levého rohu (příloha 1, tab. 2) z výkresu vyříznout proužek 20 mm, o který je stránka větší. Originály výkresů se obvykle neskládají. Výjimku tvoří ty, které jsou součástí nějakého spisu. Nákresy výkresů, které definuje norma, jsou obsaženy v příloze 1.

3.4 Vlastní funkce pro skládání výkresů

     Funkce řeší skládání technických výkresů větších formátů na formát A4 podle výše uvedené normy. Výsledkem je tedy výkres, ať už vytisknutý na papíře nebo digitální na obrazovce, který je doplněn o nepravidelnou síť křížků, které znázorňují myšlené čáry pro skládání. Rozestupy křížků jsou odvislé od všech parametrů výkresu, čímž je myšlena velikost papíru, orientace a především pak typ skládání výkresu (viz. kap. 3.3). Řešení samotné funkce však není omezeno pouze na formáty velikosti A0 – A3, které uvádí norma, ale je značně rozšířeno. Rozšíření záleží na tom, zda bude tisk prováděn na tiskárnu nebo zda bude prováděn do jednoho z otevřených výkresů. Při výběru možnosti tisku přímo na tiskárnu je rozsah závislý na možnostech připojené tiskárny, tzn. mohu zvolit i formát menší než A4, funkce takový formát vykreslí a je možno ho tedy i tisknout. Formát této velikosti však logicky nelze složit na formát A4 a v tom případě funkce neřeší problematiku skládání technických výkresů větších formátů. Pokud bude zvolen tisk do již otevřeného výkresu, je možné kromě definovaných formátů normou zvolit rozměr vlastní. V tomto případě lze navolit rozměry, které jsou omezeny pro šířku i výšku výkresu minimem a maximem.

  Min. [mm] Max. [mm]
šířka 297 3000
výška 297 3000

Tabulka 3.2: Minimální a maximální rozměry tisku

     Hodnota pro minimum byla zvolena 297 mm, jelikož se předpokládá, že výkresy menších rozměrů v tomto případě nebudou tištěny, navíc norma definuje nejmenší formát A3 (viz. tab. 3.1). Stejný případ nastává u maximálního rozměru výkresu, kde byla zvolena hodnota 3000 mm. Zde norma definuje největší formát A0 (viz. tab. 3.1). Větší rozměr nemá smysl především už z důvodů plotrů, které větší formát nedokáží tisknout.

3.4.1 Vzhled a ovládání funkce

     Po spuštění funkce je nabízen hlavní dialog, pomocí něhož lze zajistit veškerá nastavení pro požadovaný tisk výkresu. Ovládání lze provést buď myší nebo přes klávesnici pomocí tlačítka Alt a příslušného písmene. Spolu s dialogem je zobrazena pomocná kresba, která je pověšena levým dolním rohem na kurzor myši. Pokud se kurzorem najede nad dialog funkce nebo mimo grafické okno systému KOKEŠ, kresba se od kurzoru odpojí a čeká, dokud kurzor myši není vrácen nad grafické okno, pak je opět pověšena na kurzor. Funkce po celou dobu své existence čeká na zadání polohy pomocné kresby. Polohu kresby lze zadávat opakovaně, protože po jejím umístění je funkce připravena k novému zadání polohy. Ukončení funkce lze tedy provést přes tlačítko Konec v dialogu, dále přes tlačítko Esc na klávesnici, popřípadě spuštěním jiné funkce.

dialog

Obrázek 3.1: Dialog funkce

     Dialog je vytvořen jako nemodální, tzn. že čeká na input, v našem případě na zadání polohy tažené kresby s křížky pro skládání výkresu. Je tedy možné přistupovat i k jiným funkcím v systému KOKEŠ, např. ke všem funkcím pro ovládání s oknem, tedy s panelem nástrojů Okno, dále do Vlastností, Nastavení programu a dalších. Tento způsob je často velice výhodný, právě díky tomu, že lze přistupovat k funkcím mimo dialog, na druhou stranu je náročnější z hlediska ošetření všech možných změn, které se mohou za jeho běhu přihodit.

tažená kresba

Obrázek 3.2: Pomocná kresba položená na výkres

     První položkou dialogu je výběr výkresu, resp. tiskárny. Počet položek seznamu není omezen, záleží na počtu aktuálně připojených tiskáren a na počtu otevřených výkresů. Při zvolené tiskárně bude při zadání polohy pomocné kresby výkres s křížky značícími přehyby rovnou vytisknut. V případě zvolení výkresu a zadání polohy budou křížky umístěny přímo do výkresu. Výkres je pak tedy možno vytisknout podle zobrazených křížků jinou tiskovou funkcí. Důležité je poznamenat, že kresba ohybů připevněná na myš slouží pouze jako pomocná, proto se po zadání polohy do výkresu neumístí. Součástí výkresů se tak stanou pouze křížky. Ne však křížky všech průsečíků pomocné kresby, ale jenom těch, které jsou na okrajích pomocné kresby. Ve výkresu se křížky zobrazí vždy celé, při tisku se však oříznou a je vidět jenom ta část, která zasahovala do vnitřku pomocné kresby, což je na obr. 3.3 označeno červenou barvou.

křížky po tisku

Obrázek 3.3: Zobrazení křížků po tisku

     Další položkou je zadání vrstvy, kterou definujeme, do jaké vrstvy se síť křížku uloží. V nabídce seznamu jsou uvedeny všechny vrstvy otevřených výkresů. Lze nezvolit žádnou z těchto vrstev a vytvořit si vrstvu novou. Pokud však nebude vybrána žádná vrstva, síť křížků se implicitně uloží do vrstvy 0, nezávisle na tom, zda už vrstva existovala. Volba formátu je závislá na tom, zda je vybraný výstup na tiskárnu nebo do výkresu. Pokud se jedná o výstup na tiskárnu je formát a orientace výkresu řízena přes Nastavení tisku, které lze vyvolat z dialogu pomocí tlačítka Nastavení tiskárny. Obě tyto informace se pak v dialogu funkce nezobrazují. V případě výběru tisku do výkresu máme možnost z položky Formátu vybrat jeden formát definovaný normou spolu s jeho orientací. Navíc je zde možnost výběru vlastního formátu. U této možnosti jako jediné lze měnit šířku a výšku pomocné kresby. V ostatních případech se sice obě hodnoty (šířka i výška) v dialogu zobrazují, nelze je ale měnit. Velikost jejich hodnot už byla zmíněna na začátku kap. 3.4.
     Součástí dialogu je samozřejmě výběr typu skládání, viz kap. 3.3, dále pak jednotlivé rozdíly v tab. 1 – 3, které jsou součástí přílohy 1. Jako další lze částečně ovlivnit měřítko tisku. Částečně proto, protože při výběru tisku do výkresu se přebírá vztažné měřítko z vybraného výkresu a nelze ho tedy měnit. Změna měřítka je možná pouze při tisku na tiskárnu a to v rozmezí 1:1 až 1:20 000 000. Poslední nastavení, které lze provést je volba velikosti značky (křížku). Pro křížek byl zvolen jeden z existujících symbolů v systému KOKEŠ, jeho velikost udává tedy zvětšení symbolu, nikoli jednotky, ve kterých bude symbol vykreslen. Dialog je možné roztáhnout směrem doprava. Tato možnost je povolena pro případ, kdy by název výkresu spolu s jeho cestou na disku, popřípadě vrstva měly moc dlouhý název a nevešly se tak celé do kolonky dialogu. Roztažením se tedy docílí korektní zobrazení.
     Pro popis funkce byla napsána nápověda, kterou lze vyvolat buď stiskem klávesy F1 nebo tlačítkem Help, které je přímo součástí dialogu funkce. Pro zobrazení nápovědy jednotlivých položek dialogu slouží stisk otazníku v pravé horní části dialogu a poté stisk konkrétní položky.

3.4.2 Pro volné řazení do souborů

     Jelikož složený výkres se nebude nijak vázat, sešívat či zachytávat, není potřeba myslet na proužek vlevo složeného výkresu. Proto začneme skládat výkres zprava doleva tak, aby na vrchu prvního ohybu bylo razítko a aby ohyb měl rozměr formátu A4, tzn. 210 mm. Podle velikosti formátu naskládáme tímto způsobem do harmoniky celý výkres. Na konci nám zůstane jediný ohyb, který nemá přesně rozměr 210 mm. Stejně postupujeme ve skládání ze zdola výkresu směrem nahoru s tím rozdílem, že vzdálenost mezi ohyby je 297 mm, abychom dostali formát A4. Princip skládání je vidět z následujících obrázků – formát A1 na šířku.

volné řazení do souborů

Obrázek 3.4: Volné řazení do souborů

3.4.3 Pro přímé svázání a sešití

     Před skládáním je potřeba uvážit fakt, že potřebujeme, aby nám po složení výkresu na formát A4 zůstal vlevo proužek, který bude použit pro svázání nebo sešití. Použijeme totožný postup skládání jako při typu volného řazení s tím rozdílem, že ohyby budou mít rozdílné rozestupy. Formáty A0, A1 a A2 na šířku mají vlevo rozměr 210 mm, směrem doprava dvakrát rozměr a/2, a poté podle velikosti formátu rozměry n krát 190 mm. Formát A2 na výšku a A3 mají pravý ohyb vždy 190 mm a zbývající dva ohyby tak, aby výsledek složení byl formát A4. U složení výkresu na výšku je postup totožný s předchozím případem. Princip skládání je vidět z následujících obrázků – formát A2 na šířku.

přímé svázání a sešití

Obrázek 3.5: Přímé svázání a sešití

3.4.4 S proužkem pro zachycení

     Lze říci, že tento způsob skládání je kombinací obou předchozích typů. Pokud začneme výkres skládat zprava, uděláme n ohybů o velikosti 198 mm. Protože potřebujeme docílit toho, aby výkres byl rozdělen na lichý počet dílů, podle velikosti buď zbytek a rozměru výkresu necháme nebo dále rozdělíme na polovinu. U složení výkresu na výšku je postup totožný s předchozími případy. Výsledný složený výkres nemá velikost 210 mm, ale 198 mm, protože se předpokládá, že se výkres doplní o proužek pro zachycení ve velikosti tak, aby výsledek měl opět formát A4, tzn. 210 mm. Princip skládání je vidět z následujících obrázků – formát A1 na výšku.

s proužkem pro zachycení

Obrázek 3.6: S proužkem pro zachycení

3.4.5 Vlastní formát

     Tento způsob tedy může nakreslit skládání pro výkres jakékoli velikosti v rozmezí 297 mm až 3000 mm, jak pro šířku tak i výšku. Obsahuje tedy v sobě i předdefinované formáty A1 – A3. Některé hodnoty je třeba pro správné vykreslení opravit. Dobrým příkladem je zvolení minimálního ohybu na rozměr 30 mm. Popis těchto případů bude popsán jednotlivě u každého typu skládání zvlášť.
     U typu skládání pro volné řazení je situace vykreslení libovolného formátu poměrně jednoduchá. Mohou zde nastat dva případy, kdy je potřeba rozměry určitým způsobem upravovat. Prvním je tedy případ, kdy ohyb má menší rozměr než 30 mm. Pokud se tak stane, je ohyb upraven na nulovou hodnotu a šířka či délka se o rozměr zmenší. Druhý případ je rozměr 841 mm na šířku, který je definovaný pro formát A1. Ohyby zde jsou 3 krát 210 mm, zbytek tedy bude 211 mm, který se už dále neohýbá. Problém tedy je v přebývajícím milimetru, který se však při samotném skládání ztratí.
     Složitějším případem je typ pro přímé svázání a sešití. Platí zde stejný princip s minimálním ohybem, ale nastávají v řešení místa, která nelze řešit tak, aby vyhovovala normě, a proto šířka výkresu musí být kreslena podle jiného rozměru, který už řešitelný je. Jedním speciálním místem je rozměr pro šířku mezi hodnotami 591 – 594 včetně, kde se sice rozměr neupravuje na jiný, ale dochází k tomu, že levý okraj pro sešití či svázání není po složení výkresu přesně 20 mm, ale o nějaký ten milimetr menší. Rozměr 595 – 620 mm včetně je kreslen podle rozměru 594 mm. Rozměr 621 – 649 mm včetně je už naopak kreslen podle rozměru 650 mm.
     Posledním případem je typ s proužkem pro zachycení. Tento typ už žádné nové speciální případy nemá, obsahuje pouze nějaké předchozí, jako je minimální ohyb a změna rozměru šířky pro hodnoty 595 – 649 mm včetně, jak je vysvětleno u typu pro přímé svázání a sešití.

3.4.6 Stručný rozbor zdrojového kódu

     V úvodní části zdrojového kódu jsou vloženy už existující soubory, díky nímž je např. možné v průběhu tvorby vypisovat chybové hlášení. Dále jsou importovány jednotlivé funkce, čímž docílíme, že není potřeba načítat celé soubory, ale jednotlivé části. Tento postup tedy ušetří čas v těch případech, kdy by člověk měl vymýšlet znovu procedury, které jsou už známy. Použity jsou zde i definice konstant, které mají tu výhodu, že při jejich změně není potřeba opravovat hodnotu v celém kódu, ale pouze tam, kde je definována. K usnadnění práce s proměnnými byla vytvořena datová struktura record.
     V další části byl vytvořen dialog, který je aktivní po celou dobu trvání funkce. Byly definovány jeho prvky společně s jejich rozměry. Poté byly napsány funkce, které ovládají chování dialogu. Příkladem může být funkce, která řeší minimální a maximální hodnoty prvků, počet desetinných míst, styl prvků atd. Dále pak funkce řešící vznik dialogu při spuštění makra, funkce zařizující chování dialogu při změně či ukončení editace jednotlivých prvků, a také funkce, které ukončují a odstraňují dialog, pokud o to uživatel zažádá. Tyto funkce jsou součástí definice samotného dialogu.
     Za ukončením dialogu byla definována funkce, která řeší samotné vykreslování křížků pro skládání technických výkresů pro všechny typy, které norma uvádí. Aby bylo možné se sítí křížků pomocí myši volně pohybovat předtím než ji umístíme do výkresu nebo pošleme na tiskárnu, bylo nutné vytvořit funkci, která toto umožní. Mezi další patří funkce řešící situace při změnách ve Vlastnostech souborů v systému KOKEŠ.
     Před samotnou definicí makra je ještě definován obrázek, který bude viditelný v rozbalovacím menu systému KOKEŠ při spouštění makra. Poslední částí kódu je tedy samotné makro, ve kterém je volán dialog a procedura hook, která není volána z Basicu, ale přímo ze systému KOKEŠ nebo z jádra Windows, v našem případě umožňující tahání se sítí křížků. V tomto hooku pak jsou definovány případy pro nastavení tiskárny, zadání polohy kresby a tedy následného tisku, jak na tiskárnu, tak i do výkresu a také případ řešící ukončení makra.
     Funkce se stala součástí systému KOKEŠ verze 8.52, dostupnou od začátku prosince 2007. Není umístěna mezi ostatními funkcemi pro tisk, ale v nástrojové liště Výkres/Složené prvky/Skládání výkresů.

3.5 Ohlasy uživatelů

     Protože řešení problematiky skládání technických výkresů v systému KOKEŠ bylo především přáním některých uživatelů, funkce byla prakticky hned po zabudování do systému používána. Reakce uživatelů se jeví jako kladné. Výhodou funkce je její názornost a jednoduchost při ovládání, navíc uživatel nemusí znát jednotlivé případy skládání, které definuje norma. Jelikož skládání výkresů je striktně definováno normou, kterou funkce plně řeší, nejeví se tedy zatím potřeba její rozšíření.

4 PREZENTAČNÍ TISK

     Název Prezentační tisk možná není zcela vypovídající a přesný. Jedná se o funkci, pomocí které bychom měli být schopni vytisknout společně text, celý výkres, ale i část výkresu (grafiku), obrázek ve formátu bmp, a rámeček. Všechny tyto typy mají různé možnosti nastavení pro konečný vzhled výstupu.

4.1 Požadavky na funkci

     Předpokládá se, že hlavním uživatelem této funkce by měly být katastrální úřady, především proto, že z jejich iniciativy začala funkce vznikat. Protože funkce umožňuje vytvořit tzv. popis tisku (šablonu) pro předdefinované formáty papíru, bude možné předpřipravit stránku například s razítkem a různými texty, které se nebudou měnit, a při samotném tisku se bude měnit například oblast grafiky nebo obrázek.

4.2 Funkce pro soutisk různých typů dat

     Tuto funkci jsem začal programovat podle stávající funkce Prezentační tisk, která je sice součástí systému, ale není plně funkční a tudíž není využívána. Během tvorby funkce se ukázalo, že podobnost s funkcí stávající bude menší než se předpokládalo a výsledkem je tedy funkce zcela nová.

4.2.1 Obecný popis

     Základní myšlenka a některé prvky však byly u této nové funkce zachovány. Změna nastala jednak ve vyloučení zbytečných typů pro tisk, kterými jsou:

     Dále byly vynechány některé prvky definující jednotlivé typy (např. osy u grafiky), jiné prvky však zase přibyly (např. zarovnání textu). Nepřehlédnutelná je především změna dialogů. V úvodním dialogu se oproti stávající funkci nezobrazuje textový tvar souboru, ve kterém jsou údaje o tisku uloženy, zobrazen je však náhled ve winboxu (grafické okno dialogu), jak uspořádání rámů pro jednotlivé typy vypadá. Návrhář popisu tisku je zcela odlišný. Ve stávající funkci se jméno psalo do příkazové řádky systému, v našem případě je toto řešeno pomocí samotného Návrháře. Navíc rámy pro dané typy se kreslily do pomocného výkresu, nyní se kreslí ve winboxu dialogu. Oproti původní funkci je součástí dialogu i formát, pro který tisk navrhujeme. Zjednodušeně lze tedy říci, že nová funkce vše zajišťuje pomocí svých dialogů, stará spolupracuje s příkazovým řádkem a grafickým oknem systému KOKEŠ.
     Cílem nové funkce je tedy umožnit soutisk jednotlivých druhů dat, kterými jsou:

     Ukázka s různými typy tisku je uvedena v příloze 2.

4.2.2 Vzhled a ovládání

     V této kapitole bude postupně uvedeno ovládání funkce a její chování, dále pak i vzhled dialogů, pomocí nichž je funkce řízena.

4.2.2.1 Úvodní dialog

     Při spuštění funkce je nabízen úvodní dialog, pomocí něhož lze přistoupit přímo k samotnému tisku nebo editovat soubor s popisem tisku pomocí Návrháře. Dialog je možné natahovat směrem doprava a dolu. Natahování je povoleno tehdy, pokud by cesta k souboru, společně s jeho názvem, byla moc dlouhá a tedy se celá nezobrazila v seznamu souborů. Seznam tedy obsahuje právě otevřené soubory, z kterých buď můžeme tisknout nebo je můžeme upravovat. Pořadí v seznamu lze měnit pomocí šipek směrem nahoru a dolu. Pokud je označen první soubor seznamu, tlačítko pro změnu pořadí směrem nahoru je neaktivní, totéž platí i pro tlačítko dolu, pokud je označen poslední soubor. V situaci, kdy seznam neobsahuje žádný soubor nebo právě jeden, nelze měnit pořadí vůbec. Na pořadí v seznamu však nezáleží. Počet souborů seznamu lze měnit přidáním souboru nového pomocí tlačítka Nový. Pokud seznam obsahuje aspoň jeden soubor, bude nám nabízen výběr Nového souboru a Kopie aktuálního. V obou případech nám bude nabízen Návrhář popisu tisku, který buď bude prázdný (v případě zvolení Nového souboru) nebo bude naplněn daty z aktuálního souboru, z kterého děláme kopii (v případě zvolení Kopie aktuálního souboru). Soubor se do seznamu dialogu přidá až v tom případě, pokud se rozhodneme data v Návrháři uložit. Uložení je prováděno standardním dialogem MS Windows.

úvodní dialog

Obrázek 4.1: Úvodní dialog

     Do seznamu lze přidávat již vytvořené soubory popisu tisku přes tlačítko Přidat, opět pomocí dialogu MS Windows. Možné je samozřejmě soubory ze seznamu ubrat. Pokud je ze seznamu ubrán poslední soubor, je tlačítko Ubrat, Upravit, Přejmenovat a Tisk neaktivní. Po stisknutí tlačítka Upravit je nabízen Návrhář popisu tisku označeného souboru jako v případě kopie aktuálního souboru s tím rozdílem, že upravujeme právě označený soubor. Soubory v seznamu lze přejmenovat, což zajišťuje samostatný jednoduchý dialog, zobrazující editovatelné pole s aktuálním názvem souboru, dále tlačítko Přejmenovat a Zrušit. Protože úvodní dialog si pamatuje při znovuspuštění načtené soubory, můžeme si dovolit soubor pojmenovat, pokud bychom však soubor ze seznamu odebrali a znovu přidali, načte se opět se svojí cestou na disku a jeho skutečným jménem.
     Součástí dialogu je také grafické okno, ve kterém je obsah (rámy popisu tisku definovaných typů) zobrazován. Společně s rámy je viditelný i papír, který je převzat z nastavené tiskárny. Tiskárnu lze měnit přes nastavení tiskárny v menu systému KOKEŠ Soubor/Tisk/Nastavení tisku. K nastavení nelze přistoupit rovnou z dialogu, jako tomu bylo u dialogu ve funkci Skládání výkresu. Pokud uživatel navrhoval tisk pro jiný formát než pro který má nastavenou tiskárnu, rozložení tiskových rámů na stránce se změní. Změna může nastat dvěma způsoby. Pokud uživatel navrhoval tiskové rámy v procentech stránky, kresba a umístění na stránce zůstanou stejné jako při návrhu, pouze se podle stránky upraví rozměr rámů. V druhém případě, kterým je návrh v milimetrech, může dojít k tomu, že tiskové rámy budou posunuté nebo úplně zmizí. Pomocí tlačítka Tisk přistoupíme k samotnému tisku, který buď proběhne rovnou bez dotazů na uživatele nebo se zadáním grafiky či textu, což záleží na způsobu navržení tisku. Dialog a tudíž funkci ukončíme tlačítkem Konec, dále přes tlačítko Esc na klávesnici, popřípadě spuštěním jiné funkce. Jelikož během trvání dialogu nepotřebujeme přistupovat k jiným funkcím systému, dialog je navržen jako modální. To zaručuje, že nedojde k jiné změně než k té, která je provedena pomocí dialogu. Pokud bychom chtěli spustit jinou funkci, musíme dialog nejdříve ukončit.

4.2.2.2 Návrhář popisu tisku

     Jak bylo řečeno, tento dialog je vyvolán při úpravě označeného souboru v seznamu úvodního dialogu nebo při tvorbě jeho kopie, popřípadě při tvorbě úplně nového souboru. Prvky dialogu se dají rozdělit do dvou kategorií, podle toho, zda jsou společné pro všechny typy tiskových dat, tudíž se při změně typu v seznamu dialogu nezmění a na ty, které se mění. Ve skutečnosti dialog obsahuje všechny tyto prvky, které se akorát při změně v seznamu skrývají nebo ukazují.
     V levé horní části dialogu je zobrazována velikost navrhovaného formuláře, kde lze z nabídky vybrat jednak předdefinované formáty A4 až A1 (orientace na výšku i šířku), ale i formát vlastní. U předdefinovaného formátu nelze měnit jeho výšku a šířku, naopak u formátu vlastního to lze. V tomto případě je minimální hodnota pro oba rozměry zvolena na 0, maximální na 90 000 mm.
     Dalším prvkem dialogu je seznam, který obsahuje zkratku určitého typu a jeho jméno. Jelikož u všech typů kromě typu FRA (rámeček), lze zvolit, zda je definovaná oblast neprůhledná či ne, na pořadí položek v seznamu záleží, což je potřeba si při návrhu uvědomit. Pokud má tedy první typ zvolenou volbu oblast je neprůhledná, další typy které se s touto oblastí překrývají nebudou v překrytu viditelné. K posouvání v seznamu slouží šipky nahoru a dolu, které opět jsou pro uživatele nepřístupné, pokud seznam neobsahuje žádný typ, popřípadě právě jeden. Pokud je aktivní první položka seznamu, nelze použít šipku nahoru, pokud poslední, nelze použít šipku dolu. K ubrání položky ze seznamu slouží tlačítko se znakem „-“. Toto tlačítko je též neaktivní, pokud je seznam prázdný. Pod seznamem je rolovací menu pro výběr typu a pod ním editovatelné pole pro zadání názvu typu, který chceme do seznamu přidat. Přidání provedeme tlačítkem se znakem „+“. Aby bylo tlačítko přístupné, musí být vždy vybrán typ a jeho název, který se nesmí shodovat s již existující položkou seznamu. Přidání položky do seznamu se projeví samozřejmě i v grafickém okně dialogu. K přejmenování položky seznamu slouží tlačítko označené písmenem „P“, přičemž platí, že pro jeho aktivnost musí být zadán jiný název, než který náleží právě označené položce seznamu.

návrhář

Obrázek 4.2: Návrhář pro popis tisku

     Dalšími prvky dialogu je odsazení rámu pro tisk shora a zleva, jejichž hodnoty jsou počítány od levého horního rohu papíru, na který budeme tisknout. Pokud není zaškrtnuta volba „mm“, zadávané hodnoty jsou v procentech stránky, pro kterou tisk navrhují, v opačném případě jsou hodnoty v milimetrech. Stejný princip je použit i u zadávání šířky a výšky rámu, která je počítaná od levého horního rohu rámu. Implicitně se rámeček při přidání položky do seznamu umístí ve vzdálenosti 5 % ze shora, 5 % zleva, rozměry rámečku jsou pak 10 % šířka a 10 % výška. Kromě typu rámeček všechny typy obsahují možnost zaškrtnutí, zda se rám kolem oblasti bude kreslit, popřípadě jakou šířkou a barvou. Hodnota šířky je v bodech, barva je zajištěna pomocí rozbalovacího menu, které obsahuje klasickou tabulku barev používanou systémem KOKEŠ. Barva je však převedena do hexadecimálního tvaru, ve kterém je zapsána do souboru. Mezi poslední společné prvky dialogu jednotlivých typů patří tlačítko Uložit pro uložení nastavení do souboru kpt, tlačítko Esc pro ukončení dialogu a tlačítko Help pro vyvolání nápovědy.
     Ostatní prvky dialogu jsou tedy specifické pro jednotlivé typy, tzn. jsou viditelné při označení konkrétního typu v seznamu dialogu. Příslušnost prvků dialogu k určitým typům je viditelná z následující tabulky 4.1.

porovnání prvků

Tabulka 4.1: Porovnání prvků dialogu pro všechny typy tisku

     O rámečku a neprůhlednosti již bylo pojednáno v předchozím textu. Hodnota úhlu udává, jaké natočení má mít vybraná grafika při tisku, může nabývat hodnot 0 – 360 stupňů. Zaškrtnutím políčka úheluživatel je zařízeno, že uživatel bude moct měnit stočení ještě při samotném tisku. Stejného principu jako u úhlu je použito i pro měřítko. Měřítko lze zadat v rozmezí 1 – 200 000. Při tisku grafiky a výkresu můžeme zvolit, zda chceme tisknout podle vrstev či podle klíčů. V případě tisku podle vrstev je dále možno zadat, zda chceme tisknout jen určité vrstvy nebo mimo konkrétních vrstev. Pokud ani jedna z těchto možností není zvolena, bude se tisknout podle všech vrstev. Pro zadání vrstev slouží editovatelné pole.
     Mezi další prvky spojené s textem patří font písma. Výběr fontu, velikosti a stylu je zajišťován po stisknutí příslušného tlačítka pomocí samostatného dialogu. Název fontu a jeho velikost je po vybrání viditelná v textovém poli dialogu, kterému je však zakázána editace. Styl fontu je znázorněn zaškrtnutím políčka B (bold), I (italic) nebo U (underline). Tyto styly můžeme měnit přímo v dialogu Návrháře bez použití dialogu pro výběr fontu. Další možností je výběr barvy textu pomocí rozbalovacího menu za použití tabulky barev systému KOKEŠ, okraj textu od rámu v milimetrech, potom zarovnání textu v rámu, a to buď doleva, doprostřed či doprava. I u textu je možné zvolit, zda bude moct uživatel při tisku text ještě měnit či ne. Posledním prvkem pro text je textové pole pro jeho editaci. Text může být víceřádkový. Speciální možností je zapsání do textového pole znaků %M, %U, %D a %T. Za použití prvního z nich se při tisku načte místo znaku příslušné měřítko, u dalšího příslušný úhel. Znak %D nastaví při tisku místo znaku aktuální datum, znak %T aktuální čas. Výkres a bitmapa obsahuje dva společné prvky. Jedním z nich je výběr souboru (výkres nebo bitmapa) pomocí standardního dialogu MS Windows a druhým je textové pole, kde se vybraný soubor spolu s jeho cestou zobrazuje.

4.2.2.3 Průběh tisku

     Tisk je prováděn jednak podle pořadí položek v seznamu Návrháře a dále pak podle definice funkce pro tisk, která nejdříve řeší text, pak grafiku, výkres, rámeček a jako poslední bitmapu. Podle tisknutých typů dat bude buď uživatel tázán na editaci textu či zadání grafiky, u ostatních typů probíhá tisk bez dotazu na uživatele. V případě že je možné text editovat (musí být povoleno v Návrháři) je nabízen dialog, kde je možné text před tiskem ještě měnit.

editace textu při tisku

Obrázek 4.3: Editace textu při tisku

     Z dialogu je možné se buď tlačítkem Esc vrátit do úvodního dialogu nebo tlačítkem OK pokračovat v tisku. Po odsouhlasení zadaného textu je kontrolováno, zda se text opravdu vejde do definované tisknuté oblasti. Pokud ano, přistoupí se k tisku dalšího typu, v opačném případě je zobrazeno varovné hlášení, že se text do oblasti nevejde. Je možné toto hlášení ignorovat a v tisku pokračovat, v tom případě bude text oříznut, nebo se vrátit do úvodního dialogu a provést tisk znovu či provést editaci v Návrháři.
     Pokud se tisku účastní grafika, musí ji uživatel zadat vždy. V tomto případě je nabízen nemodální dialog a to proto, že na kurzor myši je pověšena pomocná kresba, která udává oblast pro výběr grafiky konkrétního měřítka. Dialog tedy obsahuje měřítko, které je možné změnit, dále pak výběr, za který roh, popřípadě prostředek se bude kresba tahat. Měřítko je možné měnit i rolátkem myši, pomocnou kresbu je možné natáčet stiskem klávesy Shift a pohybem myši v obecném úhlu. Pro natáčení po úhlu pi/2 je potřeba stisku současně klávesy Shift a Ctrl. Aby však bylo možné natáčet kresbu a měnit měřítko, musí to mít uživatel v Návrháři nastaveno. Tisk je možno přerušit a vrátit se do úvodního dialogu, pro pokračování v tisku je potřeba zadat bod pomocné kresby.

výběr grafiky při tisku

Obrázek 4.4: Výběr grafiky při tisku

     Funkce tisknoucí obsah textového souboru končí posláním dat na nastavenou tiskárnu, podle nastavení může být tedy výstup buď na papír nebo do souboru.

4.2.2.4 Struktura souboru kpt

     Soubor s příponou kpt je textový soubor, u něhož byla navržena vlastní struktura. Každý řádek souboru představuje jeden typ popisu tisku, řádků je tudíž stejný počet jako tisknutých prvků. Prvky příslušného typu jsou odděleny znakem „|“. Jako oddělovač by mohl být použit i jiný ze znaků. Jelikož však lze do souboru zadávat i text, tento znak se zdá být nejvhodnějším, protože není v obecném textu prakticky využíván.

struktura textového souboru kpt

Obrázek 4.5: Struktura souboru kpt

1. text (TXA)
typ | jméno | uživatel | shora | zleva | šířka | výška | flag | okraj | font | tloušťka rámu | styl | text | velikost fontu | zarovnání textu | barva textu | barva rámu
2. výkres (VYK)
typ | jméno | uživatel | shora | zleva | šířka | výška | flag | název výkresu s cestou na disku | tloušťka rámu | vrstvy | barva rámu
3. grafika (GRA)
typ | jméno | uživatel | shora | zleva | šířka | výška | flag | měřítko | úhel | tloušťka rámu | vrstvy | barva rámu
4. rámeček (FRA)
typ | jméno | uživatel | shora | zleva | šířka | výška | tloušťka rámu | barva rámu
5. bitmapa (BMP)
typ | jméno | uživatel | shora | zleva | šířka | výška | flag | název bitmapy s cestou na disku | tloušťka rámu | barva rámu

     Všechny prvky nemusí být vyplněny, což je znatelné z obrázku 4.5, například pokud bitmapa nemá v Návrháři zaškrtnutí rámečku a neprůhlednost kresby, žádný flag se do souboru nezapíše.
     Textový soubor lze možno editovat i mimo Návrhář, je však potřeba opatrnosti, protože při chybě v editaci dojde k narušení struktury souboru a tudíž posléze k nekorektnímu načtení dat ze souboru, pokud bychom chtěli použít Návrháře nebo provést samotný tisk.

4.2.3 Stručný popis zdrojového kódu

     Na začátku zdrojového kódu jsou definovány konstanty, což má tu výhodu, že při jejich změně není potřeba opravovat hodnotu v celém kódu, ale pouze tam, kde je definována. K usnadnění práce s proměnnými byla vytvořena datová struktura record a vytvořeno pole. Pole je využíváno k zaznamenávání hodnot prvků dialogu a tudíž je pole buď příslušnou funkcí naplněno pro zobrazení hodnot v Návrháři a nebo je z něj příslušnou funkcí vytvořen obsah textového souboru kpt. Využití pole je pak i ve funkci, která provádí samotný tisk. V další části je definován dialog Návrháře společně s jeho prvky, konstruktor dialogu, funkce zajištující zobrazování a skrývání prvků dialogu podle jednotlivých typů vybraných v seznamu dialogu, dále pak funkce pro vykreslení papíru a rámů jednotlivých typů do okna dialogu. Následuje definice funkce pro vznik samotného dialogu a funkce jako metody k jednotlivým prvkům dialogu, které buď plní dialog pomocí pole a nebo naopak plní pole z dialogu. Mezi těmito funkcemi jsou i funkce, které zajišťují pohyb rámů myší v okně dialogu. Dále jsou zde dvě funkce, zajišťující převod řetězce do prvků struktury record a naopak tvorbu řetězce ze struktury record. Následuje sled funkcí, které zajišťují správné zpracování textu (hledání konce řádků, nahrazování znaku procenta s písmenem za příslušné hodnoty aj.). V další části jsou definovány ostatní dialogy, mezi které patří úvodní dialog, dialog pro přejmenování položky seznamu, dialog pro editaci textu při tisku anebo dialog při zadávání grafiky při tisku, ve kterém je kromě metod jednotlivých prvků dialogu navíc funkce pro tahání pomocné kresby s kurzorem myši. Před funkcí pro samotný tisk je ještě funkce pro vyvolání Návrháře a funkce kreslící rámeček. Ve funkci pro tisk jsou pak definovány jednotlivé případy typů tisku, které určují jeho pořadí. Na konci zdrojového kódu společně s makrem volajícím úvodní dialog je pak definice obrázku, který se po zabudování do systému zobrazí v jeho záložce, odkud bude funkce spustitelná.

4.3 Stávající použití funkce

     Tato funkce zatím není zabudována do systému a tudíž není využívána v praxi. Nyní probíhá její testování uvnitř firmy, zjištěné chyby budou opraveny a teprve poté se funkce stane součástí systému KOKEŠ.

ZÁVĚR

     Předkládaná bakalářská práce se zabývá tiskovými výstupy ze systému KOKEŠ a jejich rozšířením o dvě funkce nové. Vychází ze znalosti ČSN 01 3111 „Skládání výkresů“ a zaměřuje se na maximální možné zjednodušení této problematiky. Dále práce předpokládá znalost různých způsobů tiskových výstupů a zabývá se jejich soutiskem. Práce nebyla pojata z programátorského hlediska a tudíž nepopisuje použité prostředky během tvorby samotných funkcí, ale spíše je zaměřena na uživatele. Obsah bakalářské práce tedy tvoří popis těchto dvou nových funkcí a problematiky, kterou řeší, návod na ovládání funkcí, popis jejich vzhledu, nakonec i stručný popis zdrojových kódů.
     Hlavním přínosem bakalářské práce jsou následující funkce:

  1. Funkce pro skládání výkresů dle normy, přičemž jsou zohledněny všechny typy, které norma uvádí.
  2. Funkce pro společný tisk různých druhů dat do jednoho výstupu. Možné je tedy naráz tisknout jedno i víceřádkový text, celý výkres nebo jeho část, obrázek ve formátu bmp a obecný rámeček

     Obě funkce byly naprogramovány v jazyce KOKEŠ Basic, který je součástí grafického systému KOKEŠ. První funkce byla začleněna do systému a je využívána v praxi mnohými uživateli, druhá byla předána k testování uvnitř firmy a po jeho dokončení se také stane součástí sytému.
     Během tvorby funkcí bylo zjištěno, že některé prostředky jádra systému nejsou dostačující k realizaci určitých požadavků na funkce, a proto došlo k rozšíření jádra systému. Znalosti získané při studiu řešené problematiky nebo při programování obou funkcí nepochybně využiji i pro svoji další odbornou činnost.

Seznam literatury:

[1]   GEPRO s.r.o.: KOKEŠ – Příručka uživatele, Praha 2007.
[2]   GEPRO s.r.o.: MYSIS – Uživatelská příručka, Praha 2007.
[3]   ČSN 01 3111. Skládání výkresů. Praha: Český normalizační institut 1985.
[4]   Vyhláška č. 26/2007 Sb.: O zápisech vlastnických a jiných věcných práv k nemovitostem (katastrální
        vyhláška), ve znění pozdějších předpisů
.
[5]   BUKOVSKÝ J. Programování geodetických úloh v KOKEŠ Basicu, (diplomová práce). ČVUT Praha,
        2002.
[6]   GEPRO s r.o.: Digitální řešení [online]. c2007 [cit. 2008-3-16]. Dostupné z WWW: http://www.gepro.cz/.
[7]   Nápověda programu Kokeš Basic: Lokální nápověda součástí systému.

Přílohy

Příloha 1:   ČSN 01 3111 “Skládání výkresů“  (formát pdf - velikost A1)

Příloha 2:   Soutisk textu, výkresu, části grafiky, bitmapy a rámečku  (formát pdf - velikost A4)

Valid XHTML 1.1!