Objetke ausrichten ohne (bzw. mit festem) Abstand
#1
Guten Morgen,

ich habe mehrere Objekte (Rechtecke) die ich ohne Abstand (bzw. mit fest vorgegebenem) Abstand ausrichten möchte. Die Objekte können dabei unterschiedliche Maße haben ...

[ATTACH=CONFIG]13189[/ATTACH]

Ich finde jedoch nur "gleichmäßig Verteilen" mit Option auf Seitenbreite oder Auswahlumfang ... keine definierbaren Abstände.

Finde ich die Funktion nicht, gibt es das nicht, oder bin ich durch mein Satzprogramm Calamus nur einfach viel zu verwöhnt?

Helft mir bitte einmal auf die Sprünge,
Dankeschön!

Andreas.


Angehängte Dateien Thumbnail(s)
   
Zitieren
#2
Hallo Andreas,

abru schrieb:...Finde ich die Funktion nicht, gibt es das nicht, oder bin ich durch mein Satzprogramm Calamus nur einfach viel zu verwöhnt?

ich habe die Funktion auch nicht gefunden.
Falls auch kein anderes Forenmitglied die Funktion findet, kannst Du es mit einem Makro versuchen:

[Bild: habstandj0omp.gif]

Code:
Sub HorizontalerAbstand()
    
    Dim PosStID()
    If ActiveSelectionRange.Shapes.Count < 2 Then Exit Sub
    ActiveDocument.Unit = cdrMillimeter

    AbstandS = InputBox("Abstand in Millimeter", "Abstand", "1")
    If AbstandS = "" Then Exit Sub
    Abstand = Val(AbstandS)
    Dim s1 As Shape, s2 As Shape
    i = ActiveSelectionRange.Shapes.Count
    ReDim PosStID(0 To i - 1, 0 To 1)
    i = 0
    For Each s In ActiveSelectionRange.Shapes
        
            PosStID(i, 0) = s.PositionX
            PosStID(i, 1) = s.StaticID
            i = i + 1
      
    Next
    Call QuickSortMultiDim(PosStID)
    ActiveDocument.BeginCommandGroup "Abstand einstellen"
    For i = 1 To UBound(PosStID)
        Set s1 = ActivePage.FindShape(StaticID:=PosStID(i - 1, 1))
        Set s2 = ActivePage.FindShape(StaticID:=PosStID(i, 1))
        s2.LeftX = s1.RightX + Abstand
    Next i
    ActiveDocument.EndCommandGroup
    
End Sub

'Quelle: Dieter Otter
'https://www.vbarchiv.net/tipps/tipp_1881-2-dimensionales-array-nach-beliebiger-spalte-sortieren.html
Public Sub QuickSortMultiDim(vSort As Variant, _
  Optional ByVal index As Integer = 1, _
  Optional ByVal lngStart As Variant, _
  Optional ByVal lngEnd As Variant)

  ' Wird die Bereichsgrenze nicht angegeben,
  ' so wird das gesamte Array sortiert

  If IsMissing(lngStart) Then lngStart = LBound(vSort)
  If IsMissing(lngEnd) Then lngEnd = UBound(vSort)

  Dim i As Long
  Dim j As Long
  Dim h As Variant
  Dim x As Variant
  Dim u As Long
  Dim lb_dim As Integer
  Dim ub_dim As Integer

  ' Anzahl Elemente pro Datenzeile
  lb_dim = LBound(vSort, 2)
  ub_dim = UBound(vSort, 2)

  i = lngStart: j = lngEnd
  x = vSort((lngStart + lngEnd) / 2, index - 1)

  ' Array aufteilen
  Do

    While (vSort(i, index - 1) < x): i = i + 1: Wend
    While (vSort(j, index - 1) > x): j = j - 1: Wend

    If (i <= j) Then
      ' Wertepaare miteinander tauschen
      For u = lb_dim To ub_dim
        h = vSort(i, u)
        vSort(i, u) = vSort(j, u)
        vSort(j, u) = h
      Next u
      i = i + 1: j = j - 1
    End If
  Loop Until (i > j)

  ' Rekursion (Funktion ruft sich selbst auf)
  If (lngStart < j) Then QuickSortMultiDim vSort, index, lngStart, j
  If (i < lngEnd) Then QuickSortMultiDim vSort, index, i, lngEnd
End Sub

Gruß

Koter
Zitieren
#3
Hallo Andreas,
teile und bitte immer deine Corel Version mit, auch ob es eine Vollversion oder eine Home&Student Version ist.
Schau dazu bitte auch HIER

Nein so eine Funktion ist mir in Draw nicht bekannt.
Die einzige Möglichkeit einen Abstand zu definieren (bei gleichen Objekten), ist die Funktion Vielfach Duplizieren im Menü bearbeiten bzw. als Andockfenster

Um händisch gleiche Abstände zu setzen gäbe es noch in der Symbolleiste Layout die Funktion intelligenter Abstand und die Funktion Ränder als Hilfslinien.
Wenn kein Abstand gewünscht gehts natürlich direkt mit an Objekten ausrichten

