Task preview

НомерprojectCategoryVisibilityИзменен
0001826RasKonWishespublic2018-11-16 11:29
InitiatorADGroup ResponsibleADGroup  
PriorityordinaryInfluencesmallReproducibilityuntested
Condition closedDecisionsolved 
Целевая версия10.22Решена в версии10.22 
Theme0001826: Upload file for "Processing station Hollinger PBZ Rahmen 2, format "XML""
DescriptionThe machining operations for this machine have a specific haracter, so the generation of machining operations is performed by a script.
TagsThere are no associated tags.
Number of references
Implementation period (days)
Cost
Planned date

Activity

ADGroup

2018-11-03 16 :48

administrator ~0001881

ADGroup

2018-11-16 11 :29

administrator ~0001889

Генерация операций обработки выполнена с помощью скрипта по причине, что есть ряд ограничений, которые нужно учитывать чтоб станок не поломался (станок не умеет контролировать данные ограничения в размерах), также на большинстве операций есть корректирующие константы относительно текущей точки нанесения операции. По данным причинам при наличие такого большога количества нуюансов и нестандартного подхода в построении файла было принято решение обработки наносить скриптом. Текст скрипта нужно записать в справочник "Скрипты" в моджуль "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;

Community support for the task
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.

Change history

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