GDIPlus Kreisbogen ( G02 und G03 )

  • Hi ich weis nicht mehr weiter wie ich es lösen soll.

    Ich möchte gerne Die CNC Dateien bei uns auf der Arbeit Grafisch darstellen.

    Ich bekomme auch alles hin nur bei den G02 und G03 befehlen komme ich nicht mehr weiter.

    in den Befehlen steht immer der Endpunkt in X und Y, wahlweise mit den Radius oder I und J.

    I und J sind wiederum der Mittel Punkt in X und Y.

    Hier mal ein Beispiel:

    G01 X50 Y50

    G01 X100 Y50

    G03 X150 Y100 R50 <-- Kreisbogen Gegen den Uhrzeigersinn

    G01 X150 Y150


    G01 X650 Y50

    G01 X600 Y50

    G02 X550 Y100 I600 J100 <-- Kreisbogen Im Uhrzeigersinn

    G01 X550 Y150


    Ich verstehe einfach nicht wie ich daraus die Werte bekomme die Die GDIPlus Funktion _GDIPlus_GraphicsDrawArc von mir verlangt. Vielleicht sehe ich den Wald vor lauter bäumen auch nicht mehr ^^

  • Hi,


    hier ein kleiner Denkanstoß.


    Siehe im Tabellenbuch nach "Kreisabschnitt" (oder im Internet, wenn kein Tabellenbuch verfügbar ist).
    Zudem brauchst du die Winkelfunktionen ein paar mal (offensichtlich).

    Sobald du den Mittelpunkt errechnet hast, sollte der Rest ziemlich einfach sein.

    Ist etwas unsauber sollte aber für die erste Situation funktionieren:

    mfg

    Zeitriss

  • Wahrscheinlich ist mein Post hier überflüssig, aber für Kreisausschnitte habe ich in einem alten Skript folgendes gefunden:

    AutoIt
    Func _PieSegment($GFX, $mX, $mY, $W, $H, $D, $fStart, $fSweep, $iCol)
        DllCall($__g_hGDIPDll, 'int', 'GdipDrawArc', 'handle', $GFX, 'handle', $PEN, 'float', $mX + $D / 2 - $W / 2, 'float', $mY + $D / 2 - $H / 2, 'float', $W - $D, 'float', $H - $D, 'float', $fStart, 'float', $fSweep)
    EndFunc   ;==>_PieSegment

    Macht genau was man vermutet: Mittelpunkt, Durchmesser, Startwinkel und Überspannender Winkel müssen bekannt sein und dann malt es einen Teilkreis (W und H sind größen der zu bemalenden Fläche).

    [GDI+] Rotierende Kreisausschnittsegmente

    (Hilft wahrscheinlich nicht sonderlich weiter, der Vollständigkeit halber aber mal erwähnt :P)

    lg

    M