Как правильно использовать DrawArc в C # из GCODE? - PullRequest
1 голос
/ 01 апреля 2019

Я пытаюсь нарисовать дугу (используя Graphics.DrawArc) из GCode, но результат C # не тот, когда я сравниваю с результатом https://ncviewer.com/ веб-сайта.Я изменил систему координат, чтобы начать с левой кнопки.

Я использую следующие библиотеки:-geometry3sharp-gsGcode

код GC: * ​​1007 *

G90 G64 G80 G17 G21 G40 G49 G50 G94
M1221
M5
G0      x25.10430     y35.10093
M4
M1
M3
G2      x33.76455     y20.10093    i0.0000000  j-10.0000000
G2      x25.10430     y35.10093   i-8.6602500    j5.0000000
M5
G0     x100.10430     y50.10093
M4
M1
M3
G1       x0.10430     y50.10093
G1       x0.10430      y0.10093
G1     x100.10430      y0.10093
G1     x100.10430     y50.10093
M5
M30

код C #:

else if (gc.type == GCodeLine.LType.GCode && gc.code == 2)
{
    if (gc.parameters[0].identifier.ToUpper() == "X")
        xparam = gc.parameters[0].intValue;
    else
        continue;
    if (gc.parameters[1].identifier.ToUpper() == "Y")
        yparam = gc.parameters[1].intValue;
    else
        continue;
    if (gc.parameters[2].identifier.ToUpper() == "I")
        iparam = gc.parameters[2].intValue;
    else
        continue;
    if (gc.parameters[3].identifier.ToUpper() == "J")
        jparam = gc.parameters[3].intValue;
    else
        continue;

    long x = xparam;
    long y = gbitmap.Height-1 - yparam;

    // GeometryUtils.CalcArc3Points(xstartpos, ystartpos,iparam,jparam, x, y);
    // 
     g3.Arc2d arc = new g3.Arc2d(new g3.Vector2d(iparam, jparam), new g3.Vector2d(xstartpos, ystartpos),new g3.Vector2d(x, y));

     newgraphic.DrawArc(new Pen(Color.Red, 1f),(float)arc.P0.x, (float)arc.P0.y, (float)arc.P1.x, (float)arc.P1.x, (float)arc.AngleStartDeg, (float)arc.AngleEndDeg);

    xstartpos = x;
    ystartpos = y;

}

GCODE изображение из MyApp

GCODE image from MyApp

GCODE изображение с веб-сайта

GCODE image from website

, если я изменю код с этой строки:

 newgraphic.DrawArc(new Pen(Color.Red, 1f),(float)arc.P0.x, (float)arc.P0.y, (float)arc.P1.x, (float)arc.P1.x, (float)arc.AngleStartDeg, (float)arc.AngleEndDeg);

на:

 newgraphic.DrawArc(new Pen(Color.Red, 1f),(float)arc.P0.x, (float)arc.P0.y, (float)arc.P1.x, (float)arc.P1.y, (float)arc.AngleStartDeg, (float)arc.AngleEndDeg);

я получаю следующее изображение: Изображение после изменения кода

...