Рефераты. Конвертирование исходного текста программ для станков с ЧПУ из одной системы программирования в друг...

  else

    if I_est then

      begin

        uslovie:= pos('I',kadr);                 // Преобразуем в число строку

        insert('Y' + FloatToStr(Y_pred), kadr, uslovie);

      end;

  if (pos('G42', kadr) <> 0) or (pos('G41', kadr) <> 0) then

    begin

      try

        s:= Stroka.Strings[Succ(m)]; // ошибка нет строки вообще

      except

      on EStringListError do       // добавляем пустую строку и исключаем ошибку

        stroka.Add('');

      end;

      if pos('X', kadr) = 0 then

        begin                                  // Вставка Х и Y если нет

          NaytiKoordinatu(Stroka.Strings[Succ(m)], 'X', s);

          if oshibka <> 1 then

            begin

              uslovie:= FindVstavki('X', kadr);

              s:= TrimRight(s);

              X_nast:= StrToFloat(s) * 1000;    // В позиции X Y I J F M

              Insert('X' + FloatToStr(X_nast), kadr, uslovie);

            end

          else

            begin

              X_nast:= X_pred;

              uslovie:= FindVstavki('X', kadr); // В позиции X Y I J F M

              Insert('X' + FloatToStr(X_nast), kadr, uslovie);

            end;

        end;

      if pos('Y', kadr) = 0 then

        begin

          uslovie:= FindVstavki('Y', kadr);

          NaytiKoordinatu(Stroka.Strings[Succ(m)], 'Y', s);

          s:= TrimRight(s);

          Y_nast:= StrToFloat(s) * 1000;

          Insert('Y' + FloatToStr(Y_nast), kadr, uslovie);

        end;

      if (pos('I', Stroka.Strings[Succ(m)]) <> 0) and (pos('J', Stroka.Strings[Succ(m)]) <> 0)

      then

        begin

          Naytikoordinatu(Stroka.Strings[Succ(m)], 'I', st);

          I:= StrToFloat(st);

          Naytikoordinatu(Stroka.Strings[Succ(m)], 'J', st);

          J:= StrToFloat(st);

          Podhod_G41_G42_radius;

          J:= J * 1000;

          J:= Int(J);

          if (I_sled = -1) and (J > 0) then J:= -J;

          if (I_sled = 1) and (J < 0) then J:= -J;

          if Pos('I', kadr) <> 0 then

            begin

              NaytiKoordinatu(kadr, 'I', s);

              PreobrazovanieVM(J, kadr);

            end

          else

            begin

              uslovie:= FindVstavki('I', kadr);

              Insert('I' + FloatToStr(J), kadr, uslovie);

            end;

          I:= I * 1000;

          I:= Int(I);

          if(J_sled = -1) and (I > 0) then I:= -I;

          if(J_sled = 1) and (I < 0) then I:= -I;

          if Pos('J', kadr) <> 0 then

            begin

              NaytiKoordinatu(kadr, 'J', s);

              PreobrazovanieVM(I, kadr);

            end

          else

            begin

              uslovie:= FindVstavki('J', kadr);

              Insert('J' + FloatToStr(I), kadr, uslovie);

            end;

          Exit;

        end

      else

        begin

          Podhod_G41_G42_line;

          X_sled:= Int(X_sled);

          if Pos('X', kadr) <> 0 then

            begin

              NaytiKoordinatu(kadr, 'I', s);

              PreobrazovanieVM(X_sled, kadr);

            end

          else

            begin

              uslovie:= FindVstavki('Y', kadr);

              Insert(FloatToStr(X_sled), kadr, uslovie);

            end;

          Y_sled:= Int(Y_sled);

          if Pos('Y', kadr) <> 0 then

            begin

              NaytiKoordinatu(kadr, 'J', s);

              PreobrazovanieVM(Y_sled, kadr);

              X_pred:= X_nast;

              Y_pred:= Y_nast;

              exit;

            end

          else

            begin

              uslovie:= FindVstavki('X', kadr);

              Insert(FloatToStr(Y_sled), kadr, uslovie);

            end;

        end;

    end;

  if pos('I',kadr) <> 0 then

    begin

      NaytiKoordinatu(kadr,'I',vyh);

      if oshibka = 1 then

      else

        begin

          I:= StrToFloat(vyh) * 1000;

          I:= Int(I);                 // Отбрасываем дробную часть

          preobrazovanieVM(I,kadr);

        end;

    end;

  if pos('J',kadr) <> 0 then

    begin

      NaytiKoordinatu(kadr,'J',vyh);

      if oshibka = 1 then

      else

        begin

          J:= StrToFloat(vyh) * 1000;

          J:= Int(J);                  // Отбрасываем дробную часть

          preobrazovanieVM(J,kadr);

        end;

    end;

  if pos('Z',kadr) <> 0 then

    begin

      NaytiKoordinatu(kadr,'Z',vyh);

      if oshibka = 1 then

      else

        begin

          Z:= StrToFloat(vyh) * 1000;

          Z:= Int(Z);                  // Отбрасываем дробную часть

          preobrazovanieVM(Z,kadr);

        end;

    end;

  uslovie:= pos('A',kadr);

  if uslovie <> 0 then

    begin

      NaytiKoordinatu(kadr,'A',vyh);

      if oshibka = 1 then

      else

        begin

          A:= StrToFloat(vyh) * 1000;

          A:= Int(A);                   // Отбрасываем дробную часть

          preobrazovanieVM(A,kadr);

          Delete(kadr, uslovie, 1);

          Insert('U',kadr,uslovie);

        end;

    end;

  if pos('K',kadr) <> 0 then

    begin

      NaytiKoordinatu(kadr,'K',vyh);

      if oshibka = 1 then

      else

        begin

          K:= StrToFloat(vyh) * 1000;

          K:= Int(K);                  // Отбрасываем дробную часть

          preobrazovanieVM(K,kadr);

        end;

    end;

    X_pred:= X_nast;

    Y_pred:= Y_nast;

