13.06.2024, 16:24 (Dieser Beitrag wurde zuletzt bearbeitet: 13.06.2024, 16:25 von koter.)
hallo Asterix,
(12.06.2024, 15:45)asterix schrieb: ...Entweder ich finde heraus, wo diese Griffe sind, die so winzig sind, oder ich finde die verkehrten Dreiecke...
der folgende Code markiert Steuerpunkte die kürzer sind als die Linienbreite:
Code:
Sub kurzeSteuerpunkteMarkieren()
Dim s As Shape
Dim c As Curve
Dim sp As SubPath
Dim sgF As Segment, sgL As Segment
Dim minL As Double
ActiveDocument.Unit = cdrMillimeter
For Each s In ActiveLayer.Shapes
minL = s.Outline.Width
Set c = s.Curve
For Each sp In c.SubPaths
Set sgF = sp.Segments.First
Set sgL = sp.Segments.Last
If sgF.StartingControlPointLength < minL Then Markierung sgF.StartingControlPointX, sgF.StartingControlPointY, True
If sgL.EndingControlPointLength < minL Then Markierung sgL.EndingControlPointX, sgL.EndingControlPointY
Next
Next
End Sub
Sub Markierung(x As Double, y As Double, Optional red As Boolean = False)
Dim s As Shape
Dim L As Layer, LA As Layer
Set LA = ActiveLayer
If LayerExists("Steuerpunktmarkierung") Then
Set L = ActivePage.Layers("Steuerpunktmarkierung")
Else
Set L = ActivePage.CreateLayer("Steuerpunktmarkierung")
End If
Set s = L.CreateEllipse2(x, y, 1)
If red Then
s.Outline.Color.RGBAssign 255, 0, 0
Else
s.Outline.Color.RGBAssign 0, 100, 0
End If
s.Outline.Width = 0.1
LA.Activate
End Sub
Public Function LayerExists(ByVal strLayerName As String) As Boolean
Dim objLayer As Layer
On Error Resume Next
Set objLayer = ActivePage.Layers(strLayerName)
LayerExists = Not objLayer Is Nothing
End Function
Ich weiß nicht ob es mit Deiner Version funktioniert, und ob es Dir überhaupt hilft.
Herzlichen Dank. Ich kenne mich mit Makros ehrlich gesagt kaum aus, ich habe es mal versucht und nicht starten können bzw. kein Ergebnis erhalten. Allerdings bin ich inzwischen auch etwas abgekommen von der "kleinen Griffe"-Strategie hin zu der Strategie, solche Start- und Endknoten zu finden, die eben der Kurve entgegengesetzt (also falsch) sind. Also der Knoten falsch rum, oder eben der Griff (fälschlicherweise) in Richtung der Kurve. Vielleicht kann man einen Griff finden eines Start/Endknotens, der zwischen z.B. 0° und 5° genau auf die eigene Linie zurückverweist. Aber wie erwähnt, ich denke, das wird generell schwierig, hier automatisiert etwas zu lösen .
Betriebssystem / Grafik-Software: Windows 10, CorelDraw Suite 2023
Hallo,
ich hau einfach mal raus.
Bei meiner 24er Testversion werden die Endknoten als Dreiecke dargestellt, wenn man die Knotegröße dann noch auf groß setzt sieht man das ganz gut.
Ja, das geht in der 2023 auch sehr schön. Generell finde ich das sehr gut gemacht in CorelDraw.
Mir ging es ja nicht um die Bedienung, sondern um automatische Prüfungen. Tut mir leid, dass ich nun so viele Beiträge dazu geschrieben habe, weil es am Ende wohl einfach gar nicht geht .
Ich würde ja gerne bessere Ausgangsdateien im Import haben, vielleicht kriege ich das noch hin. Mein erster Gedanke war eben einfach, dass es in einem heutigen Vektorprogramm wie CorelDraw möglich sein müsste, automatisiert bestimmte Probleme aufzuspüren, hier eben Endknoten, die verkehrt herum zeigen.
Betriebssystem / Grafik-Software: Windows 10, CorelDraw Suite 2023
Sorry. Wenn du ein "Bild" importierst wird es doch von COREL als Bitmap interpretiert (Wenigstens ist das in X6 so).
Dieses muss man doch normalerweise erst Vektorisieren (oder?).
Importierst du eine .svg ist das ja bereits vektorisiert und wird sofort als Kurven dargestellt.
Beispiel im .gif
Jetzt zur Kernfrage: Warum stören dich die Richtungen einzelner Kurven?
Ich habe noch immer keine Erklärung, was dein Ziel ist.
Gruss aus der Schweiz
Betriebssystem / Grafik-Software: Windows 11 / COREL X6
In meinem Beispielbild sieht man ja, dass der falsch ausgerichtete Endknoten dazu führt, dass die Linie einfach abgeschnitten wird, anstatt (wie dann im Beispielbild 2 korrigiert) einfach in einer Rundung zu enden.
Ja, mit "importieren" meine ich, dass ich Dateien von außerhalb CorelDraw hole, diese sind aber schon Vektorgrafiken, also SVG.
Betriebssystem / Grafik-Software: Windows 10, CorelDraw Suite 2023
Hallo nochmal, wie gesagt, ich denke, dass ich hier etwas vorschnell eine automatisierte Lösung wollte, dabei komme ich eben nicht darum herum, die Dateien vor CorelDraw schon besser zu erstellen .
Generell fand ich es nicht abwegig und vielleicht in Zukunft auch von Corel implementierbar, dass man verschiedene "Checks" in CorelDraw benutzen kann, mit denen man z.B. Mini-Kurven oder eben Kurven, bei denen irgendetwas mathematisch auffällig ist, irgendwie markieren kann. Das ist aber eben Zukunftsmusik. Aber für große Mengen Bilder / Kurven schon sinnvoll (mir ging es ja nicht um einzelne Knoten - die kann man natürlich immer manuell ändern).
Danke nochmals für eure Impulse.
Betriebssystem / Grafik-Software: Windows 10, CorelDraw Suite 2023
(13.06.2024, 22:09)asterix schrieb: ...Das ist aber eben Zukunftsmusik...
...ist es nicht!
Das gibt es in CorelDraw schon seit Jahrzehnten!
Liefere mir eine exakte Beschreibung Deines Problems und ich schreibe das Makro!
Denke daran, dass nur eine Gerade einen einzigen Winkel hat, eine Kurve hat unendlich viele Winkel.
Berücksichtige, dass jede Änderung an einem Steuerpunkt den Verlauf der Kurve ändert.
(13.06.2024, 22:09)asterix schrieb: ...vielleicht in Zukunft auch von Corel implementierbar, dass man verschiedene "Checks" in CorelDraw benutzen kann...
Beschreibe diese „Checks“ exakt und konkret und ich setzt sie um.
(So weit habe ich mich noch nie aus dem Fenster gelehnt)
13.06.2024, 22:59 (Dieser Beitrag wurde zuletzt bearbeitet: 13.06.2024, 23:03 von asterix.)
Vielen Dank für deine Antwort. Wie man merkt, arbeite ich noch nicht so lange mit CorelDraw. Allerdings habe ich nun in den letzten Monaten Vectorstyler, Affinity, Illustrator und CorelDraw getestet und bin bei CorelDraw geblieben. Früher (vor Creative Cloud) habe ich oft Illustrator genutzt, aber das Arbeiten mit CorelDraw gefällt mir immer besser.
Das nur zum Thema, dass ich sicher vieles noch nicht weiß und einschätzen kann.
Dabei habe ich aber selbst im Laufe der vielen Überlegungen dann gemerkt, was ich eher bräuchte und was nicht.
Die Größe des Griffs alleine scheint mir keine gute Lösung, weil es (vielleicht) auch Knoten geben kann, die korrekt sind, aber eben einen kleinen Mini-Griff (was also ok ist).
Besser wäre ein "Check", der alle Start- und Endknoten anschaut und misst, ob der Knoten zurück dahin verweist, wo die Kurve her kommt - siehe das Bild in meinem Link. Das erste Bild zeigt ja, dass der Knoten falsch rum ist, daher das abgeschnittene Ende der Kurve. Also habe ich manuell den Knoten herumgedreht am Griff, und siehe da, nun passt alles mit dem runden Ende im zweiten Bild.
Ich könnte mir vorstellen, dass so ein Problem doch öfters mal auftaucht. Daher ist es vielleicht auch für andere User nützlich.
Man kann ja die Richtung einer Kurve herausfinden, dann die Start/Endknoten anschauen, und dann sollte es einfach so sein, dass der Startknoten "in die Kurve" schaut, und der Endknoten aus der Kurve heraus . Wenn das also nicht so ist oder ein Griff eines Start/Endknotens in die falsche Richtung schaut, müsste dies markiert, am besten natürlich korrigiert werden. Wobei die Markierung schon ausreichen würde.
Leider kann ich es technisch nicht genauer beschreiben. Aber es wäre auch kein Problem, wenn das nicht so einfach umzusetzen ist, dann arbeite ich weiter manuell daran.
PS: Die Richtung wäre dann in einem relative engen Winkel zu beschreiben, weil ja ein Knoten auch nicht immer ganz genau richtig aus der Kurve heraus/hineinschaut. Aber er sollte eben z.B. nicht zwischen 0° und 5° oder 10° zurückschauen.
Betriebssystem / Grafik-Software: Windows 10, CorelDraw Suite 2023