Gruß
Norre
Zitieren
#4
Super, danke. Insbesondere an kote mit dem Makro. Das trifft genau, was ich wollte.

Gib es zur Makroprogrammierung einen Leitfaden oder ein Tutorial? Damit will ich mich auch beschäftigen!

Ich habe die Version 2017 als Vollversion, "intiligenter Abstand" habe ich auf die Schnelle nicht gefunden ... bei Hilfslinien und "Ränder als Hilfslinien" muss ich die Rahmen ja wieder mit der Maus anfassen.

Dankeschön,
Andreas.
Zitieren
#5
Hallo Andreas,
ja in Corel selber gehts nur händisch, mit Ausnahme von DR. mak Koters Macro - klasse wie immer xmasdanke

Hier noch zur Info der intelligentem Abstand - natürlich händisch
Wenn du schon ein Objekt mit einem Abstand platziert hast und das nächste Objekt ranschiebst bekommst du bei gleichem Abstand die Indikatoren unten als Doppelpfeil angezeigt, im Objekt erscheint der Abstand und das Objekt rastet leicht ein.

[ATTACH=CONFIG]13190[/ATTACH]

Gruß
Norre


Angehängte Dateien Thumbnail(s)
   
Zitieren
#6
Hallo Andreas!

abru schrieb:...Gib es zur Makroprogrammierung einen Leitfaden oder ein Tutorial? Damit will ich mich auch beschäftigen!...

Ja, es gibt einen Leitfaden. Bei meiner X7 versteckt sich der „Macro Programming Guide“ im Ordner
C:\Program Files\Corel\CorelDRAW Graphics Suite X7\Data

Für Leute, die noch nie programmiert haben, eignet sich der Guide eher weniger. Wenn Grundkenntnisse vorhanden sind, ist er ein guter Einstieg.

Gruß

Koter
Zitieren
#7
Danke, aber das ist händisch - und ich hatte eine Menge Objekte mit unterschiedlicher Breite.
Zitieren
#8
Danke koter, ich schaue mir das mal an. Ich habe früher mal was in Basic programmiert :-)

Gruß Andreas.
Zitieren
#9
Hallo,
John von GDG Macros hat mal einen Workshop für Makros erstellt.
Hier zu finden:
https://community.coreldraw.com/collabor...ba-lessons

ob das für die neuen Corel Versionen noch aktuell ist kann ich dir nicht sagen, vielleicht könnte Koter mal kurz drüberschauen :lol:

Gruß
Norre
Zitieren
#10
Hallo Andreas,

abru schrieb:...Ich habe früher mal was in Basic programmiert...

Das sind doch gute Voraussetzungen, VBA ist auch nur ein Basic-Dialekt!

norre schrieb:...ob das für die neuen Corel Versionen noch aktuell ist kann ich dir nicht sagen, vielleicht könnte Koter mal kurz drüberschauen...

Ich besitze leider keine der neuen Versionen, somit kann ich das nicht beurteilen. Das Vorgehen im ersten Video wäre allerdings schon in X7 anders, dafür gibt es eine Funktion im Makro-Manager.
Ich finde Lehrvideos im allgemeinen großartig. Man versteht Dinge oft leichter, wenn man etwas gezeigt bekommt, als wenn man sich durch Texte ackert.
Beim Programmieren sehe ich das umgekehrt. Viele Inhalte werden durch einen kurzen Text effektiver vermittelt, als wenn man zuschaut, wie jemand Quelltext in den Editor tippt.

Gruß

Koter
Zitieren



Möglicherweise verwandte Themen...
Thema Verfasser Antworten Ansichten Letzter Beitrag
  Ausrichten an Strecke Boerni 9 757 12.10.2024, 12:55
Letzter Beitrag: koter
  Ausrichten von Kurvenobjekten Boerni 7 875 19.06.2024, 17:31
Letzter Beitrag: Boerni
  VBA Objekte ausrichten fremoikaner 12 1.327 06.06.2024, 14:30
Letzter Beitrag: koter
  Makro - Text an Rechteck ausrichten benni313 5 891 31.01.2024, 09:20
Letzter Beitrag: benni313
  Häkchen bei "An Hilfslinie ausrichten" fixieren martens 15 1.773 16.10.2023, 18:55
Letzter Beitrag: martens
  Mit oder ohne 3 mm Beschnitt? Ramsi 1 529 30.01.2023, 21:38
Letzter Beitrag: mvm
Photo Bogenschrift am Objekt ausrichten ist weg ? panzerauto 6 1.498 08.08.2022, 18:24
Letzter Beitrag: panzerauto
  Objektselektion toleranter einstellen (x Pixel Abstand) coreluser 1 952 25.07.2021, 09:13
Letzter Beitrag: norre
  Kästchen mit gleichem Abstand und Größe anorak 3 1.172 13.05.2021, 12:50
Letzter Beitrag: norre
  Objekt Anordnung / Abstand corely 1 1.105 25.04.2021, 14:05
Letzter Beitrag: Piet