Juergens-Workshops.de Forum
Hilfslinien automatisieren - 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: Hilfslinien automatisieren (/showthread.php?tid=36305)



Hilfslinien automatisieren - OsCor - 23.05.2015

Hallo,

leider steige ich im Objekt-Modell von CorelDraw noch nicht richtig durch. Ich möchte nämlich mit geringem Aufwand, also vielleicht mit ein wenig VBA, auf einem Blatt ein regelmäßiges, relativ engmaschiges Gitter von Hilfslinien aufziehen - und dies bei jeder Seite eines Dokumentes (oder besser gesagt: einer Vorlage) mit anderen Maßen.
Lässt sich das mit VBA lösen?

Gruß
Oswald


Hilfslinien automatisieren - norre - 23.05.2015

Hallo Oswald
OsCor schrieb:Lässt sich das mit VBA lösen?
Bestimmt Smile

Aber auch mit Bordmitteln ist das möglich.
-->Bearbeiten-->Vielfach duplizieren, öffnet das Andockfenster "Vielfach Duplizieren"
nun ziehst du eine Hilfslinie auf deine Arbeitsfläche, die Hilfslinie ist dann ja automatisch ausgewählt.
Nun gibst du im Andockfenster den Abstand zwischen den Hilfslinien an und unten die Anzahl der Kopien-->Zuweisen.
Danach sind ja alle erstellten Hilfslinien im Objektmanager ausgewählt und du brauchst diese nur noch auf die Hilfslinienebene der entsprechenden Seite zu verschieben, könntest natürlich auch schon die erste Hilfslinie auf der richtigen Ebene erstellen.

[Bild: attachment.php?attachmentid=10894&stc=1&d=1432378737]

Ein nettes kostenloses Macro für die Arbeit mit Hilfslinien findest du Hier
-
-



Hilfslinien automatisieren - koter - 23.05.2015

Hallo Oswald,

das Layer-Objekt bietet dafür zwei Methoden: CreateGuide und CreateGuideAngle. Bei CreateGuide werden als Parameter vier Koodinaten übergeben, bei CreateGuideAngle Zwei Koordinaten und ein Winkel.

Leider platziert VBA die Hilfslinien immer auf der Master-Ebene, egal auf welchen Layer man sich bezieht. Man kann das nur umgehen wenn man den Hilfslinien-Layer vorher aktiviert oder die Hilfslinie nach dem Erstellen verschiebt.

Beispiel:
Code:
Sub HLGitter1()
    Call HilfslinienGitter(10, ActiveDocument.Pages(2))
End Sub

Sub HilfslinienGitter(Abstand As Double, Seite As Page, Optional Master As Boolean = False)
    Dim HL As Shape
    ActiveDocument.Unit = cdrMillimeter
    x = 0
    'Verikal
    While x <= Seite.SizeWidth
        Set HL = ActiveLayer.CreateGuideAngle(x, 0, 90)
        If Not Master Then HLVerschieben Seite, HL
        x = x + Abstand
    Wend
    'Horizontal
    y = Seite.SizeHeight
    While y >= 0
        Set HL = ActiveLayer.CreateGuideAngle(0, y, 0)
        If Not Master Then HLVerschieben Seite, HL
        y = y - Abstand
    Wend
End Sub

Sub HLVerschieben(Seite As Page, HL As Shape)
    Dim L As Layer, GL As Layer
    For Each L In Seite.Layers
        If L.IsGuidesLayer Then
            Set GL = L
            Exit For
        End If
    Next
    HL.MoveToLayer GL
End Sub

Im Beispiel wird die CreateGuideAngle-Methode verwendet. Die Hilfslinen werden erstellt und dann auf die Hilfslinienebene der angegebenen Seite verschoben. Wenn Du beim Aufruf der Sub HilfslinienGitter den optionalen Parameter „Master“ auf true setzt, bleiben die Hilfslinien auf der Master-Ebene.

Noch eine kleine Anmerkung:
Ich verlasse mich hier darauf, dass die Abbruchbedingungen der While-Schleifen funktionieren (no risk, no fun). Wenn Du Bammel vor ungewollten Endlos-Schleifen hast, musst Du die Anzahl der benötigten Hilfslinien vorher berechnen lassen und For-Schleifen benutzen.

Gruß

Koter


Hilfslinien automatisieren - OsCor - 23.05.2015

Leute, ich möchte mich gerne vor euch in den Staub werfen. Erlaubt mir, es nicht zu tun; ich komme nämlich aus Altersgründen nicht mehr so leicht hoch…:sei_gepriesen:

Nee, im Ernst, ich bin schon baff. Das Vielfach-Duplizieren habe ich gekannt, wäre aber um nichts in der Welt darauf gekommen, dass man damit auch Hilfslinien bearbeiten kann.
Und auch bei VBA hatte ich höchstens eine leise (aber schon sehr leise) Hoffnung, Hilfslinien könnten Teil des Objektmodells sein.

Ich danke euch sehr
Oswald