TECHSOFT s.r.o., Podtatranská 4931/23, 05801 Poprad, Slovak Republic, http://www.techsoft.sk
CAD HELP
Súbory tvarov a fontov (SHX) pre AutoCAD sú generované kompilovaním definící tvarov (SHP). Tieto definície (SHP) možno vytvárať, resp. modifikovať ľubovoľným textovým editorom umožňujúcom volne pracovat s ASCII súbormi.
Syntax popisu symbolu, alebo znaku je vždy zhodná bez ohľadu na cielové použitie (tvar vs. písmo) tejto definície. Ak takáto definícia má byť používaná ako písmo AutoCADu, tak prvá položka v súbore nepopisuje žiadny znak, ale nesie informáciu o vlastnom fonte. Ak táto úvodná položka je popisom tvaru, bude vygenerovaný súbor tvarov.
Byť schopný vytvoriť svoje vlastné definície tvarov je veľmi užitočná znalosť. Musíte však vziať na vedomie, že tento problém je vľmi zložitý a jeho pochopenie vyžaduje veľkú trpezlivosť.
Popis tvarů ve speciálním formátu (viz. dále) uložíte do textového souboru s koncovkou . shp. Takový soubor vytvoříte v obyčejném textovém editoru, nebo v textovém procesoru umožňujícím ukládat textové soubory v ASCII formátu. Zkompilováním takového souboru získáte soubor s příponou . shx.
Na príkazový riadok napíšte KOMPILUJ.
AutoCAD zobrazí dialogový box pre výber požadovaného súboru definícií tvarov (SHP). Po volbe súboru začína kompilácia. Ak AutoCAD narazí na chybu, hláškou vám oznámi typ chyby a číslo riadku, ktorý ju obsahuje. Po úspešnej kompilácii sa zobrazí následujúcí hláška:
Kompilácia prebehla úspešne.
Výstupný súbor názov.shx obsahuje nnn bytov.
Názov zkompilovaného súboru je rovnaký ako názov zdrojového súboru, len prípona je zmenená na SHX. Ak je súbor SHX definícií fontu, potom príkazom PÍSMO môžete vytvoriť novú definíciu písma vo výkrese. Potom môžete použiť pre umiestenie textu vo výkrese jeden z príkazov TEXT, DTEXT nebo MTEXT. Ak definícia obsahuje tvary, načítajte ich do pamäti príkazom ČTI a podľa potreby vkladajte príkazom TVAR (má podobnú filozófiu ako príkaz VLOŽ ).
Tvary sú objekty používané podobným zpôsobom ako bloky. Skôr ako môžete tvary používať, musíte načítať příslušný skompilovaný súbor definícií tvarov príkazom ČTI. Príkazom TVAR (_SHAPE) neskôr vkladáte tvary definované týmto súborom do vášho výkresu. Behom procesu vkladania môžete špecifikovať merítko a rotáciu pre každý individuálny objekt tvar. AutoCADové SHP fonty sú zvláštnym typom tvaru a definujú sa rovnakým spôsobom ako tvary.
Bloky sú oveľa univerzálnejšie a jednoduhšie použitelné v porovnaní s tvarmi. Tvary sú na druhej strane velmi efektívne z hľadiska spotreby pamäti a náročnosti na vykreslovanie. Užívateľom definované tvary sú užitočným nástrojom v prípadoch, kedy je potrebné vkladať mnoho instancií určitého objektu a kedy rýchlosť je kritická.
Jednotlivé riadky v definícii tvarov môžu dosahovať dĺžky maximálne 128 znakov. Dlhšie riadky nieje možné spracovať. AutoCAD ignoruje prázdne riadky a text napravo od stredníku. Stredník je tým pádom prostriedkom pre vkladanie komentárov do týchto súborov.
Popis každého tvaru štartuje záhlavím a nasleduje jeden alebo viac riadkov nesúcích slabiky vlastnej definície. Tie sú oddelené čiarkami a ukončené hodnotou 0.
*číslo_tvaru,def_slabík,meno_tvaru
slabika1,slabika2,slabika3,...,0
Jednotlivé polia definícií majú nasledujúci význam:
číslo_tvaru
Číslo medzi 1 a 258 (pre Unicode písma až 65535), jednoznačné v rámci súboru začaté hviezdičkou (*).Každý tvar v definícii musí mať svoje číslo. Čísla 256, 257 a 258 sú, okrem Unicode písmen, vyhradené pre symboly stupeň, +/- a priemer. Tieto symboly sa v Unicode písmach objavujú v číslach tvarov U+00B0, U+00B1 a U+2205 a sú časťou rozšírenej znakovej sady Latin A".
V súboroch fontov (súbory definujúce pre každý znak odpovedajúci tvar) potom toto číslo musí odpovedať ASCII kódu daného znaku. Pre definíciu tvarov na konkrétnych číslach nezáleží.
def_slabík
Počet slabík (slabika1,slabika2,slabika3) vrátane ukončovacej hodnoty 0 použitých pre definíciu príslušného tvaru. Medzná hodnota je 2000 slabík.
meno_tvaru
Názov tvaru. Názvy TVARov musia byť písané veľkými písmenami; názvy obsahujúce malé písmená sa ignorujú a slúžia ako orientačné značky pri popisu písem.
slabika
Slabika špecifikácie tvaru. Každá slabika je buď informáciou o smere a dĺžke vektoru, alebo jedným zo špeciálnych kódov. Slabika môže byť zapísaná v desiatkovej, alebo šestnástkovej sústave. V tejto časti budeme v príkladoch používať obidva spôsoby (ako je to aj zvykom v množstve skutočných súboroch definícií). Ak je prvým znakom slabiky 0, potom je slabika interpretovaná v šestnástkovej sústave.
Najjednoduhšia slabika definície tvaru nesie informáciu o dĺžke a smere vektoru zakódovanú do jedného čísla. Kódy dĺžky a smeru vektoru sa najlepšie zapisujú v hexadecimálnom tvare - prvý znak je 0 (hovorí, že sa jedná o hex. číslo), druhý znak určuje dĺžku. Platné hodnoty sú 1 (vektor dlhý jednu jednotku) až F (15 jednotiek). Tretí znak znamená smer vektoru. Následujúcí obrázok ukazuje kódy smerov:
Kódy smeru vektoru
Údaj o dĺžke všetkých vektorov v predcháduajúcej ilustrácii je zhodný. Diagonálne vektory sú “pretiahnuté" aby sa zhodovali s X a Y súradnicami najbližších kolmých vektorov. Je to analógia funkcie rastru v AutoCADe.
Príklad:
Nasledujúci príklad definuje tvar nazvaný DBOX (bolo mu pridelené číslo 230):
*230,6,DBOX
014,010,01C,018,012,0
Takáto sekvencia definičných slabík vytvorila štvorec vysoký a široký práve jednu jednotku s diagonálou bežiacou z ľavého dolného do pravého horného rohu. Uložte túto definíciu do súboru dbox.shp a pomocou príkazu KOMPILUJ vygenerujte súbor dbox.shx. Príkazem ČTI natiahnite túto definíciu tvaru a vyvolajte príkaz TVAR (_SHAPE):
Príkaz: tvar
Meno (nebo ?): dbox
Počiatočný bod: 1,1
Výška <aktuálna>: 2
Úhol otočenia <aktuálny>: 0
Ďalšia ilustrácia ukazuje výsledný tvar:
Vedľa prostého kreslenia vektorov môže definičná slabika obsahovať nasledujúce špeciálne kódy znamenajúce ďalšie akcie a doplňujúce informácie. Špeciálny kód je štruktúrou podobný zápisu jednoduchého vektoru, ale jeho dĺžka je 0. V praxi teda prvý aj druhý znak trojznakového (hexa) zápisu sú nuly, alebo je kód zapísaný jednoducho dekadickým zápisom (t.j. 008 a 8 sú platné špecifikácie).
Špeciálne kódy
Kód Popis
000 Koniec definície tvaru
001 Zapnúť kreslenie (pisátko dole)
002 Vypnúť kreslenie (pisátko hore)
003 Deliť dĺžky vektorov následujúcou slabikou
004 Násobiť dĺžky vektorov následujúcou slabikou
005 Uložiť aktuálnu pozíciu pisátka do zásobníka
006 Vybrať pozíciu pisátka zo zásobníka
007 Vykresliť podtvar určený následujúcou slabikou
008 Posun o (X,Y) - podľa dvoch nasledujúcich slabík
009 Niekoľko posunov o (X,Y) - ukončených slabikami (0,0)
00A Osminový oblúk definovaný dvoma nasledujúcimi slabikami
00B Obecný oblúk definovaný následujúcimi piatimi slabikami
00C Oblúk definovaný posunom (X,Y) a vybúlením
00D Niekoľko naväzujúcich oblúkov určených vybúlením
00E Nasledujúcu operáciu vykonaj len ak je vykreslovaný vertikálny text
Kód 0: Koniec definície tvaru
Kód 0 znamená ukončenie definičnej sekvencie tvaru.
Kódy 1 a 2: Riadenie pisátka
Kódy 1 a 2 ovládajú režim pisátka (pera). Myslené pisátko je spustené na začiatku definície každého tvaru. Ak je pisátko spustené (aktivované), definičné vektory znamenajú vykreslovanie odpovedajúcich čiar. Ak je zdvihnuté (deaktivované), vektory sú len posuny na novú pozíciu bez kreslenia.
Kódy 3 a 4: Riadenie veľkosti
Kódy 3 a 4 riadia relatívnu veľkosť jednotlivých vektorov. Výška zadaná v príkaze TVAR na počiatku odpovedá dĺžke jednotkového kolmého vektoru (smery 0, 4, 8, C). Kódy 3 a 4 sú nasledované slabikou odpovedajúcou celočíselnému faktoru zmenšenia, resp. zväčšenia (1 až 255). Ak chcete, aby výška v príkaze TVAR odpovedala výške celého symbolu a potrebujete pre jeho nakreslenie na výšku 10 rovnako dlhých vektorov (= používate raster vysoký 10), môžete použiť sekvenciu 3,10 pre úpravu merítka (jednotkový vektor odpovedá desatine výšky zadanej príkazom TVAR). Faktor merítka sa kumuluje - vynásobenie 2 a neskôr 6 dá merítko x12. Na konci tvaru budete obvyčajne potrebovať vrátiť merítko na pôvodnú hodnotu - velmi dôležité je to pre podtvary a fonty. AutoCAD totiž túto hodnotu za vás automaticky neupravuje.
Kódy 5 a 6: Uloženie a výber uloženej pozície
Kódy 5 a 6 uložia, resp. vyberú aktuálne súradnice pisátka behom kreslenia tvaru, takže sa môžete ľahko vrátiť k určitému bodu v tvare. Musíte(!) vybrať všetko, čo na zásobník uložíte - hĺbka zásobníku pozícií je len 4. Ak zásobník pretečie z dôvodu použitia príliš veľa operácií ulož a málo operácií výber, pokus o vykreslenie takého tvaru vyvolá nasledujúcu hlášku:
Zásobník pozící pretiekol pri kreslení tvaru nnn
Podobne, ak sa snažíte vybrať viac než bylo uložené, bude zobrazená následujúca hláška:
Zásobník pozící nedostačuje pri kreslení tvaru nnn
Kód 7: Podtvar
Kód 7 znamená odkaz na podtvar. Pre fonty, ktoré niesú UNICODE, slabika následujúca kód 7 určuje číslo tvaru, ktorý bude vykreslený (1 až 255). Pre UNICODE fonty, slabika následujúca kód 7 určuje číslo tvaru v rozsahu 1 až 65535. Čísla UNICODE tvarov musia byť definované pomocou 2 bytov. Potom je vykreslený tvar s týmto číslom (v rovnakom SHP súbore). Dajte pozor na to, že režim pisátka nieje automaticky nijak upravovaný. Po dokončení vykreslovania podtvaru pokračuje kreslenie vlastného tvaru.
Kódy 8 a 9: Posuny (X,Y)
Jednoduché vektory určené jednou slabikou môžu viesť len v 16 preddefinovaných smerech a ich maximálna dĺžka je 15. Takéto obmedzenia prinášajú vysokú úspornosť definície, ale niekedy sú príliš limitujúce. Pomocou kódov 8 a 9 môžete generovať neštandardné vektory určené relativnými súradnicami X a Y. Kód 8 musí byť nasledovaný dvoma slabikami vo formáte:
8,posun-X,posun-Y
Hodnoty posunu sa môžu pohybovať v rozmedzí -128 až +127. Znak + je nepovinný, naviac pre zvýšenie čitateľnosti môžete použiť zátvorky. Následujúci príklad kreslí čiaru (alebo psúva pisátko) na súradnice 10 vľavo a 3 hore.
8,(-10,3)
Po interpretácii dvoch hodnôt posunu sa ďalšia hodnota opät chápe ako jednoduchý vektor, alebo špeciálny kód.
Kód 9 možno použiť pre vykreslenie niekoľkých naväzujúcich neštandardných vektorov. Tento kód musí byť následovaný ľubovoľným počtom párov súradníc posunu. (0,0) ukončuje takúto sekvenciu. Nasledujúci príklad nakreslí tri neštandardné vektory a vráti sa do základného režimu:
9,(3,1),(3,2),(2,-3),(0,0)
Pamätajte, že sekvenciu musíte ukončiť párom (0,0) - AutoCAD inak nepozná ďalšie slabiky popisujúce štandardné vektory a špeciálne kódy.
Kód 00A: Osminový oblúk
Kód 00A (alebo 10) používa dve nasledujúce slabiky pre definíciu oblúku. Taký oblúk sa volá osminový, pretože sa tiahne cez niekoľko 45-stupňových oktantov na ktorých hranici tiež začína a končí. Oktanty sú číslované proti smeru hodinových ručičiek od pozíce “3 hodiny" - viď. obr:
Špecifikácia oblúku je:
10,polomer,(–)0SC
Polomer je ľubovoľná hodnota z rozsahu 1 až 255. Ďalšia slabika určuje smer oblúku (kladné číslo = proti smeru hod. ruč.), počiatočný oktant (hodnota S - číslo medzi 0 a 7) a počet oktantov, ktorými oblúk prechádza (hodnota C, číslo medzi 0 a 7, 0 znamená osem oktantov, teda celý kruh). Pre zlepšenie čitateľnosti môžete použiť zátvorky. Pozrime si nasledujúci fragment definície tvaru:
...012,10,(1,-032),01E,...
Taký úsek nakreslí jednotkový vektor diagonálne vpravo nahor, oblúk v smere hodinových ručičiek z oktantu 3 (s polomerom 1 a prechádzajúcim 2 oktantami) a ďalej jednotkový vektor diagonálne vpravo dole - ako to ukazuje nasledujúca ilustrácia.
Kód 00B: Obecný oblúk
Špeciálny kód 00B (11) je určený pre kreslenie oblúkov, ktorých koncové body nutne neležia na hraniciach oktantov. Popis oblúku vyžaduje 5 dalších slabík:
11,zač_posun,kon_posun,význ_pol,polomer,(-)0SC
Hodnoty zač_posun a kon_posun určujú, ako ďaleko od hranice oktantu oblúk začína, resp. končí. Význ_pol reprezentuje horných osem bitov vyjadrujúcich polomer; ak polomer nepresiahne 255, tak bude vždy 0. Skutočný polomer sa počíta ako 256-násobok význ_pol plus polomer. Hodnoty polomer a posledná slabika majú rovnaký význam, ako pri kóde 00A (osminový oblúk).
Číslo zač_posun dostanete tak, že vypočítate rozdiel (v stupňoch) medzi hranicou oktantu (t.j. násobkom 45 stupňov) a počiatkom oblúku. Tento rozdiel vynásobíte 256 a vydelíte 45. Ak oblúk začína práve na hranici oktantu, je táto hodnota 0.
Kon_posun sa vypočíta rovnakým spôsobom - použijete rozdiel medzi hranicou posledného pretnutého oktantu a konca oblúku. Ak oblúk končí na hranici oktantu, je táto hodnota 0.
Príklad: oblúk s polomerom 3 začínajúci na 55 stupňoch a končiaci na 95 stupňoch sa kóduje následovne:
11,(56,28,0,3,012)
Tu je vystvetlenie:
zač_posun = 56 pretože ((55 - 45) * 256 / 45) = 56
kon_posun = 28 pretože ((95 - 90) * 256 / 45) = 28
význ_pol = 0 pretože (ploměr < 255)
polomer = 3
počiatočný oktant = 1 pretože oblúk začína v 45 stupňovom oktante
koncový oktant = 2 protože oblouk končí v 90 stupňovom oktante
Kódy 00C a 00D: 'vybúlením' definované oblúky
Špeciálne kódy 00C a 00D (12 a 13) sú ďalším mechanizmom vkladania oblúkov do definícií tvarov. Podobajú sa kódom 8 a 9 tým, že tiež definujú posun o (X,Y). Tieto kódy však umožňujú kresliť oblúky pridaním faktoru vybúlenia k tomuto posunu. Kód 00C kreslí jeden oblúk, zatiaľ čo kód 00D vykreslí naväzujúcu sekvenciu oblúkov (oblúková krivka) až do slabík posunu (0,0).
Kód 00C musí byť nasledovaný tromi slabikami popisujúcimi oblúk:
0C,posun_X,posun_Y,vybúlenie
Hodnoty posunu X a Y a hodnota vybúlenia sa môžu pohybovať od -127 do +127. Ak veľkosť posunu je D a výška oblúku je H, hodnota vybúlenia je ((2 * H / D) * 127). Ak oblúk ide po smere hodinových ručičiek, tak má záporné znamienko.
Polkruh má hodnotu vybúlenia 127 (alebo -127) a je to najväčší oblúk, aký možno týmto spôsobom vyjadriť (jedným segmentom, pre väčšie oblúky použite dve takéto inštrukcie). Hodnota 0 je platným zápisom úsečky. Všimnite si, že popis úsečky kódom 8 je o slabiku kratší.
Kód obloukovej krivky (00D, 13) je nasledovaný žiadnou alebo niekoľkými takými trojicami slabík a sekvencia je ukončená hodnotami (0,0). (Uvedomte si, že ukončovacia sekvencia je len dvojslabičná, vybúlenie nieje určené). Znak podobný S by mohol byť definovaný takto:
13,(0,5,127),(0,5,-127),(0,0)
Zdegenerované oblúkové segmenty (vybúlenie=0, úsečky) sú efektívne pre popis priamych segmentov vnútri oblúkovej krivky. Je to úspornejšia definícia, ako ukončovanie krivky, vloženie ptiameho segmentu a štart novej krivky.
Číslo -128 nesmie byť použité ako hodnota vybúlenia.
Kód 00E: Príznak vertikálneho textu
Kód 00E (14) sa používa len pri popise obojsmerných fontov (horizontálny aj vertikálny text). Ak na neho prekladač narazí, ďalší kód sa vykoná, alebo nevykoná - podľa orientácie práve vykreslovaného textu. Ak ide o text vertikálny, ďalšia operácia sa vykoná; ak je horizontálny, ďalší kód sa preskočí.
V horizontálnom texte je za počiatočný bod každého znaku považovaný ľavý koncový bod základnej čiary, vo vertikálnom potom najvyžší stredový bod znaku. Na konci definície sa obvykle vykoná zdvihnutie pisátka a presun na pozíciu ďalšieho znaku. Pre horizontálny text je to vpravo, pre vertikálny potom dole. Ďpeciálny kód 14 (00E) sa primárne používa k rozlíšeniu spôsobu presunu na nový znak v horizontálnom a vertikálnom texte. Napríklad táto definícia písmena D môže býť použitá v definícii textu pre horizontálne aj vertikálne použitie:
*68,22,ucd
2,14,8,(-2, 6),1,030,012,044,016,038,2,010,1,06C,2,050,
14,8,(-4,-3),0
Ak sa rozhodnete vytvoriť si vlastnú znakovú sadu (font), preštudujte si najskôr súbor txt.shp a zdrojové formy ostatných dodávaných fontov. Sú to praktické príklady použitia tu popisovaných techník. Tento súbor nájdete na CD Autocadu.
AutoCADové znakové sady sú súbory popisujúce tvary, kde čísla tvarov odpovedajú ASCII kódom jednotlivých znakov. zoznam ASCII kódov nájdete tiež na konci tejto nápovedy.
Kódy v rozmedzí 1 až 31 sú vyhradené pre riadiace znaky a len jeden sa v popisoch fontov používa:
10 (LF)
Odriadkovanie (LF) musí bez kreslenia posunúť pisátko o jeden riadok nižšie. Je využívaný napríklad po sebe idúcimi príkazmi TEXT pre umiestnenie nového riadku pod posledný.
*10,5,lf2,8,(0,-10),0
Zmenou hodnoty pre posun dole môžete upraviť riadkovanie textov.
Fonty musia obsahovať definíciu špeciálneho tvaru 0 nesúceho informácie o vlastnom fonte. Má nasledujúcu syntax:
*0,4,názov_písma
hore,dole,režim,0
Hodnota hore udáva koľko dĺžok jednotkových vektorov odpovedá vzdialenosti vrškov veľkých písmen od základnej čiary a obdobne dole špecifikuje o koľko sú najnižšie krivky malých písmen pod základnou čiarou. Základná čiara odpovedá linke na papieri. Tieto hodnoty udávajú základné informácie o veľkosti písma a slúžia pre určenie faktoru zmenšenia tak, aby veľkosť písma odpovedala výške zadanej príkazom TEXT.
Slabika režim musí byť 0 pre horizontálny font a 2 pre obojsmernoú (horizontálnu aj vertikálnu) sadu. Špeciálny kód 00E (14) je platný len keď režim je 2.
Štandardné sady dodávané s AutoCADom obsahujú naviac niektoré znaky nutné pre správnu funkciu kótovania.
%%d - Symbol stupňa (°)%%p - Plus/mínus tolerančný symbol (±)%%c - Znak priemeru (&)
Poznámka:
AutoCAD vkláda znaky podľa ich ASCII hodnoty, nie podľa názvu. Aby ste šetrili pamäťovým miestom, píšte meno tvaru malými písmenami. Tie kompilátor ignoruje (neukláda do pamäte), slúžia len pre vašu orientáciu.
*65,11,uca
024,043,04d,02c,2,047,1,040,2,02e,0
Pretože meno tvaru uca je písané malými písmenami, nie je načítané do pamäte AutoCADu. Je však praktické pre rozpoznánie znaku pri editácii tohoto súboru - uca je v tomto prípade skratkou anglického výrazu pre 'veľké A'.
Niektoré jazyky, napr Japonština, používajú stovky, alebo tisíce nie-ASCII znakov. Aby takéto znaky bolo možné vkladať do výkresu, podporuje AutoCAD špeciálny typ definície nazývaný “veľká sada".
So znakovou sadou obsahujúcou stovky alebo tisíce znakov treba pracovať jiným spôsobom, než s bežným ASCII fontom obsahujúcom max 256 znakov. Vedľa náročných techník pre prehľadávanie takého súboru musí AutoCAD poznať spôsob, ako vyjadrovať znaky jednou a zároveň viac (2) slabikami. Taký font musí na začiatku súboru obsahovať špeciálnu definíciu.
Prvý riadok Veľkej sady musí vyzerať následovne:
*BIGFONT počet_znakov,počet_rozsahov,z1,k1,z2,k2,...
kde počet_znakov je približný počet znakov v tejto definícii; ak sa líší tento odhad o viac ako 10%, tak sa to prejaví buď zbytočnou veľkosťou súboru, alebo zníženým výkonom. Zbytok riadku môžete použiť pre popis rozsahov znakov uvádzajúcich dvojslabičné kódy. Napríklad v japonskom prostredí Kanji znaky začínajú slabikami v rozsahu 90-AF, alebo E0-FF. Ak operačný systém narazí na takúto slabiku, skombinuje ju s nasledujúcou do dvojslabičného kódu Kanji znaku. V riadku BIGFONT hodnota počet_rozsahov udáva koľko neprerušených rozsahov slabík sa používa pre uvádzanie dvojslabičných znakov a odpovedajúce z1,k1,z2,k2, ... určujú prvé a posledné slabiky takýchto rozsahov. Preto hlavička Japonskej vľkej sady by mohla byť:
*BIGFONT 4000,2,090,0AF,0E0,0FF
Po tomto riadku sa formát 'veľkej sady' zhoduje s běžným popisom fontu - s tým rozdielom, že čísla tvarov môžu byť až 65535.
Aby bolo možné zmenšiť veľkosť popisu zložených znakov Kanji, bola zavedená “rozšírená veľká sada". Taká sada používa kódy pre podtvar nasledovaný 0.
Prvý riadok rozšírenej sady odpovedá štandardnej veľkej sade. Toto je formát nasledujúcich riadkov súboru:
*0,5,meno_sady
výška_znaku, 0, režim, šírka_znaku,0
.
.
.
*číslo_tvaru,poč_slab,meno_tvaru
.
kód,0,číslo_prim,x,y,šírka,výška,
.
.
kód,0,číslo_prim,x,y,šírka,výška,
.
ukončenie
Popis jednotlivých polí vo Veľkej sade:
výška_znaku
Používa sa spolu so šírkou znaku pre určenie počtu jednotiek definujúcich znak.
šírka_znaku
Používa sa spolu s výškou znaku pre určenie počtu jednotiek definujúcich znak. Šírka a výška slúží k určeniu merítka primitív definujúcich znaky. V tomto kontexte rozumieme primitívami body, čiary, polygóny a znakové reťazce geometricky usporiadané v dvojrozmernom priestore. Znaky Kanji sa skladajú z rôzneho počtu primitív v rôznych merítkach a kombináciách.
režim
Slabika režim musí být 0 pro horizontální font a 2 pro obousměrnou (horizontální i vertikální) sadu. Speciální kód 00E (14) je platný jenom když režim je 2.
číslo_tvaru
Kód znaku.
poč_slab
Veľkosť bytu. Vždy je, môže obsahovať hexadecimálne alebo kombináciu hexadecimálnych a decimálnych kódov.
meno_tvaru
meno znaku.
kód
Špeciálny kód definície tvaru. V tomto prípade je to vždy kód 7 - vyvolanie podtvaru.
číslo_prim
Odkaz na podtvar. Vždy 2.
X
Súradnica X počiatku primitívy.
Y
Súradnica Y počiatku primitívy.
šírka
Merítko primitívy (šírková zložka)
výška
Merítko primitívy (výšková zložka)
ukončenie
Znak konca súboru - je vždy 0.
AutoCAD pracuje s merítkom tak, že odpovedajúci podtvar zmenší na jednotkový štvorec a potom upraví hodnoty šírky a výšky odpovedajúcim faktorom. Kódy znakov môžu byť až 65535. Nasledujúca tabuľka popisuje pole 'rozšírenej veľkej sady'.
Pole definícií rozšírenej 'veľkej sady'
Pole Hodnota Poč. slabík Popis
číslo_tvaru xxxx 2 slabiky Kód znaku
kód 7,0 2 slabiky Definícia rozšírenej veľkej sady
číslo_prim xxxx 2 slabiky Odkaz na podtvar
X 1 slabika X počiatku
Y 1 slabika Y počiatku
šírka 1 slabika Šírkový faktor
výška 1 slabika Výškový faktor
ukončenie 0 1 slabika Koniec definície tvaru
Nasledujúci obrázok ukazuje príklad matice 16x16, akú môžete použiť pre definovanie rozšírenej veľkej sady, ako napríklad znakov Kanji. V tomto obrázku je vzdialenosť medzi bodkami jedna jednotka. Popisok ukazuje na jednotkový štvorec.
Štvorcová matica pre znak Kanji
Na nasledujúcom obrázku sú príklady znakov Kanji. Každý zaberá maticu MxN (nemusí byť nutne štvorcová) podobnú tej na predchádzajúcom obrázku. Čísla nad každým obrázkom udávajú číslo príslušného tvaru.
Príklady znakov Kanji
Na ďalšom obrázku sú zobrazené Kanji primitívy.
Príklady Kanji primitív
Poznámka:
Znaky nemusia byť definované štvorcovými maticami - u niektorých sa používajú skôr obdĺžniky.
Takto vyzerá definíca tvarov v rozšírenej veľkej sade:
*BIGFONT 50,1,080,09e
*0,5,Extended Font
15,0,2,15,0
*08D91,31,unspecified
2,0e,8,-7,-15,
7,0,08cfb,0,0,16,16,7,0,08bca,2,3,12,9,
2,8,18,0,2,0e,8,-11,-3,0
*08CD8,31,unspecified
2,0e,8,-7,-15,
7,0,08be0,0,0,8,16,7,0,08cc3,8,0,8,16,
2,8,18,0,2,0e,8,-11,-3,0
*08ADF,31,unspecified
2,0e,8,-7,-15,
7,0,089a4,0,0,8,16,7,0,08cb3,8,0,8,16,
2,8,18,0,2,0e,8,-11,-3,0
*08CE8,39,unspecified
2,0e,8,-7,-15,
7,0,089a4,0,1,5,14,7,0,08cc3,5,2,5,14,7,0,08c8e,9,0,7,
16,2,8,18,0,2,0e,8,-11,-3,0
*089A4,39,primitive
2,0e,8,-7,-15,2,8,1,14,1,0c0,
2,8,-11,-6,1,0a0,2,8,-12,-7,1,
0e0,2,8,-7,13,1,0dc,2,8,11,-1,
2,0e,8,-11,-3,0
*08BCA,41,primitive
2,0e,8,-7,-15,2,8,1,14,1,0c0,
2,8,-11,-6,1,0a0,2,8,-12,-8,1,
0e0,2,0e5,1,0ec,2,063,1,8,
2,-3,2,06f,2,0e,8,-11,-3,0
*08BE0,81,primitive
2,0e,8,-7,-15,2,8,3,9,1,080,
2,8,-10,-4,1,0c0,2,8,-13,-5,1,
0e0,2,8,-7,9,1,09c,2,8,-1,14,
1,8,-6,-5,2,8,8,5,1,8,6,-5,
2,8,-11,-6,1,8,1,-3,2,8,7,3,
1,8,-1,-3,2,8,-3,15,1,01a,2,
012,1,01e,2,8,10,-14,2,0e,8,
-11,-3,0
*08C8E,44,primitive
2,0e,8,-7,-15,2,8,3,15,1,090,0fc,038,
2,8,-6,11,1,090,2,8,-9,-5,1,
090,2,096,1,0ac,8,-1,-3,01a,01a,2,8,
18,0,2,0e,8,-11,-3,0
*08CB3,61,primitive
2,0e,8,-7,-15,2,042,1,02b,02a,018,2,
0d0,1,012,034,2,069,1,01e,040,2,8,
-8,6,1,02b,2,8,4,5,1,08c,2,8,
-3,8,1,03c,2,8,-5,3,1,0e0,2,8,
-12,5,1,0a0,2,8,6,-14,2,0e,8,
-11,-3,0
*08CC3,34,primitive
2,0e,8,-7,-15,2,0c1,1,06c,0a8,064,0a0,2,8,
-5,9,1,09c,2,8,-7,5,1,0e0,2,8,
4,-11,2,0e,8,-11,-3,0
*08CFB,22,primitive
2,0e,8,-7,-15,2,0d2,1,0cc,0c8,0c4,0c0,2,8,
5,-13,2,0e,8,-11,-3,0
Aby ste mohli používať veľkú sadu, je nutné nejskôr príkazom PÍSMO nadefinovať štýl a v ňom určiť názov veľkej sady. Jeden štýl môže používať súčasne normálnu a veľkú sadu, zadajte jednoducho obidvaa názvy oddelené čiarkou. Nasledujúcí príklad používa príkaz PÍSMO z príkazového riadku. K povoleniu Veľkých sád z dialógu Textový štýl zaškrtnite voľbu Používať veľké sady (BIGFONT).
Príklad:
Příkaz: –písmo
Název písma (nebo ?) <aktuální>: název
Soubor fontu (TTF or SHX): txt,greek
AutoCAD predpokladá, že prvý je názov bežného fontu a druhý názov veľkej sady.
Ak zadáte len jeden názov, AutoCAD pochopí, že zadávate názov obyčajného fontu a odstráni prípadne asociovanú veľkú sadu.
Použitím čiarok na začiatku, alebo konci môžete zmeniť jeden font bez toho aby ste ovplivnili druhý. Nasledujúca tabuľka to vysvetluje:
Vstup pri zmene fontu
Vstup Výsledok
normálny, veľký Oba fonty (normálny aj veľká sada) sú zmenené
normálny, Normálny je zmenený (veľká sada zostáva)
,veľký Mení sa len veľká sada (normálny font zostáva)
normálny Zadáva sa len normálny font, veľká sada je odstranená
ENTER (prázdna odpoveď) Žiadna zmena
Ak príkazom PÍSMO kontrolujete štýly, AutoCAD zobrazí normálny font, čiarku a meno veľkej sady. Ak je definovaná len veľká sada, zobrazí sa čiarka a názov tejto sady, ako napr. ,greek.
Každý znak je vyhľadávaný najskôr vo veľkej sade. Ak sa nenájde, prehľadá sa normálny font.
V niektorých kresliacích technikách sa môže v textových reťazcoch objaviť mnoho špeciálnych znakov. Štandardné AutoCADové textové fonty môžu byť rozšírené o špeciálne symboly. Rozširovsnie štandardných textových fontov má však niektoré obmedzenia:
- Maximálny počet tvarov v súbore je 255.
- Štandardná sada znakov používa zhruba jednu polovicu všetkých možných čísel tvarov. Len kódy 1- 9, 11 - 31, a 130 - 255 sú použiteľné.
- Pri používaní viac textových fontov je nutné symboly definovať v každom z nich.
- Špeciálne symboly sa vkladajú pomocou kódu %%nnn, kde nnn je číslo tvaru symbolu.
Mechanismus veľkých sád tieto problémy odstraňuje. Môžete si vybrať jeden z málo používaných znakov napríklad vlnovku (~), vertikálnu čiaru (|), ako riadiaci kód a použiť následujúci znak k výberu špeciálneho symbolu. Napríklad môžete použiť veľkú sadu k nakresleniu gréckych písmen pomocou vloženia zvislej čiary (|, ASCII hodnota 124) a normálneho písmena. Pretože prvá slabika každého znaku je 124, kódy znakov sú chápané ako 124 × 256 alebo 31744.
*BIGFONT 60,1,124,124
*0,4,Greek
hore, dole, režim, 0
*31809,n,uca
. . . definícia veľkej Alfy, vyvolávaná pomocou "|A"
*31810,n,ucb
. . . definícia veľkej Bety, vyvolávaná pomocou "|B"
*31841,n,lca
. . . definícia malej Alfy, vyvolávaná pomocou "|a"
*31842,n,lcb
. . . definícia malej Bety, vyvolávaná pomocou "|b"
*31868,n,vbar
. . . definícia zvislej čiary, vyvolávaná pomocou "||"
. . .
Štandardné AutoCADové fonty odpovedajú mapovaniu znakov na hostiteľskom OS. Znaky sú v databázi uložené priamo tak, ako ich program obdrží od ovládača klávesnice. Také kódy sa taktiež použijú pre generovanie fontov. Tento prístup je problematický pre národné znaky (8-bitov), kde existuje viac spôsobov kódovania.
Vzhľadom k tejto nepríjemnej vlastnosti rôznych operačných systémov bolo nutné mať jednotlivé sady fontov pre každú kódovú stránku, ktorú AutoCAD používa. Tieto fonty boly v podstate rovnaké, len niektoré znaky boly na iných miestach. Ak sa kódovanie fontu nezhodovalo s použitou kódovou stránkou výkresu, tak sa zobrazovali zlé znaky.
S fontami UNICODE sa texty prevádzajú do unikódového kódovania skôr, ako sa vykreslia, takže odpadá nutnosť dodávať jednotlivé fonty pre rôzné jazyky a platformy. Jeden UNICODE font dokáže vzhľadom ku svojmu znakovému rozsahu pokryť väčšinu jazykov a všetky platformy. Pre užívateľa je tento proces celkom transparentný, pretože výkresy sú prevádzané do odpovedajúcej kódovej stránky pri načítaní. AutoCADové výkresy sú vždy ukládané v systémovej kódovej stránke AutoCADu.
Poznámka
UNICODE fonty neponúkajú podporu pre všetky jazyky, takže napr. ázijské jazyky stále musia používať veľké sady.
Definície tohoto formátu sa takmer zhodujú s definíciou bežných fontov. Hlavný rozdiel je v syntaxi hlavičky fontu:
*UNIFONT,6,názov_fontu
hore,dole,režim,kódovanie,typ,0
Hore a dole a režim odpovedá definícii normálnych fontov. Ostávajúce dva parametre sú definované nasledovne:
kódovanie
Kódovanie fontu. Jedna z nasledujúcich hodnôt.
0 UNICODE 1 Packed multi-byte 1 2 Súbor tvarov
typ
Informácia o ukládaní fontu. Určuje, či je font pod licenciou. Taký font nesmie byť modifikovaný a distribuovaný. Hodnoty sú:
0 Font sa môže ukladať s výkresom 1 Font nie je možné ukladať 2 Uloženie je len pre čítanie'
Ďalším dôležitým a niekedy mätúcím rozdielom je obsluhovanie kódu 7 (odkaz na podtvar). Ak definícia tvaru obsahuje odkaz na podtvar (kód 7), dáta, následujúce za týmto kódom, sú interpretované ako dvojslabičné. To je ovplivnené celkovým početom datových slabík (def_slabik ) v hlavičke definície tvaru. Napríklad, nasledujúce riadky môžete nájsť v súbore romans.shp:
*00080,4,keuroRef
7,020AC,0
Druhé pole v hlavičke reprezentuje celkový počet slabík v popise tvaru. Ak nepracujete s UNICODE fontom, môžete inklinovať k používaniu 3 slabík miesto 4. To môže spôsobiť chybu pri kompilácii SHP súboru. Je to pravda i v prípade, že sa odkazujete na číslo tvaru, ktoré je jednoslabičné (menšie ako 255); kompilátor vždy chápe túto hodnotu ako dvojslabičnú. Preto je nutný tento zápis v hlavičke.
Posledný rozdiel v UNIFONT definícii a bežným fontom je ten, že pre UNIFONT sa doporučuje používať hexadecimálny zápis. Nie je to požiadavkou, ale zjednodušuje to vyhľadávanie znakov zapisovaných formou \U+hodnota.
Standardné fonty (SHX) AutoCADu nepodporujú indexy. Nieje však obtiažné takúto vlastnosť doplniť.
Vytváranie fontov pre indexy vyžaduje dva kroky. Najskôr imaginárne pisátko vytvárajúce text musí byť posunuté dole a potom je nutné zmenšiť merítko tvaru. Naviac je nutné implementovať presne obrátený postup pre návrat k normálnemu textu. Taký font musí rozpoznávať štyri špeciálne kódy - dva pre index a dva pre “mocninu". Aby ste sa vyhli konfliktom s existujúcimi tvarmi, je možné použiť hodnoty zadávané cez numerickú klávesnicu.
Nasledujúci príklad bol vytvorený pri použití štandardne dodávaného fontu ROMANS, hoci túto metódu možno použiť s ľubovoľným fontom. Tento postup pridáva štyri nové znaky super_on, super_off (zapne, resp. vypne mocninu), sub_on a sub_off (zapne, resp. vypne index). ktoré riadia polohu a veľkosť znakov nasledujúcich. Pre zjednodušenie tento príklad nahradzuje definíciu hranatých a zložených zátvoriek ([,],{,}). Je vašou voľbou, či použijete iné znaky, alebo pridáte nové napr. v oblasti 128-255. V takovom prípade pre zadávanie týchto znakov použijete sekvenciu %%nnn kde nnn je ASCII hodnota odpovedajúceho znaku.
1 Otvorte súbor SHP (v tomto prípade romans.shp) v ASCII textovom editore. Pravdepodobne bude lepšie vytvoriť nový súbor romanss.shp ako modifikovať originál. Tento súbor môžete nájsť na CD AutoCAD 2000.
2 Nájdite definície tvarov odpovedajúce znakom, ktoré nahradzujete. Budete musieť z týchto riadkov vytvoriť komentár, aby sa uvolnilo miesto pre nové znaky. Dosiahnete toho vložením stredníkov na začiatky týchto riadkov (pozor, jedna definícia môže zaberať ľubovoľný počet riadkov).
Kódy pre naše znaky sú 91, 93, 123, 125, resp. pre UNICODE 05B, 05D, 07B, 07D v poradí [, ], { a }.
3 Sčítajte prvú a druhú slabiku na druhom riadku definície fontu a vydelte výsledok 2. Viz príklad:
*UNIFONT,6,Extended Simplex Roman for UNICODE
21,7,2,0 21 + 7 = 28, a potom 28 / 2 = 14 (posledná hodnota bude použitá ďalej)
4 Doplňte na koniec SHP súboru nasledujúce riadky:
*91,8,super_on
2,8,(0,14),003,2,1,0
*93,8,super_off
2,004,2,8,(0,-14),1,0
*123,8,sub_on
2,8,(0,-14),003,2,1,0
*125,8,sub_off
2,004,2,8,(0,14),1,0
Všimnite si hodnôt 14 a -14. Sú to posuny imaginárneho pisátka po súradnici Y. 14 je polovica maximálnej výšky znaku v tomto fonte, čo je dobrá hodnota pre posun indexu. Táto hodnota musí byť vypočítaná pre každý font zvlášť (viď. predchádzajúci bod).
5 Uložte súbor.
6 Pomocou príkazu KOMPILUJ skompilujte vytvorený SHP súbor.
Keď máte súbor nadefinovaný a keď ste vytvorili odpovedajúcu definíciu štýlu príkazom PÍSMO, môžete využívať indexy a mocniny. Znak [ začína index a znak ] ho ukončuje. Obdobne { uvádza mocninu a } vracia text na normálny režim.
Prehľad štandardných ASCII kódov. Osmičková hodnota, ktorá je použiteľná v znakových alebo reťazcových konštantách, sa zadáva vo forme \nnn. Váš systém môže definovať ďalšie kódy v rozšírenej, 256 znakovej sade (kódy väčšie ako 127). Niektoré systémy tiež predefinovávajú niektoré málo používané kódy napr. 1-6 a 14-26. Ak chcete vidieť znakovú sadu vášho systému vrátane ich kódov v desiatkovej a osmičkovej sústave, použite príkaz definovaný AutoLISP®om ASCII. Znaky sú na obrazovke zobrazené v tabuľke.
Tabulka ASCII kódov
Des. Osm. Šes. Znak Des. Osm. Šes. Znak
0 000 00 NUL 64 100 40 @
1 001 01 SOH 65 101 41 A
2 002 02 STX 66 102 42 B
3 003 03 ETX 67 103 43 C
4 004 04 EOT 68 104 44 D
5 005 05 ENQ 69 105 45 E
6 006 06 ACK 70 106 46 F
7 007 07 BEL (bell) 71 107 47 G
8 010 08 BS (backspace) 72 110 48 H
9 011 09 HT 73 111 49 I
10 012 0A LF (line-feed) 74 112 4A J
11 013 0B VT 75 113 4B K
12 014 0C FF 76 114 4C L
13 015 0D CR (return) 77 115 4D M
14 016 0E SO 78 116 4E N
15 017 0F SI 79 117 4F O
16 020 10 DLE 80 120 50 P
17 021 11 DC1 81 121 51 Q
18 022 12 DC2 82 122 52 R
19 023 13 DC3 83 123 53 S
20 024 14 DC4 84 124 54 T
21 025 15 NAK 85 125 55 U
22 026 16 SYN 86 126 56 V
23 027 17 ETB 87 127 57 W
24 030 18 CAN 88 130 58 X
25 031 19 EM 89 131 59 Y
26 032 1A SUB 90 132 5A Z
27 033 1B ESC (escape) 91 133 5B [
28 034 1C FS 92 134 5C \
29 035 1D GS 93 135 5D ]
30 036 1E RS 94 136 5E ^
31 037 1F US 95 137 5F _
32 040 20 (space) 96 140 60 '
33 041 21 ! 97 141 61 a
34 042 22 " 98 142 62 b
35 043 23 # 99 143 63 c
36 044 24 $ 100 144 64 d
37 045 25 % 101 145 65 e
38 046 26 & 102 146 66 f
39 047 27 ' 103 147 67 g
40 050 28 ( 104 150 68 h
41 051 29 ) 105 151 69 i
42 052 2A * 106 152 6A j
43 053 2B + 107 153 6B k
44 054 2C , 108 154 6C l
45 055 2D - 109 155 6D m
46 056 2E . 110 156 6E n
47 057 2F / 111 157 6F o
48 060 30 0 112 160 70 p
49 061 31 1 113 161 71 q
50 062 32 2 114 162 72 r
51 063 33 3 115 163 73 s
52 064 34 4 116 164 74 t
53 065 35 5 117 165 75 u
54 066 36 6 118 166 76 v
55 067 37 7 119 167 77 w
56 070 38 8 120 170 78 x
57 071 39 9 121 171 79 y
58 072 3A : 122 172 7A z
59 073 3B ; 123 173 7B {
60 074 3C < 124 174 7C |
61 075 3D = 125 175 7D }
62 076 3E > 126 176 7E ~
63 077 3F ? 127 177 7F DEL (delete)