Struktura pliku plotera

Zarówno opisana składnia, jak i plik tekstowy, w którym jest ona używana będą nosiły nazwę układ plotera lub tylko układ.

Typowy układ [układ] zawiera od jednej strony do kilku stron [strona] opisu rysunku plotera.

Opis strony [strona] określa tylko:

Atrybuty strony: format papieru w milimetrach (jednostka globalnej długości) i marginesy, które określają obszar roboczy na stronie.

Położenie, rozmiar i inne atrybuty pól prostokątnych o nazwie rzutnie (view—ports) [widoki], gdzie zostaną umieszczone rysunki. Rzutnie mogą zawierać dodatkowe teksty (które zostaną omówione poniżej). Takie teksty powinny znajdować się blisko granicy widoku, jego środek zostanie wypełniony rysunkiem.

Tabele [tabela]zorganizowane w wierszach [wiersz],składających się z komórek [komórka], które z kolei zwykle wypełnione są tekstami [tekst].

Położenie i atrybuty tekstów [tekst]. Tekst, który ma być zawarty na rysunku może być zdefiniowany jako prosty ciąg znaków zawarty w cudzysłowie ("...") lub jako tak zwane wyrażenia, wymienione w module rysunku. Wyrażenia zawierają własną składnię. Mogą one mieć postać daty, nazwa projektu, itp. Mogą one także przyjąć bardziej złożone formy, w zależności od zawartości rysunków na stronie, np.: skala rysunku na widoku, waga/masa stali zbrojeniowej we belce/przęśle itp.

Przykład:

Poniżej przedstawiony przykład jest wyodrębniany z rzeczywistych układów, które mogą być znalezione w folderze plików konfiguracyjnych programuRobot. Zawiera on opis rysunku belki żelbetowej.

# Linie, które zaczynają się od tego znaku należą do komentarzy.

# Komentarz może być oczywiście wstawiony z wcięciem.

#Komentarze na początku pliku powinny zawierać krótką charakterystykę zawartości pliku.

# Tutaj jest idealny nagłówek:

# Rysunek belki (każde przęsło na nowej stronie):

# Pojedyncze przęsło + dwa przekroje + lista zbrojeń

# Tabela (zawierająca dane typowe dla żelbetonu) w dolnej części strony

# (Zalecany format — A4)

[LAYOUT]

[page]

format = 297, 210 # format papieru

margins = left 7, right 7, bottom 7, top 7

[view]

label = @ elev # etykieta @elev, używana w wyrażeniach w tekście

pos = 3, 97 # lewy dolny wierzchołek: 3 mm od lewej, 97 mm od dołu

size = 213, 95 # rozmiar: 213x95 mm

type = "beam/bay" # jedna belka przęsło

[view]

label = @sec1 # etykieta pierwszego przekroju

pos = 3, 29

size = 105, 65

type = "beam/bay/section"

[view]

label = @sec2 # etykieta drugiego przekroju

pos = 111, 29

size = 105, 65

type = "beam/bay/section"

[view]

pos = right 0, top 0 # górny prawy wierzchołek: 0 mm od prawej, 0 mm od góry

size = 65, 169

typ = "belka/przęsło/stal" # lista zbrojeń w przęśle belki

[table]

pos = 0,0

#, nawet jeśli użytkownik zmieni format papieru, należy zachować

# lewy i prawy margines (tutaj: zero) i wysokość całej tabeli

fixed = left right, vertical

# najpierw należy określić szerokość kolejnych kolumn tabeli

col = 100

col = 100

col = 83

# teraz, należy opisać każdy wiersz

[row]

row = 4 # należy określić wysokość wiersza

# można opisać komórki w każdym wierszu

[cell]

colspan = 2 # 2 kolumny są scalane w tej komórce

[text]

pos = 3,50 % # 3 mm od lewej i w połowie wysokości

font = height 2 # wysokość czcionki 2 mm

text = "Firm"

[text]

por = 25 %, 50 % # w 1/4 całej odległości od lewej i w połowie wysokości

font = height 2

text = "Address"

