Ich glaube wir haben da wirklich etwas aneinander vorbeigeredet:
Zu deinen Punkten:
Das wird nicht benötigt. Die Dimensionen dürfen sich ruhig ändern. Es sollen alle Eckpunkte des aktuellen Rahmens[i] auf dem Raster liegen, bis auf die Ausnahmen. siehe weiter unten.
Das ist mir nicht klar. Es sollten alle Eckpunkte auf Rasterhaltigkeit geprüft werden.
Meine Vorgehensweise wäre das ganze in 2 Schrittenabzuhandeln:
1. Alle items am Raster ausrichten 2. Die Ausnahmen behandeln, sprich an den Satzspiegelkanten ausrichten. Das kann ja individuell ein anderer Eckpunkt sein, je nachdem wo der entsprechende Rahmen auf der Seite liegt.
D.h. Wenn wir mal alle Elemente durchgehen: von links oben, der erste Rahmen. Dann kann der linke Eckpunkt oben dieses Rahmens , oberhalb oder unterhalb des Steges oben (Satzspiegelkante) liegen und er kann links oder rechts vom Außensteg (Satzspiegelkante)liegen.
Nach Überprüfung sollte die Höhe und Breite so angepasst werden, dass die untere Rahmenkante bleibt wo sie ist und die rechte Rahmenkante bleibt wo sie ist. Diese beiden Kanten liegen ja schon durch die erste for-Schleife am Raster.
Im Prinzip geht es um eine Überprüfung ob ein Eckpunkt in der Nähe einer Satzspiegelkante liegt oder nicht. Den Begriff Nähe würde ich so definieren: Alles was kleiner als eine Rastereinheit ist.
Das passiert schon in der ersten for-Schleife.
Es kann auch sein, dass die obere Kante des Rahemns am Raster unterhalb der Satzspiegelkante liegt. Auch hier müsste die obere Kante des Rahmens an die Satzspiegelkante verschoben werden.
Vielleicht ganz einfach gesagt: Liegt eine Kante des jeweiligen Rahmens in der Nähe des Satzspiegels, soll diese jeweilige Kante am Satzspiegel ausgerichtet werden. Alle anderen Kanten bleiben am Raster.
Übrigens: Rasterunterteilungen müssen nicht berücksichtigt werden.
Ich habe dir nun 2 neue Dateien mal angehängt.
In der Ausgangsdatei sind alle möglichen Vorkommnisse von Rahmenpositionen dargestellt.
In der Zieldatei wäre der Wunschzustand. Mir ist klar dass es aber hier ohne Handarbeit nicht gehen wird.
Der Punkt: Abstand der Rahmen zueinander ist aber in erster Linie nicht so wichtig. Es wäre nicht schlimm wenn hier auch 2 oder 3 Rastereinheiten mal zwischendurch zwischen den Rahmen lägen, so wie es sich halt ergibt wenn dein erstes Skript suageführt wird.
Vielen vielen Dank schon mal im voraus. Es hat absolut keine Eile.