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

      System.CloseFile(line);

    end;

end;


procedure TForm1.VersiaClick(Sender: TObject);

begin

  AboutBox.ShowModal;

end;


procedure TForm1.VyhodClick(Sender: TObject);

begin

  Form1.Close;

end;


procedure TForm1.SaveClick(Sender: TObject);

begin

  ToolButton2Click(Sender);

end;


procedure TForm1.OpenClick(Sender: TObject);

begin

  ToolButton1Click(Sender);

end;


procedure TForm1.PrintClick(Sender: TObject);

begin

  ToolButton3Click(Sender);

end;



procedure TForm1.CancelClick(Sender: TObject);

begin

  Form1.Close;

end;



procedure NaytiKoordinatu(kadr: string; koordinata: char; var poluchenaya: string);

var

  p : integer;

  poz_10: string[100];

  per : string[10];

  r: real;

begin

  per:='          ';

  kadr:= Concat(kadr, ' ');

  nach:= pos(koordinata,kadr);

  nach:= Succ(nach);

  poz_10:= copy(kadr, nach, 100);

  val(poz_10,r,oshibka);

  for p:=1 to oshibka - 1 do

    per[p]:= poz_10[p];

  if poz_10 = ' ' then oshibka:= 1;

  poluchenaya:= TrimRight(per);

end;



function DobavitTochku( f: string): string; // Добавляет точку, если её нет

begin

  if pos('.', f) = 0

    then f:= Concat(f, '.');

  Result:= f;

end;




procedure Podhod_G41_G42_radius;

begin                   //  Х и Y уже найдены

  if pos('G3', Stroka.Strings[Succ(m)]) <> 0 then

    begin

      if (I > 0) and (J >= 0) then

        begin

          I_sled:= 1;

          J_sled:= -1;

          exit;

        end;

      if (I < 0) and (J <= 0) then

        begin

          I_sled:= -1;

          J_sled:= 1;

          exit;

        end;

      if (I <= 0) and (J > 0) then

        begin

          I_sled:= 1;

          J_sled:= 1;

          exit;

        end;

      if (I >= 0) and (J < 0) then

        begin

          I_sled:= -1;

          J_sled:= -1;

          exit;

        end;

    end;

  if pos('G2', Stroka.Strings[Succ(m)]) <> 0 then

    begin

      if (I >= 0) and (J > 0) then

        begin

          I_sled:= -1;

          J_sled:= 1;

          exit;

        end;

      if (I <= 0) and (J < 0) then

        begin

          I_sled:= 1;

          J_sled:= -1;

          exit;

        end;

      if (I < 0) and (J >= 0) then

        begin

          I_sled:= -1;

          J_sled:= -1;

          exit;

        end;

      if (I > 0) and (J <= 0) then

        begin

          I_sled:= 1;

          J_sled:= 1;

          exit;

        end;

    end;

end;





               // Преобразует строку, удаляет и вставляет подстроку ВМ

function preobrazovanieVM( vhod_v_preobrazovanie: real ;var kadr: string): string;

var

  stroka: string[10];

begin

  delete(kadr,nach,oshibka-1);

  stroka:= FloatToStr(vhod_v_preobrazovanie);  // Преобразуем в число строку

  insert(stroka, kadr, nach);

end;




              // Преобразует строку, удаляет и вставляет подстроку МАЯК

function preobrazovanieMAYAK( vhod_v_preobrazovanie: real ;var kadr: string): string;

var

  stroka: string[10];

begin

  delete(kadr,nach,oshibka-1);

  if vhod_v_preobrazovanie <> 0 then

    begin

      stroka:= FloatToStrF(vhod_v_preobrazovanie, fffixed, 12, 3);  // Преобразуем в число строку

      vhod_v_preobrazovanie:= StrToFloat(stroka);     // Был глюк при конвертации

      stroka:= FloatToStr(vhod_v_preobrazovanie);      //  Сейчас вроде работает

      stroka:= DobavitTochku(stroka);  // Добавляет точку, если её нет

    end

  else stroka:= '0';      // вставляем без точки

  insert(stroka, kadr, nach);

end;





procedure Podhod_G41_G42_line;

var

  str: String;

begin

  str:= stroka.Strings[Succ(m)];

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

    begin

      NaytiKoordinatu(str, 'X', str);

      X_sled:= StrToFloat(str);

    end

  else

    begin

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

        X_sled:= X_nast / 1000

      else

        X_sled:= X_nast;

    end;

  str:= stroka.Strings[Succ(m)];

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

    begin

      NaytiKoordinatu(str, 'Y', str);

      Y_sled:= StrToFloat(str);

    end

  else

    begin

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

        Y_sled:= Y_pred / 1000

      else

        Y_sled:= Y_nast;

    end;

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

    begin

      X_sled:= X_sled * 1000;

      Y_sled:= Y_sled * 1000;

      X_sled:= X_sled - X_nast;

      Y_sled:= Y_sled - Y_nast;

    end

  else

    begin

      X_sled:= X_sled - X_nast;

      Y_sled:= Y_sled - Y_nast;

    end;

