Hallo Alelli,
zuerst bastelte ich ein Testdokument. Eine Doppelseite (2 mal A4), auf jeder Seite sechs Bildboxen und darunter mit 2 mm Abstand immer eine gleich breite, aber weniger hohe Textbox.
Falls notwendig, stellt das Script die Masseinheiten auf "Millimeter" und die Objektkoordinaten auf "Montagefläche".
Die äussere Schleife geht durch die Montageflächen. Bei jeder wird zuerst die Liste der Bildboxenkoordinaten (d.h. x1 und y2, also die linke untere Ecke) erstellt.
Anschliessend geht eine Schleife durch die Textboxen. Bei jeder werden die Positionen y1 und y1 (= linker oberer Rand) in Bruchzahlen umgewandelt. Weil dadurch die schön geraden Zahlen der Masspalette oft sehr gering kleiner oder grösser sind, muss man beim Vergleichen einen Toleranzwert einsetzen.
Ein Beispiel: Der obere Rand meiner ersten Bildbox beginnt bei "12 mm", die Box ist 60 mm hoch. Der untere Rand ist also bei "72 mm" positioniert.
Der obere Rand der Textbox ist folglich auf "74 mm" plaziert.
Aber beim Umrechnen 'as real' werden daraus 71.999969482422 und 73.999938964844. Ergibt einen Zwischenraum von 1.999969482422.
Wenn man jetzt mit genauen 2 mm käme, dann hätte man keine Übereinstimmung. Deshalb wird horizontal und vertikal mit je einem Minimal- und einem Maximalwert agiert.
Zuerst wird die linke Kante der ersten Textbox gespeichert und 'as real' verwandelt. Die Schleife geht durch die Liste der Bildboxen-Koordinaten. Mit dem automatischen Zähler 'i', aber mit dem Zusatz 'by 2'. Beim ersten Umgang wird der Wert 1 genommen, beim zweiten der Wert 3, dann 5 usw.
Sobald einer dieser Wert innerhalb der Toleranz von plus/minus "1 mm" liegt, wird der dazugehörige Wert (= i+1) genommen. Wenn dieser nicht innerhalb der tolerierten vertikalen Abweichung liegt, dann geht das Script zum nächsten – horizontalen – Wert über.
Falls mal auch der vertikale Wert in Ordnung ist, wird ein Handler aufgerufen, welcher den Pfad des Bildes auszieht und zurückschickt. Dieses Ergebnis wird in die Textbox eingesetzt und das Script adressiert die nächste.
Die Textboxschleife läuft rückwärts (= by -1). Dadurch wird die Befüllung von links nach rechts und oben nach unten vollzogen (weil meistens die vorderste Box unten rechts liegt).
Gruss, Hans