Na tomto místě bude oficiální zadání vaší práce • Toto zadání je podepsané děkanem a vedoucím katedry, • musíte si ho vyzvednout na studiijním oddělení Katedry počítačů na Karlově náměstí, • v jedné odevzdané práci bude originál tohoto zadání (originál zůstává po obhajobě na katedře), • ve druhé bude na stejném místě neověřená kopie tohoto dokumentu (tato se vám vrátí po obhajobě).
i
ii
České vysoké učení technické v Praze Fakulta elektrotechnická Katedra počítačů
Bakalářská práce
Nadstavba programu Bentley Microstation pro transformaci 2D kresby do 3D Milan Lysa
Vedoucí práce: Ing. Pavel Sochor
Studijní program: Elektrotechnika a informatika, strukturovaný, Bakalářský Obor: Výpočetní technika 28. května 2010
iv
v
Poděkování Děkuji firmě PROGEO Jihlava, spol. s r.o. za jejich podporu po celou dobu mého studia.
vi
vii
Prohlášení Prohlašuji, že jsem práci vypracoval samostatně a použil jsem pouze podklady uvedené v přiloženém seznamu. Nemám závažný důvod proti užití tohoto školního díla ve smyslu §60 Zákona č. 121/2000 Sb., o právu autorském, o právech souvisejících s právem autorským a o změně některých zákonů (autorský zákon).
V Jihlavě dne 28. 5. 2010
.............................................................
viii
Abstract This bachelor thesis describes creation of the Microstation system add-in tools for transforming 2D drawing to 3D. It compares properties of individual integrated development environments which are available for developing of Microstation add-in tools. It analyzes the transformation methods of the variable types of the graphical elements to 3D through the space surface created by the network of triangles. On the basis of this analysis is created the add-in tool and there are described the key procedures, which were used during the implementation. In the end of the work are discussed the experiences gained during programming and testing of the application on a dates.
Abstrakt Tato bakalářská práce popisuje tvorbu nadstavbové aplikace CAD systému Microstation umožňující promítnutí 2D kresby do 3D. Porovnává vlastnosti jednotlivých programovacích prostředí, které jsou k dispozici pro vývoj nadstaveb v aplikaci Microstation. Analyzuje způsoby převodu různých typů grafických elementů do 3D prostřednictvím prostorové plochy tvořené sítí trojúhelníků. Na základě této analýzy je pak vytvořena nadstavbová aplikace a jsou popsány klíčové postupy použité během implementace. V závěru práce jsou diskutovány nasbírané zkušenosti získané během programování a testování činnosti aplikace na datech.
ix
x
Obsah 1 Úvod do tvorby mapových podkladů 1.1 Stávající způsob tvorby přesných map . . 1.1.1 Geodézie . . . . . . . . . . . . . . . 1.1.2 Zaměření . . . . . . . . . . . . . . 1.1.3 Polohopis . . . . . . . . . . . . . . 1.1.4 Výškopis . . . . . . . . . . . . . . . 1.1.5 Inženýrské sítě . . . . . . . . . . . 1.2 Vytvoření kresby ve výkresu CAD . . . . 1.2.1 Výškové údaje měřených bodů . . 1.3 Metody interpolace . . . . . . . . . . . . . 1.4 Digitální model terénu . . . . . . . . . . . 1.5 Promítání kresby do 3D . . . . . . . . . . 1.5.1 Vzájemná poloha přímky a roviny
. . . . . . . . . . . .
. . . . . . . . . . . .
. . . . . . . . . . . .
. . . . . . . . . . . .
. . . . . . . . . . . .
. . . . . . . . . . . .
. . . . . . . . . . . .
. . . . . . . . . . . .
. . . . . . . . . . . .
2 Existující aplikace pro promítnutí 2D kresby do 3D 2.1 ArcGIS . . . . . . . . . . . . . . . . . . . . . . . . . . . . 2.1.1 Digitální model terénu v aplikaci ArcGIS . . . . . 2.2 AutoCAD Civil 3D . . . . . . . . . . . . . . . . . . . . . . 2.2.1 Digitální model terénu v aplikaci Autocad Civil 3D 2.2.2 Funkce AutoCAD Civil 3D pro transformaci 2D do 2.3 Bentley InRoads . . . . . . . . . . . . . . . . . . . . . . . 2.3.1 Vytvoření modelu terénu z grafických dat . . . . . 2.4 Shrnutí existujících řešení . . . . . . . . . . . . . . . . . .
. . . . . . . . . . . .
. . . . . . . . . . . .
. . . . . . . . . . . .
. . . . . . . . . . . .
. . . . . . . . . . . .
. . . . . . . . . . . .
. . . . . . . . . . . .
1 1 1 1 2 2 3 3 4 4 4 6 6
. . . . . . . . . . . . . . . . . . . . prostoru . . . . . . . . . . . . . . .
. . . . . . . .
. . . . . . . .
. . . . . . . .
. . . . . . . .
. . . . . . . .
. . . . . . . .
9 9 9 10 10 10 10 11 12
. . . . . .
. . . . . .
. . . . . .
. . . . . .
. . . . . .
. . . . . .
13 13 13 14 14 15 15
. . . . . . . . . . . .
. . . . . . . . . . . .
. . . . . . . . . . . .
. . . . . . . . . . . .
3 CAD systém Microstation a prostředky pro vývoj nadstaveb 3.1 Datový formát DGN . . . . . . . . . . . . . . . . . . . . . . . . . 3.1.1 Formát DGN V7 . . . . . . . . . . . . . . . . . . . . . . . 3.1.2 Formát DGN V8 . . . . . . . . . . . . . . . . . . . . . . . 3.2 Prostředí pro vývoj nadstaveb aplikace Microstation . . . . . . . 3.2.1 Vývojové jazyky Basic . . . . . . . . . . . . . . . . . . . . 3.2.2 Vývojové jazyky C . . . . . . . . . . . . . . . . . . . . . .
. . . . . .
4 Analýza a návrh řešení 17 4.1 Charakteristika vstupních dat . . . . . . . . . . . . . . . . . . . . . . . . . . . 17 4.1.1 Kontrola topologie . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 18
xi
xii
OBSAH
4.2
4.3
4.1.2 Digitální model terénu . . . . . . . . . . . . . . . . . . Volba vývojového prostředí . . . . . . . . . . . . . . . . . . . 4.2.1 Definování požadavků pro výběr vývojového prostředí 4.2.2 Výkonnostní testy vývojových prostředí . . . . . . . . 4.2.3 Zhodnocení . . . . . . . . . . . . . . . . . . . . . . . . Návrh řešení . . . . . . . . . . . . . . . . . . . . . . . . . . . . 4.3.1 Kontrolní funkce . . . . . . . . . . . . . . . . . . . . . 4.3.2 Funkce pro modifikaci kresby . . . . . . . . . . . . . . 4.3.3 Algoritmus modifikace vrcholů grafických elementů . .
5 Implementace 5.1 Hlavní algoritmus . . . . . . . . . . . . . . . . . . . . . . . . 5.2 Členění aplikace . . . . . . . . . . . . . . . . . . . . . . . . . 5.3 Použití objektů a metod při implementaci . . . . . . . . . . 5.3.1 Přístup ke grafickým elementům v souboru DGN . . 5.3.2 Identifikace grafického elementu . . . . . . . . . . . . 5.3.3 Posun elementů v souřadnicovém systému . . . . . . 5.3.4 Změna souřadnic vrcholů v souřadnicovém systému . 5.3.5 Omezení rozsahu scanování pomocí objektu Range3d 5.3.6 Výpočet průsečíku polopřímky s rovinou . . . . . . . 5.4 Grafické rozhraní . . . . . . . . . . . . . . . . . . . . . . . .
. . . . . . . . . .
. . . . . . . . .
. . . . . . . . .
. . . . . . . . .
. . . . . . . . .
. . . . . . . . .
. . . . . . . . .
. . . . . . . . .
. . . . . . . . .
. . . . . . . . .
18 19 19 19 20 21 21 21 22
. . . . . . . . . .
. . . . . . . . . .
. . . . . . . . . .
. . . . . . . . . .
. . . . . . . . . .
. . . . . . . . . .
. . . . . . . . . .
. . . . . . . . . .
. . . . . . . . . .
23 23 24 24 24 25 26 26 27 27 28
6 Testování a diskuse dosažených výsledků 31 6.1 Ověření funkčnosti kontrol . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 31 6.2 Výsledky promítnutí kresby z 2D do 3D . . . . . . . . . . . . . . . . . . . . . 32 6.3 Diskuse dosažených výsledků . . . . . . . . . . . . . . . . . . . . . . . . . . . 33 7 Závěr
35
A Seznam použitých zkratek
39
B Renderovaný výsledek promítnutí do 3D
41
C Typy grafických elementů v aplikaci Microstation
43
D Definice polohopisných atributů
45
E Instalační a uživatelská příručka E.1 Instalace . . . . . . . . . . . . . E.2 Spuštění . . . . . . . . . . . . . E.3 Uživatelská příručka . . . . . . E.3.1 Hlavní dialogové okno . E.3.2 Dialogové okno Kontrola F Obsah přiloženého CD
. . . . .
. . . . .
. . . . .
. . . . .
. . . . .
. . . . .
. . . . .
. . . . .
. . . . .
. . . . .
. . . . .
. . . . .
. . . . .
. . . . .
. . . . .
. . . . .
. . . . .
. . . . .
. . . . .
. . . . .
. . . . .
. . . . .
. . . . .
. . . . .
. . . . .
. . . . .
47 47 47 48 48 48 51
Seznam obrázků 1.1 1.2
Ukázka zákresu polohopisu . . . . . . . . . . . . . . . . . . . . . . . . . . . . . Ukázka vytvořené trojúhelníkové sítě (TIN) . . . . . . . . . . . . . . . . . . .
3 5
2.1 2.2 2.3
ArcGIS 3D Analyst - vytvoření TIN modelu (převzato z [5]) . . . . . . . . . . 10 Ukázka vytvoření DTM v aplikaci RoadPAC (převzato z [5]) . . . . . . . . . . 11 Civil 3D - vytvoření návrhové linie (převzato z [4]) . . . . . . . . . . . . . . . 12
5.1 5.2 5.3
Hlavní okno aplikace . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 28 Kontrola polohy . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 29 Kontrola křížení . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 29
6.1 6.2
Označení chybějících vrcholů na křížení . . . . . . . . . . . . . . . . . . . . . 32 Finální stav po promítnutí do 3D . . . . . . . . . . . . . . . . . . . . . . . . . 32
B.1 Finální stav, pohled č. 1, renderováno metodou Ray trace . . . . . . . . . . . 41 B.2 Finální stav, pohled č. 2, renderováno metodou Ray trace . . . . . . . . . . . 42 B.3 Finální stav, pohled č. 3, renderováno metodou Ray trace . . . . . . . . . . . 42 E.1 E.2 E.3 E.4 E.5
Spuštění aplikace pomocí Projektového managera. . Uživatelská příručka - hlavní okno aplikace . . . . . Uživatelská příručka - statistika zpracování výkresu Uživ. příručka - kontrola polohy . . . . . . . . . . . Uživ. příručka - kontrola křížení . . . . . . . . . . .
xiii
. . . . .
. . . . .
. . . . .
. . . . .
. . . . .
. . . . .
. . . . .
. . . . .
. . . . .
. . . . .
. . . . .
. . . . .
. . . . .
. . . . .
. . . . .
47 48 49 49 49
xiv
SEZNAM OBRÁZKŮ
Seznam tabulek 3.1
Podporované verze Microsoft Visual Studia . . . . . . . . . . . . . . . . . . . 16
4.1 4.2 4.3 4.4
Atributy grafických elementů . . . . . . . . . . . . . . . . . Použité typy grafických elementů . . . . . . . . . . . . . . . Použitelnost vývojových prostředků v produktech Bentley . Srovnání rychlosti vývojových prostředí (A = viditelně, B =
. . . . . . . . . . . . . . . skrytě)
. . . .
. . . .
. . . .
. . . .
. . . .
17 18 19 20
C.1 Typy grafických elementů . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 43 D.1 Definice polohopisných atributů . . . . . . . . . . . . . . . . . . . . . . . . . . 45
xv
xvi
SEZNAM TABULEK
Kapitola 1
Úvod do tvorby mapových podkladů Tvorba elektronických dokumentů je dnes běžným standardem a četností výrazně převyšuje původní způsoby ručního psaní a kresby. Stejně je tomu i v oblasti pořizování mapových dokumentací a projekčních plánů, kde také postupně došlo k přechodu na plně počítačové zpracování. Převážná část mapových výkresů se vytváří ve specializovaných CAD systémech jako 2D kresba. Polohové údaje charakteristických bodů jsou uloženy se souřadnicemi X, Y a výškový údaj je přítomen pouze ve formě textového popisu. S pokrokem ve vývoji, zejména v oblasti dopravních projekčních systémů, však vzniká potřeba dodávat mapové podklady kompletně ve 3D. Abychom co nejvíce využili hotových mapových souborů, potřebujeme převést existující 2D kresbu do 3D, pokud možno bez dalších měření v terénu, pouze na základě existujících výškových údajů. K tomu využijeme vytvořeného digitálního modelu terénu, který je součástí požadovaných mapových podkladů.
1.1 1.1.1
Stávající způsob tvorby přesných map Geodézie
Geodézie je vědní obor zabývající se zkoumáním tvaru, rozměru a fyzikálních vlastností zemského tělesa - geoidu - nebo části zemského povrchu případně objektů mimo Zemi. Pro výzkum využívá matematické, geometrické a fyzikální metody měření a výpočtů. Základním úkolem geodézie je určení vzájemné polohy bodů na zemském povrchu nebo v prostoru ve zvoleném souřadnicovém systému. Výsledky geodetických měření jsou zaznamenávány formou map na papírové nebo elektronické nosiče dat (zdroj[11]).
1.1.2
Zaměření
Přímo v terénu se provede zaměření pozice jednotlivých bodů a zakreslení situace do měřických náčrtů (nejčastěji papírové archy nebo zápisníky). K tomu se nejčastěji využívá specializovaných přístrojů, tzv. totálních stanic, nebo technologie GPS s vysokou přesností. Zaměřené body jsou následně transformovány do cílového souřadnicového a výškového systému. Souřadnicový systém používaný pro mapování v ČR se nazývá S-JTSK (systém jednotné trigonometrické sítě katastrální), výškový systém se označuje zkratkou Bvp (baltský - po
1
2
KAPITOLA 1. ÚVOD DO TVORBY MAPOVÝCH PODKLADŮ
vyrovnání). Velmi zajímavé pojednání o souřadnicových systémech včetně jejich poutavé historie je možné nalézt ve studijních materiálech na webu ZČU v Plzni [15]. Výškové údaje zaměřených bodů je možné získat trigonometricky, tedy stejným způsobem jako polohové údaje. Další možností je výšková nivelace z výchozího známého bodu nebo metoda GPS. Výpočet transformace zaměřených údajů do cílového souřadnicového systému se provádí pomocí specializovaného software. Výstupem je textový soubor, obsahující souřadnice jednotlivých zaměřených bodů, jejich čísla a případně další doplňující údaje, poznamenané na konci jednotlivých řádků. Výsledný soubor pak může vypadat nějak takto: 0001 0002 0003 0004
673386.01 673548.25 673537.81 673541.19
1057646.61 1057865.23 1057863.21 1057858.94
000.00 506.36 000.00 503.71
*SK *L1 *VP
Kódy uvedené u některých bodů je možné využít při automatickém vykreslení grafických objektů do výkresu. Využívá se toho například pro automatické přidání buněk, které zobrazují střed stromu, kanalizačních vpustí apod. Prvky zaměřované v terénu se při kteslení člení na dvě charakteristické skupiny, polohopis a výškopis.
1.1.3
Polohopis
Termínem polohopis označujeme množinu vyšetřených (vybraných) a zaměřených objektů zobrazených většinou jako spojnice (posloupnost) významných podrobných bodů polohopisu, které charakterizují geometrické a polohové určení objektu. Vyjadřuje polohu, tvar a rozměry objektů ve vodorovné zobrazovací rovině nahrazující skutečnou zakřivenou plochu zemského povrchu (zdroj [14]). Typickými prvky polohopisu jsou hrany stavebních objektů, komunikací a chodníků, terénní znaky jako např. vrcholy a lomy svahů, vodstvo. Dále to jsou i informace o druhu a materiálu jednotlivých povrchů, porostů a další bodové, čárové a plošné značky.
1.1.4
Výškopis
Druhou charakteristickou skupinou zaměřených hodnot je tzv. výškopis, který určuje nadmořskou výšku zaměřených bodů. Existuje mnoho metod, jak výškopisná data zakreslit, zde uvedu jen některé z nich: • Výškové kóty (textové hodnoty, ve 2D) • Výškové body (bodové značky, ve 3D) • Vrstevnice (liniové značky, ve 2D i 3D) • Výškové šrafy (liniové značky, ve 2D i 3D) • Barevná hypsonometrie (plošné barevné značky, ve 2D) V převážné většině grafických dat, které jsem měl k dispozici, byl výškopis přítomen ve formě textových hodnot, případně doplněný o výškové šrafy.
1.2. VYTVOŘENÍ KRESBY VE VÝKRESU CAD
3
fa as lt n10 n10
n10 n10
t
t.z
e
l fa
b
as
n10
b
la
asfa lt
7 35 3 5
n10
n10
t.
O
n10
e
K
b
n10
bet .z
lab
n10
S
O
M
lt
a
sf
a n10
lt
a
sf a n10
A N A
M
O
R n10 n10
Y K L
E V A H
b.
b
a
m
n10
¨
l. .d k
A
T
U
O P
n10
O
F A
b la
R
T
t.z
e
z
n10
lt
¨
n10
l.
O
.d
U
lt
A
n10
m
a sf
sf
a
a
a
T
P
k
za
n10
OL
n10
TR
.d
l.
A¨
UT
k m za
n10
PO
PA
n10
n10
A
T
U
O
P
n10
¨
. k.dl
zam
T
n10
A
¨
U
PO
n70
n120
n100
n10 n10 n40 n200 n10
a
lt
n10
sf
n10
a
n10
Obrázek 1.1: Ukázka zákresu polohopisu
1.1.5
Inženýrské sítě
Pro úplnost zde uvedu další velkou skupinu zaměřovaných objektů a to jsou inženýrské sítě. Jedná se o různé potrubní, energetická nebo datová vedení (elektrické kabely, telefonní kabely, vodovodní, kanalizační, plynové potrubí, teplovody apod.) Tyto sítě jsou umístěny převážně nad povrchem nebo naopak pod povrchem terénu. Jejich výškovou polohu však není možné vytvořit pouhým posunutím oproti výšce terénu, navíc se i často vzájemně kříží a ve vytvářené aplikaci jsem se jimi nezabýval.
1.2
Vytvoření kresby ve výkresu CAD
Z bodů načtených do výkresu je pak podle náčrtů zakreslených v terénu spojena výsledná kresba. Podle prováděcích směrnic správců inž. sítí jsou grafické prvky týkající se určitého druhu reálného objektu zakresleny do předepsaných vrstev výkresu. Pro další rozlišení druhu objektu nebo charakteru zaměřované skutečnosti se ještě využívá odlišné barvy, stylu a tloušťky čáry. Formát DGN nabízí celkem 58 různých typů grafických elementů, ať už elementárních nebo komplexních (sdružujících několik elementů do jednoho). Jejich kompletní výčet je uveden v příloze C.
4
KAPITOLA 1. ÚVOD DO TVORBY MAPOVÝCH PODKLADŮ
1.2.1
Výškové údaje měřených bodů
Jak již bylo uvedeno, kromě polohových informací mohou měřené body obsahovat i výškový údaj. Výšky se do 2D výkresu načítají pouze ve formě textových elementů, obsahujících samotnou hodnotu výšky. Pro přehlednost výstupního výkresu (např. pro tisk na plotteru), se doplňuje kresba o výškové šrafy, které ukazují směr spádu konkrétní strany svahu. Další používanou metodou je zakreslení vrstevnic. Může být provedeno buď ručním zanesením do kresby vytisknuté na papírový arch a zpětnou digitalizací na tabletu nebo vytvořením digitálního modelu terénu v počítači a vygenerováním vrstevnic.
1.3
Metody interpolace
Hlavní algoritmy pro interpolaci můžeme rozdělit na dvě hlavní skupiny podle nakládání s datovými body, a to na algoritmy přesné a vyrovnávací. Přesné metody interpolace zachovávají hodnoty v datových bodech, které při interpolaci mají maximální možnou váhu, tj. 1,0. Mezi tyto metody patří zejména triangulace, IDW bez vyrovnávacího faktoru, Kriging a Nearest Neighbor. Vyrovnávací algoritmy působí na jemnější vyrovnání mezi jednotlivými body, přičemž nejsou zachovány hodnoty datových bodů, které v tomto případě mají nižší váhu než 1. Celkový průběh výsledného gridu je proto hladší, dochází k vyrovnání lokálních nerovností. Mezi tyto metody patří Minimum curvature, Kriging s nugget efektem, IDW s vyrovnáním a polynomická regrese (zdroj [9]).
1.4
Digitální model terénu
Digitální model terénu (DTM) je digitální reprezentace reliéfu zemského povrchu v paměti počítače, složená z dat a interpolačního algoritmu, který umožňuje mj. odvozovat výšky mezilehlých bodů (zdroj [13]). Charkteristické prvky jsou především tyto: • Průběh terénní plochy může být velmi různorodý a lze se setkat i s různými terénními stupni a zlomy. Zvláštní charakter mají také vrcholy, sedla, údolnice a hřbetnice, které mají často podélně hladký průběh, ovšem v kolmém směru se na nich terénní plocha může ostře lámat. Takové stavy terénu nazýváme singularity, jejich matematickou charakteristikou je nespojitost funkce či nespojitost její derivace. • Rozsah zpracované plochy může být velmi rozsáhlý ale dosahuje malých převýšení, rozměry ve směru os X a Y jsou větší než ve směru Z. • Převážnou většinu modelované plochy lze charakterizovat jako funkci polohopisných souřadnic X a Y. Ke každému bodu plochy lze přiřadit pouze jednu výškovou hodnotu souřadnice Z. Vyjímku tvoří terénní stupně (zlomy, schody, opěrné zdi), ve kterých je terénní plocha svislá, někdy až převislá. Tzv. převisy jsou místa, kterými lze vést svislici, protínající povrch ve dvou nebo více bodech. Taková místa se vyskytují v reálném terénu jen zřídka a pro potřeby modelování netvoří důležitou složku. Jejich zpracování je ovšem problematické a systémů, vhodných pro zpracování rozsáhlých povrchů a schopných zohlednit takové detaily, není mnoho.
1.4. DIGITÁLNÍ MODEL TERÉNU
5
Pro popis terénu se většinou používá princip rozdělení celé plochy na menší části, které se dají snadněji geometricky popsat. Podle charakteristik těchto plošek se rozlišují následující typy modelů: POLYEDRICKÝ MODEL Elementární objekty popisující povrch tvoří trojúhelníky. Svými stranami k sobě přiléhají a tvoří tak mnohostěn, přimykající se k terénu. Vrcholy mnohostěnu jsou body na terénní ploše, souřadnicově určené geodetickým zaměřením bodů v terénu. Interpolace plochy se obvykle provádí lineárně po trojúhelnících. Tento přístup je v současné době u komerčních systémů nejrozšířenější. Vrcholy trojúhelníků je vhodné zvolit tak, aby vystihovaly nejen obecně průběh terénu, ale i jeho singularity. Samotný proces generování trojúhelníkových sítí označujeme slovem triangulace. Jak vypadá triangulovaný 3D povrch si můžete prohlédnout na obrázku 1.2. Ve spojení s touto metodou se často používá název TIN (triangulated irregular network, v překladu: nepravidelná trojúhelníková síť), což představuje vektorový popis polyedrického modelu se zavedením topologických vztahů mezi jednotlivými trojúhelníky.
Obrázek 1.2: Ukázka vytvořené trojúhelníkové sítě (TIN)
PLÁTOVÝ MODEL Povrch je rozdělen na nepravidelné, obecně křivé plošky trojúhelníkového nebo čtyřúhelníkového tvaru. Hranice těchto ploch se vedou po singularitách a charakteristických bodech terénu.
6
KAPITOLA 1. ÚVOD DO TVORBY MAPOVÝCH PODKLADŮ
RASTROVÝ MODEL Model je popsán množinou elementárních plošek nad prvky pravidelného rastru. Mohou to být čtyřúhelníky, které je dále možné rozdělit na trojúhelníky, případně je možné uvažovat i jiné složitější plochy. Pravidelná matice uzlových bodů je výhodná, lze je snadno vypočítat a není nutné o nich udržovat všechna data. Vypovídající schopnost modelu ovšem silně závisí na zvoleném rozlišení a na kolik jsou jednotlivé prvky rastru přimknuty ke skutečnému reliéfu terénu. Problém pak tvoří různorodá plocha obsahující prudké terénní zlomy stejně jako rozlehlé plochy bez výrazného převýšení. To samozřejmě lze zase řešit, např. rozdělením na několik modelů, a následným odděleným zpracováním v různém rozlišení.
1.5
Promítání kresby do 3D
Pro všechny vrcholy výchozí 2D kresby je třeba získat patřičný výškový údaj a následně modifikovat Z-souřadnici vrcholů každého takového grafického elementu. Protože reálná kresba většinou obsahuje převažující většinu vrcholů, které takový údaj nemají, je nutné je vhodným způsobem doplnit, interpolovat. V geodézii se nejčastěji používá tzv. Delaunay triangulace. Transformace 2D kresby do 3D se pak řeší pomocí promítnutí prvků kresby do 3D plochy nad nimi. Obecně se tedy jedná o výpočet průsečíku přímky, rovnoběžné s osou Z a roviny rovnoběžné s patřičným trojúhelníkem, který reprezentuje průběh interpolovaných hodnot v okolí tohoto bodu.
1.5.1
Vzájemná poloha přímky a roviny
Rozlišujeme tři různé vzájemné polohy přímky a roviny. Pokud nemá přímka s rovinou žádný společný bod, říkáme, že přímka je s danou rovinou rovnoběžná. Má-li přímka s rovinou právě jeden společný bod, říkáme, že přímka je s danou rovinou různoběžná a jejich společný bod nazýváme průsečíkem. Má-li přímka s rovinou společné alespoň dva body, pak tato přímka leží v dané rovině. Všechny body přímky jsou pak zároveň i body roviny. Obecná rovnice přímky p je definována jako: ax + by + c = 0
(1.1)
Hodnoty a a b jsou složky normálového vektoru ~n = (a; b). Obecná rovnice roviny ρ je definována jako ax + by + cz + d = 0
(1.2)
kde hodnoty a, b a c jsou složky normálového vektoru roviny ~n = (a; b; c), kolmého k této rovině. Abychom mohli spočítat společný bod, ověříme, zda normálový vektor roviny není kolmý na směrový vektor přímky. Vypočítáme tedy skalární součin těchto vektorů a pokud je výsledek
1.5. PROMÍTÁNÍ KRESBY DO 3D
7
nenulový, přímka a rovina nejsou rovnoběžné, a lze spočítat vzájemný průsečík. Nejdříve určíme parametrickou rovnici přímky p. Parametricky se dá každá přímka p, daná body A a B, zapsat pomocí jednoho bodu a směrového vektoru ~t. x = a1 + ~u1 × t y = a2 + ~u2 × t z = a3 + ~u3 × t
(1.3)
Parametrickou rovnici přímky dosadíme do obecné rovnice roviny ρ a vypočítáme hodnotu parametru t. Nakonec zbývá jen dosadit tuto hodnotu do parametrické rovnice přímky p a máme souřadnice hledaného průsečíku.
8
KAPITOLA 1. ÚVOD DO TVORBY MAPOVÝCH PODKLADŮ
Kapitola 2
Existující aplikace pro promítnutí 2D kresby do 3D Při zjišťování existujících řešení byly prozkoumány aplikace třech hlavních výrobců, používaných pro dokumentace nebo projektování staveb. Jedná se o následující produkty: • ArcGIS od společnosti ESRI. • AutoCAD Civil 3D od společnosti Autodesk. • SiteWorks společnosti Bentley Systems.
2.1
ArcGIS
V roce 2001 uvedla americká společnost ESRI na trh geografický informační systém ArcGIS. Do kategorie ArcGIS Desktop spadají produkty ArcView, ArcEditor, ArcInfo a volně dostupný prohlížeč publikovaných map ArcReader. Pro ArcGIS Desktop existuje mnoho rozšíření, která umožňují provádět nejrůznější úlohy, jako jsou práce s rastrovými daty, 3D analýza, statistické analýzy apod. Nadstavba ArcGIS 3D Analyst nabízí tvorbu 3D dat, tvorbu datových modelů GRID, TIN nebo 3D shapefilů. K samotné trojrozměrné vizualizaci slouží aplikace ArcScene, která umožňuje trojrozměrně vizualizovat i další vrstvy (vodstvo, komunikace) nebo zobrazit trojrozměrné mapové symboly, jako jsou stromy nebo budovy [1].
2.1.1
Digitální model terénu v aplikaci ArcGIS
Aplikace nabízí funkce pro generování terénního modelu z bodového pole, jednou z možností je tvorba modelu TIN pomocí extenze 3D Analyst, jak ilustruje obrázek 2.1.
9
10
KAPITOLA 2. EXISTUJÍCÍ APLIKACE PRO PROMÍTNUTÍ 2D KRESBY DO 3D
Obrázek 2.1: ArcGIS 3D Analyst - vytvoření TIN modelu (převzato z [5])
2.2
AutoCAD Civil 3D
AutoCAD Civil 3D je profesní verze AutoCADu, která obsahuje rozsáhlou funkčnost určenou k práci s bodovým polem, vytváření digitálního modelu terénu, generování vrstevnic, podélných a příčných profilů, svahování i modelování koridorů. Do roku 2007 byl vydáván pod názvem Autodesk Civil 3D. Speciálně pro projektování silničních a dálničních staveb existuje ještě doplněk produktů AutoCAD a AutoCAD Civil 3D s název RoadPAC od společností Pragoprojekt a Viapoint, který rozšiřuje nabídku funkcí prostorových operací základní aplikace.
2.2.1
Digitální model terénu v aplikaci Autocad Civil 3D
Autocad Civil 3D obsahuje nástroje pro tvorbu terénního modelu jak z klasické sítě zaměřených bodů, tak i z tzv. mračna bodů, které vznikne při laserovém scanování terénu. Ukázka možností programu je na obrázku 2.2. Digitální model terénu může být i vícevrstvý a je tedy možno pracovat s více povrchy najednou.
2.2.2
Funkce AutoCAD Civil 3D pro transformaci 2D do prostoru
K promítnutí čar do 3D plochy tvořené trojúhelníky je možné využít funkce "Vytvořit návrhové linie z objektů". Ukázka nabídky programu je na obrázku 2.3. V nastavení funkce je pak třeba zatrhnout možnost „Přiřadit výšky“. Dále vybereme terén tvořený trojúhelníkovou sítí a zatrhneme možnost „vložit přechodové lomové body v podélném spádu“, protože chceme přiřadit výšky ve vrcholech tečnového polygonu a v místech, kde se linie protíná se spojnicemi triangulovaného povrchu. Tímto se vytvoří návrhová linie, ze které je následně příkazem „rozlož“ možné vytvořit 3D křivku.
2.3
Bentley InRoads
Produktová řada InRoads, vyvíjená společností Bentley Systems, představuje ucelenou skupinu systémů pro stavební inženýrství. Nabízí nástroje pro sestrojení digitálního modelu te-
2.3. BENTLEY INROADS
11
Obrázek 2.2: Ukázka vytvoření DTM v aplikaci RoadPAC (převzato z [5])
rénu, geometrického řešení tras s přechodnicemi, podélných a příčných řezů, vrstevnic nebo stínovaných analytických modelů.
2.3.1
Vytvoření modelu terénu z grafických dat
Pro vytvoření modelu terénu je třeba načíst data složená z 3D prvků, podle kterých bude probíhat výsledná triangulace povrchu. Pro uvažovanou plochu tedy získáme seznam souřadnic měřených bodů a načteme je do DGN výkresu, který je typu 3D a body se tedy vytvoří ve výkresu včetně jejich výškové pozice. Aby byl výsledný povrch získaný triangulací správný a co nejlépe popisoval skutečnou situaci v terénu, je vhodné doplnit jej ještě o další grafické prvky: • Diskrétní body jsou samostatné body definované souřadnicemi X, Y, Z. • Hrany jsou používány pro nespojitosti povrchu, mohou představovat např. hrany komunikací, vodních toků nebo objektů. • Vnitřní hranice tvoří uzavřené hrany, používané pro vyloučení určité oblasti v modelu. V takové oblasti se nebudou provádět žádné výpočty. Nejčastěji se používají pro vymezení obvodu vodních ploch nebo budov. • Vnější hranice tvoří uzavřenou hranu omezující vnější limity modelu. Vně této hranice se nebudou provádět žádné výpočty. Pro každý model může být definována pouze jedna vnější hranice. • Vrstevnice jsou speciálním případem hran, kde všechny body na této hraně mají stejnou výšku. Tento typ dat se nejčastěji získá digitalizací existujících map.
12
KAPITOLA 2. EXISTUJÍCÍ APLIKACE PRO PROMÍTNUTÍ 2D KRESBY DO 3D
Obrázek 2.3: Civil 3D - vytvoření návrhové linie (převzato z [4])
Po načtení dat do modelu vytvoří program trojúhelníkový model, který se používá pro interpolaci výšek. Pro triangulaci se používá Delaunayovo kritérium se vstupní podmínkou. Tím se zajistí, že hrany trojúhleníků sledují hrany definované v modelu a umožní tak lepší modelování průběhu terénu. Trojúhelníky, které by se nacházely uvnitř vnitřních hrannic nebo vně vnějších hranic, jsou smazány a nejsou používány pro další operace [8].
2.4
Shrnutí existujících řešení
Jak bylo zjištěno, produkty všech hlavních výrobců CAD systémů pro tvorbu map obsahují nástroje pro vytvoření digitálního modelu terénu, i různé kontrolní nástroje pro jeho kontrolu a případnou modifikaci. U všech produktů byly taktéž nalezeny funkce, které by nějakým způsobem umožňovaly promítnout 2D linii do povrchu nad sebou. Výše uvdenené aplikace jsou připraveny na tvorbu 3D ploch, avšak neřeší promítnutí 2D kresby do 3D jako hlavní problém. Proto mají nástroje v těchto aplikacích pouze omezenou funkčnost, která není rozvíjena.
Kapitola 3
CAD systém Microstation a prostředky pro vývoj nadstaveb MicroStation je vyvíjen firmou Bentley Systems od osmdesátých let 20. století. Jedná se o softarovou platformu CAD, určenou pro architekturu, stavební inženýrství, dopravu, zpracovatelský průmysl, výrobní zařízení, státní správu a samosprávu a inženýrské a telekomunikační sítě. Dřívější verze byly vyvíjeny i pro unixové systémy, poslední verze jsou určeny pouze pro operační systémy z rodiny Microsoft Windows.
3.1
Datový formát DGN
Základním datovým formátem pro ukládání grafických výkresů v produktech firmy Bentley Systems je formát označovaný jako DGN, což je zkratka z anglického slova Design. Další doplňující informace nutné pro správné zobrazení dat jsou uloženy externě v samostatných souborech a jsou často společné pro větší množství výkresů. Jedná se např. o definice grafických stylů čar, soubory fontů, barevných tabulek a textur.
3.1.1
Formát DGN V7
Formát DGN V7 byl používán až do verze Microstation 7.x resp. Microstation J. Původně se používalo pouze označení DGN, teprve s příchodem generace Microstation V8 a nového formátu DGN V8 se začal označovat původní formát podle poslední generace produktu Bentley Systém. S výkresy ve formátu DGN V7 je možné pracovat ve všech verzích MicroStationu a odvozených produktů, není však možné využít všech nových vlastností, které jsou svázány s novým formátem. DGN V7 vznikl na základě formátu ISFF (Intergraph Standard File Format), což byl formát systému IGDS (Intergraph’s Interactive Graphics Design System) pracujícího na minisystémech VAX. Tvůrcem systému IGDS byla firma Intergraph, která byla do roku 1995 rovněž výhradním distributorem MicroStationu. Vzhledem k tomu, že MicroStation vznikl jako grafický systém pracující s daty v tomto formátu na platformě PC, byla zpočátku specifikace formátu DGN a ISFF totožná.
13
14KAPITOLA 3. CAD SYSTÉM MICROSTATION A PROSTŘEDKY PRO VÝVOJ NADSTAVEB
S novějšími verzemi MicroStationu se postupně objevovala další rozšíření - MicroStation 4.0 přinesl multičáry a sdílené buňky, MicroStation 5.0 uživatelské styly (druhy) čar, asociativitu prvků a štítky, MicroStation SE (5.7) zvýšenou 48bitovou přesnost souřadnic. Je tedy možné říci, že ISFF je podmnožinou formátu DGN V7. Specifikace této podmnožiny byla zveřejněna (byla součástí běžné dokumentace MicroStationu), specifikace rozšíření DGN V7 oproti ISFF dodnes zveřejněna nebyla. Ve formátu DGN jsou ve většině případů uložena data dlouhodobějšího charakteru, která si vyměňuje velké množství subjektů z různých oborů. Proto výrobce po dobu více než 15ti let udržoval základní strukturu formátu DGN v podstatě beze změny. Postupně docházelo k některým dílčím rozšířením, stále však zůstávala zachována zpětná kompatibilita dat. Data vytvořená v novější verzi je tedy možné otevřít i ve starší verzi produktu, pouze jsou ignorovány vlastnosti novější verze softwaru použité v datech a není nutné provádět konverzi na verzi novou.
3.1.2
Formát DGN V8
Neměnnost formátu měla jednoznačné výhody, na druhé straně byly odsouvány požadavky uživatelů na rozšíření funkčnosti MicroStationu. Zásadní změnu provedla společnost Bentley Systems v roce 2001, kdy byl současně s novou verzí MicroStation V8 uveden i nový formát DGN V8. Byla odstraněna všechna známá omezení formátu DGN V7 jako je maximální počet vrstev, maximální velikost souboru, omezení počtu vrcholů lomených čar apod. Standardní entity prvků a jejich atributy jsou nadmnožinou entit ve formátech DGN V7 a AutoCAD DWG. Díky tomu např. nedochází při importu dat z DWG ke ztrátě informací resp. přesněji, nedochází k náhradě komplexnějších prvků jednoduššími. Součástí souboru mohou být i další informace a datové struktury, např. je možné ukládat i popisná data ve formátu XML. Nově je také možné sledovat historii změn ve výkresu, ukládat více nezávislých modelů v jednom souboru. Formát DGN V8 již není zpětně kompatibilní se staršími verzemi MicroStationu, nicméně byl navržen tak, aby jeho základní strukturu nebylo nutné měnit po dobu minimálně dalších 15ti až 20ti let. Dobrý návrh datového formátu je vidět i na jeho bezproblémovém rozšíření, ke kterému došlo s příchodem novějších verzí MicroStationu. V MicroStation 8.1 byla přidána podpora pro ochranu intelektuálního vlastnictví v datech, a to za pomoci dvou technologií - digitálních podpisů a oprávnění. Od verze MicroStation 2004 Edition je možné využít měřítka popisů a multičárových stylů. Od verze MicroStation XM mohou být i značky a styly čar zobrazovány v závislosti na měřítku atd. Specifikace formátu DGN V8 byla zveřejněna v rámci iniciativy OpenDGN a je k dispozici komukoli po podepsání smlouvy.
3.2
Prostředí pro vývoj nadstaveb aplikace Microstation
MicroStation umožňuje tvorbu specializovaných aplikací, které jsou vyvíjeny jak společností Bentley Systems, tak nezávislými vývojáři a je v této oblasti neustále rozvíjen. Hlavní dvě množiny tvoří jazyk Basic a jazyk C.
3.2. PROSTŘEDÍ PRO VÝVOJ NADSTAVEB APLIKACE MICROSTATION
3.2.1
15
Vývojové jazyky Basic
MicroStation User Command Language – UCM UCM byl využíván převážně jako makro jazyk pro zaznamenání posloupností příkazů uživatele, případně pro jednoduché dialogy pro interakci s uživatelem. Nevýhodou bylo nedokonalé uživatelské rozhraní a nízká rychlost. UCM jsou od verze Microstation V8 ve stavu „nepodporováno“, nefunkční budou tedy zejména s novými vlastnostmi formátu datových souborů DGN V8 a s funkcemi nového uživatelského rozhraní aplikace. MicroStation Basic Microstation Basic byl nasazen od verze Microstation 95 jako nástupce UCM. Stejně jako jeho předchůdce podporuje záznam uživatelských operací a vytvoření odpovídajícího kódu programu. Obsahuje jednoduchý editor se základními funkcemi ladění, jako např. vkládání zarážek, krokování a výpis hodnot proměnných. Umožňuje zobrazit pouze modální dialogová okna, má omezenou délku kódu, omezenou velikost zásobníku pro proměnné. Rychlost provádění programu je pro rozsáhlejší projekty a větší objemy dat nedostatečná. Visual Basic for Application Od verze V8 je do Microstationu integrován Visual Basic for Application (VBA) licencovaný společností Microsoft. Pro tento vývojový nástroj je vytvořeno nové API s názvem MicrostationDGN. Obsahuje plně funkční editor se zvýrazňováním syntaxe, prvky pro ladění aplikací a také vizuální editor dialogových oken a nápovědou pro názvy metod a konstant objektu MicrostationDGN. VBA také umožňuje volání nativních funkcí MDL a využití komponent ActiveX (např. různých doplňků a ovládacích prvků pro dialogová okna).
3.2.2
Vývojové jazyky C
MicroStation Customer Support Library MicroStation Customer Support Library - MicroCSL byla první vývojovou knihovnou pro MicroStation ve verzi 3.3. Obsahovala funkce pro jazyky C a Fortran pro manipulaci s elementy ve výkresovém souboru DGN a funkce pro komunikaci s databází. Výsledný kód byl kompilován do nativních instrukcí CPU. Výhodou byla tedy rychlost provádění, nevýhodami pak pouze sekvenční programování, neúplná integrace s aplikací Microstation a cena. V současné době již MicroCSL není podporováno a bylo nahrazeno prostředím MicroStation Development Language. MicroStation Development Language MicroStation Development Language - MDL byl poprvé představen v roce 1991 u Microstationu verze 4. Měl sloužit jako hlavní vývojová platforma jak pro jednoduché uživatelské utility, tak i pro rozsáhlé nadstavbové aplikace a systémy. Jazyk MDL byl také zamýšlen jako nezávislý na platformě, což platilo až do verze Microstation SE.
16KAPITOLA 3. CAD SYSTÉM MICROSTATION A PROSTŘEDKY PRO VÝVOJ NADSTAVEB
Verze MicroStation V8i (8.11.XX.XX) XM (08.09.XX.XX) V8 (08.05.XX.XX)
MDL ANO ANO ANO
Native DLL Visual Studio 2005 Visual Studio 2003 VisualC/C++ 6.0
Managed code Visual Studio 2005 Visual Studio 2005 NE
Tabulka 3.1: Podporované verze Microsoft Visual Studia MDL je v podstatě upravené ANSI C, které se překládá pomocí kompilátoru a linkeru dodávaného ve vývojářském balíku SDK. Výsledný kód je pak interpretován v prostředí Microstation. Na jednu stranu to tedy zaručovalo portabilitu mezi verzemi, na druhou stranu to způsobovalo nižší rychlost vykonávání instrukcí a izolovanost aplikace od API operačního systému. Od verze Microstation 5 pak přišla možnost využívat nativních, dynamicky linkovaných knihoven DLL. Aplikace MDL využívají pro práci s výkresovými daty tzv. MDL API, které se skládá řádově ze stovek dokumentovaných funkcí. Současný způsob vývoje aplikací umožňuje „pouze“ využívat tohoto rozhraní, ale aplikaci postavit například na objektovém C++. Výsledný nativní kód je může být sestaven pomocí nástrojů Microstation SDK nebo za pomoci externího kompilátoru a linkeru. Je tedy možné použít kompletní vývojové prostředí Microsoft Visual Studio včetně jeho ladících nástrojů a debuggeru a také využít knihovny operačního systému. Podporované verze Microsoft Visual studia v jednotlivých verzích Microstation ukazuje tabulka 3.1. Java Verze Microstation J přinesla nově možnost vytvářet aplikace v JMDL - Java Microstation Development Language. Jednalo se o derivát mezi Javou a C++, reagující na tehdejší módní vlnu progarmování v jazyku Java. Kód je vykonáván pomocí Microstation Java Virtual Machine (JVM). JMDL byl původně určen pro tzv. ECM – Engineering Component Model, od kterého Bentley prozatím ustoupili a i v důsledku slabé podpory ze strany Bentley zůstává JMDL v pozadí preferovaných vývojových prostředí. VC++/MFC V roce 2002 uvolnila společnost Bentley knihovny pro podporu psaní uživatelského rozhraní v MFC. Tím tedy bylo možné využívat MDL API pouze pro akce týkající se výkresového souboru DGN a aplikace Microstation, zatímco pro další akce je možné využívat rozhraní jiných API. Microsoft .NET Vývojový směr jazyka C byl považován do doby uvedení technologie Microsoft .NET za hlavní. V současné době je znát orientace směru vývoje také směrem k nativním aplikacím VC++.NET případně C# a volání cílových funkcí pomocí interoperability s COM objekty a knihovnami DLL.
Kapitola 4
Analýza a návrh řešení 4.1
Charakteristika vstupních dat
V současné době požaduje převážná většina správců inženýrských sítí předávání geodetických zaměření ve 2D, v souřadnicovém systému S-JTSK. Vstupní data jsou tvořena množinou grafických elementů, uložených v souboru DGN a to ve verzi 7, kterou stále ještě vyžaduje většina odběratelů CADových dokumentací. V případě předání v nové verzi DGN verze 8 jsou dodržovány shodné parametry z důvodu přenositelnosti mezi oběma verzemi. Rozsah parametrů grafických elementů popisuje tabulka 4.1. Podle směrnice předepsané jednotlivými odběrateli jsou různé druhy reálných objektů rozděleny do samostatných vrstev. Např. vrstva stavebních objektů obsahuje obrysové linie budov, případně průměty nadzemních a podzemních hran do terénní plochy. Barva elementu slouží pro rozlišení stavebního materiálu, tedy zda je budova zděná, dřevěná, plechová nebo je materiál nerozlišený. Styl čáry pak určuje polohu linie objektu vzhledem k terénu (nadzemní linie, podzemní linie, obrysová linie v zemi atp.). Kompletní popis atributů jednotlivých typů měřených objektů je uveden v příloze D. Z dostupných typů grafických elementů se v průběhu tvorby mapového výkresu používá jen velmi omezená skupina. Podle požadavků konkrétního odběratele se na závěr navíc některé grafické elementy musí převést na jiný typ, vyhovující požadavkům odběratele. Typickým příkladem může být spojování hran silnic a vodních toků v průběhu kreslení pomocí Název atributu Vrstva Barva Styl Troušťka Třída Typ výplně Barva výplně
Rozsah hodnot 1 - 63 0 - 255 0 - 7 nebo uživatelský 0 - 31 „primární“ nebo „konstrukční“ „žádné“, „vyplnění“, „vyplnění s ohraničením“ 0 - 255
Tabulka 4.1: Atributy grafických elementů
17
18
KAPITOLA 4. ANALÝZA A NÁVRH ŘEŠENÍ
Číslo 2 3 4 6 17
Název CELL_HEADER_ELM LINE_ELM LINE_STRING_ELM SHAPE_ELM TEXT_ELM
Popis buňka čára lomená čára uzavřená lomená čára text
Tabulka 4.2: Použité typy grafických elementů křivek. Takto vytvořené linie je možné snadno modifikovat nebo přidávat a ubírat vrcholy. V závěru zpracování se převedou na lomené čáry pomocí specializovaných nadstavbových aplikací. Pro vytvářenou aplikaci předpokládáme, že data jsou ve finální podobě, tedy po aplikování konverzí křivek, elips a oblouků na lomené čáry. Výsledná množina grafických elementů je uvedena v tabulce 4.2. Odhadovaný rozsah počtu grafických elenentů může začínat od několika stovek u jednoduchých modelů, až po desítky tisíc u rozsáhlých modelů celých měst.
4.1.1
Kontrola topologie
Součást finální úpravy dat tvoří taktéž kontrola topologie a předpokládáme tedy, že data byla zkontrolována na správnost grafických atributů (vrstva, barvy, tloušťka, styl atd.) a jsou tedy zařazena ve správných kategoriích. Další předpokládanou operací je kontrola a oprava kresby, zejména následujících topologických chyb: • Duplicitní prvky nebo vrcholy • Křížení liniových prvků bez společného bodu. • Nedotahy koncových bodů úseček a lomených čar • Prvky s velikostí menší než uživatelem definovaná minimální velikost pro jednotlivé typy prvků
4.1.2
Digitální model terénu
Vstupní množinou dat pro vytvoření terénního modelu je síť měřených bodů. Kresba se ještě doplní o povinné hrany a vnitřní i vnější spojnice (viz. 2.3.1) tak, aby výsledný triangulovaný povrch co nejpřesněji popisoval skutečný průběh terénu. Poté se provede vytvoření trojúhelníkového modelu terénu pomocí funkce Triangulovat povrch, kterou najdeme v menu Povrch. Na závěr je třeba vygenerovat samotnou trojúhelníkovou síť pomocí funkce Trojúhelníky a vyexportovat výkres do souboru DGN. Takto připravený 3D výkres tedy obsahuje trojúhelníkové elementy typu SHAPE a bude připojen k existujícímu výkresu jako referenční výkres. Druhou možností je spojit ve výkresu trojúhelníkovou plochu ve 3D s polohopisnou kresbou ve 2D (bude v nulové výšce).
4.2. VOLBA VÝVOJOVÉHO PROSTŘEDÍ
Produktová řada Microstation PowerDraft Microstation ProjectWise Navigator Bentley Redline Bentley View
MDL ANO ANO (omezeně) ANO NE NE NE
19
Native DLL ANO NE ANO NE NE NE
VBA ANO ANO ANO ANO ANO NE
Tabulka 4.3: Použitelnost vývojových prostředků v produktech Bentley
4.2 4.2.1
Volba vývojového prostředí Definování požadavků pro výběr vývojového prostředí
Při rozhodování, které vývojové prostředí použít, jsem srovnával tyto parametry: 1. Existence ladících nástrojů a jejich snadná použitelnost 2. Rychlost vykonávání výsledného kódu aplikace 3. Snadnost navržení grafického rozhraní 4. Přenositelnost aplikace mezi jednotlivými verzemi CAD systému Microstation 5. Požadavky na vývojáře (i z hlediska budoucích modifikací aplikace) Vyvíjet aplikaci v neznámém prostředí bez možnosti sledování průběhu vykonávání kódu by bylo velmi složité. Taktéž přenositelnost mezi verzemi Microstation je důležitá, zvláště když v současné době udržuje firma Bentley tři verze rodiny V8: Microstation V8, Microstation XM a Microstation V8i. Vzhledem k tomu, že neexistuje předchůdce k vyvíjené aplikaci, je vhodné zohlednit předpoklad většího množství vývojových cyklů, od základního prototypu, přes rozšiřování funkcí, až po konečný stav. Důležité je také zohlednit možnost složitost návrhu GUI pro jednotlivé verze v průběhu vývoje. Použitelnost vývojových prostředků je také dána nastavením licenčních politik firmy Bentley. Tabulka 4.3 popisuje možnosti spouštění nadstaveb v jednotlivých produktových řadách.
4.2.2
Výkonnostní testy vývojových prostředí
V rámci výběru vývojového prostředí pro implementaci byla otestována jejich rychlost v prostředí Microstation V8. Byly opakovaně vytvářeny grafické objekty, nastavovány jejich atributy a zapisovány do souboru DGN. V každém kroku byly vytvořeny: 2x textový element, 1x bod (úsečka se schodným počátečním a koncovým bodem). Hodnoty byly pro větší objektivitu měřeny ve dvou různých situacích. Poprvé s nastavením výřezu okna tak, že vykreslování grafických prvků bylo viditelné. Při druhém průběhu byl zobrazovaný výřez posunut mimo
20
KAPITOLA 4. ANALÝZA A NÁVRH ŘEŠENÍ
Vývojové prostředí MDL VBA .NET C# (COM) .NET C# (pinvoke)
1000 objektů čas A [s] čas B [s] 0.9 0.8 1.1 1.0 1.0 1.0 1.0 0.9
10 000 objektů čas A [s] čas B [s] 2.1 2.9 16.3 11.9 18.5 12.3 2.5 3.0
100 000 objektů čas A [s] čas B [s] 16.4 12.8 72.5 19.9 77.9 23.1 21.8 16.0
Tabulka 4.4: Srovnání rychlosti vývojových prostředí (A = viditelně, B = skrytě) vytvářené prvky a vkládání elementů viditelné nebylo. Způsob testování záměrně kladl důraz na operace s grafickými elementy a datovým souborem DGN. Test byl proveden v jednotlivých vývojových prostředích, výsledky jsou zachyceny v tabulce 4.4. Výsledné hodnoty vycházejí nejlépe pro aplikaci MDL, těsně následovanou aplikací .NET (programovací jazyk C#), pokud se použije verze projektu s připojenými .NET Assemblies a volání funkcí přes PInvoke(). V případě klasické komunikace .NET C# a volání metod objektu COM je výkon srovnatelný s aplikací napsané ve VBA. Zásadní význam má například i vykreslování elementů v průběhu vkládání elementů na obrazovku, což je předpokládám záležitost zobrazovacího jádra programu Microstation v kombinaci s nedostatečným výkonem grafické karty v testovacím PC. Problém vidím ve značném rozdílu rychlosti práce s elementy vytvořenými buďto pomocí MDL nebo VBA. Např. při mazání všech vytvořených grafických elementů se operace provádí výrazně déle u elementů, vytvořených aplikací VBA. Přitom se jedná o stejnou činnost, plně v režii jádra Microstationu a způsob vytvoření grafických prvků by ji ovlivňovat neměl. V nejnovější verzi Microstation v8i Select Series 1 (verze 08.11.07.171) byl již rozdíl mezi oběma způsoby testů v jednotkách sekund, srovnatelně s rozdílem u MDL.
4.2.3
Zhodnocení
Z hlediska výkonu lze tedy očekávat nejlepší výsledky od aplikace MDL. Využívá optimalizovaného kompilátoru C++ pro vlastní kód, který volá optimalizované funkce Microstation API. Bohužel má velmi omezené možnosti v ladění aplikace, tedy např. u krokování programu, vkládání breakpointů, zobrazování obsahu proměnných atp. Pro vývoj prototypové apliakce není toto prostředí příliš vhodné. Aplikace běžící pod Microsoft .NET (programovací jazyk C#) je při použití metody PInvoke() výkonově srovnatelná s MDL, nabízí však výrazně lepší možnosti ladění než klasické MDL. Na druhou stranu však požaduje nainstalované Microsoft Visual Studio 2005. Konfigurace mezi Microstationem a Visual Studiem není úplně triviální, stejně jako vytváření oken a prvků GUI uvnitř Microstationu. Tato varianta je nejvíce náročná na znalosti programátora a to zdaleka ne jen v prostředí CADu. Aplikace napsaná v Microsoft .NET (programovací jazyk C#), využívající volání metod objektu COM, se výkonem rovná aplikaci VBA. Umožňuje využívat většiny vymožeností tohoto vývojového prostředí a přitom používat kterýkoliv oblíbený jazyk z rodiny Microsoft .NET. Stejně jako u předchozí varianty však vyžaduje instalaci Microsoft Visual Studia 2005.
4.3. NÁVRH ŘEŠENÍ
21
Programovým prostředím, které jsem po konzultaci se zadavatelem aplikace zvolil, je Microstation VBA. Jako interpretovaný kód je sice s výkonem pod úrovní rychlosti nativního zpracování instrukcí, zejména co se týká získávání referencí na objekt (při použití příkazu Set). Nicméně nabízí komfortní a rychlé vývojové prostředí „vše v jednom“. Umožňuje rychlý zápis kódu do prototypové aplikace, snadné ladění a krokování kódu, nápovědu intelli-sence a také jednoduché vytvoření grafického uživatelského rozhraní. Je vhodné pro aplikaci, u které lze očekávat mnoho vývojových cyklů a provedených úprav a změn. U vytvářené aplikace se navíc předpokládá spuštění až po provedení mnoha předchozích kroků a úprav kresby, takže rozdíl v jednotkách sekund nebude zásadní.
4.3
Návrh řešení
Funkce, které bude provádět nadstavba, můžeme rozdělit do dvou skupin a to na funkce kontrolní a na funkce výkonné, provádějící modifikaci kresby.
4.3.1
Kontrolní funkce
Než se začnou modifikovat grafické elementy, je vhodné ověřit, zda lze funkci s konkrétními elementy vůbec provést. Jedná se o tyto kontroly: • Kontrola nepovolených typů grafických elementů. Stejná kontrola bude prováděna i v průběhu změny vrcholů elementů, ale je vhodné upozornit uživatele před tím, než se s modifikací kresby vůbec začne. • Kontrola existence trojuhelníkové plochy nad elementem. Kromě prvků určených jediným úchytným bodem se jedná zejména o liniové elementy s mnoha vrcholovými body. Pokud je vrchol mimo tuto plochu, nepovede se vypočítat průsečík a zůstane v nulové výšce. • Kontrola existence lomových bodů na kříženích mezi linií kresby a hranou trojúhelníku. Přidávání vrcholů nemusí být vždy vhodné, zejména pokud je vzniklý vrchol vytvořen pouze v důsledku nepřesnosti v kresbě. Proto také zavedeme volitelné proměnné, které umožní uživateli nastavit limitní hodnotu úhlu mezi hranou a linií a mezní vzdálenost mezi existujícím a novým vrcholem. Funkce zvládne taková místa detekovat a nalezené body buďto označí nebo na linii přidá vrchol.
4.3.2
Funkce pro modifikaci kresby
Hlavní výkonnou čiností algoritmu bude postupné procházení souboru DGN. Pro každý nalezený element se provede rozpoznání typu elementu a zpracování bude pokračovat pouze pro povolené typy. U prvků určených jediným úchytným bodem (CELL_HEADER_ELM a TEXT_ELM) se vypočítá průsečík s plochou a vrchol se přesune do vypočtené pozice. Prvky s více jak jedním úchytným bodem (typ LINE_ELM, LINE_STRING_ELM, SHAPE_ELM) je nutné postupně projít a pro každý takový vrchol provést operaci nalezení průsečíku s rovinou a jeho modifikaci.
22
KAPITOLA 4. ANALÝZA A NÁVRH ŘEŠENÍ
Aby byl výsledek jednoznačný, musí existovat maximálně jeden průsečík přímky vztyčené z bodu s 3D plochou tvořenou trojúhelníky. Plocha tedy nesmí obsahovat více různých hladin nad sebou nebo tzv. „ jeskyně“, tedy místa se záporným sklonem.
4.3.3
Algoritmus modifikace vrcholů grafických elementů
Velmi důležitá je kontrola liniových elementů, zda opravdu každý vrchol leží uvnitř trojúhelníku, resp. uvnitř průmětu trojúhelníku do 2D. Zdaleka ne všechny vrcholy nalezeného elementu totiž musí ležet uvnitř a protnutím s plochou vytvořenou z trojúhelníku bychom samozřejmě nějakou pozici získali, nicméně by to byla hodnota chybná. Dalším pravidlem je, že se budou měnit pouze pozice jednotlivých vrcholů, nebudou prováděny žádné změny grafických atributů jednotlivých elementů, změny měřítka nebo změny v natočení elementů. Průchod souboru po elementech V souboru DGN postupujeme po jednotlivých grafických prvcích. Pro každý jejich vrchol vyhledáme trojúhelník ležící nad vrcholem takový, aby vrchol ležel uvnitř nebo na hraně průmětu tohoto trojúhelníku do 2D. Následně vypočítáme průsečík vrcholu s plochou definovanou tímto trojúhelníkem a souřadnice vrcholu modifikujeme do jeho nové pozice. Průchod souboru po trojúhelnících Přesně naopak postupujeme ve druhém případě. Postupně procházíme jednotlivé trojúhelníky tvořící 3D povrch a pro každý trojúhelník hledáme grafické elementy ležící v průmětu do 2D v nulové výšce pod ním. U nalezených vrcholů jednotlivých elementů vypočítáme průsečík a vrchol modifikujeme. Pokud by existoval požadavek na zpracování jen vybrané množiny prvků určených ohradou nebo výběrem, bude vhodnější zvolit variantu průchodu souboru po elementech. Při metodě zpracování celého výkresu najednou jsou oba navržené způsoby srovnatelné, záleží tedy na přepokládaném způsobu používání aplikace. Pokud by se zvolené řešení ukázalo nevhodným, nebude nijak náročné aplikaci upravit, vymění se pouze role obou hlavních funkcí.
Kapitola 5
Implementace 5.1
Hlavní algoritmus
Jako hlavní algoritmus pro promítnutí kresby do 3D plochy jsem zvolil průchod souboru po trojúhelnících. Opakováním následujících kroků postupně provedeme přesun vrcholů do prostoru: 1. Načteme ze souboru DGN první trojúhelník 3D plochy, který je v DGN uložen jako grafický element typu SHAPE. 2. Podle jeho rozměrů omezíme rozsah hledaných elementů, které budeme promítat do 3D plochy. Vyhledáme prvky ležící pod trojúhelníkem, tedy elementy s nulovou souřadnicí Z. 3. Protože je plocha pro vyhledávání elementů čtvercová, zkontrolujeme u každého vrcholu, zda leží uvnitř nebo na hraně průmětu trojůhelníku do 2D. 4. Pokud ano, vytvoříme přímku z promítaného vrcholu kolmo vzhůru, plochu z akutálního trojúhelníku a spočítáme jejich průsečík. 5. Pokud průsečík existuje, modifikujeme souřadnice vrcholu do nově vypočítané pozice. 6. Pokud existuje, načteme ze souboru DGN další trojúhelník 3D plochy a body 2. až 5. opakujeme pro všechny nalezené elementy a jejich vrcholy. Po dokončení průchodu bude u všech vrcholů, u kterých byl nalezen průsečíky s 3D plochou, modifikována jejich souřadnice Z a kresba bude tedy zvednutá do 3D. U nevyzvednutých vrcholů zůstane souřadnice Z nulová. Pro tento případ jsem doplnil funkci, která projde zbývající vrcholy s nulovou výškou a pokud okolní vrcholy mají souřadnici Z, modifikuje nulovou výšku na bližší z nich. Tato operace však již nemá přesnost předchozích postupů a slouží pouze pro přiblížení vrcholů ostatní kresbě. Měla by poté následovat ruční kontrola a opřesnění pozice těchto vrcholů.
23
24
KAPITOLA 5. IMPLEMENTACE
5.2
Členění aplikace
Prostředí VBA obsahuje strukturu projektu rozdělenou na Formuláře a Moduly. Formuláře obsahují grafický návrh dialogových oken a kód pro obsluhu událostí. Moduly umožňují strukturování vlastního kódu podle uvážení programátora. Zvolil jsem následující členění modulů: • Main - základní modul s deklarací globálních proměnných a metodou Main, která je volaná při spuštění aplikace. • ModifikaceDo3D - obsahuje hlavní algoritmus aplikace, tedy průchod trojúhelníkové plochy, výpočet průsečíků a jejich modifikace. • PolohaElementu - obsahuje funkce pro kontrolu pokrytí grafických elementů trojúhelníkovou plochou. • PridaniVrcholu - obsahuje funkce pro označení nebo doplnění vrcholů do linií v místě křížení s hranami trojúhelníků. • ZbyvajiciVrcholy - obsahuje funkce pro práci s vrcholy, které nebyly promítnuty do 3D
5.3
Použití objektů a metod při implementaci
V objektové hierarchii Microstationu je výchozím objekt Application. Všechny metody a atributy tohoto objektu jsou v globálním namespace každého projektu VBA a jsou tedy přístupné bez nutnosti se na něj explicitně odkazovat. Namísto Application.ActiveDesignFile stačí psát pouze ActiveDesignFile. Ze základních atributů objektu Application použijeme zejména ActiveDesignFile, což je reference na objekt umožňující přístup ke grafickým elementům uloženým v souboru aktivního modelu. Alternativní cestou pro práci s grafickými elementy může sloužit ActiveModelReference. Objekt Application dále obsahuje reference na mnoho dalších objektů a atributů pro nastavení samotné aplikace, pracovního prostředí, ovládání příkazů a událostí atp.
5.3.1
Přístup ke grafickým elementům v souboru DGN
Metoda sloužící k procházení elementů uložených v souboru DGN se nazývá Scan(). Grafické prvky mohou být uloženy buď v aktivním výkresu, pak k nim přistupujeme voláním metody Scan() objektu ActiveDesignFile. Soubor může být také pouze připojen jako referenční, pak jsou grafické elementy zobrazeny, ale jsou přístupné pouze pro čtení a metoda Scan() se pak volá nad objektem ModelReference. Metoda vrací objekt ElementEnumerator, který slouží k průchodu vrácených grafických elementů, a to pomocí metody MoveNext(). Tuto metodu je nutné zavolat před prvním přístupem k aktivnímu elementu, což se provede zavoláním metody Current(). Volitený parametr ScanCriteria odkazuje na objekt ElementScanCriteria. Ten obsahuje veškeré dostupné možnosti pro upřesnění typů a atributů grafických elementů, které chci z DGN
5.3. POUŽITÍ OBJEKTŮ A METOD PŘI IMPLEMENTACI
25
číst. Ve výchozím stavu nefiltruje nic a vrací všechny nalezené elementy. Pokud chci omezit vracené elementy na určitý výběr z nich, vyloučím nejdříve vše ze zvolené skupiny vlastností elementů a následně přidám pouze ty, které požaduji aby funkce vracela. Další velice důležitou součástí je odkaz na objekt Range3d, který představuje kvádr v 3D prostoru, omezující rozsah vracených elementů. Pro názornost uvádím část zdrojového kódu, kde je ilustrován ukázkový postup inicializace a užití metody Scan(): Dim Dim Dim Dim
scanCriteria As ElementScanCriteria elemEnum As ElementEnumerator oLevel As Level oRef As ModelReference
Set oLevel = ActiveDesignFile.Levels("Level 20") Set scanCriteria = New ElementScanCriteria
’výběr vrstvy
’ nejdřív vše vyloučit (EXCLUDE) a pak INCLUDE toho, co požaduji scanCriteria.ExcludeAllLevels scanCriteria.IncludeLevel oLevel scanCriteria.ExcludeAllTypes scanCriteria.IncludeType msdElementTypeShape Set elemEnum = oRef.Scan(scanCriteria) ’ Procházení výsledků nalezených elementů Do While elemEnum.MoveNext With elemEnum.Current ’ Zde již manipulujeme s konkrétním elementem ... End If End With Loop
5.3.2
Identifikace grafického elementu
Pro určení grafického elementu v souboru DGN lze použít jeden z těchto tří atributů: Cache index – odkazuje do cache paměti elementů a může obsahovat i smazané elementy. Je tedy nutné kontrolovat atribut IsElementValid. File Position – používal se pro přístup k elementům do verze Microstation v7, a obsahoval přímo pozici v souboru. Jednalo se o klasickou adresu, přechod na další element tedy byl možný přičtením jeho velikosti k jeho adrese. Pokud se změní velikost elementu a ten je zpětně zapsán do souboru DGN. Není možné ho vložit na původní adresu a je připojen na konec souboru. ID – doporučuje se primárně používat pro přístup k elementům používat od Microstationu V8. Jedná se o trvalý údaj, který se nemění při modifikaci elementů. Atribut ID je typu
26
KAPITOLA 5. IMPLEMENTACE
DLong, což je 64bitový Integer, rozdělený na dvě 32bitové části: na Low a High - oba typu Long.
5.3.3
Posun elementů v souřadnicovém systému
Pro určení pozice bodového grafického elementu v souradnicovém systému se používá atribut Origin. Ten je ekvivaletní datovému typu Point3d a obsahuje tedy tři složky typu Double pro souřadnice X, Y, Z. Kromě textového elementu je pro všechny ostatní typy pouze Read-only a je tedy potřebné měnit jeho hodnotu jinak. K tomu využijeme metodu Move(), která přesune element o zadaný offset: obj.Redraw msdDrawingModeErase obj.Move pntDistance, False obj.Redraw obj.Rewrite ’Uložit do DGN Na závěr je třeba zavolat metodu Rewrite(), která trvale zapíše provedené změny do DGN.
5.3.4
Změna souřadnic vrcholů v souřadnicovém systému
Změnu souřadnic vrcholů liniových elementů bychom mohli provádět u každého typu samostatně voláním metody ModifyVertex(). Mnohem výhodnější však bude využít společný interface všech liniových objektů s názvem AsVertexList. Zda můžeme použít tento interface jednoduše otestujeme pomocí atributu IsVertexList. Pokud grafický element toto rozhraní implementuje, zavoláme jeho metodu ModifyVertex() a zjišťování typů elementů nemusíme řešit. If oElm.IsVertexList Then With oElm.AsVertexList Dim index As Integer Dim count As Long Set m_oVL = oEle count = m_oVL.VerticesCount m_vertexList = m_oVL.GetVertices For index = 0 To count - 1 Dim currentPoint As Point3d currentPoint = m_vertexList(index) ... vlastní zpracování vrcholu Next i oElm.rewrite End With End If Uvedeným kódem takto můžeme elegantně modifikovat všechny typy liniových elementů, které jsme si v rámci analýzy určili (viz. tabulka 4.2).
5.3. POUŽITÍ OBJEKTŮ A METOD PŘI IMPLEMENTACI
5.3.5
27
Omezení rozsahu scanování pomocí objektu Range3d
Pro omezení místa, ze kterého chci načítat elementy, slouží datový typ Range3d. Ten definuje kvádr, jehož hrany jsou rovnoběžné s osami X, Y, Z a rozměry jsou definovány pomocí dvou rohových bodů. Tyto body je možné nastavit přímým přiřazením hodnot, nebo využít přímo atributu Range u konkrétního grafického objektu. Tento atribut obsahuje rozměry elementu, je určen pouze pro čtení a je dostupný pouze u grafických elementů, tedy takových, které mají nastaven atribut IsGraphical. Následuje příklad nastavení rozsahu pro scanování elementů podle grafického elementu typu SHAPE. Dim oRange As Range3d Dim oShape As ShapeElement Dim oScanCrit As New ElementScanCriteria ’ nastavím podle atributu grafického elementu SHAPE oRange = oShape.range ’ omezím Scan výkresu v tomto rozsahu scanCrit.IncludeOnlyWithinRange oRange
5.3.6
Výpočet průsečíku polopřímky s rovinou
Pro určení polohy bodu vůči polygonu existuje metoda Point3dInPolygonXY(). Jako první parametr má vyšetřovaný bod typu Point3d, druhým parametrem je pole vrcholů mnohostěnu (v terminologii Microstationu je nazýván polygonem). Metoda vrací hodnotu která definuje, zda je bod venku (-1), leží na hraně (0) nebo je uvnitř (1) polygonu. Funkce ignoruje souřadnici Z, což nám zrovna vyhovuje, protože potřebujeme kontrolovat pozici bodu vůči průmětu do 2D. Metoda Ray3dFromPoint3dStartEnd() se postará o vytvoření polopřímky vedoucí z řešeného vrcholu kolmo vzůru. Má pouze dva parametry, a to jsou počáteční a směrový bod a vrací inicializovanou proměnnou typu Ray3d. Pro popis roviny slouží datový typ Plane3d, který obsahuje dva členy Origin a Normal, oba typu Point3d, tedy souřadnice počátku a normálový vektor roviny. K inicializaci proměnné tohoto typu z trojúhelníku postačí nastavit oba její členy takto: plane.Normal = oShape.Normal plane.Origin = oShape.Centroid Metoda Plane3dIntersectsRay3d() nakonec provede samotný výpočet průsečíku přímky s rovinou. Jako vstupní parametr požaduje předat proměnnou typu Ray3d a proměnnou typu Plane. Další parametr je výstupní a je to proměnná typu Point3d, ve které jsou vráceny souřadnice průsečíku. Pokud průsečík neexistuje, funkce vrací hodnotu False. Následuje ukázka nalezení průsečíku počátku grafického prvku typu CELL s trojúhelníkem. If .IsCellElement Then origPnt = .AsCellElement.Origin
28
KAPITOLA 5. IMPLEMENTACE
If Point3dInPolygonXY(origPnt, arrayPnts, -1) >= 0 Then directPnt = origPnt directPnt.Z = 10 ’pouze směr ve směru souř. Z ’ vytvořím přímku "ray" z počátku buňky, rovnoběžně s osou Z ray = Ray3dFromPoint3dStartEnd(origPnt, directPnt) ’ Spočítám průsečík polopřímky a plochy If Not Plane3dIntersectsRay3d(pnt, param, plane, ray) Then Debug.Print "Přímka neprotíná plochu" End If offsetPnt.Z = pnt.Z ’ posunovat jen ve směru osy Z .AsCellElement.Redraw msdDrawingModeErase .AsCellElement.Move offsetPnt .AsCellElement.Redraw msdDrawingModeNormal .AsCellElement.Rewrite End If End If
5.4
Grafické rozhraní
Grafické rozhraní tvoří tzv. formuláře, což jsou klasická okna v systému Windows. Akce jednotlivých ovládacích prvků jsou řízeny událostmi, jako např. Click, Focus, Change atp. Při zobrazení okna je vyvolána událost Activate, toho jsme využili při inicializaci hodnot rozbalovacího seznamu pro výběr vrstvy elementů trojúhelníkové plochy.
Obrázek 5.1: Hlavní okno aplikace
Rozvržení hlavního formulářového okna, které se zobrazuje po startu aplikace, si můžete prohlédnout na obrázku 5.1. Obsahuje rozbalovací výběr pro volbu souboru, ve kterém je umístěna trojúhelníková síť. K dispozici je buď aktivní model, pro případ že jsou trojúhelníky
5.4. GRAFICKÉ ROZHRANÍ
29
i kresba ve stejném výkresu, nebo kterákoliv z referencí. Ve výběru jsou filtrovány pouze výkresy typu 3D. Po výběru souboru se provede načtení vrstev, které soubor obsahuje. Pokud existuje vrstva s názvem Level 20, přednastaví se jako výchozí. Toto chování souvisí s výchozím nastavením aplikace SiteWorks, resp. vrstvy do které jsou vygenerovány trojúhelníky po interpolaci plochy. Dále je možné upravit chování aplikace při výpočtu souřadnic průsečíků s trojúhelníky. Vypočítané souřadnice lze zaokrouhlit na liché nebo oříznout a lze také zvolit na kolik desetinných míst se vybraná operace bude provádět. Před samotným spuštěním výpočtu promítnutí 2D kresby do 3D je vhodné provést kontroly vstupních grafických dat. K tomu slouží tlačítko Kontrola, které zobrazí dialogová okna, které můžete vidět na obrázcích 5.2 a 5.3.
Obrázek 5.2: Kontrola polohy
Obrázek 5.3: Kontrola křížení
30
KAPITOLA 5. IMPLEMENTACE
Kapitola 6
Testování a diskuse dosažených výsledků 6.1
Ověření funkčnosti kontrol
Ověření korektního fungování kontrolních funkcí bylo provedeno na testovacích datech a následně ručně ověřeno. 1. Ověření výběru elementů, které nelze promítnout do 3D Na první záložce dialogového okna pro kontrolu vstupních dat (viz. obrázek 5.2) byla zvolena možnost „Vyber elementy kompletně mimo 3D plochu“. Z celkového počtu 2153 grafických elementů bylo označeno 37 jako polohou zcela mimo 3D trojúhelníky (nelze spočítat průsečík svislé přímky s rovinou) a tyto elementy byly vloženy do výběrové množiny. Pro ověření následující funkce byly z výkresu odstraněny. 2. Ověření výběru elementů s vrcholy, které nelze promítnout do 3D Na první záložce dialogového okna pro kontrolu vstupních dat (viz. obrázek č. 5.2) byla zvolena možnost „Vyber elementy i částečně mimo 3D plochu“. Z celkového počtu zbývajících 2114 grafických elementů bylo označeno 78. Jedná se o elementy, jejichž alespoň jeden vrchol nemá průsečík svislé přímky s rovinou. Tyto elementy byly vloženy do výběrové množiny, ověřeno že byly vybrané správně a ve výkrese byly ponechány. 3. Kontrola křížení liniových elementů s hranami trojúhelníků Na druhé záložce dialogového okna pro kontrolu vstupních dat (viz. obrázek 5.3) byla zvolena možnost Označit vrcholy na kříženích a ponechány výchozí hodnoty minimální vzdálenosti a úhlu. Bylo označeno 348 chybějících vrcholů, výřez pohledu je na obrázku 6.1. 4. Doplnění křížení liniových elementů s hranami trojúhelníků Na druhé záložce dialogového okna pro kontrolu vstupních dat (viz. obrázek 5.3) byla zvolena možnost „Doplnit vrcholy na kříženích“ a ponechány výchozí hodnoty minimální vzdálenosti a úhlu. Bylo doplněno 348 chybějících vrcholů v místech označených předchozím testem.
31
32
KAPITOLA 6. TESTOVÁNÍ A DISKUSE DOSAŽENÝCH VÝSLEDKŮ
Obrázek 6.1: Označení chybějících vrcholů na křížení
6.2
Výsledky promítnutí kresby z 2D do 3D
Data byla ponechána ve stavu po dokončení předcházejících testů. Byly tedy odtraněny grafické elementy, které nebyly pokryty triangulovanou plochou. Elementy které neměly pokrytu jen část vrcholů byly ponechány. Dále byly doplněny vrcholy v místech křížení linií s hranami trojúhelníků. Konečný výsledek promítání do 3D můžete vidět na obrázku 6.2. Pro přehlednost byla odpojen referenční výkres s triangulovanými trojúhelníky. V příloze B jsou vloženy vyrenderováné scény metodou Ray trace.
Obrázek 6.2: Finální stav po promítnutí do 3D
6.3. DISKUSE DOSAŽENÝCH VÝSLEDKŮ
6.3
33
Diskuse dosažených výsledků
Nejvíce náročným úkolem při vytváření aplikace se ukázalo seznamování s objektovým modelem Microstationu, způsobu přístupu ke grafickým elementům, způsobu procházení výkresu metodou Scan a obecně s logikou práce a uložení dat v souborech DGN. Na rozdíl od unifikovaného prostředí VBA mají operace s elementy svoji specifickou logiku a posloupnost kroků, které je třeba dodržovat. Naštěstí byla většina hledaných informací dostupných v nápovědě k VBA nebo k prostředí MDL. Připravenost Microstationu pro práci ve 3D není nijak ohromující a uživatelsky přívětivá. Ve verzi Microstation V8 navíc docházelo při izometrickém zobrazení 3D scény k mizení linií, případně jejich chybného vykreslení jako čáry z bodu do nekonečna. V nejnovější verzi Mirostation V8i už byla situace výrazně lepší a se zapnutou akcelerací 3D byla i rychlost odezvy znatelně vyšší. Samotné promítnutí kresby do 3D nebylo samo o sobě tak obtížné, jak jsem na začátku předpokládal. Ukázalo se, že nebude nutné ručně programovat matematické operace, vytváření normálových vektorů nebo výpočtů průsečíků atp. Na většinu geometrických operací nabízí Microstation API patřičné metody a datové typy. Při testování na ostrých datech se objevilo několik výraznějších nedostatků, souvisejících se způsobem zaměřování objektů v terénu a s kvalitou a způsobem zakreslování do DGN: • Vzhledem k tomu, že původní kresba byla vytvořena ve 2D, používají se v ní pro rozlišení pozice vůči terénu různé styly čar. Čerchovaná nebo přerušovaná čára označuje hranu objektu, která byla nad zemí nebo naopak pod zemí. V takovém případě pak promítnutí do 3D plochy slouží spíše jen jako výchozí poloha a mělo by následovat ještě ruční korekce výšky na skutečnou hodnotu. Totéž platí pro mosty, u kterých dojde k promítnutí do terénu v údolí, což je samozřejmě špatně. • Může nastat situace, kdy má bodový prvek (reprezentovaný nejčastěji buňkou) zaměřenou výšku, ale neexistuje zde vrchol v triangulované ploše. Pak dojde při jeho promítnutí do 3D k výpočtu výšky protnutím, přitom by bylo správné použít výšku přesně zaměřenou. Na druhou stranu by to mohl být problém u objektů, které jsou z nějakého důvodu opravdu nad terénem. Například se může jednat o studnu zaměřenou bodem ve středu horní části zakrytí. Pak by buňka zase visela ve vzduchu nad terénem. Doporučil bych tedy zaměřování takovýchto objektů výškově „na terénu“, aby k takovým situacím nedocházelo. • Doplnění terénu o hrany a povinné spojnice před triangulací probíhá ručním vkládáním čar na zaměřené body. Samozřejmě přitom nejsou vloženy vrcholové body na všechny lomy kresby a hrana trojúhelníku se pak mírně odchyluje od nakreslených polohopisných linií. Následkem toho se bude výška bodů po promítnutí do plochy mírně lišit od skutečné výšky hrany. Pokud je navíc linie od hrany odchýlená jen o malý úhel, mohla by v určitém místě hranu křížit a došlo by pak k přebytečnému vložení lomového bodu. Doporučil bych zde kontrolu doplnění lomových bodů před provedením konečného promítnutí kresby a nechal na posouzení uživateli, zda nechá vrcholy doplnit či nikoliv.
34
KAPITOLA 6. TESTOVÁNÍ A DISKUSE DOSAŽENÝCH VÝSLEDKŮ
• Pro tvorbu podkladů k prezentačním účelům by bylo vhodné doplnit aplikaci například o možnost nahradit buňky jinými. Zřetelné by to bylo zejména u stromů, sloupů nebo dopravních značek, kde by se plošná buňka nahradila 3D buňkou složenou z polygonů pokrytých texturou. Vizuálně zajímavým by též mohlo vykreslení ploch o definované výšce v místech hran stavebních objektů, čímž by se budovy vykreslily plasticky jako 3D objekty.
Kapitola 7
Závěr Práce naplňuje všechny cíle stanovené v zadání. Porovnává jednotlivá vývojová prostředí systému Microstation z hlediska výkonu, kvality programovacího prostředí a také z hlediska budoucí údržby a vývoje. Analyzuje skladbu vstupních dat a ze získaných poznatků vyvozuje způsoby, jak řešit problematiku promítnutí kresby do 3D. V implementační části pak popisuje důležité postupy, použité během programování. Na závěr hodnotí dosažené výsledky a popisuje možná problémová místa, vznikající při automatizovaném převodu do 3D. Pro ostré nasazení aplikace na data, která mají sloužit jako podklad pro projekční nebo stavební práce, by bylo rozumné ještě více rozšířit kontrolní funkce na úkor automatického zpracování. Zprávnost promítnutí kresby do 3D je zde naprosto zásadní. Nicméně i takto je aplikace užitečným nástrojem pro vytvoření představy o skutečné situaci a tvaru povrchu v zájmovém místě. Poslouží také pro kontrolu vytvořeného digitálního modelu terénu a vizualizaci problémových situací, které nemusí být při odděleném zpracování polohopisu a výškopisu zřetelné.
35
36
KAPITOLA 7. ZÁVĚR
Literatura [1] ARCADTA Praha. ARCADTA Praha, Geografické informační systémy [online]. 2007. [cit. 19. 5. 2010]. Dostupné z:
. [2] Bentley Systems ČR s.r.o. Bentley Systems, Incorporated - domovská stránka [online]. 2010. [cit. 18. 5. 2010]. Dostupné z: . [3] ESRI. ESRI - The GIS Software Leader - domovská stránka [online]. 2010. [cit. 18. 5. 2010]. Dostupné z: . [4] FOLBER M. AutoCAD Civil 3D: Průběh geologické sondy [online]. 2010. [cit. 17. 5. 2010]. Dostupné z: . [5] FOLBER M. AutoCAD Civil 3D: Opravdu VELKÝ digitální model terénu [online]. 2009. [cit. 17. 5. 2010]. Dostupné z: . [6] GEOVAP, spol. s r.o. GEOVAP, spol. s r.o. 2010 - domovská stránka [online]. 2010. [cit. 20. 5. 2010]. Dostupné z: . [7] GISOFT, v.o.s. GISoft - CAD, GIS, systémy pro správu infrastruktury, projekční systémy - domovská stránka [online]. 2010. [cit. 19. 5. 2010]. Dostupné z: . [8] KÁCHA, T. – UHŘÍČEK, J. SiteWorks a InRoads SelectCAD 7.1. 1. Kroftova 80, Brno, Česká republika : Intergraph ČR, spol. s r.o., VARS Brno, a.s., 1. edition, 1998. In Czech. [9] LANGHAMMER J. Aplikace výpočetní techniky ve fyzické geografii [online]. Univerzita Karlova v Praze, Přírodovědecká fakulta, 2009. [cit. 24. 5. 2010]. Dostupné z: . [10] Přispěvatelé Wikipedie. Digital elevation model [online]. Wikipedia, The Free Encyclopedia, 2010. [cit. 17. 5. 2010]. Dostupné z: . [11] Přispěvatelé Wikipedie. Geodézie [online]. Wikipedia, The Free Encyclopedia, 2010. [cit. 15. 5. 2010]. Dostupné z: .
37
38
LITERATURA
[12] SýKORA, P. MicroStation V8 XM edition : Podrobná uživatelská příručka. Computer Press, 1. edition, 2007. In Czech. ISBN 978-80-251-1523-7.
1. :
[13] Výzkumný ústav geodetický, topografický a kartografický. Slovník VÚGTK [online]. 2010. [cit. 19. 5. 2010]. Dostupné z: . [14] ČADA, V. Kapitola 8. Metody měření polohopisu [online]. duben 2005. [cit. 15. 5. 2010]. Dostupné z: . [15] ČADA V. Přednáškové texty z geodézie [online]. Západočeská univerzita, Fakulta aplikovaných věd, Katedra matematiky, 2010. [cit. 22. 5. 2010]. Dostupné z: . [16] ŠINDELÁŘ V. DIGITÁLNÍ MODEL TERÉNU - 1.ČÁST [online]. Grafika Publishing spol. s r.o., 1999. [cit. 18. 5. 2010]. Dostupné z: .
Příloha A
Seznam použitých zkratek CAD DGN GUI API GPS IDW DTM TIN GIS ISFF IGDS DXF DWG S-JTSK Bpv MDL VBA SDK
Computer-Aided Design. Počítačem podporované projektování. DesiGN. Formát souboru MicroStation. Graphical User Interface. Grafické uživatelské rozhraní. Application Programming Interface. Rozhraní pro programování aplikací. Global Positioning System. Inverse Distance Weighted interpolation. Digital Terrain Model. Digitální model terénu. Triangulated Irregular Network. Nepravidelná rojúhelníková sít. Geographic Information System. Geografický informační systém. Intergraph Standard File Format. Standardizovaný souborový formát. Intergraph’s Interactive Graphics Design System. CAD systém firmy Intergraph. Drawing Exchange Format. Formát souboru firmy Autodesk. DraWinG. Uzavřený formát firmy Autodesk. Systém Jednotné Trigonometrické Sítě Katastrální. Baltský - po vyrovnání. Výškový systém. MicroStation Development Language. Visual Basic for Application. Software Development Kit.
39
40
PŘÍLOHA A. SEZNAM POUŽITÝCH ZKRATEK
Příloha B
Renderovaný výsledek promítnutí do 3D
Obrázek B.1: Finální stav, pohled č. 1, renderováno metodou Ray trace
41
42
PŘÍLOHA B. RENDEROVANÝ VÝSLEDEK PROMÍTNUTÍ DO 3D
Obrázek B.2: Finální stav, pohled č. 2, renderováno metodou Ray trace
Obrázek B.3: Finální stav, pohled č. 3, renderováno metodou Ray trace
Příloha C
Typy grafických elementů v aplikaci Microstation Tabulka C.1: Typy grafických elementů Číslo Popis 1 Cell Library Header 2 Cell (complex) 3 Line 4 Line String 5 Group Data 6 Shape 7 Text Node (complex) 8 Digitizer Setup Dat 9 Design File Header 10 Level Symbology 11 Curve 12 Complex String (comex) 13 Conic 14 Complex Shape (compx) 15 Ellipse 16 Arc 17 Text 18 Surface (complex) 19 Solid (complex) 20 not used 21 B-Spline Pole 22 Point String 23 Circular Truncatedne 24 B-Spline Surface (cplex) 25 B-Spline Surface bodary Pokračuje na další stránce. . .
Název CELL_LIB_ELM CELL_HEADER_ELM LINE_ELM LINE_STRING_ELM GROUP_DATA_ELM SHAPE_ELM TEXT_NODE_ELM DIG_SETDATA_ELM DGNFIL_HEADER_ELM LEV_SYM_ELM CURVE_ELM CMPLX_STRING_ELM CONIC_ELM CMPLX_SHAPE_ELM ELLIPSE_ELM ARC_ELM TEXT_ELM SURFACE_ELM SOLID_ELM BSPLINE_POLE_ELM POINT_STRING_ELM CONE_ELM BSPLINE_SURFACE_ELM BSURF_BOUNDARY_ELM BSPLINE_KNOT_ELM
43
44
PŘÍLOHA C. TYPY GRAFICKÝCH ELEMENTŮ V APLIKACI MICROSTATION Tabulka C.1 – Pokračování Číslo 26 27 28 33 34 35 36 37 38 39 66 87 88 90 91 92 93 94 95 96 97 98 99 100 101 102 103 105 108 110 111
Popis B-Spline Knot Eleme B-Spline Curve (comex) B-Spline Weight Facr Dimension Element Shared Cell Definitionn Element Shared Cell Element Multiline Element Attribute Element DgnStore Component DgnStore Header MicroStation Applicion Raster Header Raster Component Raster Reference Atchment Raster Reference Coonent Raster Hierarchy Element Raster Hierarchy Component Reserved for raster data Table Entry Element Table Header Elemen View Group Element View Element Level Mask Element Reference Attach Element Matrix Header Matrix Int Data Matrix Double Data Mesh Header Reference Override Element Named Group Header Named Group Component
Název BSPLINE_CURVE_ELM BSPLINE_WEIGHT_ELM DIMENSION_ELM SHAREDCELL_DEF_ELM SHARED_CELL_ELM MULTILINE_ELM ATTRIBUTE_ELM DGNSTORE_COMP DGNSTORE_HDR TYPE44_ELM MICROSTATION_ELM RASTER_HDR RASTER_COMP RASTER_REFERENCE_ELM RASTER_REFERENCE_COMP RASTER_HIERARCHY_ELM RASTER_HIERARCHY_COMP RASTER_ TABLE_ENTRY_ELM TABLE_ELM VIEW_GROUP_ELM VIEW_ELM LEVEL_MASK_ELM REFERENCE_ATTACH_ELM MATRIX_HEADER_ELM MATRIX_INT_DATA_ELM MATRIX_DOUBLE_DATA_ELM MESH_HEADER_ELM REFERENCE_OVERRIDE_ELM NAMED_GROUP_HDR_ELM NAMED_GROUP_COMPONENT_ELM
Příloha D
Definice polohopisných atributů Tabulka D.1: Definice polohopisných atributů Vrstva Barva 1 23 5 1 5 2 5 3 5 85 5 97 6 99 7 4 7 5 7 6 7 7 7 8 7 9 7 10 7 11 7 12 7 13 7 25 7 25 8 99 9 14 9 8 10 10 10 15 10 16 10 17 10 19 Pokračuje na další
Popis Tečka bodu Budovy zděné,betonové Budovy kovové Budovy dřevěné Uzavření budovy Budovy nerozlišené Označ. vstup - vchod Plot drátěný - základ Plot drátěný Plot dřevěný - základ Plot dřevěný Plot kovový - základ Plot kovový Plot zděný - základ Plot zděný Plot živý - základ Plot živý Plot nerozlišený Plot nerozlišený Vstup na zahradu - vchod Zábradlí Svodidlo Opěrná zeď Silnice Chodník Rozhr. zpev. ploch Opěrná zeď - základ stránce. . . 45
46
PŘÍLOHA D. DEFINICE POLOHOPISNÝCH ATRIBUTŮ Tabulka Vrstva Barva 10 86 10 87 11 0 11 17 11 18 11 31 11 40 11 88 12 20 13 20 14 22 14 21 14 26 15 23 16 24 17 24 18 24 19 25 19 25 21 27 23 31 24 35 24 34 24 33 24 32 27 83 34 41 52 17 52 21 52 22 52 24 57 116 59 25 60 0 61 0 62 cokoliv
D.1 – Pokračování Popis Uzavření silnice zezadu Uzavření chodníku zezadu Schody Rozhr.ploch neroz. Nezpev.cesta Čára z pozemkové mapy Septik, větrák, přístřešek Uzavření plochy zezadu Kolejnice Osa kolejí Ter.pata Ter.hrana Hladina vod.ploch Výškové šrafy viditel. Vrstevnice zákl.5m Vrstevnice zákl.1m Vrstevnice zákl.0.5m Vrstevnice pomoc.1/4 I Vrstevnice pomoc.1/2 I Souv.porost Rozhr.kultur viditel. PRIS plyn Tel.budka obvod PRIS spoje PRIS elektro Rošt/Horská vpusť Reklama, nástěnka čára z pozemkové mapy 22/96-Hranice vlastnická 22/96-Hr.p.v vlastnická 22/96-Hranice chrán.území Hranice zakázky Klad listu 2, čísla Klad listu 1, čísla Křížky, vyn.čáry razítko, legenda
Příloha E
Instalační a uživatelská příručka
Obrázek E.1: Spuštění aplikace pomocí Projektového managera.
E.1
Instalace
Instalace nadstavbové aplikace se provede prostým nakopírováním do podadresáře VBA. Ten je buď ve výchozím umístění v adresáři \workspace\system\vba nebo v adresáři uživatelského prostředí \workspace\projects\název_prostředí\vba.
E.2
Spuštění
Spuštění aplikace lze provést v projektovém manažeru v menu Utitities → Macro → Project manager. Prostředí manažeru je vidět na obrázku E.1.
47
48
PŘÍLOHA E. INSTALAČNÍ A UŽIVATELSKÁ PŘÍRUČKA
Druhou možností je přímé zadání příkazu VBA RUN ZvednutiDo3D do příkazového řádku KeyIn. Příkaz vyhledá soubor s aplikací ve výchozím adresáři uživatelského prostředí a spustí ho.
E.3
Uživatelská příručka
Po spuštění aplikace se zobrazí hlavní dialogové okno, viz. obrázek E.2, které umožní zadat základní parametry programu.
E.3.1
Hlavní dialogové okno
Zde se provede výběr souboru, obsahujícího trinagulovavý povrch a vrstvy, ve které jsou
Obrázek E.2: Uživatelská příručka - hlavní okno aplikace
umístěny trojúhelníky. Dále je možné nastavit způsob zaokrouhlení vypočítaných souřadnic vrcholů. Tlačítkem Provést se spustí vykonávání samotného promítání kresby do 3D. Po dokončení činnosti je zobrazeno dialogové okno se statistikou provedených operací, viz. obrázek E.3. Zatržítko „Přitáhnout zbývající vrcholy“ provede zvednutí vrcholů s nulovou výškou do 3D, a to podle výšky nejbližšího sousedního vrcholu.
E.3.2
Dialogové okno Kontrola
Tlačítkem Kontrola v hlavním dialogovém okně se aplikace přepne do režimu provádění kontrolních operací nad kresbou, viz. obrázky E.4 a E.5. První záložka „Poloha vůči 3D ploše“ slouží k vyhledání elementů, které jsou mimo triangulovaný povrch a jejich vložení do výběrové množiny (Selection Set). Druhá záložka „Křížení s hranami trojúhelníků“ slouží k označení nebo doplnění vrcholů do míst křížení linií s hranou trojúhelníku, aby došlo k zalomení liniového elementu. Je možné
E.3. UŽIVATELSKÁ PŘÍRUČKA
49
Obrázek E.3: Uživatelská příručka - statistika zpracování výkresu
nastavit minimální vzdálenost k nejbližšímu vrcholu z důvodu zachování dané topologické struktury. Posledním voliteným parametrem je minimální úhel, který zabrání přidání velkého počtu vrcholů na linii, pokud svírá menší jak zadaný úhel. Tato situace nastavá v případech, kdy linie neleží přesně na hraně trojúhelníku, ať už vlivem zaokrouhlení nebo nepřesností při spojování kresby. Tlačítkem Proveď se vykoná zvolená operace, tlačítkem Zpět se vrátíme do hlavního dialogového okna.
Obrázek E.4: Uživ. příručka - kontrola polohy
Obrázek E.5: Uživ. příručka - kontrola křížení
50
PŘÍLOHA E. INSTALAČNÍ A UŽIVATELSKÁ PŘÍRUČKA
Příloha F
Obsah přiloženého CD Přiložený CD-ROM obsahuje následující adresářovou strukturu: • data/ Složka obsahuje data, použitá pro testování funkcí aplikace. • speedtest/ csharp/ - Test rychlosti v jazyce C#. mdl/ - Test rychlosti v jazyce MDL. vba/ - Test rychlosti v jazyce VBA. • text/ Složka obsahuje zdrojové kódy BP pro sazbu v LATEXu. • vba/ Složka obsahuje vytvořenou hlavní aplikaci. • vba_src/ Složka obsahuje zdrojové kódy hlavní aplikace. • lysamila_2010bach.pdf Tato práce ve formátu PDF. • readme.txt Návod, jak nainstalovat a spustit aplikaci.
51