end;



       //  НАЧАЛО ОСНОВНОЙ ПРОГРАММЫ  obrabotka


begin

  if (Form1.NomerKadra.State = cbUnchecked) and (Form1.Probel.State = cbUnchecked) and

    (Form1.Pustostr.State = cbUnchecked) and (Form2.Ne_obrabatyvat.Checked) then

    begin

      ShowMessage(' Обработка не задана ');

      Goto metka;

    end;

  Priz_pusto_memo:= false;

  kol:= Memo1.Lines.Count;    //   Количество строк

  if kol = 0 then             //   Если поле пусто

    begin

      ShowMessage(' В поле редактирования пусто ');

      Goto metka;

    end;

  memo1mod:= true;

  Panel1.Caption:= IntToStr(kol);

  buf:= 0;   m:= 0;   I:= 0;   J:= 0;

  PolChisla_1Proc:= kol div 100;

  uvel:= PolChisla_1Proc;

  Indikator.Position:= 0;

  Proc:= Succ(Indikator.Position);

  u:= 100 div kol;

  Proci:= u;

  stroka:= TStringList.Create();

  stroka.Text:= Memo1.Text;

  Memo1.Clear;

  repeat

    bufer:= stroka.Strings[m];

    Panel2.Caption:= IntToStr(Succ(m));

    Panel2.Refresh;

    if (Form1.Probel.Checked)then

      DelProbel(bufer);                                // Удаляем пробелы

    if Form1.NomerKadra.Checked then                 // включен переключатель

      nomerkadra(bufer);

    if Form2.PC_MAYAK.Checked then

      pc_mayak(bufer);

    if Form2.PC_VM.Checked then

      pc_vm(bufer);

    if Form2.VM_MAYAK.Checked then

      VM_MAYAK(bufer);

    if Form2.MAYAK_VM.Checked then

      Mayak_vm(bufer);

    if kol >= 100 then

      begin

        if m >= PolChisla_1Proc then

          begin

            Indikator.Position:= Proc;

            Form1.PanelSostoyaniya.Panels[1].Text:= ' Выполнено ' + IntToStr(Indikator.Position) + ' %';

            PanelSostoyaniya.Refresh;  // Перерисовка панели

            Inc(proc);

            PolChisla_1Proc:= PolChisla_1Proc + uvel;

          end;

      end

        else

          begin

            Indikator.Position:= Proci;

            Form1.PanelSostoyaniya.Panels[1].Text:= ' Выполнено ' + IntToStr(Indikator.Position) + ' %';

            PanelSostoyaniya.Refresh;  // Перерисовка панели

            Inc(proci, u);

          end;

    stroka.Strings[m]:= bufer;   // Для токарного станка

    if Length(bufer) = 0 then

      if Form1.PustoStr.Checked then

        pustostroka;

    Bufer:= '';        //  Очистка строки Буфер

    Inc(m);       // Следующая строка (+1)

  until m >= kol;

  Panel1.Caption:= IntToStr(Stroka.Count);  // Сколько реально осталось

  Form1.PanelSostoyaniya.Panels[1].Text:= ' Выполнено ' + '100' + ' %';

  Indikator.Position:= 100;

  if (Form2.PC_MAYAK.Checked) or (Form2.PC_VM.Checked) or (Form2.VM_MAYAK.Checked) or (Form2.MAYAK_VM.Checked) then

    begin

      Form2.PC_VM.Enabled:= false;

      Form2.PC_MAYAK.Enabled:= false;

      Form2.VM_MAYAK.Enabled:= false;

      Form2.MAYAK_VM.Enabled:= false;

      Form2.Ne_obrabatyvat.Checked:= true;

    end;

  try      //  Ошибка если в Memo1 пробелы

  if Stroka.Strings[0] <> '' then    // Вставить пустую строку если её нет

    Stroka.Insert(0, '');

  except

    on EStringListError do

  end;

  Memo1.Text:= Stroka.Text;

  stroka.Free;

  metka:                     // если Поле пустое то выход сюда

end;


procedure TForm1.ToolButton6Click(Sender: TObject);  // Кнопка очистить

begin

  Memo1.Clear;

  Panel1.Caption:= '0';

  Panel2.Caption:= '0';

  Form2.PC_VM.Enabled:= true;

  Form2.PC_MAYAK.Enabled:= true;

  Form2.VM_MAYAK.Enabled:= true;

  Form2.MAYAK_VM.Enabled:= true;

  Label1.Caption:= '';

  Form2.FormActivate(Sender);

  Memo1.SetFocus;

  Indikator.Position:= 0;

end;



procedure TForm1.ToolButton4Click(Sender: TObject);  // Кнопка параметры

Страницы: 1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11, 12, 13, 14, 15, 16, 17



2012 © Все права защищены
При использовании материалов активная ссылка на источник обязательна.