Fehlerhafte Knoten-Griffe automatisch finden
#41
Super, das klappt mit dem fraglichen Endknoten nun. 

Zu deinen Fragen zu den Makro-Optionen würde ich in der Tat noch folgende Dinge wünschen:

- die Steuerpunktlänge bei dem ersten Makro (zum Finden und Markieren) könnte ruhig kürzer sein, weil man ja eben gerade bei sehr kurzen Längen oft die Fehler hat. Von mir aus könnte dies auch ein Zehntel (1/10) der Umrissbreite sein

- die Drehung der Knoten klappt ja auch, aber wenn eine Steuerpunktlänge = 0, dann kann auch gerne ohne Nachfrage und ohne doppelte Auswahl direkt gedreht werden. Denn wenn man 2x klickt auf das Makro, dann weiß man spontan nicht immer, was nun denn mit dem Knoten oder Makro nicht gestimmt hat. Da ich ohnehin immer manuell weiterarbeite, wird es nicht passieren, dass ich aus Versehen zu viel automatisch korrigiere, das würde dann schon auffallen. Also das zweite Makro darf ruhig ohne Zwischenschritt und mit nur 1x klicken dann drehen (+ggf. korrigieren)

Hoffe, es wurde klar Smile

Betriebssystem / Grafik-Software: Windows 10, CorelDraw Suite 2023
Zitieren
#42
Hallo Asterix,

(21.06.2024, 22:59)asterix schrieb: ..die Steuerpunktlänge bei dem ersten Makro (zum Finden und Markieren) könnte ruhig kürzer sein, weil man ja eben gerade bei sehr kurzen Längen oft die Fehler hat. Von mir aus könnte dies auch ein Zehntel (1/10) der Umrissbreite sein...

Ändere im Makro „kurzeSteuerpunkteMarkieren“ die Zeile:
minL = s.Outline.Width in minL = s.Outline.Width/10

(21.06.2024, 22:59)asterix schrieb: Also das zweite Makro darf ruhig ohne Zwischenschritt und mit nur 1x klicken dann drehen (+ggf. korrigieren)

Macht es das nicht?

Gruß

Koter
Zitieren
#43
Danke, das mit dem Finden der kurzen Längen ist nun perfekt! Da kann man ja dann sogar selbst ggf. die zu markierende Länge an der Stelle auch anpassen.

Das Makro zum Wenden funktioniert weiterhin ebenfalls, wenn die Steuerpunktläng > 0, aber bei 0 passiert Folgendes wie hier im Bild, von links nach rechts:
- Ausgangslage, Knoten also manuell markiert
- einmal das Makro ausgeführt: nur der Steuerpunkt wechselt die Seite
- zweites Mal ausgeführt: der Endknoten wird auch gewendet
- ab dritten Mal: beides wird korrekt zusammen gewendet

Es wäre besser, wenn alles mit einem Klick passiert, weil man sonst nicht sicher ist, ob es geklappt hat und v.a. woran es dann liegt, wenn es nicht klappt.


Angehängte Dateien Thumbnail(s)
   

Betriebssystem / Grafik-Software: Windows 10, CorelDraw Suite 2023
Zitieren
#44
Hallo Asterix,

Du musst mir auf die Sprünge helfen!
ich sehe auf Deinen Abbildungen folgendes:

  1. Ausgangslage, Knoten also manuell markiert
    OK
  2. einmal das Makro ausgeführt: nur der Steuerpunkt wechselt die Seite
    Nein, Der Steuerpunkt wurde verlängert und gewendet.
  3. zweites Mal ausgeführt: der Endknoten wird auch gewendet
    Nein, das wäre auch nicht möglich! Knoten können nicht gewendet werden, sie haben keinen Winkel.
  4. ab dritten Mal: beides wird korrekt zusammen gewendet
    Ja, Das war aber nach der ersten Ausführung des Makros (Abbildung 2) auch schon so.

Ich verstehe Dich also leider wieder einmal nicht!
Was genau soll das Makro anders machen?

Gruß

Koter

Nachtrag zu 4: Das „Ja“ bezieht sich nicht auf beides, sondern nur auf den Steuerpunkt.
Zitieren
#45
Hallo, der Knoten in der Abbildung wechselt seine Richtung nicht nach dem ersten Klick (zweiter Spiegelstrich in der von dir kommentierten Liste), sondern erst nach dem zweiten Klick (dritter Spiegelstrich).

Hier die Abfolge, wie sie sich für den rechten Endknoten aus der gleichen Datei (test3.cdr) ergibt, also wenn man einfach anstatt des linken nun den rechten Knoten markiert.

