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!
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:
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
14.07.2018, 13:07 (Dieser Beitrag wurde zuletzt bearbeitet: 14.07.2018, 13:14 von norre.)
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
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.
19.07.2018, 16:08 (Dieser Beitrag wurde zuletzt bearbeitet: 19.07.2018, 17:57 von norre.)
Hallo Andreas,
ja in Corel selber gehts nur händisch, mit Ausnahme von DR. mak Koters Macro - klasse wie immer
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.
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.
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.