Руководство по настройке altAwin:Написание формул для расстановки отверстий
Написание формул для расстановки отверстий
расстановка отверстийДля того чтобы в текущий массив отверстий добавить новый элемент необходимо вызвать функцию AddElement(PosX, ShiftX, FromEnd), аргументы которой имеют следующий смысл:
- posX — расстояние между началом (или концом) балки и точкой сверления;
- shiftX — некоторые станки выполняют сверление не из центра отверстия на некоторый радиус, а от края до края отверстия — в таком случае необходимо указать в значении posX расстояние от края балки до начала отверстия, а в shiftX — длину этого отверстия;
- FromEnd — определяет на балке точку, от которой производится отсчет до места расположения отверстия; если значение равно «1» — положение отверстия отсчитывается от конца балки; если «0» — от начала. Этот параметр можно не указывать, в этом случае положение отверстия отсчитывается от начала балки.
Функция AddElement возвращает индекс элемента, добавленного в массив.
Смещение отверстия поперёк балки определяется типом сверлильного станка, а потому не задаётся в xml-шаблоне. |
Пример № 1
В одной из папок узла Сторона створки заведём первую строку со следующими характеристиками:
- Наименование: отверстие 1
- Идентификатор: hole3
- Тип отверстия: <выбрать>
В поле Формула вычисления (через Дизайнер выражений и условий) запишем три строчки:
AddElement(10,0);
AddElement(20,0);
AddElement(30,-3);
В результате в массив hole3 будут добавлены 3 элемента: hole3[0], hole3[1], hole3[2]. Любой элемент массива hole3 можно рассматривать как запись с полями PosX и ShiftX (FromEnd полем не является!); например, hole3[0].PosX — это расстояние между точкой сверления и началом балки, hole3[0].ShiftX — это сдвиг точки сверления (для первого отверстия в массиве).
Заведём вторую строку:
- Наименование: отверстие 4
- Идентификатор: hole4
- Тип отверстия: <выбрать>
В поле Формула вычисления (через Дизайнер выражений и условий) запишем следующий код:
for i:=0 to High(Hole3) do
begin
AddElement(Hole3[i].PosX+5,Hole3[i].ShiftX);
end;
В данном коде мы обращаемся к массиву Hole3, так как он уже был сформирован на предыдущем шаге.
Чтобы просмотреть информацию из массивов hole3, hole4, необходимо добавить следующий код:
Debug('-- Hole3');
for i:=0 to High(hole3) do
begin
Debug('PosX=',hole3[i].PosX,' ShifX=',Hole3[i].ShiftX);
end;
Debug('-- Hole4');
for i:=0 to High(hole4) do
begin
Debug('PosX=',hole4[i].PosX,' ShifX=',Hole4[i].ShiftX);
end;
После расчёта изделия данные об отверстиях заносятся в таблицу PERFORATION, которая привязана к деталям расчета ITEMSDETAIL.
Для формирования массивов отверстий можно применять также следующие функции:
- DelElement(index) — удаляет элемент из массива;
- SetElement(index,PosX,ShifX) — устанавливает новое значение для положения отверстия; здесь:
- index — значение, возвращаемое функцией AddElement;
- PosX — новое значение расстояния между началом (или концом) балки и точкой сверления;
- ShifX — новая величина сдвига отверстия; в случае отсутствия сдвига принимает значение «0».
При создании формулы для расстановки отверстий на балке рамы (в строках папки Сторона рамы) можно использовать массив записей Connectors; поля этих записей являются переменными. Названия и свойства этих переменных полностью идентичны названиям и свойствам переменных массива Balka (см. табл. 4.2) за исключением переменной BegPosition, которая хранит величину смещения соединителя (задается в поле Смещение окна Соединитель, РП).
При написании формул можно использовать переменные, введённые через дизайнер выражений и условий, а также поля записей массивов Impost, Stvorka и Shtulp. Особенности работы с этими массивами перечислены в табл. 4.17, которая содержит следующие столбцы:
- Папка — наименование папки, строки которой содержат код, вызывающий массив;
- Массив — наименование массива;
- Элемент — часть конструкции; для каждого экземпляра данной части в пределах рассчитываемой конструкции происходит обращение к соответствующему массиву;
- Результат — часть конструкции; количество экземпляров этой части вычисляется в результате обращения к соответствующему массиву.
Таблица 4.17. Работа с массивами Impost, Stvorka и Shtulp
Папка | Массив | Элемент | Результат |
---|---|---|---|
Сторона створки | Impost | Балка створки | Импост, упирающийся на эту балку |
Сторона рамы | Impost | Балка рамы | Импост, упирающийся на эту балку |
Импост | Impost | Импост | Импост, опирающаяся на данный импост |
Сторона створки | Stvorka | Балка створки | Створка, опирающаяся на эту балку |
Сторона рамы | Stvorka | Балка рамы | Створка, опирающаяся на эту балку |
Импост | Stvorka | Импост | Створка, опирающаяся на данный импост |
Сторона створки | Shtulp | Балка створки | Штульп, опирающийся на эту балку |
Сторона рамы | Shtulp | Балка рамы | Штульп, опирающийся на эту балку |
Импост | Shtulp | Импост | Штульп, опирающийся на данный импост |
Перечислим поля записей массивов Impost, Stvorka и Shtulp.
- Поля записи массива Impost
- PosX — координата на балке, куда входит импост, относительно текущей балки;
- IsSymmetric — симметричный импост или нет;
- SizeA1 — размер профиля по A1;
- SizeB1 — размер профиля по B1;
- SizeC1 — размер профиля по C1;
- SizeD1 — размер профиля по D1;
- SizeFr1 — размер профиля по Fr1;
- IsShtulp — является штульпом или нет;
- LReal — длина реальная (после расчета);
- L — длина габаритная;
- MrkProfil — артикул балки;
- SizeA — размер профиля по A;
- SizeB — размер профиля по B;
- SizeC — размер профиля по C;
- SizeD — размер профиля по D;
- SizeE — размер профиля по E;
- SizeFr — размер профиля по Fr;
- SizeTag — размер профиля по Tag; значение поля Дополнительно (окно документа Профиль, вкладка Размеры, см. стр. 349);
- WidthProfil — ширина профиля;
- ThickProfil — толщина профиля;
- LengthProfil — длина профиля;
- JoinSide — сторона прилегания импоста к балке; значение равно 1 (0), соответственно, если импост примыкает снизу (сверху) к горизонтальной или наклонной балке или справа (слева) к вертикальной балке;
- Поля записи массива Stvorka
- PosX — координата на балке, с которой начинается створка, относительно текущей балки;
- SideLen — расчетная длина стороны створки, которая прилегает к балке;
- HasHinge — наличие петель на этой стороне;
- HasHangle — наличие ручки на данной стороне;
- MrkTypeOpen — код типа открывания створки;
- HandleMiddle — позиция ручки: 1 — середина створки, 0 — фиксированная позиция;
- HandleHeight — расстояние от низа створки до ручки;
- HandleType — тип ручки: 0 — нет ручки, 1 — ручка окна, 2 — ручка двери стационарная, 3 — ручка двери нажимнaя;
- SideOpen — сторона открывания: внутрь, наружу;
- JoinSide — сторона прилегания створки к балке; значение равно 1 (0), соответственно, если створка примыкает снизу (сверху) к горизонтальной или наклонной балке или справа (слева) к вертикальной балке.
Массив Shtulp имеет те же поля, что и массив Impost.
Также можно использовать следующие переменные:
- ImpCount — количество импостов, входящих в данную балку рамы или импост;
- StvCount — количество створок, прилегающих к данной балке рамы или импосту.
В массиве Stvorka в качестве свойств доступны также массивы положений отверстий, рассчитанные в части Сторона створки. Например, если для балки створки рассчитан массив HOLE3, то в части Сторона рамы и Импост доступ к элементам этого массива можно будет получить так:
Stvorka[i]. Hole3[j]
Пример № 2
Использование массива Impost в части Сторона створки:
for j:=0 to High(Impost) do
begin
debug('Impost[',j,'].JoinSide=',Impost[j].JoinSide, ' PosX=', Impost[j].PosX );
if Impost[j].JoinSide=0 then
AddElement(-Impost[j].PosX,0)
else
AddElement(Impost[j].PosX,0);
end;
Пример № 3
Использование массива створка в части Сторона рамы или Импост:
for i:=0 to High(Stvorka) do
begin
if Stvorka[i].HasHangle=1 then
begin
debug('Створка N',i, ' смещение по габаритам = ',Stvorka[i].PosX);
debug('Створка N',i, ' положение ручки = ',Stvorka[i].HandleHeight);
for j:=0 to High(Stvorka[i].Hole3) do
begin
AddElement(Stvorka[i].Hole3[j].PosX,Stvorka[i].Hole3[j].ShiftX);
end;
end;
end;