DWG a jiná cizí data

Uživatelovy nesnáze (1.)

Tímto článkem uvádíme nový, nepravidelný seriál, v němž ukážeme konkrétní hlavolam, s nímž se na nás obrátil (nějaký) uživatel. I když se bude jednat o speciální problém (závadu, nehodu, kolaps,...), pokusíme se postup při řešení zobecnit. První Nesnáz se týká převodu "neplných" druhů čar (čárkovaná, čerchovaná,...) do formátu DWG.

Dlouholetý a zkušený (20 let praxe) uživatel mi poslal emailem výkres DGN (na němž pracoval) a výkres DWG, který z něj "udělal" postupem Uložit jako... "Dělám to tak vždy, a najednou TOHLE!"

Protože tento uživatel má u axisu zaplacenou plnou technickou podporu - viz Ceník - tak jsem museli všeho nechat, a začali zjišťovat, co "TOHLE" znamená.


Otevřel jsem jak původní DGN výkres (nazveme ho CHYBA-DGN)  snadno našel lomené čáry - pravděpodobně jakési kabelové vedení - které byly přerušované, přesněji: jejich atribut "typ čáry" byl nastaven na hodnoty 2,3,4.  Tento výkres uživatel "jako vždycky, nic nebylo jinak!" uložil do DWG  (nazveme ho CHYBA-DWG), ale tyto přerušované čáry se v DWG výkresu ukazovaly jako plné - jako kdyby jejich atribut "typ čáry" byl v DGN výkresu nastaven na hodnotu 0.

První, co nás napadlo: Uživatel má někde v "převodních tabulkách" nastaveno, že při ukládání do DWG formátu se všechny typy čar uloží jako plné, tedy nepřerušované. Takovéto nastavení opravdu lze definovat (pro zvídavé: v CSV souboru). Jenže tato stopa rychle vychladla. Zkusil jsem výkres CHYBA-DGN uložit do CHYBA-DWG na svém PC, v čistých laboratorních podmínkách, a ejhle! I u mne se všechny přerušované čáry v CHYBA-DWG ukázaly jako plné. U mne se děje totéž, co u uživatele. Lokální uživatelovo nastavení viníkem být nemůže.

Podíval jsem se blíže na jednu z přerušovaných lomených čar v CHYBA-DGN. Vše bylo v pořádku. Prvek je nakreslen typem čáry číslo 4 (čerchovaná čára).


Tutéž kontrolu u stejné čáry (označena číslem 14) jsem provedl ve výkresu CHYBA-DWG. A zde je to jinak, typ čáry se hlásí nikoliv jako "4", ale jako "DGN Style 4".

Změna " 4 => DGN Style 4" je nutná. Zatímco MicroStation rozeznává 8 základních typů čar (má je očíslovány 0 až 7), tak AutoCAD má takový základní typ jen jeden - je to plná čára a nazývá ji "Continuous" tj. nepřerušovaná, nebo-li plná. Ostatní MSTN typy čar (1 až 7) se automaticky v DWG převádí (pokud uživatel nenařídí explicitně jiný postup) do tzv. autocadovských line stylů. Každý "line-styl" je definován jako sekvence čárek a mezer - tedy stejně, jako typy čar v MicroStationu. Tyto definice jsou pod srozumitelnými názvy (DGN Style n) uloženy přímo v DWG výkresu. To je logické a správné, protože uložení těchto definic do externího souboru *.LIN by uživatelům přineslo problémy, museli by s DWG výkresem distribuovat i jakýsi další LIN soubor.

Tedy: Změna "4" na "DGN Style 4" je v pořádku a bez ní bychom se v DWG výkresu neobešli. Proto pátrejme dále: Jak je v CHYBA-DWG definován onen DGN Style 4? To zjistíme nejjednodušeji v dialogu pro výběr aktivního typu/druhu čáry.

Zdá se, že DGN Style 4 je řádně definován, a je uložen nikoliv v nějaké zdrojové RSC knihovně, ale přímo v aktivním výkresu - jak to říká zvýrazněný řádek v dolní polovině dialogu. Na velkém tlačítku u dna dialogu je možné vybraný styl "DGN Style 4" aktivovat a prohlédnout si ho. A tady je zřetelný rozpor! Zatímco ve výkresu (přesněji: v pohledu, kde je výkres zobrazen) se ukazuje plná čára, tak definice stylu jasně ukazuje, že se jedná o čáru čerchovanou. Zdá se, že jsme u jádra problému. Ale proč to tak je, zatím nevíme...

Je třeba zkontrolovat, co se bude dít, když tuto chybu budeme simulovat s tzv. "čistým", tedy zcela novým výkresem. Tento obecný postup se hodí často, protože nám pomůže rozhodnout, zda je chyba v (celém) MicroStationu, nebo v (jednom) výkresu. Vytvoříme si zcela nový výkres, pokud možno z nějakého prověřeného zakládacího výkresu. A do něj nakreslíme několik lomených čar s atributem Typ čáry 2 a 3 a 4 atd. Pak tento zkušební výkres uložíme do DWG a toto DWG otevřeme. Mohou nastat dvě možnosti. Buď jsou lomené čáry v DWG výkresu plné (stejně jako v CHYBA-DWG) - pak je chyba někde v MicroStationu, nebo jsou lomené čáry v novém DWG výkresu správně čárkovány, čerchovány, apod. - pak musí být chyba ve výkresu CHYBA-DGN.

Nastala druhá možnost - čáry v DWG byly v pořádku. Otevřel jsem tedy znovu výkres CHYBA-DGN a podíval se do dialogu pro výběr druhů čar.