Abfolge hier:
- Ausgangslage, Knoten also manuell markiert
- einmal das Makro ausgeführt: Steuerpunkt und Enknoten sind auf die jeweils andere Seite gerichtet (von der Pfeilform her)

Dagegen ist bei einem Knoten mit Steuerpunktlänge = 0 das andere zuvor hochgeladene Bild der Fall, also beim einmaligem Klick aufs Makro wechselt zunächst nur der Steuerpunkt seine "Pfeilform-Richtung", während ja das Knoten-Dreieck noch nicht die Richtung wechselt.

Es sollte also so sein, dass auch bei Steuerpunktlänge = 0 bei einmaligem Klick das Bild der Abfolge genauso aussieht, wie nun hier gerade hochgeladen.

Hoffe, es wurde etwas klarer, obwohl ich technisch nicht so gut formulieren kann Smile


Angehängte Dateien Thumbnail(s)
   

Betriebssystem / Grafik-Software: Windows 10, CorelDraw Suite 2023
Zitieren
#46
Hallo Asterix,

(22.06.2024, 14:38)asterix schrieb: Hoffe, es wurde etwas klarer, obwohl ich technisch nicht so gut formulieren kann Smile...

Nein, leider ganz im Gegenteil.
Du könntest jetzt vielleicht den Eindruck gewinnen, dass ich Dich verarschen will,
aber ich raffe das wirklich nicht! erröten

Ich hänge immer noch bei Beitrag 43:

wo ist der Unterschied zwischen Bild 2 (nach der ersten Ausführung)
und Bild 4 (nach der Dritten Ausführung)?

Oder anders gefragt:

Wenn Du das Makro nach der ersten Ausführung noch zweimal ausführst, ist wieder der selbe Zustand
erreicht, wie nach der ersten Ausführung. Was ist der Zweck von Ausführung 2 und 3?

Wir sollten das wirklich Punkt für Punkt klären, sonst komme ich nicht mehr mit.

Nochmal der Ablauf bei der ersten Ausführung:

Vom Makro ermittelte Ausgangslage:
Der Steuerpunkt am ausgewählten Knoten hat die Länge = 0
und somit den Winkel = 0

Das Makro nimmt bei dieser Ausgangslage in zwei Schritten folgende Änderungen vor:

Schritt 1: Verlängerung des Steuerpunktes um 0,001 mm.
Resultat: Länge = 0,001. Winkel = 0.

Schritt 2: Drehen des Steuerpunktes um 180°
Resultat: Länge = 0,001. Winkel = 180.

So habe ich Deine Anforderungen verstanden.
Ein simples Makro!
Vielleich zu simpel?

Wenn noch weitere Schritte eingefügt werden sollen,
mache ich das gerne. Ich muss nur konkret wissen, welche.

zu den „Dreiecken“:
Bei einer Steuerpunktlänge = 0 zeigt das Dreieck am Knoten immer auf 0° (also nach Rechts).
Das Dreieck am Steuerpunkt zeigt bei einer Steuerpunktlänge = 0 auf den nächsten Steuerpunkt des Segments.
Das ändert sich nach der Zuweisung einer Länge. (bei X7)

Gruß

Koter
[-] 1 Benutzer bedankt sich bei koter für diesen Beitrag:
  • asterix
Zitieren
#47
Hallo und danke für deine Geduld. Im Grunde war das natürlich schon längst Nörgeln auf hohem Niveau von mir, denn ich habe ja zwei funktionierende Makros, und die Knoten mit Steuerpunktlänge = 0 dürften eigentlich selten sein. Aber natürlich will man den "Fall" dann auch lösen.

Ich wusste nicht, dass das Knoten-Dreieck dann immer nach rechts zeigt am Anfang bei Steuerpunktlänge = 0, da muss man sich erstmal eine Weile reindenken...

Daher glaube ich inzwischen, dass ich in der Tat auch einen allgemeinen Logikfehler in meinen Überlegungen habe, weil eben bei Steuerpunktlänge = 0 der Knoten ja auch nicht logisch und für mich "richtig" gedreht werden kann. Wenn ich z.B. die Form in der Beispieldatei als Ganzes drehe, dann zeigt der Endknoten natürlich in die dann richtige Richtung, also nicht in die Kurve zurück. Es kommt dann also auch auf die Lage des Objekts an.

Insofern ist nun inzwischen auch deine eingearbeitete Nachfrage "Steuerpunkt verlängern?" genau richtig! Denn dadurch merkt man ja, dass ein einfaches Drehen nicht die beste Lösung in diesem Spezialfall ist. Und dann kann man immer noch überlegen, ob man das Makro eben ein zweites Mal ausführt, wenn das dann besser passt.

