Просмотр задачи
Номер | Проект | Категория | Видимость | Создан | Изменен |
---|---|---|---|---|---|
0001826 | RasKon | Пожелания | публичная | 2018-11-03 16:48 | 2018-11-16 11: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 16:48 | ADGroup | Новая задача | |
2018-11-03 16:48 | ADGroup | Состояние | новая => назначена |
2018-11-03 16:48 | ADGroup | Ответственный | => ADGroup |
2018-11-03 16:48 | ADGroup | Состояние | назначена => закрыта |
2018-11-03 16:48 | ADGroup | Решение | открыта => решена |
2018-11-03 16:48 | ADGroup | Решена в версии | => 10.22 |
2018-11-03 16:48 | ADGroup | Комментарий добавлен: 0001881 | |
2018-11-16 11:29 | ADGroup | Комментарий добавлен: 0001889 |