hilfdirselbst.ch
Facebook Twitter gamper-media
faxinger p
Beiträge: 112
20. Apr 2017, 22:45
Beitrag #1 von 6
Bewertung:
(2410 mal gelesen)
URL zum Beitrag
Beitrag als Lesezeichen

Spaltenhilfslinien auf "gerade" Werte bringen


Hallo,

ich hab mal wieder eine Frage zu den Spaltenhilfslinien:
Ist es möglich diese via script immer auf "gerade" Werte zu bringen?

Bsp: A4 Seite, 10mm Rand links und rechts.
3 Spalten, 3mm Spaltenabstand.

eine Spaltenbreite ist jetzt 61,333 mm
ich hätte aber gerne gerade Werte, also entweder 61 mm oder 61,5 mm zumindest.
mal kurz rechnen:
210 (A4 Breite) - 2x10 (Ränder) = 190
- 6 (2 x Spaltenbreite)
= 184
184/3 (= 3 Spalten) = 61,33333333

Aber könnte es nicht auch 61 / 61 / 62 sein?
Und wenn ich nachträglich die Spaltenanzahl erhöhe habe ich wieder das selbe Problem.

Ich weiß wie ich auf die Spaltenhilfslinien zugreife und auf einen Wert bringe, nicht aber wie ich die Werte von automatisch erzeugten runde.
Code
app.activeDocument.pages[0].marginPreferences.columnsPositions=[25, 28, 40, 43,]; 


Bitte um eure Mithilfe.

Danke
Top
 
X
Hans Haesler  M  p
Beiträge: 5521
21. Apr 2017, 09:01
Beitrag #2 von 6
Beitrag ID: #557139
Bewertung:
(2336 mal gelesen)
URL zum Beitrag
Beitrag als Lesezeichen

Spaltenhilfslinien auf "gerade" Werte bringen


Hallo faxn,

Zitat (...) nicht aber wie ich die Werte von automatisch erzeugten runde.

Das Runden kann nicht beim manuellen Erzeugen erzielt werden. Das muss man nachträglich vornehmen.

Mit ...

Code
app.activeDocument.pages[0].marginPreferences.columnsPositions=[61, 64, 125, 128]; 

... bekommst Du die gewünschten 61 / 61 / 62

Aber wenn eine neue Seite eingefügt wird, sind die drei Werte wieder 61.333

Deshalb besser die Musterseite adressieren.

Code
app.activeDocument.masterSpreads[0].pages[0].marginPreferences.columnsPositions=[61, 64, 125, 128]; 

Bei Doppelseiten müssten mit einer zweiten Zeile die Werte von 'pages[1]' geändert werden.