Překvapení! (AutoCADovské) styly čar jsou i zde. Vždyť podle vší logiky měly vzniknout z (MicroStationovských) typů čar až při ukládání do DWG. Tady (v DGN výkresu) jsou zcela zbytečně, přesněji: jsou tady, aby škodily, protože bůhvíjak jsou definovány. A navíc při převodu (ukládání) tohoto DGN do DWG se už podle typů čar 1,2,3,..,7 správné DGN Style n nevytvoří, protože ve DGN výkresu takové styly čar existují. Sice definované blbě, ale existují. 

Zdroj problému je tedy odhalen, avšak práce technické podpory nekončí. Nešťastný uživatel se nespokojí s hlášením: "Víme, co je blbě!" Uživatel potřebuje problém vyřešit - v tomto případě mít v DWG výkresu přerušované čáry.

Vypadá to, že problém snadno vyřeší rychlá a rázná exekuce: Smažeme z výkresu CHYBA-DGN všechny škodlivé a nepotřebné druhy čar "DGN Style n", a pak výkres CHYBA-DGN uložíme do DWG, všechna "DGN Style n" se vytvoří znovu a správně - stejně jako když jsme testovali o pár odstavců výše "čistý" výkres.

Avšak jak už to tak v dobrých thrillerech bývá, na posledním schodu před pokladem číhá zádrhel. Potkalo to i nás: Možnost, jak z (jakéhokoliv) DGN výkresu smazat v něm uložený druh čáry, jsme nenašli. Druhy čar lze mazat z RSC knihoven typu LSTYLE.RSC, ale v DGN souboru (asi) nikoliv. Nezbývá než konstatovat, že je někdo blbej. Buď Axis technická podpora (protože jsme tuto možnost nenašli), nebo někdo z Bentley (protože na tuto potřebnou akci zapomněli). 

Musíme použít obecný postup, který se hodí v situacích, kdy DGN výkres není v pořádku. Např. obsahuje nějaká nesmyslná nastavení, nerozumné parametry, přebytečné aplikační prvky. Prostě je v něm nějaký sajrajt. Myšlenka je jednoduchá: do nového "čistého" výkresu, zkopírujeme z pokaženého DGN všechny prvky, ale už nic jiného. Postup je jednoduchý:

  1. Vytvoříme nový výkres (jako zakládací výkres by mohl posloužit třeba SEED2D.DGN nebo SEED3D.DGN) a nastavíme v něm pracovní jednotky stejně jako ve výkresu pokaženém.
  2. Do nového prázdného výkresu připojíme SHODNĚ jako referenci pokažený výkres.
  3. Zapneme v referenci (v pokaženém výkresu) všechny vrstvy a obklopíme ji ohradou (režim Uvnitř).
  4. Zkopírujeme ohradu (tj. všechny prvky z reference) do aktivního (dosud prázdného a čistého) výkresu.
  5. Referenci odpojíme.

Po provedení tohoto postupu jsme získali "stejný" výkres jako CHYBA-DGN, s jedinou odlišností - přebytečný a škodlivý balast (např. druhy čar DGN Style n) se nezkopíroval. Po uložení do DWG zůstaly všechny čárkované a čerchované čáry zachovány. Závada byla nejen odhalena, ale i odstraněna. Dnes člověk nad MicroStationem zvítězil, avšak nejásejme - příště to může být opačně...

Zbývají ještě dvě nejasnosti.

A) Jak se do ve výkresu CHYBA-DGN dostali "autoCADovské" styly DGN Style n?

Zde mohu nabídnout jen hypotézu. Onen výkres CHYBA-DGN původně vznikal jako DWG výkres v nějakém AutoCADu, pak s ním (ve formátu DWG) pracoval někdo v MicroStationu - a v tomto okamžiku se v něm styly DGN Style n automaticky vytvořily, následně byl v MicroStationu tento DWG výkres uložen do formátu DGN, avšak ty autoCADovské styly DGN Style n se do DGN výkresu uložily také.

B) Jak to, že se v náhledu na DGN Style 4 v dialogu Druhy čar (viz obrázek výše) ukázala na tlačítku čerchovaná čára, avšak v pohledu byla čára plná?

Viníka tohoto rozporu jsme vypátrali náhodou. Zkusili jsme nastavovat různá měřítka v dialogu Druhy čar a u hodnoty 0.00001 jsme náhle prozřeli - přesněji: rozkreslená čára s druhem čáry DGN Style 4 a Měřítkem = 0.00001 se náhle stala čerchovanou. Stejně to fungovalo i u ostatních DGN Style n. Všechny tyto styly čar měly nesmyslně definované měřítko. Jejich cyklus byl ohromný (řádově několik desítek kilometrů) což se na lomené čáře se segmenty o délce několik metrů projevilo tak, že se "ukazovala" jako plná čára - na mezeru nikdy nezbylo místo. Proč bylo měřítko pro druhy čar nesmyslné? Možná proto, že někdo někdy v minulosti nějak měnil nastavení pracovních jednotek, popř. rozlišení výkresu a definice DGN Style n se o této akci nedozvěděly.

Nakonec všechno dobře dopadlo. Ztrápený uživatel se dočkal (cca 3 hodiny po zaslání prvního emailu) vysvobození, Axis technická podpora je o něco moudřejší a čtenář, který si dosud technickou podporu nezakoupil, o tom možná bude uvažovat :-)

Děkujeme za pozornost!

 

Prosím zaregistrujte se pro psaní komentářů

Lidí v této konverzaci

  • Host (Dan)

    Dobrý. Palec nahoru!