Ausrichten von Kurvenobjekten
#3
Hallo Boerni,

Du kannst es mit einem Makro versuchen:

Das Makro lässt horizontal angeordnete Objekte
in eine darunter liegende Strecke fallen,
ohne den Abstand zu ändern.

Die Streckenrichtung muss von links nach rechts zeigen,
sonst werden Die Objekte falsch herum angeordnet.

Das Makro richtet am Zentrum des Objekts aus.
Mit Text funktioniert das wegen der Schriftlinie nicht.

Du musst deshalb gleich hohe Rechtecke um Deine Objekte (Buchstaben) legen.

Dazu kannst Du das Makro HilfsrechteckeErstellen nutzen.
Die Rechtecke haben keinen Umriss und sind deshalb unsichtbar.

Mit dem Makro HilfsrechteckeEntfernen kannst Du diese später löschen.

[Bild: In-Strecke-Fallen.gif]

Code:
Sub InStreckeFallen()
    Dim Objekte As ShapeRange
    Dim Strecke As Shape, objAR As Shape, HLM As New Shape, HLM2 As New Shape, E As New Shape
    Dim seg As Segment
    Dim Pfad As SubPath
    Dim x As Double, y As Double, p As Double, t As Double
    Dim cps As CrossPoints, cp As CrossPoint
    On Error GoTo fehler
    ActiveDocument.Unit = cdrMillimeter
    Set Objekte = ActiveSelectionRange
    Objekte.Sort "@shape1.Left < @shape2.Left"
    Objekte.Sort "@shape1.Top > @shape2.Top"
    Set Strecke = Objekte.Shapes.Last
    If Strecke.Type <> cdrCurveShape Then
        MsgBox "Strecke muss eine Kurve sein!", vbCritical, "Fehler"
        Exit Sub
    End If
    Objekte.Remove Objekte.Shapes.Count
    Set Pfad = Strecke.Curve.SubPaths.First
    ActiveDocument.BeginCommandGroup "auf Strecke"
    Optimization = True
    For Each objAR In Objekte
        Set HLM = ActiveLayer.CreateLineSegment(objAR.CenterX, objAR.CenterY, objAR.CenterX, Strecke.BottomY - 2)
        Set cps = Pfad.GetIntersections(HLM.Curve.SubPaths.First, cdrAbsoluteSegmentOffset)
        HLM.Delete
        Pfad.GetPointPositionAt x, y, cps(1).Offset, cdrAbsoluteSegmentOffset
        Set E = ActiveLayer.CreateEllipse2(x, y, objAR.SizeWidth / 2)
        E.ConvertToCurves
        Set cps = Pfad.GetIntersections(E.Curve.SubPaths.First, cdrAbsoluteSegmentOffset)
        Set HLM2 = ActiveLayer.CreateLineSegment(cps(1).PositionX, cps(1).PositionY, cps(2).PositionX, cps(2).PositionY)
        Set seg = HLM2.Curve.SubPaths.First.Segments.First
        objAR.CenterX = x
        objAR.CenterY = y
        objAR.RotationAngle = seg.StartingControlPointAngle
        E.Delete
        HLM2.Delete
    Next
fehler:
    Optimization = False
    ActiveDocument.EndCommandGroup
    Refresh
End Sub

Sub HilfsrechteckeErstellen()
    Dim Objekte As ShapeRange, RGruppe As New ShapeRange
    Dim RoB As Shape, obj As Shape, RG As Shape
    Dim z As Integer
    ActiveDocument.Unit = cdrMillimeter
    Set Objekte = ActiveSelectionRange
    Debug.Print Objekte.SizeHeight
    ActiveDocument.BeginCommandGroup "Rechtecke erstellen"
    For Each obj In Objekte
        Set RoB = ActiveLayer.CreateRectangle(obj.LeftX, Objekte.TopY, obj.RightX, Objekte.BottomY)
        RoB.Outline.Width = 0
        RoB.Name = "Ausrichtungshilfsrechteck"
        RGruppe.Add RoB
        RGruppe.Add obj
        Set RG = RGruppe.Group
        Set RGruppe = Nothing
    Next
    ActiveDocument.EndCommandGroup
End Sub

Sub HilfsrechteckeEntfernen()
    Dim ARH As ShapeRange
    Dim R As Shape
    Set ARH = ActivePage.FindShapes("Ausrichtungshilfsrechteck")
    For Each R In ARH
         R.ParentGroup.Ungroup
    Next
    ARH.Delete
End Sub

Die von Gerrie vorgeschlagene Funktion gibt es ja in X6 noch nicht.
Sie würde Dir aber wegen der gleichmäßigen Abstände auch die Typografie versauen.

Gruß

Koter

P.S. Sehr akkurate Arbeit hast Du geleistet! Alles in Ebenen und jedes Objekt benannt. Respekt!
[-] 1 Benutzer bedankt sich bei koter für diesen Beitrag:
  • Boerni
Zitieren



Nachrichten in diesem Thema
Ausrichten von Kurvenobjekten - von Boerni - 15.06.2024, 17:13
RE: Ausrichten von Kurvenobjekten - von koter - 16.06.2024, 18:46
RE: Ausrichten von Kurvenobjekten - von Boerni - 18.06.2024, 12:47
RE: Ausrichten von Kurvenobjekten - von koter - 18.06.2024, 17:53
RE: Ausrichten von Kurvenobjekten - von Boerni - 19.06.2024, 09:39
RE: Ausrichten von Kurvenobjekten - von koter - 19.06.2024, 16:53
RE: Ausrichten von Kurvenobjekten - von Boerni - 19.06.2024, 17:31

Möglicherweise verwandte Themen...
Thema Verfasser Antworten Ansichten Letzter Beitrag
  Ausrichten an Strecke Boerni 9 722 12.10.2024, 12:55
Letzter Beitrag: koter
  VBA Objekte ausrichten fremoikaner 12 1.311 06.06.2024, 14:30
Letzter Beitrag: koter
  Makro - Text an Rechteck ausrichten benni313 5 878 31.01.2024, 09:20
Letzter Beitrag: benni313
  Häkchen bei "An Hilfslinie ausrichten" fixieren martens 15 1.745 16.10.2023, 18:55
Letzter Beitrag: martens
Photo Bogenschrift am Objekt ausrichten ist weg ? panzerauto 6 1.483 08.08.2022, 18:24
Letzter Beitrag: panzerauto
  Ausrichten an - Dialog Karthagos 6 1.750 02.12.2018, 21:13
Letzter Beitrag: norre
  Objetke ausrichten ohne (bzw. mit festem) Abstand abru 10 3.565 08.08.2018, 08:36
Letzter Beitrag: abru
  Ein Objekt - Stadtsilhouette- an Kreis ausrichten CorelDraw 2017 Hans Mampf 3 2.266 03.12.2017, 15:53
Letzter Beitrag: Hartmut
  Objekte am Objekt ausrichten - Corel X6 Uckerschwan 1 1.521 27.01.2017, 13:41
Letzter Beitrag: norre
  Objekte an Kurven ausrichten SerialK 7 11.895 26.01.2017, 20:53
Letzter Beitrag: norre