Переглянути завдання
Номер | Проект | Категорія | Видимість | Создан | Изменен |
---|---|---|---|---|---|
0001826 | RasKon | Побажання | Громадський | 2018-11-03 15:48 | 2018-11-16 10:29 |
Ініціатор | ADGroup | Відповідальний | ADGroup | ||
Пріоритет | Звичайно | Впливати | Малий | Відтворюваність | не перевірялася |
Умова | закрита | Рішення | вирішено | ||
Целевая версия | 10.22 | Решена в версии | 10.22 | ||
Суб'єкт | 0001826: Файл вивантаження для "Станція обробки Hollinger PBZ Rahmen 2, формат "XML"" | ||||
Опис | Операції обробки для цього верстата мають специфічний харракер, тому генерація операцій обробки виконується скриптом. | ||||
Мітка | Пов'язаних міток немає. | ||||
Кількість звернень | |||||
Термін реалізації (днів) | |||||
Вартість | |||||
Запланована дата | |||||
|
|
|
Генерация операций обработки выполнена с помощью скрипта по причине, что есть ряд ограничений, которые нужно учитывать чтоб станок не поломался (станок не умеет контролировать данные ограничения в размерах), также на большинстве операций есть корректирующие константы относительно текущей точки нанесения операции. По данным причинам при наличие такого большога количества нуюансов и нестандартного подхода в построении файла было принято решение обработки наносить скриптом. Текст скрипта нужно записать в справочник "Скрипты" в моджуль "AppEvents" (если такого модуля нет в списке то его нужно создать вручную). Текст скрипта: procedure SetObrabotka(bi:TBinaryPilaExpItem; ToolNum:integer; XPos,ZPos:double); // формирует объект для занесения информации об обработке профиля var ooi1:TObrabOperItem; begin if (ToolNum=17)or(ToolNum=43) then begin if (XPos<250)or(bi.L-XPos<250)or(bi.L<600) then exit; end; if (ToolNum=11)or(ToolNum=12) then begin if (bi.L<300) then exit; end; ooi1:=TObrabOperItem.Create; ooi1.Instr:=inttostr(ToolNum); ooi1.SizeNewXY:=XPos; ooi1.DopInfo:=floattostr(ZPos); bi.ObrabItems.Add(ooi1,aimYes); end; procedure SetObrabotkaDop14or17(bi:TBinaryPilaExpItem; XPoxInit,XFragmentLen,ZPos:double); // проверяет участок на большую длину и если она большая то включает дополнительные обработки 14 или 17 begin if (XFragmentLen>600)and(XFragmentLen<1350) then begin // если ширина конструкции больше 600 и меньше 1350 // водоотлив по центру конструкции SetObrabotka(bi,14,XPoxInit+XFragmentLen/2-30/2,30); end else if (XFragmentLen>=1350) then begin // если ширина конструкции больше или равна 1350 // водоотлив+дренажи наклонные по центру конструкции SetObrabotka(bi,17,XPoxInit+XFragmentLen/2-30/2,30); end; end; procedure OnStanokExportBeforeCreateStructure; var i,k:integer; bi:TBinaryPilaExpItem; cnr1:PConnetorRec; LastPos:double; begin // работаем со станком Hollinger PBZ Rahmen 2 if gd.StanokExportCore.IdStanokExport<>57 then exit; //Showmessage('Event!!! '+inttostr(gd.StanokExportCore.IdStanokExport)); for i:=0 to gd.StanokExportCore.Items.Count-1 do begin bi:=gd.StanokExportCore.Items.GetByNum(i); if not assigned(bi.InfoU.Item) then continue; if not assigned(bi.InfoR.Item) then continue; if not assigned(bi.InfoD.Item) then continue; if not assigned(bi.InfoL.Item) then continue; if assigned(bi)then begin // очищаем все обработки, которые были размечены программой ранее bi.ObrabItems.Clear; bi.InfoU.Item.ObrabItems.Clear; bi.InfoR.Item.ObrabItems.Clear; bi.InfoD.Item.ObrabItems.Clear; bi.InfoL.Item.ObrabItems.Clear; if bi.InfoD.Item.L>=300 then begin // дренаж наклонный в начале SetObrabotka(bi.InfoD.Item,11,50+100,30); // дренаж наклонный в конце SetObrabotka(bi.InfoD.Item,12,bi.InfoD.Item.L-50-100-30,30); // водоотлив в начале SetObrabotka(bi.InfoD.Item,14,70,30); // водоотлив в конце SetObrabotka(bi.InfoD.Item,14,bi.InfoD.Item.L-70-30,30); // обрабатываем нижнюю палку if bi.InfoD.CnAr.ItemsNewCount>0 then begin // импоста вертикальные есть LastPos:=0; for k:=0 to bi.InfoD.CnAr.ItemsNewCount-1 do begin cnr1:=bi.InfoD.CnAr.GetItemNewXY(k); // дополнительные обработки 14 или 17 при большой ширине участка SetObrabotkaDop14or17(bi.InfoD.Item,LastPos,cnr1.sizeaXY-LastPos,30); // отверстие под импост if (bi.InfoL.Item.L>570)and(bi.InfoR.Item.L>570) then begin SetObrabotka(bi.InfoD.Item,43,cnr1.sizeaXY-20,30); end // водоотлив+дренажи наклонные в точке импоста SetObrabotka(bi.InfoD.Item,17,cnr1.sizeaXY-20,30); LastPos:=cnr1.sizeaXY; end; // до этого проверяли все участки до последнего // теперь проверка последнего участка после последнего импоста до конца профиля // дополнительные обработки 14 или 17 при большой ширине участка SetObrabotkaDop14or17(bi.InfoD.Item,LastPos,bi.InfoD.Item.L-LastPos,30); end else begin // импостов вертикальных нет // дополнительные обработки 14 или 17 при большой ширине участка SetObrabotkaDop14or17(bi.InfoD.Item,0,bi.InfoD.Item.L,30); end; // обрабатываем верхнюю палку if bi.InfoU.CnAr.ItemsNewCount>0 then begin // импоста вертикальные есть LastPos:=0; for k:=0 to bi.InfoU.CnAr.ItemsNewCount-1 do begin cnr1:=bi.InfoU.CnAr.GetItemNewXY(k); // отверстие под импост if (bi.InfoL.Item.L>570)and(bi.InfoR.Item.L>570) then begin SetObrabotka(bi.InfoU.Item,43,cnr1.sizeaXY-20,30); end LastPos:=cnr1.sizeaXY; end; end; end; end; end; end; |
Цю задачу відмічено як розв'язану. Якщо Ви думаєте, що це не так, будь ласка, відкрийте її повторно і роз'ясніть чому. |
|
Прихильників: | За це завдання ще не проголосував жоден прихильник. |
Нейтралітет: | Ще жоден користувач не проголосував нейтрально за це завдання. |
Супротивників: | За це завдання ще не проголосував жоден опонент. |
Дата зміни | Користувач | Поле | Зміна |
---|---|---|---|
2018-11-03 15:48 | ADGroup | Новий виклик | |
2018-11-03 15:48 | ADGroup | Умова | нова => призначена |
2018-11-03 15:48 | ADGroup | Відповідальний | => ADGroup |
2018-11-03 15:48 | ADGroup | Умова | призначена => закрита |
2018-11-03 15:48 | ADGroup | Рішення | відкрито => вирішено |
2018-11-03 15:48 | ADGroup | Вирішено у версії | => 10.22 |
2018-11-03 15:48 | ADGroup | Коментар додано: 0001881 | |
2018-11-16 10:29 | ADGroup | Коментар додано: 0001889 |