Also ein ganz großes Danke, dass du mich da auf den richtigen Weg geführt hast, ich wusste einfach zu wenig darüber. Ich denke, ich werde das Makro genau so nutzen, wie es ist, aber mit Nachfrage aktiviert und die Länge, die neu erstellt werden soll, kann man ja auch nach Bedarf anpassen.

Betriebssystem / Grafik-Software: Windows 10, CorelDraw Suite 2023
Zitieren
#48
PS: Was wäre, wenn ein Knoten gar keinen Steuerpunkt hat, oder sollte das nicht vorkommen?
Kann ich manuell einen Steuerpunkt hinzufügen, oder in das Makro einfügen? Also wenn ein Steuerpunkt = 0 oder gar nicht vorhanden ist, dann müsste ja in beiden Fällen der Steuerpunkt verlängern werden, also entweder aus 0 oder aus "nicht vorhanden", oder?

...Zweites PS: Ok, zu schnell geschrieben, wenn kein Steuerpunkt vorhanden ist, ist es eine Linie, dann muss ich "In Kurve konvertieren" aussuchen Smile. Hat sich also erledigt!

Betriebssystem / Grafik-Software: Windows 10, CorelDraw Suite 2023
Zitieren
#49
hallo koter,

nach langem doch noch mal eine Frage zu dem Makro, wo CorelDraw die aus ClipStudio falsch exportierten kurzen Griffe findet und markiert, klappt auch.



Code:
Sub kurzegriffe()
    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 / 20
        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
            End If

            If sgL.EndingControlPointLength < minL Then
                Markierung sgL.EndingControlPointX, sgL.EndingControlPointY
            End If
        Next
    Next
End Sub


Es wäre nun noch perfekt, wenn das alles bleibt mit den Markierungen, aber innerhalb des Makros diese kurzen Griffe alle automatisch verlängert werden auf einen gewissen Wert, z.B. auf halbe Breite des Strichs oder mehr (damit man es zum Test auch sieht). Genauere Einstellung kann ich ja dann vornehmen. 

KI kann es nicht Smile.

Geht das generell?

Betriebssystem / Grafik-Software: Windows 10, CorelDraw Suite 2023
Zitieren
#50
falsch reinkopiert, hier der ganze Teil, bin echt kein Makro-Profi, ich hoffe, ich habe das nun richtig erfasst:


Code:
Sub kurzegriffe()
    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 / 5
        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
            End If
            If sgL.EndingControlPointLength < minL Then
                Markierung sgL.EndingControlPointX, sgL.EndingControlPointY
            End If
        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, 2)
    If red Then
        s.Outline.Color.RGBAssign 255, 0, 0
    Else
        s.Outline.Color.RGBAssign 0, 100, 0
    End If
    s.Outline.Width = 0.5
    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


Wie gesagt, eine Verlängerung der Griffe wäre wünschenswert, weil ich dann besser dran komme und ändern kann. 

(Eine automatische Drehung, wenn falsch gedreht, wäre natürlich das Optimum, aber leider nicht so automatisiert möglich, das muss ich erst nochmal genauer ansehen.)

Betriebssystem / Grafik-Software: Windows 10, CorelDraw Suite 2023
Zitieren



Möglicherweise verwandte Themen...
Thema Verfasser Antworten Ansichten Letzter Beitrag
  PDF nach importieren, automatisch verändert sebastian84 4 1.290 06.04.2025, 21:20
Letzter Beitrag: mvm
  Dokumentschriftarten finden und (einfach) ersetzen in CDR X6? Sascha B. 33 18.683 13.09.2024, 12:48
Letzter Beitrag: koter
Question QR-Codes automatisch generieren Lisa1992 1 790 31.05.2024, 07:02
Letzter Beitrag: Litschi
  Beim speichern Version automatisch auf alte Version stellen awitechnik 4 2.574 12.01.2024, 11:04
Letzter Beitrag: awitechnik
  Seriendrucktexte automatisch skalieren ben512 7 3.646 26.04.2023, 20:45
Letzter Beitrag: koter
  Textwerkzeug automatisch gedreht Nils 3 2.388 28.09.2022, 12:22
Letzter Beitrag: cutti
  Objekt aus Knoten mit Farbe füllen Spaceliner 7 3.472 02.08.2022, 10:11
Letzter Beitrag: Spaceliner
  2018: Knoten verbinden mtemp 6 3.822 26.04.2021, 07:28
Letzter Beitrag: norre
Star nicht verbundene Knoten Finden Karthagos 2 2.540 24.03.2020, 13:40
Letzter Beitrag: Karthagos
  Knoten mit Bedienfeld verschieben. chrisberlin 11 5.584 22.01.2020, 23:53
Letzter Beitrag: norre