![]() |
Makro-Nachhilfe für Funktionen für alle Objekte - Druckversion +- Juergens-Workshops.de Forum (https://forum.juergens-workshops.de) +-- Forum: Corel Grafik Forum (https://forum.juergens-workshops.de/forumdisplay.php?fid=65) +--- Forum: Corel Draw (https://forum.juergens-workshops.de/forumdisplay.php?fid=93) +--- Thema: Makro-Nachhilfe für Funktionen für alle Objekte (/showthread.php?tid=38711) |
RE: Makro-Nachhilfe für Funktionen für alle Objekte - asterix - 01.07.2024 Hi Koter, ich habe den Wert auf 0.01 gesetzt (0.1 ändert schon zu stark). Code: Sub KnotenRed() Aber das AutoReduce ändert nicht die Knotentypen, das "Knoten reduzieren" von CorelDraw aber schon. RE: Makro-Nachhilfe für Funktionen für alle Objekte - asterix - 01.07.2024 Ich habe noch nicht viel Zeit zum Testen gehabt, aber eigentlich ist die Smoothing-Makro auch schon sehr gut alleine geeignet (z.B. mit 10 oder 20 oder 50 per Klick). Denn das reduziert ja auch die Knoten und wandelt sie auch direkt um in (teilweise) glatte Knoten. Ich frage mich daher, ob ich überhaupt beide brauche - wahrscheinlich kommt aber irgendwann der Anwendungsfall, wo dies so sein wird ![]() Von daher hat sich - eigentlich - meine Frage nach dem Makro für Knoten-Typ-Änderung (in glatt/symmetrisch) auch schon erledigt. Denn auch in 0.01 Einstellung reduziert das Makro viel zu stark und auch anders als die Schaltfläche "Knoten reduzieren". Meinen Fehler in dem doppelten Einfügen (Code oben) würde ich aber gerne noch erkennen ![]() RE: Makro-Nachhilfe für Funktionen für alle Objekte - asterix - 01.07.2024 Hier nochmal mein leider schlechter Versuch eines Makros ![]() Ich habe aufgenommen, wie ein *.ai geöffnet wird, möchte da einige Änderungen vornehmen und es dann ins aktuelle Dokument (egal welches) einfügen. Es klappt schon fast vollständig. (Also das mit dem doppelten Einfügen hat sich immerhin erledigt, ich habe einmal die Datei mit Pfad im Code entfernt. So geht es nun.) Aber die hier neu gelernten Zeilen kann ich natürlich nicht immer einfach so einfügen ![]() Bleiben am Ende des Tages also doch wieder nur zwei Fragen: - wie kann ich das mit dem Smoothing hier im Code korrigieren? - steht hinter der Schaltfläche "Knoten reduzieren" nur Autoreduce oder mehr? Code: Sub opencopy() RE: Makro-Nachhilfe für Funktionen für alle Objekte - koter - 02.07.2024 Hallo Asterix, (01.07.2024, 21:20)asterix schrieb: ... Das in Betrag 4 gesagte gilt auch hier. Du kannst also die Auswahl auf Objekte mit dem korrekten Typ reduzieren oder eine Prüfung auf den korrekten Typ in die Schleife einbauen. (01.07.2024, 21:20)asterix schrieb: ... Da musst Du den zuständigen Programmierer bei Corel fragen. (Falls Der tatsächlich antwortet, bitte unbedingt hier im Forum veröffentlichen ![]() Ich vermute, dass nicht mehr aber etwas anderes dahinter steckt. Es gibt noch die undokumentierte Methode AutoReduceNodes des Curve-Objekts. Die kannst Du ja mal testen. Gruß Koter RE: Makro-Nachhilfe für Funktionen für alle Objekte - asterix - 02.07.2024 vielen Dank nochmals! So klappt es nun (nur der relevante Absatz mit meinen Einfügungen hier) Code: ActivePage.SelectableShapes.All.CreateSelection Wie erwähnt ist so ein Smoothen 20 eigentlich schon sehr gut. Und es unterscheidet sich auch hier von dem von CorelDraw in der Symbolleiste angebotenen "Kurvenglättung", wenn man 20 auswählt. Das im Makro gefällt mir derzeit besser. Das mit dem AutoReduceNode habe ich versucht, hat aber kein Ergebnis gebracht (nicht funktioniert). Im Internet fand ich dazu auch nichts. Hätte ich noch etwas beim Code hier anders machen sollen? Zu PrecisionMargin fand ich auch keine Informationen und dachte, es wäre so korrekt ![]() Code: Sub KnotenRed() RE: Makro-Nachhilfe für Funktionen für alle Objekte - asterix - 02.07.2024 Hallo Koter, ok hab doch noch eine Abschlussrunde an Fragen. Wie kann ich den folgenden Code ändern, damit er bei Kurven und auch bei Objekten geht (gefüllte Fläche, aber keine Rechtecke, sondern nur eben ehemalige Kurven, die ich zu Objekten konvertiert habe)? Wenn ich das Makro zum Smoothen einzeln ausführe, wie hier im Thread besprochen, dann geht es, aber im Gesamt-Makro nicht. Ich habe es mal hinbekommen zwischendurch, aber jetzt nicht mehr. Code: For Each sl In ActiveSelection.Shapes: sl.Curve.Nodes.All.Smoothen 20 Und: wie kann ich in CorelDraw VBA die Windows-Zwischenablage leeren? Solange ich nichts drin habe (oder manuell in Windows lösche), ist mein Illustrator-Datei-Einfügen ok, aber wenn etwas drin ist, kopier er natürlich auch die Zwischenablage noch zusätzlich rein. Da ich eher zu Smoothen tendiere, dürfte sich dann meine andere "letzte" Frage zum AutoReduce erledigt haben. Wie du auch schreibst, wird CorelDraw da noch etwas anderes machen, weil AutoReduce irgendwie deutlich weniger leicht zu nutzen ist als Smoothen, von den Ergebnissen her. --- und hier der Vollständigkeit halber der Gesamtcode, es funktioniert alles bis auf die beiden Sachen, die ich gerade genannt habe. Code: Sub opencopy() RE: Makro-Nachhilfe für Funktionen für alle Objekte - koter - 02.07.2024 Hallo Asterix, Wir sollten uns ab jetzt an die Forenregel Nr. 5 halten: Themenbezogene Beiträge In den einzelnen Beiträgen sollte versucht werden, beim Thema zu bleiben und nach Möglichkeit sach- und themenbezogene Antworten zu geben. Es fällt sonst schwer, einem Thema zu folgen. Es fällt mir tatsächlich schwer Deinen Beiträgen zu folgen. Es geht nicht um die Anzahl der Beiträge in einem Thema sondern um die einzelnen Beiträge. Ich verstoße jetzt noch einmal gegen die Regel und Versuche auf die Fragen, die ich mir merken konnte zu antworten: Die PrecisionMargin ist der an die Methode AutoReduce übergebene Parameter. Er wird in der Hilfe zur Methode erklärt. Die Zwischenablage wird mit Clipboard.Clear geleert. Auf Die Frage zur Smoothen-Methode bin ich in Beitrag 14 schon eingegangen. Falls Du eine der beiden Möglichkeiten verwenden willst, aber nicht weißt wie, kann ich sie präzisieren. Ich weiß nicht wie gut Du Dich mittlerweile mit VBA und dem CD-Objektmodell auskennst. Deshalb können meine Antworten nicht immer Deinem Kenntnisstand entsprechen. Ich will Dich ja auch nicht mit zu ausführlichen Antworten langweilen oder gar Deinen Kenntnisstand beleidigen. Gruß Koter RE: Makro-Nachhilfe für Funktionen für alle Objekte - asterix - 02.07.2024 Hallo Koter, herzlichen Dank. Das mit der Zwischenablage funktioniert einwandfrei - zwei kleine Wörtchen, aber darauf muss man ja erstmal kommen. Bezüglich meines Kenntnisstandes: Du kannst ihm 1:1 in diesem Thema folgen ![]() Und das führt auch genau zu dem hier aufgetretenen Phänomen: Ich habe einfach dazugelernt. Dadurch haben sich manche Fragen erledigt, manche neue Fragen kamen dazu. Aber es steht weiterhin alles unter dem gemeinsamen Thema, dem es folgt: Wie man manche Makro-Funktionen, die man hier und anderswo für einen bestimmten Anwendungsfall findet, eben allgemein für alle Objekte eines Dokuments nutzen kann. Das hat auch alle perfekt geklappt, alle Fragen konnten geklärt werden. Alle? Nicht ganz ![]() Leider weiß ich nur eine Sache immer noch nicht. Wie kann ich in dem unten folgenden Gesamt-Code die Zeile Code: For Each sl In ActiveSelection.Shapes: sl.Curve.Nodes.All.Smoothen 20 so korrigieren, dass sie für alle Objekte (Umrisse, Füllungen) funktioniert? Ich kann aus deinen beiden bisherigen Antworten aufgrund meines mangelnden Wissens leider keinen Code ableiten. Code: Sub opencopy() RE: Makro-Nachhilfe für Funktionen für alle Objekte - asterix - 02.07.2024 ...und wieder muss ich aufgrund der Lernkurve etwas direkt wieder abhaken ![]() Also, das hat nun auch geklappt, ich musste nur vorher die Gruppe / Kombination auflösen. Es scheint ja auch so zu sein, dass diese erwähnte Zeile zum Smoothing auch für beides gilt, zumindest ging sie nun auch gut für die aus Umrissen konvertierten Objekte. Habe auch die Änderung der Objekte dann weiter nach unten gestellt. Code: Sub opencopy() Also doch alle Fragen geklärt ![]() Wenn ich doch irgendwann eine Makro-Herausforderung haben werde, eröffne ich in jedem Fall ein neues Thema! Danke nochmals, Koter, der große Nutzen für mich in diesem Thema war einfach, dass ich Objekte in CorelDraw reinkopieren wollte und diese dann automatisiert direkt bearbeiten. Daher die Sache mit dem "für alle Objekte". Denn es geht auch einfach um alle Objekte, die man einfach nur ein bisschen anpassen möchte nach dem Einfügen. RE: Makro-Nachhilfe für Funktionen für alle Objekte - koter - 02.07.2024 Hallo Asterix, (02.07.2024, 19:30)asterix schrieb: ...so korrigieren, dass sie für alle Objekte (Umrisse, Füllungen) funktioniert?... streng genommen nicht, denn Umrisse und Füllungen haben keine Knoten. Ich vermute jetzt, dass Dir das völlig egal ist und Du nur Code zum Kopieren und Einfügen willst. (Was natürlich völlig in Ordnung wäre) Versuche es mit diesem Code: Code: For Each s In ActiveSelectionRange.Shapes.FindShapes(Type:=cdrCurveShape): s.Curve.Nodes.All.Smoothen 20: Next Liege ich mit meiner Vermutung richtig? Gruß Koter |