Gruss, Hans
als Antwort auf: [#557136] Top
 
faxinger p
Beiträge: 112
21. Apr 2017, 13:09
Beitrag #3 von 6
Beitrag ID: #557148
Bewertung:
(2251 mal gelesen)
URL zum Beitrag
Beitrag als Lesezeichen

Spaltenhilfslinien auf "gerade" Werte bringen


Danke Hans für dein Feedback.

Ich glaube ich habe mich etwas missverständlich ausgedrückt.

Mit ging es darum: egal wieviele Spalten ich erzeuge, diese sollen immer auf ganzen oder halben Millimetern liegen.

Die Eingabe der fixen Werte wäre ja nur bei dem Beispiel mit 3 Spalten effektiv.
Ich ändere aber während des Layoutierens oft die Spaltenanzahl. Da meine Objekte von diesen Spalten begrenzt sind und es eine verschiedene Anzahl an Objekten geben kann ist es sehr mühsam die Spaltenhilfslinien auf gerade Werte zu bringen.

LG
faxinger
als Antwort auf: [#557139] Top
 
Hans Haesler  M  p
Beiträge: 5521
21. Apr 2017, 13:18
Beitrag #4 von 6
Beitrag ID: #557149
Bewertung:
(2246 mal gelesen)
URL zum Beitrag
Beitrag als Lesezeichen

Spaltenhilfslinien auf "gerade" Werte bringen


Hallo faxinger,

das Script lässt sich natürlich erweitern.

Falls die Ränder immer 10 mm sind und der Spaltenabstand immer 3 mm, wird es etwas einfacher sein.
Sonst müssen die beiden Werte in die "Ausrechnerei" einbezogen werden.

Wenn das Script bereit ist:
– Bei der aktuellen Seite den Spaltenabstand ändern;
– das Script starten.
– Fertig! :-)

Gruss, Hans
als Antwort auf: [#557148] Top
 
faxinger p
Beiträge: 112
26. Apr 2017, 10:50
Beitrag #5 von 6
Beitrag ID: #557223
Bewertung:
(1927 mal gelesen)
URL zum Beitrag
Beitrag als Lesezeichen

Spaltenhilfslinien auf "gerade" Werte bringen


Antwort auf: Hallo faxinger,

das Script lässt sich natürlich erweitern.

Falls die Ränder immer 10 mm sind und der Spaltenabstand immer 3 mm, wird es etwas einfacher sein.
Sonst müssen die beiden Werte in die "Ausrechnerei" einbezogen werden.

Wenn das Script bereit ist:
– Bei der aktuellen Seite den Spaltenabstand ändern;
– das Script starten.
– Fertig! :-)

Gruss, Hans



Danke für die Antwort, aber es geht leider am Thema vorbei:

Das Script soll selber nachsehen wieviele Spalten vorhanden sind und wo die Ränder sind:
Es gibt auch eines mit dem ich die Spaltenhilfslinien alle auf einmal um einen bestimmten Wert verschieben kann:
Code
var curPage = app.layoutWindows[0].activePage;  
var margPrefs = curPage.marginPreferences;
var colPos = margPrefs.columnsPositions;
var newPos = [0];

for (var i = 1; i < colPos.length-1; i++) {
var curPos = colPos;
newPos.push(curPos-3);
}

newPos.push(colPos[colPos.length-1]);

margPrefs.columnsPositions = newPos;


Also muss dieses Skript wissen wo die aktuellen Positionen der Spaltenhilfslinien sind.
Somit muss es auch möglich sein alle Spaltenhilfslinien auf einen ganzen Millimeterwert zu bringen.

Nur wie?

LG
faxinger
als Antwort auf: [#557149] Top
 
Hans Haesler  M  p
Beiträge: 5521
26. Apr 2017, 14:25
Beitrag #6 von 6
Beitrag ID: #557228
Bewertung:
(1867 mal gelesen)
URL zum Beitrag
Beitrag als Lesezeichen

Spaltenhilfslinien auf "gerade" Werte bringen


Hallo faxinger,

Antwort auf: Das Script soll selber nachsehen wieviele Spalten vorhanden sind und wo die Ränder sind:

Das meinte ich ja mit:

Zitat Sonst müssen die beiden Werte in die "Ausrechnerei" einbezogen werden.

*****
Bevor wir zum Thema zurückkehren: Hast Du das Script, welches die Spaltenhilfslinien auf einmal verschiebt, ausprobiert?

In der Zuweisung der aktuellen Position fehlt die Zählervariable. Diese wurde zwar getippt, aber ungeschickterweise ist der Buchstabe i verwendet worden. Wenn ein "i" in eckige Klammern gesetzt wird (= [i] ), bedeutet das für die Serversoftware: "Der folgende Text muss kursiv gestellt werden." Gleichzeitig verschwinden aber die drei Zeichen. Wenn man die Code-Zeilen kopiert und ausprobiert, ist das Ergebnis nicht wie erwartet.

Wenn ein anderer Buchstabe verwendet wird, dann bliebt er erhalten. Aber weder b (= bold) noch s (= durchgestrichen) benutzen:

Code
var curPage = app.layoutWindows[0].activePage; 
var margPrefs = curPage.marginPreferences;
var colPos = margPrefs.columnsPositions;
var newPos = [0];

for (var n=1; n<colPos.length-1; n++) {
var curPos = colPos[n];
newPos.push(curPos-3);
}

newPos.push(colPos[colPos.length-1]);

margPrefs.columnsPositions = newPos;

*****

Zurück zu Deiner Aufgabe:

Antwort auf: Also muss dieses Skript wissen wo die aktuellen Positionen der Spaltenhilfslinien sind.

Das Script holt sich die 'columnsPositions' aus den 'marginPreferences'

Antwort auf: Nur wie?

Das ist das tägliche Brot des Scripters:
– Bestandesaufnahme des Vorhandenen.
– Womit muss es ergänzt werden?
– Wo finde ich das?

Du hast in Deinem ersten Beispiel schon die 'marginPreferences' verwendet. Wenn man im OMV (Object Model Verzeichnis) diese Seite anschaut, dann findet man alles, was es braucht:
columnCount = die Anzahl Spalten
– columnGutter = der Spaltenabstand
left = der Wert des linken Randes
right = der Wert des rechten Randes

Mit diesen Werten (die aktuellen Positionen brauchen wir nicht) können die neuen Positionen errechnet werden. Gar nicht so einfach. Aber eine schöne Aufgabe für einen angehenden Scripter. :-)

Gruss, Hans
als Antwort auf: [#557223] Top
 
X