[text]

pos = 65 %, 50 %.

font = height 2

text = "Telephone"

[text]

pos = 82 %, 50 %.

font = height 2

text = "Fax"

[cell]

rowspan = 2 # 2 kolumny są scalane w tej komórce

[text]

pos = 3, top 25 % # 3 mm od lewej i 1/4 całej wysokości od góry

font = height 2

# Poniżej można zobaczyć przykład wyrażenie tekstowego, gdzie:

# kropki — działają jak operatory scalania tekstów w jeden tekst

# @elev — obiekt, który będzie wymagany do wykonania

# usługa (jest to etykieta z rzutnią na stronie)

# "steel" — zawsze pierwszy argument na liście

# określa typ usługi (tutaj: wagę stali).

# Forma (napis/liczba) zależy od następujących argumentów

# dokładnie na typ uslugi.

#UWAGA:

# Zawierające podwyrażenie @elev (...) może zakończyć się błędem. Następnie, całe wyrażenie

# nie powiedzie się, a w wyniku, uzyskuje się pusty ciąg, a nie

# "Stal żebrowana = kg" lub "Stal żebrowana = 0 kg"

tekst = " Stal żebrowana = " . @elev("steel","kg","L") . "kg"

[text]

pos = 50 %,top 25 %

font = height 2

text = "Concrete = " . @elev("concrete","m^3") . "m3"

[text]

pos = 3,bottom 25 %

font = height 2

text = "Plain steel = " . @elev("steel","kg","T") . "kg"

[text]

pos = 50 %,bottom 25 %

font = height 2

text = "Formwork = " . @elev("formwork","m^2") . "m2"

[row]

row = 5

[cell]

rowspan = 3

[cell]

rowspan = 3

[text]

pos = 3,bottom 25 %

font = height 5

text = "Section " . @elev("section","cm","x")

[row]

row = 9

[cell]

[text]

pos = 3,top 25 %

font = height 2

text = "Lower cover " . @elev("cover","cm","B") . "cm"

[text]

pos = 3,bottom 25 %

font = height 2

text = "Lateral cover " . @elev("cover","cm","L") . "cm"

[text]

pos = right 25,50 %

font = height 5

text = ""

[row]

row = 9

[cell]

[text]

pos = 3,top 25 %

font = height 2

text = "Elevation scale " . @elev("scale","m/m","/")

[text]

pos = 3,bottom 25 %

font = height 2

text = "Section scale " . @sec1("scale","m/m","/")

[text]

pos = right 25,50 %

font = height 4, aspect 0.7

text = "Page"

[end]

Uwagi końcowe:

Słowa kluczowe są zawsze w języku angielskim. Ta sama zasada dotyczy usług ("scale", "steel", "section" itd.). W obu przypadkach program nie rozróżnia wielkości liter. Możliwe jest użycie skrótów w słowach kluczowych, np. "Pos", co oznacza "position" ("położenie").

Każda strona w układzie ma zawsze rozmiar. Nie oznacza to, że strona może być używana tylko dla określonego formatu papieru. Moduł rysunku będzie powiększał/pomniejszał stronę układu proporcjonalnie do bieżącej konfiguracji urządzenia drukującego (drukarka/ploter). Jeśli jednak można utworzyć układ, który będzie używany dla różnych formatów papieru, zaleca się, aby go zdefiniować go dla najmniejszego, ale nadal możliwego formatu papieru.

Układ ma konstrukcję hierarchiczną, na podstawie zależności rodzic—dziecko/dzieci (element macierzysty—element(—y)pochodny(—e)). Położenie i rozmiar elementu pochodnego (dziecka) są zawsze wyrażone w odniesieniu do jego elementu macierzystego (rodzica). Standardowe umiejsawianie (dolna krawędzi) elementu pochodnego jest wykonywane w odniesieniu do lewej strony, oraz w dół od elementu macierzystego, chyba że odpowiednie polecenie ustala to inaczej, np. "pos = right 3, 50 %". Podczas określania położenia i rozmiaru elementu pochodnego, można używać bezwzględnych liczb (interpretowanych jako milimetry) lub procentów rozmiaru macierzystego w odpowiednim kierunku (wybór jednego z tych sposobów jest istotne w przypadku modyfikacji formatu papieru).

