Fehlerhafte Knoten-Griffe automatisch finden
#11
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.

Gruß

Koter
Zitieren
#12
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 Smile.

Betriebssystem / Grafik-Software: Windows 10, CorelDraw Suite 2023
Zitieren
#13
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.
     
Zitieren
#14
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 Smile.
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
Zitieren
#15
Cool 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


Angehängte Dateien Thumbnail(s)
   

Betriebssystem / Grafik-Software: Windows 11 / COREL X6
Zitieren
#16
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
Zitieren
#17
Sorry....ich bin `raus.

Keine meiner Fragen wird beantwortet.

Tschüss

Betriebssystem / Grafik-Software: Windows 11 / COREL X6
Zitieren
#18
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 Smile.

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
Zitieren
#19
hallo Asterix,

(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)

Gruß

Koter
Zitieren
#20
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.

In dieser Antwort hatte ich gezeigt, worum es mir geht:
https://forum.juergens-workshops.de/show...#pid172655

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 Smile. 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
Zitieren



Möglicherweise verwandte Themen...
Thema Verfasser Antworten Ansichten Letzter Beitrag
  Dokumentschriftarten finden und (einfach) ersetzen in CDR X6? Sascha B. 33 13.461 13.09.2024, 12:48
Letzter Beitrag: koter
Question QR-Codes automatisch generieren Lisa1992 1 263 31.05.2024, 07:02
Letzter Beitrag: Litschi
  Beim speichern Version automatisch auf alte Version stellen awitechnik 4 1.101 12.01.2024, 11:04
Letzter Beitrag: awitechnik
  Seriendrucktexte automatisch skalieren ben512 7 2.386 26.04.2023, 20:45
Letzter Beitrag: koter
  Textwerkzeug automatisch gedreht Nils 3 1.604 28.09.2022, 12:22
Letzter Beitrag: cutti
  Objekt aus Knoten mit Farbe füllen Spaceliner 7 1.821 02.08.2022, 10:11
Letzter Beitrag: Spaceliner
  2018: Knoten verbinden mtemp 6 2.636 26.04.2021, 07:28
Letzter Beitrag: norre
Star nicht verbundene Knoten Finden Karthagos 2 1.717 24.03.2020, 13:40
Letzter Beitrag: Karthagos
  Knoten mit Bedienfeld verschieben. chrisberlin 11 3.597 22.01.2020, 23:53
Letzter Beitrag: norre
  Landscape vs portrait druckformat nicht mehr automatisch siegbrunn 2 1.415 10.09.2019, 17:36
Letzter Beitrag: siegbrunn