[GastForen Programme Print/Bildbearbeitung Adobe InDesign Rundungsfehler bei Datenzusammenführen (Datamerge) ID CS1

  • Suche
  • Hilfe
  • Lesezeichen
  • Benutzerliste
Print/Bildbearbeitung - Photos, Layout, Design
Themen
Beiträge
Moderatoren
Letzter Beitrag

Rundungsfehler bei Datenzusammenführen (Datamerge) ID CS1

tag
Beiträge gesamt: 116

22. Sep 2005, 19:46
Beitrag # 1 von 10
Bewertung:
(10974 mal gelesen)
URL zum Beitrag
Beitrag als Lesezeichen
Hallo zusammen

Habe mit dem Datenzusammenführen-Tool (PageMaker Pack) ein 48-seitiges Dokument erstellt. Leider stehen im neu erstellten Dokument aber die Objekte nicht genau auf den gewünschten x-/y-Achsen (Rundungsfehler?). Das Problem tritt nur auf bei mehreren Datensätzen pro Dokumentseite.

Wie kann ich möglichst einfach auf allen 48 Seiten alle Objekte um 0,253mm nach unten (bzw. 0.303mm nach rechts) verschieben?

Oder hat sich unter ID CS2 das Problem erledigt?

Besten Dank für nen'Tipp
Gruss tag
______________________________
OS X 10.3.9, InDesign CS Premium
X

Rundungsfehler bei Datenzusammenführen (Datamerge) ID CS1

Martin Fischer
  
Beiträge gesamt: 12783

23. Sep 2005, 00:46
Beitrag # 2 von 10
Beitrag ID: #188343
Bewertung:
(10952 mal gelesen)
URL zum Beitrag
Beitrag als Lesezeichen
Gute Nacht Tag,

ein ähnliches Problem hatte ich auch mal.
Folgendes JavaScript verschiebt alle Objekte eines Dokuments
um die angegebene Werte (myXDist und myYDist).
Versuch's mal damit:

Code
// moveObjects.js 
//
myXDist = -1.5; // horizontaler Versatz
myYDist = -0.2; // vertikaler Versatz
myDoc = app.documents[0];
myObjects = myDoc.pageItems;
for (oneObject = 0; oneObject < myObjects.length; oneObject++){
myObjects[oneObject].move(undefined,[myYDist, myXDist]);
}



als Antwort auf: [#188319]
(Dieser Beitrag wurde von MartinF am 23. Sep 2005, 00:49 geändert)

Rundungsfehler bei Datenzusammenführen (Datamerge) ID CS1

tag
Beiträge gesamt: 116

23. Sep 2005, 08:41
Beitrag # 3 von 10
Beitrag ID: #188353
Bewertung:
(10938 mal gelesen)
URL zum Beitrag
Beitrag als Lesezeichen
Guten Morgen MartinF

Besten Dank für die schnelle Hilfe. Leider klappts aber nicht ganz genau.
Meine Objekte stehen falsch auf x:18.697 und y:37.747. Habe im Scriptle die folgenden Werte eingefügt:
MyXDist = 0.303
My YDist = 0.253
Nach ausführen des Scripts stehen die Objekte aber auf x:18.95 und y:38.05 und nicht auf x:19 und y:38. Nehme mal an, da wird bei der Umrechnung mm in pt und pt in mm wieder falsch gerundet.

Kann mann das Script so anpassen, dass man statt eines Versatzes x- und y-Koordinaten angeben könnte? Dann müsste es eigentlich gehen.

Gruss
tag


als Antwort auf: [#188343]

Rundungsfehler bei Datenzusammenführen (Datamerge) ID CS1

Martin Fischer
  
Beiträge gesamt: 12783

23. Sep 2005, 09:24
Beitrag # 4 von 10
Beitrag ID: #188360
Bewertung:
(10932 mal gelesen)
URL zum Beitrag
Beitrag als Lesezeichen
> Nehme mal an, da wird bei der Umrechnung mm in pt und pt in mm wieder falsch gerundet.

Das ist ja nicht zu fassen.
So eine Schlamperei.


> Kann mann das Script so anpassen, dass man statt eines Versatzes x-
> und y-Koordinaten angeben könnte?

Ist Dein Dokument einseitig oder doppelseitig?
In letzterem Fall wären unterschiedliche Koordinaten für die linke und die rechte Seite notwendig.

Gibt es jeweils nur ein Objekt auf einer Seite?


als Antwort auf: [#188353]

Rundungsfehler bei Datenzusammenführen (Datamerge) ID CS1

tag
Beiträge gesamt: 116

23. Sep 2005, 09:34
Beitrag # 5 von 10
Beitrag ID: #188362
Bewertung:
(10931 mal gelesen)
URL zum Beitrag
Beitrag als Lesezeichen
Mein Dokument ist Doppelseitig. Sollte aber keine Rolle spielen, da der Rand vom Satzspiegel innen und aussen gleich ist (sonst wäre dein Scriptle mit Verschieben ja auch nicht gegangen).

Auf der Seite sind mehrere Objekte (Bildboxen, Linien, Textboxen).

Gruss
tag


als Antwort auf: [#188360]

Rundungsfehler bei Datenzusammenführen (Datamerge) ID CS1

Martin Fischer
  
Beiträge gesamt: 12783

23. Sep 2005, 09:54
Beitrag # 6 von 10
Beitrag ID: #188365
Bewertung:
(10928 mal gelesen)
URL zum Beitrag
Beitrag als Lesezeichen
> da der Rand vom Satzspiegel innen und aussen gleich ist (sonst wäre dein Scriptle mit Verschieben ja auch nicht gegangen

Mein Skript verschiebt die Objekte unabhängig von den Rändern und Koordinaten um eine bestimmte Distanz relativ von ihrer jeweiligen Ausgangsposition.

Bei Angabe von festen Koordinaten macht dies aber ggf. einen Unterschied.

Kann man Deine absoluten Koordinaten etwas allgemeiner fassen?
Z.B. x = linker Rand; y = oberer Rand

>Auf der Seite sind mehrere Objekte (Bildboxen, Linien, Textboxen).
Was soll alles verschoben werden?
Nur Textboxen?
Oder allle Objekte auf die von Dir angegebene Koordinate?
Klingt etwas unwahrscheinlich.

Vielleicht wäre es einfacher, den Rundungsfehler bei der Umrechnung auszutricksen. Versuche die jeweilige Differenz vom erwarteten Ziel den Variablen myXDist und myYDist hinzuzuaddieren.


als Antwort auf: [#188362]
(Dieser Beitrag wurde von MartinF am 23. Sep 2005, 09:55 geändert)

Rundungsfehler bei Datenzusammenführen (Datamerge) ID CS1

Martin Fischer
  
Beiträge gesamt: 12783

23. Sep 2005, 10:44
Beitrag # 7 von 10
Beitrag ID: #188370
Bewertung:
(10917 mal gelesen)
URL zum Beitrag
Beitrag als Lesezeichen
Guten Morgen Tag,

> So eine Schlamperei.
Ich blase zum Rückzug: der Schlamper bin ich!
Habe beim move-Befehl die x- und die y-Koordinate verwechselt.
Bei den Objektkoordinaten (geometricBounds) wird der y-Wert vor dem x-Wert angesprochen (y1,x1,y2, x2). Dieses Schema habe ich stillschweigend auf den move-Befehl übertragen (move (y , x)). Richtig ist hier aber die Notierung der x-Koordinate vor der y-Koordinate (also "move(x, y)").

Das Skript lautet also richtig:

Code
// moveObjects.jsx 
//
myXDist = 0.303
myYDist = 0.253
myDoc = app.documents[0];
myObjects = myDoc.pageItems;
for (oneObject = 0; oneObject < myObjects.length; oneObject++){
myObjects[oneObject].move(undefined,[myXDist, myYDist]);
}


Kannst Du das mit der Bearbeitung Deines Dokuments bestätigen?


als Antwort auf: [#188360]
(Dieser Beitrag wurde von MartinF am 23. Sep 2005, 10:47 geändert)

Rundungsfehler bei Datenzusammenführen (Datamerge) ID CS1

tag
Beiträge gesamt: 116

23. Sep 2005, 17:44
Beitrag # 8 von 10
Beitrag ID: #188448
Bewertung:
(10896 mal gelesen)
URL zum Beitrag
Beitrag als Lesezeichen
Hi MartinF

Du hast absolut recht. Habe den Fehler auch bemerkt, als ich die Objekte ein zweites mal um die "angebliche Rundungsdifferenz" schieben wollte, und sich die Position verschlimmert hat.

Mir wurde also geholft. . . .

Schade einfach, dass das Tool "Datenzusammenführen" auch in der ID CS2-Version bei mehreren Datensätzen pro Seite nicht richtig positionieren kann; habs ausprobiert mit der Testversion.

Besten Dank für die Mühe und ein schönes Weekend
Gruss tag

P.S. Ich will dir ja nicht das Wochenende versauen, aber das Deluxe-Script wäre mit einem Eingabefeld für die X-/Y-Koordinaten (damit man nicht immer das Script ändern müsste) perfekt.


als Antwort auf: [#188370]

Rundungsfehler bei Datenzusammenführen (Datamerge) ID CS1

Martin Fischer
  
Beiträge gesamt: 12783

23. Sep 2005, 19:12
Beitrag # 9 von 10
Beitrag ID: #188451
Bewertung:
(10893 mal gelesen)
URL zum Beitrag
Beitrag als Lesezeichen
> Deluxe-Script wäre mit einem Eingabefeld für die X-/Y-Koordinaten
Als Freeware gibt's nur die Light-Version.
Sonst wäre mir das Wochenende versaut. ;-)

Vielleicht möchte noch jemand anderer weiterbasteln.


als Antwort auf: [#188448]

Rundungsfehler bei Datenzusammenführen (Datamerge) ID CS1

Martin Fischer
  
Beiträge gesamt: 12783

26. Sep 2005, 09:02
Beitrag # 10 von 10
Beitrag ID: #188576
Bewertung:
(10843 mal gelesen)
URL zum Beitrag
Beitrag als Lesezeichen
Die Beschäftigung mit dem Dialog hat mich nun doch noch gereizt.
Das Ergebnis ist das erweiterte Skript unten.

In den Eingabefeldern ist es möglich, auch Werte in anderen Maßeinheiten als mm einzugeben. Das Drücken der Pfeil-Tasten nach oben oder unten erhöht/verringert den angezeigten Wert um 0,1. Drückt man dabei die Shift-Taste, sollte der Wert um das 10-fache erhöht/erniedrigt werden (also 1). In "measurementComboboxes" steckt aber ein Bug, so daß trotz der Definition "largeNudge:1" der Wert nicht um den Wert "1" erhöht wird, sondern um den Wert "10". Damit das Skript nach eventueller Behebung des Bugs noch richtig läuft, habe ich's bei der Definition "largeNudge:1" belassen. Wer sich daran stört, kann die Definition auf Definition "largeNudge:0.1" anpassen.

Code
// moveObjects_xxl.js 
//
myDoc = app.documents[0];
myPt = 0.35277777777777777777778; // value of conversion: Pt - mm

//store old measurement units
var myOldXUnits = myDoc.viewPreferences.horizontalMeasurementUnits;
var myOldYUnits = myDoc.viewPreferences.verticalMeasurementUnits;

//set measurement units to millimeters
myDoc.viewPreferences.horizontalMeasurementUnits = MeasurementUnits.millimeters;
myDoc.viewPreferences.verticalMeasurementUnits = MeasurementUnits.millimeters;

// dialog box
var myDialog = app.dialogs.add({name:"Move objects",canCancel:true});
with(myDialog){
with(dialogColumns.add()){
with(dialogRows.add()){
staticTexts.add({staticLabel:"x-Offset: "});
// Bug: largeNudge = largeNudge*10 (multiplied with 10)
var myXDistField = measurementComboboxes.add({smallNudge:0.1, largeNudge:1, editUnits:MeasurementUnits.millimeters, stringList:["1","2","3","4","5","6","7","8","9","10"], editValue:0});
}
with(dialogRows.add()){
staticTexts.add({staticLabel:"y-Offset: "});
// Bug: largeNudge = largeNudge*10 (multiplied with 10)
var myYDistField = measurementComboboxes.add({smallNudge:0.1, largeNudge:1, editUnits:MeasurementUnits.millimeters, stringList:["1","2","3","4","5","6","7","8","9","10"], editValue:0});
}
}
}
//display the dialog box
var myResult = myDialog.show();
if(myResult == true){
//get the values from the dialog box controls
var myXDist = myXDistField.editValue * myPt;
var myYDist = myYDistField.editValue * myPt;
//remove the dialog box from memory
myDialog.destroy();
//move objects
myObjects = myDoc.pageItems;
for (oneObject = 0; oneObject < myObjects.length; oneObject++){
myObjects[oneObject].move(undefined,[myXDist, myYDist]);
}
}
else{
//User clicked Cancel, so remove the dialog box from memory
myDialog.destroy();
}

//restore old measurement units
myDoc.viewPreferences.horizontalMeasurementUnits = myOldXUnits;
myDoc.viewPreferences.verticalMeasurementUnits = myOldYUnits;



als Antwort auf: [#188451]
X