Obiekty mogą być podzielone na te, które posiadają wymiary (reprezentowane jako prostokątne kształty) i te bez wymiarów (obecnie dostępny jest tylko jeden: tekst). Mogą one być nazwane, skrótowo, obiekty—1D i obiekty—2D. W przypadku elementów macierzystych, które mają oba typy obiektów pochodnych, należy określić bezwymiarowe elementy pochodne najpierw, a następnie można kontynuować katalogowanie obiektów przestrzennych.

[page], [area] i [cell] mogą zawierać oba typy obiektów, podczas gdy [view] — tylko obiekty—1D. Oczywiście, komórki [cell] należą wyłącznie do wierszy tabeli, podczas gdy strony [page] — wyłącznie do układu [layout].

Atrybuty (położenie, rozmiar, itp.) są przypisane do obiektu za pomocą odpowiednich poleceń, które są zapisywane bezpośrednio po słowie kluczowym — w nawiasach kwadratowych [...] — otwierając definicję obiektu.

Tabeli [table] może być przypisany atrybut orientacji. Jest to wykonywane za pomocą polecenia: "orientation =...". W standardowej konfiguracji, tabele "wytrzymują", czyli program akceptuje domyślne polecenie 'orientation = top"'. Jeśli chcesz, na przykład, umieścić tabelę wzdłuż prawej krawędzi strony, należy zapisać "orientation = left".

Powyżej przedstawiony przykład nie przedstawia możliwości definiowania powierzchni [area]. Powierzchnia ma atrybuty położenia i rozmiaru. Jest ona używana, aby rozmieścić inne obiekty na rysunku. Może to mieć konsekwencje dla modyfikacji formatu strony, ale tylko w przypadku, gdy układ zawiera formuły: "fixed =...". Powierzchnie mogą być używane w wyjątkowych sytuacjach. Są one oczywiście niewidoczne w rzutowanych rysunkach.

Przedstawiona składnia jest względnie "wirusoodporna", ale najpierw należy zwrócić uwagę na fakt, że opis tabeli [table] lub powierzchni [area] zawsze kończy się [end].

Puste komórki tabeli nie muszą być określone, jeśli kończą one opisany wiersz, a ich wielkość jest 1x1.

Standardowa czcionka tekstu w komórkach tabeli zgadza się z następującym opisem: "font = height 3, align left middle, angle 0". Położenie standardowej czcionki jest zdefiniowana przez "pos = 3, 50 %".

Typy rysunków

Zakłada się, że układy plotera nie powinny zawierać szczegółowych informacji dotyczących zawartości rysunków, które wypełnią rzutnie. Jeśli zawierają takie informacje, powinny być one zminimalizowane i przezroczyste dla modułu rysunku, który nigdy nie będzie używać tego typu informacji. Takie informacje są często w formie polecenia "type =..." skierowanego do rzutni. Te informacje są używane przez moduły programuRobot, które są klientami modułu rysunku i aktywują je przez plik wsadowy. Moduły są w stanie odczytywać układ i dzięki informacji "typu", są w stanie uzyskać orientację co do wymagań autora układu. Po przeczytaniu układu, moduły programu Robot mogą je zmodyfikować, zazwyczaj przez dodawanie większej ilości stron. To wyjaśnia, dlaczego powyższy przykład układu dostarcza np. dwóch stron dla belki dwuprzęsłowej, mimo że układ zawiera opis tylko jednej strony.

Typy rysunków w module żelbetowym

"beam"

cała belka w elewacji

"beam/bay"

pojedyncze przęsło belki

"beam/bay/section"

przekrój przęsła belki

"beam/steel"

zawartość stali dla całej belki

"beam/bay/steel"

zawartość stali dla jednego przęsła

"column"

słup w elewacji

"column/section"

przekrój słupa

"column/steel"

zawartość zbrojenia słupa