Task preview
Номер | project | Category | Visibility | Создан | Изменен |
---|---|---|---|---|---|
0001826 | RasKon | Wishes | public | 2018-11-03 16:48 | 2018-11-16 11:29 |
Initiator | ADGroup | Responsible | ADGroup | ||
Priority | ordinary | Influence | small | Reproducibility | untested |
Condition | closed | Decision | solved | ||
Целевая версия | 10.22 | Решена в версии | 10.22 | ||
Theme | 0001826: Upload file for "Processing station Hollinger PBZ Rahmen 2, format "XML"" | ||||
Description | The machining operations for this machine have a specific haracter, so the generation of machining operations is performed by a script. | ||||
Tags | There are no associated tags. | ||||
Number of references | |||||
Implementation period (days) | |||||
Cost | |||||
Planned date | |||||
|
|
|
Генерация операций обработки выполнена с помощью скрипта по причине, что есть ряд ограничений, которые нужно учитывать чтоб станок не поломался (станок не умеет контролировать данные ограничения в размерах), также на большинстве операций есть корректирующие константы относительно текущей точки нанесения операции. По данным причинам при наличие такого большога количества нуюансов и нестандартного подхода в построении файла было принято решение обработки наносить скриптом. Текст скрипта нужно записать в справочник "Скрипты" в моджуль "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; |
This problem is marked solved. If you think it is not, please reopen it and explain why. |
|
Supporters: | No supporters have yet voted in favor of the task. |
Neutrality: | No users have yet voted neutral for this task. |
Opponents: | No opponents have yet voted in favor of this task. |
Date of change | User | Field | Modify |
---|---|---|---|
2018-11-03 16:48 | ADGroup | New task | |
2018-11-03 16:48 | ADGroup | Condition | new => assigned |
2018-11-03 16:48 | ADGroup | Responsible | => ADGroup |
2018-11-03 16:48 | ADGroup | Condition | assigned => closed |
2018-11-03 16:48 | ADGroup | Decision | open => solved |
2018-11-03 16:48 | ADGroup | Resolved in version | => 10.22 |
2018-11-03 16:48 | ADGroup | Comment added: 0001881 | |
2018-11-16 11:29 | ADGroup | Comment added: 0001889 |