end;





function FindVstavki(koordinata: char; kadr: string): integer;

begin

  case koordinata of

    'X': begin

           if pos('Y', kadr) <> 0 then Result:= pos('Y', kadr)

           else if pos('I', kadr) <> 0 then Result:= pos('I', kadr)

             else if pos('J', kadr) <> 0 then Result:= pos('J', kadr)

               else if pos('F', kadr) <> 0 then Result:= pos('F', kadr)

                 else if pos('M', kadr) <> 0 then Result:= pos('M', kadr)

                   else Result:= Length(kadr) + 1;

         end;

    'Y': begin

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

           else if pos('J', kadr) <> 0 then Result:= pos('J', kadr)

             else if pos('F', kadr) <> 0 then Result:= pos('F', kadr)

               else if pos('M', kadr) <> 0 then Result:= pos('M', kadr)

                 else Result:= Length(kadr) + 1;

         end;

    'I': begin

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

           else if pos('F', kadr) <> 0 then Result:= pos('F', kadr)

             else if pos('M', kadr) <> 0 then Result:= pos('M', kadr)

               else Result:= Length(kadr) + 1;

         end;

    'J': begin

           if pos('F', kadr) <> 0 then Result:= pos('F', kadr)

           else if pos('M', kadr) <> 0 then Result:= pos('M', kadr)

             else Result:= Length(kadr) + 1;

         end;

  else

    Result:= Length(kadr) + 1;

  end;

end;




procedure TForm1.ObrabotkaClick(Sender: TObject);

label

  metka;

var

  kol, buf: integer;

  Proc, proci, u: integer;

  vyh: string;

  PolChisla_1Proc, uvel: real;

  bufer: string;

  Priz_pusto_memo: boolean;



procedure DelProbel(var kadr: string);   // Удаление пробелов

var

  k: integer;

begin

  while pos(' ', kadr) <> 0 do

    begin

      k:= pos(' ', kadr);

      delete(kadr, k, 1);

    end;

end;


procedure pustostroka;

begin

  stroka.Delete(m);            //  Удаляем пустую строку

  Dec(kol);                    //  Уменьшаем кол-во строк на 1

  Dec(m);                      //  Уменьшаем на одну стороку

end;



procedure nomerkadra(var kadr: string);

var

  error, nach, x: integer;

  poz_N7: string [10];

begin

  poz_N7:= '          ';

  nach:= pos('N',kadr);    // Номер позиции 'N'

  if nach <> 0 then         // Позиция найдена

    begin

      Inc(nach);  // Наращиваем на 1

      poz_N7:= copy(kadr, nach, 10);

      val(poz_N7,x,error);      // проверяем на ошибку

      if error = 1 then

      else

        begin

          delete(kadr,nach,error-1); // Удаляем старое значение

          Inc(buf);                    // Наращиваем кадр на 1

          insert(IntToStr(buf), kadr, nach); // Вставляем новое число

        end;

    end;

end;





Procedure PC_MAYAK(var kadr: string);

var

  I_est: boolean;

  st: string;

  s: string[10];

begin

  if (pos('%', kadr) <> 0) or (pos('$', kadr) <> 0) then exit;

  I_est:= False;

  if (pos('I',kadr) <> 0) or (pos('J',kadr) <> 0) then I_est:= true;

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

    begin

      NaytiKoordinatu(kadr,'X', vyh);

      if oshibka <> 1 then

        begin

          X_nast:= StrToFloat(vyh);

          PreobrazovanieMayak(X_nast, kadr); // не было точки

        end;

    end

  else

    if I_est then  // Добавление Х Если нет

      begin

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

        s:= FloatToStr(X_nast);

        if X_nast <> 0 then s:= DobavitTochku(s);

        insert(Concat('X', s), kadr, uslovie);

      end;

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

    begin

      NaytiKoordinatu(kadr,'Y', vyh);

      if oshibka <> 1 then

        begin

          Y_nast:= StrToFloat(vyh);

          PreobrazovanieMayak(Y_nast, kadr)  // не было точки

        end;

    end

  else

    if I_est then       // Добавление Y Если нет

      begin

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

        s:= FloatToStr(Y_nast);

        if Y_nast <> 0 then s:= DobavitTochku(s);

        insert(Concat('Y',s), kadr, uslovie);

      end;                                          // Подходы

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



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