Структура файлов плоттера

Оба, описанные ранее, синтаксис и текстовый файл, в котором он используется, будут называться экран плоттера или просто экран.

Типичный экран [layout] содержит от одной до нескольких страниц [page] в описании чертежа плоттера..

Описание страницы [page] задается только:

атрибуты страницы: формат страницы в миллиметрах (общепринятые единицы длины) и полей, которые определяют рабочую область на странице.

положение, размер и другие атрибуты прямоугольных полей называемые область просмотра [views], где расположены чертежи. Область просмотра может содержать дополнительные тексты для блоков ниже. Такие тексты должны быть расположена возле границы области, т.к. в центре будет расположен чертеж.

таблицы [table], организованные из строк [row], состоящие из ячеек [cell], которые, в свою очередь, обычно заполняются текстом [text].

Положение и атрибуты текста [text]. Текст, для того чтобы быть включенным в чертеж, может быть определен как простая символьная последовательность заключенная в кавычки ("...") или в качестве, так называемых, выражений, перечисленных в модуле чертежа. Выражения имеют собственный синтаксис. Они могут быть представлены в виде даты, названия проекта и т.п. Они также могут принимать более сложные формы, в зависимости от содержимого чертежей на странице. Например, масштаб чертежа в виде, вес/масса арматурной стали в балке/шаге и др.

Пример:

Ниже представленный пример взят из реального экрана, который можно найти в папке в файле конфигурации Robot. Он содержит описание чертежа ЖБ балки.

# линии, которые начинаются с этого знака находятся в комментариях.

# комментарии, могут вставляться с отступом.

# комментарии, в начале файла, должны содержать короткое описание содержимого файла.

# это является идеальным заголовком:

# чертеж балки (каждый пролет на новой странице):

# один пролет + два сечения + список армирования

# таблица в нижней части страницы, содержит типичные данные для ЖБ

# рекомендуется формат - A4

[LAYOUT]

[page]

format = 297, 210 #формат бумаги

margins= слева 7, справа 7, сверху 7, снизу 7

[view]

label = @elev # label @elev, используется в текстовых выражениях

pos = 3, 97 # lower-left corner: 3mm from left, 97mm from bottom

size = 213, 95 # size: 213x95mm

type = "beam/bay" # одна балка пролета

[view]

label = @sec1# метка первого сечения

pos = 3, 29

size = 105, 65

type = "beam/bay/section"

[view]

label = @sec2 # метка второго сечения

pos = 111, 29

size = 105, 65

type = "beam/bay/section"

[view]

pos = right 0, top 0 # upper-right corner: 0mm from right, 0mm from top

size = 65, 169

type = "beam/bay/steel" # список армирования в балке пролета

[table]

pos = 0,0

#, даже если пользователь изменяет формат бумаги, он должен поддерживать

# левый и правый отступы (здесь: 0) и высоту всей таблицы

fixed = left right, vertical

# сначала необходимо определить, ширину соседних столбцов таблицы

col = 100

col = 100

col = 83

# теперь следует описать каждую строку

[row]

row = 4 # следует определить высоту строки

# можно описать ячейки в каждой строке

[cell]

colspan = 2 # 2 колонки объединяются в этой ячейке

[text]

pos = 3,50% # 3 мм слева и в средней высоте

font = height 2# высота шрифта, 2мм

text = "Firm"

[text]

pos = 25%,50%# 1/4 всего расстояния с левой и середины высоты

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 колонки объединяются в этой ячейке

[text]

pos = 3,top 25%# 3 мм слева и на 1/4 всей высоты сверху

font = height 2

# ниже можно увидеть пример текстовых выражений, где:

# период - функция как оператор объединения текста в один текст

# @elev - объект, который необходимо выполнить

# сервис (это метка области просмотра на странице)

#"steel"- всегда первый аргумент в списке

# определение типа сервиса (здесь: вес стали).

# форма (надпись/номер) следующий аргумент зависит от

# строго тип сервиса.

# Примечание:

# список подвыражений @elev(...) может закончится отказом затем, всего выражения

# сбой и, как следствие, то можно получить пустые строки, и нет

# "Ribbed steel = kg", or "Ribbed steel = 0kg"

text = " Ribbed steel = " . @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]

Заключительные замечания:

Ключевые слова, всегда на английском языке. Это же правило применимо к Services ("scale", "steel", "section", и др.). В обоих случаях программа не чувствительна к регистру. Можно использовать сокращения в ключевых словах, например, "Pos" значение "position".

На каждой странице экрана всегда есть размер. Это не означает, что страница может использоваться только для определенного формата бумаги. Чертежный модуль может увеличивать/уменьшать экран страницы пропорционально текущая конфигурация устройства печати (принтер/плоттер). Однако, если для создания экрана будет использоваться бумага различных форматов, рекомендуется, определить ее для наименьшего, но реального формата бумаги.

Экран содержит иерархическую структуру, основанную на зависимости источник - дочерних записях. Положение и размер дочернего элемента всегда вычисляется по отношению к источнику элемента. Стандартные положение дочерних записей (нижний левый край) выполняется по отношению к левой стороне страницы и к концу источника, до тех пор, пока соответствующие команды определяют иначе, например 'pos = right 3, 50%'. При определении размеров и положения дочерних записей, можно использовать абсолютные числа (интерпретируются как миллиметры) или процент исходного размера в соответствующем направлении (выбор одного из этих методов является важным в случае изменение формата бумаги).

Объекты могут быть разделены на те, которые имеют размеры (представлены в виде прямоугольной формы) и без размеров (имеется только один: текст). Они могут называется для коротких, 1D-объекты и 2D-объекты. В случае с исходником, в котором существуют оба типа дочерних записей, необходимо сначала точно определить безразмерные дочерние элементы, и только затем продолжить список пространственных объектов.

[page], [area] и [cell] могут содержать оба типа объектов, а [view] - только 1D-объекты. Очевидно, что ячейки [cell] принадлежат исключительно строкам таблицы, а страницы [рage] - исключительно экрану [layout].

Атрибуты (положение, размер, и т. д.) назначаются объекту с помощью соответствующих команд, которые записываются непосредственно после ключевого слово - в квадратных скобках [...] - раскрывают определение объекта.

Таблице [table] может быть назначен атрибут ориентации. Это выполняется с помощью команды: 'orientation = ...'. В стандартной конфигурации таблицы "stand", то есть, программа воспринимает команды 'orientation = top'. Если требуется, например, поместить таблицу вдоль правой кромки листа, следует записать 'orientation = left'.

В приведенном выше примере не демонстрирует представленные возможности определения areas [area]. Площадь имеет атрибуты положение и размер. Они используется для размещения других объектов на чертеже. При изменении формата, для них возможны некоторые последствия, но только в случае, если лист содержит формулы: 'fixed = ...'. Площади могут быть использованы в редких ситуациях. Они, конечно же, невидимые на чертежах проекта.

Представленный синтаксис относителен "bug-proof", однако необходимо обращать особое внимание на то обстоятельство, что описание таблицы [table] или площади [area] всегда заканчивается с [end].

Пустые ячейки таблицы не указываются, если они расположены в конце описанной строки и их размер 1x1.

Стандартный шрифт текста в ячейках таблицы соглашается со следующим описанием: 'font = height 3, align left middle, angle 0'. Местоположение стандартного шрифта определяется 'pos = 3, 50%'.

Типы чертежей

Предполагается, что экраны плоттера не должны содержать подробную информацию относительно содержимого чертежей в области просмотра. Если они содержат такие сведения, плоттер должен быть свернут и прозрачным для модуля чертежей, который никогда не будет использовать этот тип информации. Часто такие данные, представлены в виде команды 'type = …' адресованной области просмотра. Информация клиентов чертежей модуля, используется в модулях Robot и активируется с помощью пакетного файла. Модули считывают экран и, за счет использования 'типа' информация, ориентируются как требования автора экрана. При повторном считывании экрана, модули Robot могут изменить его, как правило, добавляя несколько страниц. Это объясняет почему, выше приведенный пример, дает результаты, например две страницы для двухпроемной балки, несмотря на то, что экран содержит описание только одной страницы.

Типы чертежей в ЖБ модели

балка

все фасадные балки

"балка/панель"

одна балка пролета

"балка/панель/сечение"

сечение балки пролета

"балка/сталь"

список стали для всей балки

"балка/панель/сталь"

список стали для одного пролета

колонна

колонна фасада

"колонна/сечение"

сечение колонны

"колонна/сталь"

список армирования колонны