Einzelnen Beitrag anzeigen

ebi

Registriert seit: 8. Sep 2024
11 Beiträge
 
Delphi 12 Athens
 
#1

double in Schleife und Nachkommastellen

  Alt 7. Dez 2024, 17:24
hallo Zusammen,

weshalb kommen plötzlich so viele Nachkomma Zahlen?

Delphi-Quellcode:
procedure TFormStechen.berechnen();
var
  P1, P2, P5, P6: TKoordinate;
  P: TMittelpunkt;
  aussenDm, grundDm, process, ap, safety, returnX: double;
  X_inc: double;
  drehrichtung: string;
  Zaehler: integer;
begin
  Zaehler := 1;
  X_inc := 0;
  abbruch := false;
  try
    try
      aussenDm := StrToFloat(EditAussendurchmesser.Text);
      process := StrToFloat(Edit_process.Text);
      ap := StrToFloat(EditZustellung.Text);
      safety := StrToFloat(EditSicherheitsabstand.Text);
      returnX := StrToFloat(EditSicherheitsposition.Text);
      drehrichtung := ComboBoxDrehrichtung.Text;

      grundDm := FGrundDm;
      P1.X := aussenDm;
      P1.Z := FStartPkt;
      P2.X := FRadiusDm;
      P2.Z := FStartPkt;
      P5.X := FRadiusDm;
      P5.Z := FEndPkt;
      P6.X := aussenDm;
      P6.Z := FEndPkt;

      X_pos := P1.X;
      Z_pos := P1.Z;

      if (FormMain.RichEditMain.Lines.Count <> 0) then
        NC_program(Format('M%d'#13#10, [1]));

      NC_program(Format('(Stechdrehen: %s)', [FormatDateTime('yy-mm-dd hh:nn:ss am/pm', Now())]));
      NC_program(Format('G0 X%g', [returnX]));
      NC_program(Format('G0 Z%g', [Z_pos]));
      NC_program(Format('G0 X%g', [X_pos + safety]));

      if (Z_pos = P2.Z) then
        Z_pos := P5.Z
      else
        Z_pos := P2.Z;

      NC_program(Format('G1 X%g', [X_pos]));
      NC_program(Format('G1 Z%g', [Z_pos]));

      FormMain.SubProcessBar(FormMain.ProgressBarMain, true, Floor(FEinstichtiefe / ap));

      repeat
        X_pos := X_pos - ap;
        if (X_pos < P2.X) then
          X_pos := P2.X;

        if (Z_pos = P2.Z) then
          Z_pos := P5.Z
        else
          Z_pos := P2.Z;

        NC_program(Format('G1 X%g', [X_pos]));
        NC_program(Format('G1 Z%g', [Z_pos]));

        if ((Zaehler * ap) > process) then
          begin
            Zaehler := 1;
            abfahren(safety);
            NC_program(Format('G0 X%g', [returnX]));
            NC_program(Format('M%d', [1]));
            anfahren(safety);
          end
        else
          Zaehler := Zaehler + 1;

        if (abbruch) then
          exit;

        FormMain.Prozess();
      until not(RoundTo(X_pos, -3) > RoundTo(P2.X, -3));

      P.mpX := X_pos;

      repeat
        P.mpX := P.mpX - ap;
        X_inc := X_inc + ap;
        if (P.mpX < grundDm) then
          begin
            P.mpX := grundDm;
            X_inc := X_pos - grundDm;
          end;

        if (Z_pos = P2.Z) then
          begin
            P.mpZ := Z_pos - X_inc / 2;
            P.mpI := 0;
            P.mpK := (X_inc / 2) * (-1);
            NC_program(Format('G2 X%g Z%g I%g K%g', [P.mpX, P.mpZ, P.mpI, P.mpK]));
            P.mpZ := P5.Z + (X_inc / 2);
            NC_program(Format('G1 Z%g', [P.mpZ]));
            P.mpZ := P5.Z;
            P.mpI := X_inc / 2;
            P.mpK := 0;
            NC_program(Format('G2 X%g Z%g I%g K%g', [X_pos, P.mpZ, P.mpI, P.mpK]));
            Z_pos := P5.Z;
          end
        else
          begin
            P.mpZ := Z_pos + X_inc / 2;
            P.mpI := 0;
            P.mpK := X_inc / 2;
            NC_program(Format('G3 X%g Z%g I%g K%g', [P.mpX, P.mpZ, P.mpI, P.mpK]));
            P.mpZ := P2.Z - (X_inc / 2);
            NC_program(Format('G1 Z%g', [P.mpZ]));
            P.mpZ := P2.Z;
            P.mpI := X_inc / 2;
            P.mpK := 0;
            NC_program(Format('G3 X%g Z%g I%g K%g', [X_pos, P.mpZ, P.mpI, P.mpK]));
            Z_pos := P2.Z;
          end;

        if (abbruch) then
          exit;

        FormMain.Prozess();
      until not(RoundTo(P.mpX, -3) > RoundTo(grundDm, -3));

      abfahren(safety);
      NC_program(Format('G0 X%g', [returnX]));
    except
      on e: EConvertError do
        ShowMessage(e.Message);
    end;
  finally
    FormMain.SubProcessBar(FormMain.ProgressBarMain, false, 0);
    abbruch := true;
  end;
end;
Miniaturansicht angehängter Grafiken
screenshot-2024-12-07-171938.png  
  Mit Zitat antworten Zitat