[GastForen Programme Print/Bildbearbeitung Adobe InDesign Eckeneffekte selbst definieren

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

Eckeneffekte selbst definieren

Clause
Beiträge gesamt: 28

9. Sep 2005, 13:01
Beitrag # 1 von 19
Bewertung:
(16298 mal gelesen)
URL zum Beitrag
Beitrag als Lesezeichen
Hallo, habe folgendes Problem:
Ich möchte ein Rechteck machen, wo immer die linke obere und die rechte untere Ecke abgerundet sind. wie kann ich das machen? und ist es möglich diesen "Effekt" abzuspeichern und dann als "Eckeneffekt" einzuladen?

Danke Euch.
X

Eckeneffekte selbst definieren

Dirk Levy
  
Beiträge gesamt: 9462

9. Sep 2005, 13:16
Beitrag # 2 von 19
Beitrag ID: #186581
Bewertung:
(16289 mal gelesen)
URL zum Beitrag
Beitrag als Lesezeichen
Also ich mache das so:

Rahmen mit den gewünschten Ecken erstellen,
dann das Direktauwahl-Werkzeug nehmen und
da wo es nicht mehr rund sein soll die Ecke schließen,
geht auch mit dem Löschwerzeug für Pfade....

Speichern weiß ich nicht....


als Antwort auf: [#186576]

Eckeneffekte selbst definieren

MSchmitz
Beiträge gesamt: 545

9. Sep 2005, 13:36
Beitrag # 3 von 19
Beitrag ID: #186588
Bewertung:
(16279 mal gelesen)
URL zum Beitrag
Beitrag als Lesezeichen
oder im adobe studio exchange nachschauen. dort gibt es ein java-script und nennt sich "corner effect". damit lassen sich einzelnen eckpunkten bestimmte eckeneffekte zuweisen.

markus schmitz


als Antwort auf: [#186576]

Eckeneffekte selbst definieren

Haeme Ulrich
Beiträge gesamt: 3102

9. Sep 2005, 14:15
Beitrag # 4 von 19
Beitrag ID: #186597
Bewertung:
(16273 mal gelesen)
URL zum Beitrag
Beitrag als Lesezeichen
Hier das Script (hatte es gleich zur Hand). Dies ist übrigens auch drauf auf der Installations CD der CS2



//CornerEffects.jsx
//An InDesign CS2 JavaScript
//
//Applies corner effects by redrawing the object.
//
//For more information on InDesign scripting, go to http://www.adobe.com/products/indesign/scripting.html
//Or visit the InDesign Scripting User to User forum at http://www.adobeforums.com.
//
var myObjectList = new Array;
if (app.documents.length != 0){
if (app.selection.length != 0){
for(var myCounter = 0;myCounter < app.selection.length; myCounter++){
switch (app.selection[myCounter].constructor.name){
case "Rectangle":
case "Oval":
case "Polygon":
case "GraphicLine":
case "TextFrame":
myObjectList.push(app.selection[myCounter]);
break;
}
}
if (myObjectList.length != 0){
myDisplayDialog(myObjectList); }
else{
alert ("Please select a rectangle, oval, polygon, text frame, or graphic line and try again.");

}

}
else{
alert ("Please select an object and try again.");
}
}
else{
alert ("Please open a document, select an object, and try again.");
}
function myDisplayDialog(myObjectList){
var myStringList = ["all points","first point", "last point", "second point", "third point", "fourth point", "first two", "second and third", "last two", "first and last", "odd points", "even points"]
//Store the current measurement units.
var myOldXUnits = app.activeDocument.viewPreferences.horizontalMeasurementUnits;
var myOldYUnits = app.activeDocument.viewPreferences.verticalMeasurementUnits;

app.activeDocument.viewPreferences.horizontalMeasurementUnits = MeasurementUnits.points;
app.activeDocument.viewPreferences.verticalMeasurementUnits = MeasurementUnits.points;
myDialog = app.dialogs.add({name:"CornerEffects"});
with(myDialog){
with(dialogColumns.add()){
with(borderPanels.add()){
staticTexts.add({staticLabel:"Corner Type:"});
var myCornerEffectButtons = radiobuttonGroups.add();
with(myCornerEffectButtons){
radiobuttonControls.add({staticLabel:"Rounded", checkedState:true});
radiobuttonControls.add({staticLabel:"Inverse Rounded"});
radiobuttonControls.add({staticLabel:"Bevel"});
radiobuttonControls.add({staticLabel:"Inset"});
radiobuttonControls.add({staticLabel:"Fancy"});
}
}
with(borderPanels.add()){
with (dialogColumns.add()){
staticTexts.add({staticLabel:"Options:"});
}
with (dialogColumns.add()){
with (dialogRows.add()){
with (dialogColumns.add()){
staticTexts.add({staticLabel:"Offset:", minWidth:50});
staticTexts.add({staticLabel:"Pattern:", minWidth:50});
}
with (dialogColumns.add()){
var myOffsetEditbox = measurementEditboxes.add({editValue:12});
var myPatternDropdown = dropdowns.add({stringList:myStringList, selectedIndex:0});
}
}
}
}
}
}
var myReturn = myDialog.show();
if (myReturn == true){
//Get the values from the dialog box.
var myCornerType = myCornerEffectButtons.selectedButton;
var myOffset = myOffsetEditbox.editValue;
var myPattern = myStringList[myPatternDropdown.selectedIndex];
myDialog.destroy();
for(myCounter = 0; myCounter<myObjectList.length; myCounter++){
myChangeCorners(myObjectList[myCounter], myCornerType, myOffset, myPattern);
}
//Reset the measurement units.
app.activeDocument.viewPreferences.horizontalMeasurementUnits = myOldXUnits;
app.activeDocument.viewPreferences.verticalMeasurementUnits = myOldYUnits;
}
else{
myDialog.destroy();
}
}
function myChangeCorners(myObject, myCornerType, myOffset, myPattern){
var myPathPoint, myPoint, myPointA, myPointB, myPointC, myAnchor, myX, myY, myX1, myY1, myX2, myY2, myX3, myY3;
var myNewX1, myNewY1, myNewX2, myNewY2, myXOffset, myYOffset, myPoint, myPathPoint;
for(var myPathCounter = 0; myPathCounter < myObject.paths.length; myPathCounter ++){
var myPath = myObject.paths.item(myPathCounter);
myPointArray = new Array;
for (var myPathPointCounter = 0; myPathPointCounter < myPath.pathPoints.length; myPathPointCounter ++){
//Is the point a qualifying point?
if(myPointTest(myPathPointCounter, myPath, myPattern) == false){
myX1 = myPath.pathPoints.item(myPathPointCounter).leftDirection[0];
myY1 = myPath.pathPoints.item(myPathPointCounter).leftDirection[1];
myX2 = myPath.pathPoints.item(myPathPointCounter).anchor[0];
myY2 = myPath.pathPoints.item(myPathPointCounter).anchor[1];
myX3 = myPath.pathPoints.item(myPathPointCounter).rightDirection[0];
myY3 = myPath.pathPoints.item(myPathPointCounter).rightDirection[1];
myPoint = [[myX1, myY1], [myX2, myY2], [myX3, myY3]];
myPointArray.push(myPoint);
}
else{
myPointA = myPath.pathPoints.item(myPathPointCounter);
myAnchor = myPointA.anchor;
myX1 = myAnchor[0];
myY1 = myAnchor[1];
//myPointB is the *next* point on the path. If myPathPoint is the last point on the path, then
//myPointB is the first point on the path.
if (myPathPointCounter == (myPath.pathPoints.length - 1)){
myPointB = myPath.pathPoints.item(0);
}
else{
myPointB = myPath.pathPoints.item(myPathPointCounter + 1);
}
myAnchor = myPointB.anchor;
myX2 = myAnchor[0];
myY2 = myAnchor[1];
//myPointC is the *previous* point on the path. If myPathPoint is the first point on the path,
//then myPointC is the last point on the path.
if (myPathPointCounter == 0){
myPointC = myPath.pathPoints.item(myPath.pathPoints.length - 1);
}
else{
myPointC = myPath.pathPoints.item((myPathPointCounter - 1) % myPath.pathPoints.length);
}
myAnchor = myPointC.anchor;
myX3 = myAnchor[0];
myY3 = myAnchor[1];
var myPoints = myAddPoints(myX1, myY1, myX2, myY2, myX3, myY3, myOffset);
myNewX1 = myPoints[0];
myNewY1 = myPoints[1];
myNewX2 = myPoints[2];
myNewY2 = myPoints[3];
//Calculate new path point values based on the path effect type.
//We won't add the points to the path one at a time; instead, we'll
//create an array that holds all of the point locations and curve
//handle positions, and we will then
switch (myCornerType){
case 0:
//Rounded corner effect.
myPoint = [[myNewX2, myNewY2], [myNewX2, myNewY2], [myX1, myY1]];
myPointArray.push(myPoint);
myPoint = [[myNewX1, myNewY1], [myNewX1, myNewY1], [myNewX1, myNewY1]];
myPointArray.push(myPoint);
break;
case 1:
//Inverse Rounded corner effect.
myPoint = [[myNewX2, myNewY2], [myNewX2, myNewY2], [(myNewX2 + myNewX1 - myX1), (myNewY2 + myNewY1 - myY1)]];
myPointArray.push(myPoint);
myPoint = [[myNewX1, myNewY1], [myNewX1, myNewY1], [myNewX1, myNewY1]];
myPointArray.push(myPoint);
break;
case 2:
//Bevel corner effect.
myPoint = [[myNewX2, myNewY2], [myNewX2, myNewY2], [myNewX2, myNewY2]];
myPointArray.push(myPoint);
myPoint = [[myNewX1, myNewY1], [myNewX1, myNewY1], [myNewX1, myNewY1]];
myPointArray.push(myPoint);
break;
case 3:
//Inset corner effect.
myPoint = [[myNewX2, myNewY2], [myNewX2, myNewY2], [myNewX2, myNewY2]];
myPointArray.push(myPoint);
myPoint = [[(myNewX2 + myNewX1 - myX1), (myNewY2 + myNewY1 - myY1)],[(myNewX2 + myNewX1 - myX1), (myNewY2 + myNewY1 - myY1)],[(myNewX2 + myNewX1 - myX1), (myNewY2 + myNewY1 - myY1)]];
myPointArray.push(myPoint);
myPoint = [[myNewX1, myNewY1], [myNewX1, myNewY1], [myNewX1, myNewY1]];
myPointArray.push(myPoint);
break;
case 4:
//Fancy corner effect.
var myOneThird = 0.33333333332;
var myTwoThirds = 0.666666666667
var myPointZX = myNewX2 + myNewX1 - myX1;
var myPointZY = myNewY2 + myNewY1 - myY1;
var myTemp1X = (myX1 - myNewX2) * myTwoThirds;
var myTemp1Y = (myY1 - myNewY2) * myTwoThirds;
var myTemp2X = (myX1 - myNewX1) * myTwoThirds;
var myTemp2Y = (myY1 - myNewY1) * myTwoThirds;
var myPointDX = myPointZX + myOneThird * (myNewX1 - myPointZX);
var myPointDY = myPointZY + myOneThird * (myNewY1 - myPointZY);
var myPointEX = myPointZX + myOneThird * (myNewX2 - myPointZX);
var myPointEY = myPointZY + myOneThird * (myNewY2 - myPointZY);
var myPointFX = myPointDX + myTwoThirds * (myX1 - myTemp1X - myPointDX);
var myPointFY = myPointDY + myTwoThirds * (myY1 - myTemp1Y - myPointDY);
var myPointGX = myPointEX + myTwoThirds * (myX1 - myTemp2X - myPointEX);
var myPointGY = myPointEY + myTwoThirds * (myY1 - myTemp2Y - myPointEY);
var myPointHX = myPointZX + myTemp1X + myTemp2X;
var myPointHY = myPointZY + myTemp1Y + myTemp2Y;
myPoint = [[myNewX2, myNewY2],[myNewX2, myNewY2],[myNewX2, myNewY2]];
myPointArray.push(myPoint);
myPoint = [[myPointEX, myPointEY],[myPointEX, myPointEY],[myPointEX, myPointEY]];
myPointArray.push(myPoint);
myPoint = [[myPointGX, myPointGY],[myPointGX, myPointGY],[myPointGX, myPointGY]];
myPointArray.push(myPoint);
myPoint = [[myPointHX, myPointHY],[myPointHX, myPointHY],[myPointHX, myPointHY]];
myPointArray.push(myPoint);
myPoint = [[myPointFX, myPointFY],[myPointFX, myPointFY],[myPointFX, myPointFY]];
myPointArray.push(myPoint);
myPoint = [[myPointDX, myPointDY],[myPointDX, myPointDY],[myPointDX, myPointDY]];
myPointArray.push(myPoint);
myPoint = [[myNewX1, myNewY1],[myNewX1, myNewY1],[myNewX1, myNewY1]];
myPointArray.push(myPoint);
break;
}
}
}
myPath.entirePath = myPointArray;
}
}
function myAddPoints(myX1, myY1, myX2, myY2, myX3, myY3, myOffset){
var myXAdjust, myYAdjust, myNewX1, myNewY1, myNewX2, myNewY2, myHypotenuse;
myHypotenuse = Math.sqrt(Math.pow((myX1 - myX2),2) + Math.pow((myY1 - myY2),2));
if (myY1 != myY2) {
myXAdjust = ((myX1 - myX2) / myHypotenuse) * myOffset;
myYAdjust = ((myY1 - myY2) / myHypotenuse) * myOffset;
myNewX1 = myX1 - myXAdjust;
myNewY1 = myY1 - myYAdjust;
}
else {
myXAdjust = myOffset;
myYAdjust = 0;
if (myX1 < myX2) {
myNewX1 = myX1 + myXAdjust;
myNewY1 = myY1 + myYAdjust;
}
else{
myNewX1 = myX1 - myXAdjust;
myNewY1 = myY1 - myYAdjust;
}
}
myHypotenuse = Math.sqrt(Math.pow((myX1 - myX3),2) + Math.pow((myY1 - myY3),2));
if (myY1 != myY3) {
myXAdjust = ((myX1 - myX3) / myHypotenuse) * myOffset;
myYAdjust = ((myY1 - myY3) / myHypotenuse) * myOffset;
myNewX2 = myX1 - myXAdjust;
myNewY2 = myY1 - myYAdjust;
}
else{
myXAdjust = myOffset;
myYAdjust = 0;
if (myX1 < myX3) {
myNewX2 = myX1 + myXAdjust;
myNewY2 = myY1 + myYAdjust;
}
else{
myNewX2 = myX1 - myXAdjust;
myNewY2 = myY1 - myYAdjust;
}
}
return [myNewX1, myNewY1, myNewX2, myNewY2];
}
function myPointTest(myPathPointCounter, myPath, myPattern){
//Do not apply the corner effect to the first or last point in an open path
//(this is the way that InDesign's corner effects work).
if((myPath.pathType == PathType.openPath)&&((myPathPointCounter ==0)||(myPathPointCounter == myPath.pathPoints.length-1))){
return false;
}
else{
switch(myPattern){
case "all points":
return true;
case "first point":
if(myPathPointCounter == 0){
return true;
}
else{
return false;
}
case "last point":
if(myPathPointCounter == myPath.pathPoints.length-1){
return true;
}
else{
return false;
}
case "second point":
if(myPathPointCounter == 1){
return true;
}
else{
return false;
}
case "third point":
if(myPathPointCounter == 2){
return true;
}
else{
return false;
}
case "fourth point":
if(myPathPointCounter == 3){
return true;
}
else{
return false;
}
case "first two":
if((myPathPointCounter == 0)||(myPathPointCounter == 1)){
return true;
}
else{
return false;
}
case "second and third":
if((myPathPointCounter == 1)||(myPathPointCounter == 2)){
return true;
}
else{
return false;
}
case "last two":
if((myPathPointCounter == (myPath.pathPoints.length-2))||(myPathPointCounter == (myPath.pathPoints.length-1))){
return true;
}
else{
return false;
}
case "first and last":
if((myPathPointCounter == 0)||(myPathPointCounter == (myPath.pathPoints.length-1))){
return true;
}
else{
return false;
}

//Because myPathPointCounter starts at 0, the even points on the path
//actually fall on the odd numbers (when myPathPointCounter = 1, it's
//the second point on the path). Therefore, we use % (mod) 2 != 0 for
//even numbers.
case "even points":
if(myPathPointCounter % 2 != 0){
return true;
}
else{
return false;
}
case "odd points":
if(myPathPointCounter % 2 == 0){
return true;
}
else{
return false;
}
}
}
}


als Antwort auf: [#186588]

Eckeneffekte selbst definieren

Clause
Beiträge gesamt: 28

9. Sep 2005, 14:39
Beitrag # 5 von 19
Beitrag ID: #186607
Bewertung:
(16271 mal gelesen)
URL zum Beitrag
Beitrag als Lesezeichen
Wie geht das jetzt dann zum Installieren?
Geht das bei InDesign CS auch?


als Antwort auf: [#186597]

Eckeneffekte selbst definieren

Christoph Steffens
  
Beiträge gesamt: 4906

9. Sep 2005, 14:42
Beitrag # 6 von 19
Beitrag ID: #186609
Bewertung:
(16268 mal gelesen)
URL zum Beitrag
Beitrag als Lesezeichen
Entweder in auf der ID Installations CD nachsehen, oder

-Text in Zwischenablage kopieren
-Texteditor öffnen
-Text einfügen
-Sichern unter dem namen "CornerEffects.js"
-in den Ordner "Scripts" im Programmordner von ID legen.
-Unter "Fenster" die "Scripts" öffnen
-Rahemn anklicken und Doppelklick auf das Script machen


als Antwort auf: [#186607]

Eckeneffekte selbst definieren

mpeter
Beiträge gesamt: 4628

9. Sep 2005, 16:55
Beitrag # 7 von 19
Beitrag ID: #186637
Bewertung:
(16253 mal gelesen)
URL zum Beitrag
Beitrag als Lesezeichen
Hi,
warum baust du dir nicht einfach diesen Rahemn in ID oder Illu und legst ihn in eine Bibliothek?


als Antwort auf: [#186609]

Eckeneffekte selbst definieren

sieber
Beiträge gesamt: 136

14. Mär 2006, 11:55
Beitrag # 8 von 19
Beitrag ID: #217342
Bewertung:
(16006 mal gelesen)
URL zum Beitrag
Beitrag als Lesezeichen
Hallo zusammen,

ich habe da eine Frage, bzw. ein kleines Problem mit diesem Script:

Ich arbeite in InDesign CS, wo das Script soweit auch problemlos läuft.
Ich arbeite immer in mm (über Voreinstellungen eingestellt).

Das Script hat aber immer die Standardwerte in pt nach dem Aufruf.
Natürlich kann ich in dem Script hinter die Werte auch in mm eingeben.
Jedoch muss ich nach Ausführung des Scripts immer wieder in den
Voreinstellungen die Einheit zurück in mm umstellen.

Kennt jemand da eine Abhilfe, oder kann das Script entsprechend modifizieren?

Vielen Dank für jede Hilfe!

VG

Jan


als Antwort auf: [#186597]

Eckeneffekte selbst definieren

os_xxx
Beiträge gesamt: 206

15. Mär 2006, 09:19
Beitrag # 9 von 19
Beitrag ID: #217563
Bewertung:
(15963 mal gelesen)
URL zum Beitrag
Beitrag als Lesezeichen
Zitat Das Script hat aber immer die Standardwerte in pt nach dem Aufruf.
Natürlich kann ich in dem Script hinter die Werte auch in mm eingeben.
Jedoch muss ich nach Ausführung des Scripts immer wieder in den
Voreinstellungen die Einheit zurück in mm umstellen.


Was passiert, wenn Du im Eingabefeld hinter Deinen Wert "mm" eingibst?
z.B. "5 mm".


als Antwort auf: [#217342]
(Dieser Beitrag wurde von os_xxx am 15. Mär 2006, 09:21 geändert)

Eckeneffekte selbst definieren

sieber
Beiträge gesamt: 136

15. Mär 2006, 09:25
Beitrag # 10 von 19
Beitrag ID: #217565
Bewertung:
(15957 mal gelesen)
URL zum Beitrag
Beitrag als Lesezeichen
Hallo Oscar,

Zitat Was passiert, wenn Du im Eingabefeld hinter Deinen Wert "mm" eingibst?
z.B. "5 mm".


Wie bereits beschrieben wird dann der mm-Wert verändert. Die Voreinstellung in dem Script stören mich auch nicht.
Jedoch würde ich gerne nicht jedesmal nach Benutzung des Scripts die Voreinstellungen öffnen,
und die allg. Dokumenteinheit zurück in mm umstellen.

Die ist nämlich nach der Benutzung in pt, wenn man Werte mit mm in dem Script engibt.

Jan


als Antwort auf: [#217563]

Eckeneffekte selbst definieren

Martin Fischer
  
Beiträge gesamt: 12783

15. Mär 2006, 09:45
Beitrag # 11 von 19
Beitrag ID: #217569
Bewertung:
(15945 mal gelesen)
URL zum Beitrag
Beitrag als Lesezeichen
> Jedoch würde ich gerne nicht jedesmal nach Benutzung des Scripts die Voreinstellungen
> öffnen, und die allg. Dokumenteinheit zurück in mm umstellen.
> Die ist nämlich nach der Benutzung in pt, wenn man Werte mit mm in dem Script engibt.

Das sollte eigentlich nicht so sein!
Im Originalskript werden die ursprünglichen Einheiten wieder hergestellt.
Bist Du einer modifizierten "Raubkopie" auf den Leim gegangen? ;-)

Bitte überprüfe, ob in Deinem Skript folgende Zeilen enthalten sind:
Code
	//Store the current measurement units. 
var myOldXUnits = app.activeDocument.viewPreferences.horizontalMeasurementUnits;
var myOldYUnits = app.activeDocument.viewPreferences.verticalMeasurementUnits;


app.activeDocument.viewPreferences.horizontalMeasurementUnits = MeasurementUnits.points;
app.activeDocument.viewPreferences.verticalMeasurementUnits = MeasurementUnits.points;


(...)
//Reset the measurement units.
app.activeDocument.viewPreferences.horizontalMeasurementUnits = myOldXUnits;
app.activeDocument.viewPreferences.verticalMeasurementUnits = myOldYUnits;


Du könntest die Einheiten auf Millimeter setzen:
Code
	app.activeDocument.viewPreferences.horizontalMeasurementUnits = MeasurementUnits.millimeters; 
app.activeDocument.viewPreferences.verticalMeasurementUnits = MeasurementUnits.millimeters;


Oder die folgenden Zeilen ganz löschen:
Code
	app.activeDocument.viewPreferences.horizontalMeasurementUnits = MeasurementUnits.points; 
app.activeDocument.viewPreferences.verticalMeasurementUnits = MeasurementUnits.points;



als Antwort auf: [#217565]

Eckeneffekte selbst definieren

sieber
Beiträge gesamt: 136

15. Mär 2006, 09:57
Beitrag # 12 von 19
Beitrag ID: #217576
Bewertung:
(15940 mal gelesen)
URL zum Beitrag
Beitrag als Lesezeichen
Hallo Martin,

habe das jetzt auf die schnelle noch nicht kontrolliert.
Ich habe aber das Script aus Haemes Beitrag heraus kopiert.

Kann es daran liegen, dass ich in CS1 arbeite?

VG

Jan


als Antwort auf: [#217569]

Eckeneffekte selbst definieren

Quarz
Beiträge gesamt: 3555

15. Mär 2006, 10:01
Beitrag # 13 von 19
Beitrag ID: #217579
Bewertung:
(15939 mal gelesen)
URL zum Beitrag
Beitrag als Lesezeichen
Bei mir mit InDesign CS2 funktioniert es.

Gruß
Quarz


als Antwort auf: [#217576]

Eckeneffekte selbst definieren

Martin Fischer
  
Beiträge gesamt: 12783

15. Mär 2006, 10:18
Beitrag # 14 von 19
Beitrag ID: #217583
Bewertung:
(15936 mal gelesen)
URL zum Beitrag
Beitrag als Lesezeichen
> Kann es daran liegen, dass ich in CS1 arbeite?
Nein, ein Test des Originalskripts unter CS ergab eine korrektre Rückstellung der Maßeinheiten.
Schick mir mal Dein Skript, damit ich einen Blick in den Code werfen kann.


als Antwort auf: [#217576]

Eckeneffekte selbst definieren

sieber
Beiträge gesamt: 136

15. Mär 2006, 11:19
Beitrag # 15 von 19
Beitrag ID: #217600
Bewertung:
(15922 mal gelesen)
URL zum Beitrag
Beitrag als Lesezeichen
Anbei noch einmal der Code:
Vielen Dank für die Hilfe!!!

Code
 
//CornerEffects.jsx
//An InDesign CS2 JavaScript
//
//Applies corner effects by redrawing the object.
//
//For more information on InDesign scripting, go to http://www.adobe.com/products/indesign/scripting.html
//Or visit the InDesign Scripting User to User forum at http://www.adobeforums.com.
//
var myObjectList = new Array;
if (app.documents.length != 0){
if (app.selection.length != 0){
for(var myCounter = 0;myCounter < app.selection.length; myCounter++){
switch (app.selection[myCounter].constructor.name){
case "Rectangle":
case "Oval":
case "Polygon":
case "GraphicLine":
case "TextFrame":
myObjectList.push(app.selection[myCounter]);
break;
}
}
if (myObjectList.length != 0){
myDisplayDialog(myObjectList); }
else{
alert ("Please select a rectangle, oval, polygon, text frame, or graphic line and try again.");

}

}
else{
alert ("Please select an object and try again.");
}
}
else{
alert ("Please open a document, select an object, and try again.");
}
function myDisplayDialog(myObjectList){
var myStringList = ["all points","first point", "last point", "second point", "third point", "fourth point", "first two", "second and third", "last two", "first and last", "odd points", "even points"]
//Store the current measurement units.
var myOldXUnits = app.activeDocument.viewPreferences.horizontalMeasurementUnits;
var myOldYUnits = app.activeDocument.viewPreferences.verticalMeasurementUnits;

app.activeDocument.viewPreferences.horizontalMeasurementUnits = MeasurementUnits.points;
app.activeDocument.viewPreferences.verticalMeasurementUnits = MeasurementUnits.points;
myDialog = app.dialogs.add({name:"CornerEffects"});
with(myDialog){
with(dialogColumns.add()){
with(borderPanels.add()){
staticTexts.add({staticLabel:"Corner Type:"});
var myCornerEffectButtons = radiobuttonGroups.add();
with(myCornerEffectButtons){
radiobuttonControls.add({staticLabel:"Rounded", checkedState:true});
radiobuttonControls.add({staticLabel:"Inverse Rounded"});
radiobuttonControls.add({staticLabel:"Bevel"});
radiobuttonControls.add({staticLabel:"Inset"});
radiobuttonControls.add({staticLabel:"Fancy"});
}
}
with(borderPanels.add()){
with (dialogColumns.add()){
staticTexts.add({staticLabel:"Options:"});
}
with (dialogColumns.add()){
with (dialogRows.add()){
with (dialogColumns.add()){
staticTexts.add({staticLabel:"Offset:", minWidth:50});
staticTexts.add({staticLabel:"Pattern:", minWidth:50});
}
with (dialogColumns.add()){
var myOffsetEditbox = measurementEditboxes.add({editValue:12});
var myPatternDropdown = dropdowns.add({stringList:myStringList, selectedIndex:0});
}
}
}
}
}
}
var myReturn = myDialog.show();
if (myReturn == true){
//Get the values from the dialog box.
var myCornerType = myCornerEffectButtons.selectedButton;
var myOffset = myOffsetEditbox.editValue;
var myPattern = myStringList[myPatternDropdown.selectedIndex];
myDialog.destroy();
for(myCounter = 0; myCounter<myObjectList.length; myCounter++){
myChangeCorners(myObjectList[myCounter], myCornerType, myOffset, myPattern);
}
//Reset the measurement units.
app.activeDocument.viewPreferences.horizontalMeasurementUnits = myOldXUnits;
app.activeDocument.viewPreferences.verticalMeasurementUnits = myOldYUnits;
}
else{
myDialog.destroy();
}
}
function myChangeCorners(myObject, myCornerType, myOffset, myPattern){
var myPathPoint, myPoint, myPointA, myPointB, myPointC, myAnchor, myX, myY, myX1, myY1, myX2, myY2, myX3, myY3;
var myNewX1, myNewY1, myNewX2, myNewY2, myXOffset, myYOffset, myPoint, myPathPoint;
for(var myPathCounter = 0; myPathCounter < myObject.paths.length; myPathCounter ++){
var myPath = myObject.paths.item(myPathCounter);
myPointArray = new Array;
for (var myPathPointCounter = 0; myPathPointCounter < myPath.pathPoints.length; myPathPointCounter ++){
//Is the point a qualifying point?
if(myPointTest(myPathPointCounter, myPath, myPattern) == false){
myX1 = myPath.pathPoints.item(myPathPointCounter).leftDirection[0];
myY1 = myPath.pathPoints.item(myPathPointCounter).leftDirection[1];
myX2 = myPath.pathPoints.item(myPathPointCounter).anchor[0];
myY2 = myPath.pathPoints.item(myPathPointCounter).anchor[1];
myX3 = myPath.pathPoints.item(myPathPointCounter).rightDirection[0];
myY3 = myPath.pathPoints.item(myPathPointCounter).rightDirection[1];
myPoint = [[myX1, myY1], [myX2, myY2], [myX3, myY3]];
myPointArray.push(myPoint);
}
else{
myPointA = myPath.pathPoints.item(myPathPointCounter);
myAnchor = myPointA.anchor;
myX1 = myAnchor[0];
myY1 = myAnchor[1];
//myPointB is the *next* point on the path. If myPathPoint is the last point on the path, then
//myPointB is the first point on the path.
if (myPathPointCounter == (myPath.pathPoints.length - 1)){
myPointB = myPath.pathPoints.item(0);
}
else{
myPointB = myPath.pathPoints.item(myPathPointCounter + 1);
}
myAnchor = myPointB.anchor;
myX2 = myAnchor[0];
myY2 = myAnchor[1];
//myPointC is the *previous* point on the path. If myPathPoint is the first point on the path,
//then myPointC is the last point on the path.
if (myPathPointCounter == 0){
myPointC = myPath.pathPoints.item(myPath.pathPoints.length - 1);
}
else{
myPointC = myPath.pathPoints.item((myPathPointCounter - 1) % myPath.pathPoints.length);
}
myAnchor = myPointC.anchor;
myX3 = myAnchor[0];
myY3 = myAnchor[1];
var myPoints = myAddPoints(myX1, myY1, myX2, myY2, myX3, myY3, myOffset);
myNewX1 = myPoints[0];
myNewY1 = myPoints[1];
myNewX2 = myPoints[2];
myNewY2 = myPoints[3];
//Calculate new path point values based on the path effect type.
//We won't add the points to the path one at a time; instead, we'll
//create an array that holds all of the point locations and curve
//handle positions, and we will then
switch (myCornerType){
case 0:
//Rounded corner effect.
myPoint = [[myNewX2, myNewY2], [myNewX2, myNewY2], [myX1, myY1]];
myPointArray.push(myPoint);
myPoint = [[myNewX1, myNewY1], [myNewX1, myNewY1], [myNewX1, myNewY1]];
myPointArray.push(myPoint);
break;
case 1:
//Inverse Rounded corner effect.
myPoint = [[myNewX2, myNewY2], [myNewX2, myNewY2], [(myNewX2 + myNewX1 - myX1), (myNewY2 + myNewY1 - myY1)]];
myPointArray.push(myPoint);
myPoint = [[myNewX1, myNewY1], [myNewX1, myNewY1], [myNewX1, myNewY1]];
myPointArray.push(myPoint);
break;
case 2:
//Bevel corner effect.
myPoint = [[myNewX2, myNewY2], [myNewX2, myNewY2], [myNewX2, myNewY2]];
myPointArray.push(myPoint);
myPoint = [[myNewX1, myNewY1], [myNewX1, myNewY1], [myNewX1, myNewY1]];
myPointArray.push(myPoint);
break;
case 3:
//Inset corner effect.
myPoint = [[myNewX2, myNewY2], [myNewX2, myNewY2], [myNewX2, myNewY2]];
myPointArray.push(myPoint);
myPoint = [[(myNewX2 + myNewX1 - myX1), (myNewY2 + myNewY1 - myY1)],[(myNewX2 + myNewX1 - myX1), (myNewY2 + myNewY1 - myY1)],[(myNewX2 + myNewX1 - myX1), (myNewY2 + myNewY1 - myY1)]];
myPointArray.push(myPoint);
myPoint = [[myNewX1, myNewY1], [myNewX1, myNewY1], [myNewX1, myNewY1]];
myPointArray.push(myPoint);
break;
case 4:
//Fancy corner effect.
var myOneThird = 0.33333333332;
var myTwoThirds = 0.666666666667
var myPointZX = myNewX2 + myNewX1 - myX1;
var myPointZY = myNewY2 + myNewY1 - myY1;
var myTemp1X = (myX1 - myNewX2) * myTwoThirds;
var myTemp1Y = (myY1 - myNewY2) * myTwoThirds;
var myTemp2X = (myX1 - myNewX1) * myTwoThirds;
var myTemp2Y = (myY1 - myNewY1) * myTwoThirds;
var myPointDX = myPointZX + myOneThird * (myNewX1 - myPointZX);
var myPointDY = myPointZY + myOneThird * (myNewY1 - myPointZY);
var myPointEX = myPointZX + myOneThird * (myNewX2 - myPointZX);
var myPointEY = myPointZY + myOneThird * (myNewY2 - myPointZY);
var myPointFX = myPointDX + myTwoThirds * (myX1 - myTemp1X - myPointDX);
var myPointFY = myPointDY + myTwoThirds * (myY1 - myTemp1Y - myPointDY);
var myPointGX = myPointEX + myTwoThirds * (myX1 - myTemp2X - myPointEX);
var myPointGY = myPointEY + myTwoThirds * (myY1 - myTemp2Y - myPointEY);
var myPointHX = myPointZX + myTemp1X + myTemp2X;
var myPointHY = myPointZY + myTemp1Y + myTemp2Y;
myPoint = [[myNewX2, myNewY2],[myNewX2, myNewY2],[myNewX2, myNewY2]];
myPointArray.push(myPoint);
myPoint = [[myPointEX, myPointEY],[myPointEX, myPointEY],[myPointEX, myPointEY]];
myPointArray.push(myPoint);
myPoint = [[myPointGX, myPointGY],[myPointGX, myPointGY],[myPointGX, myPointGY]];
myPointArray.push(myPoint);
myPoint = [[myPointHX, myPointHY],[myPointHX, myPointHY],[myPointHX, myPointHY]];
myPointArray.push(myPoint);
myPoint = [[myPointFX, myPointFY],[myPointFX, myPointFY],[myPointFX, myPointFY]];
myPointArray.push(myPoint);
myPoint = [[myPointDX, myPointDY],[myPointDX, myPointDY],[myPointDX, myPointDY]];
myPointArray.push(myPoint);
myPoint = [[myNewX1, myNewY1],[myNewX1, myNewY1],[myNewX1, myNewY1]];
myPointArray.push(myPoint);
break;
}
}
}
myPath.entirePath = myPointArray;
}
}
function myAddPoints(myX1, myY1, myX2, myY2, myX3, myY3, myOffset){
var myXAdjust, myYAdjust, myNewX1, myNewY1, myNewX2, myNewY2, myHypotenuse;
myHypotenuse = Math.sqrt(Math.pow((myX1 - myX2),2) + Math.pow((myY1 - myY2),2));
if (myY1 != myY2) {
myXAdjust = ((myX1 - myX2) / myHypotenuse) * myOffset;
myYAdjust = ((myY1 - myY2) / myHypotenuse) * myOffset;
myNewX1 = myX1 - myXAdjust;
myNewY1 = myY1 - myYAdjust;
}
else {
myXAdjust = myOffset;
myYAdjust = 0;
if (myX1 < myX2) {
myNewX1 = myX1 + myXAdjust;
myNewY1 = myY1 + myYAdjust;
}
else{
myNewX1 = myX1 - myXAdjust;
myNewY1 = myY1 - myYAdjust;
}
}
myHypotenuse = Math.sqrt(Math.pow((myX1 - myX3),2) + Math.pow((myY1 - myY3),2));
if (myY1 != myY3) {
myXAdjust = ((myX1 - myX3) / myHypotenuse) * myOffset;
myYAdjust = ((myY1 - myY3) / myHypotenuse) * myOffset;
myNewX2 = myX1 - myXAdjust;
myNewY2 = myY1 - myYAdjust;
}
else{
myXAdjust = myOffset;
myYAdjust = 0;
if (myX1 < myX3) {
myNewX2 = myX1 + myXAdjust;
myNewY2 = myY1 + myYAdjust;
}
else{
myNewX2 = myX1 - myXAdjust;
myNewY2 = myY1 - myYAdjust;
}
}
return [myNewX1, myNewY1, myNewX2, myNewY2];
}
function myPointTest(myPathPointCounter, myPath, myPattern){
//Do not apply the corner effect to the first or last point in an open path
//(this is the way that InDesign's corner effects work).
if((myPath.pathType == PathType.openPath)&&((myPathPointCounter ==0)||(myPathPointCounter == myPath.pathPoints.length-1))){
return false;
}
else{
switch(myPattern){
case "all points":
return true;
case "first point":
if(myPathPointCounter == 0){
return true;
}
else{
return false;
}
case "last point":
if(myPathPointCounter == myPath.pathPoints.length-1){
return true;
}
else{
return false;
}
case "second point":
if(myPathPointCounter == 1){
return true;
}
else{
return false;
}
case "third point":
if(myPathPointCounter == 2){
return true;
}
else{
return false;
}
case "fourth point":
if(myPathPointCounter == 3){
return true;
}
else{
return false;
}
case "first two":
if((myPathPointCounter == 0)||(myPathPointCounter == 1)){
return true;
}
else{
return false;
}
case "second and third":
if((myPathPointCounter == 1)||(myPathPointCounter == 2)){
return true;
}
else{
return false;
}
case "last two":
if((myPathPointCounter == (myPath.pathPoints.length-2))||(myPathPointCounter == (myPath.pathPoints.length-1))){
return true;
}
else{
return false;
}
case "first and last":
if((myPathPointCounter == 0)||(myPathPointCounter == (myPath.pathPoints.length-1))){
return true;
}
else{
return false;
}

//Because myPathPointCounter starts at 0, the even points on the path
//actually fall on the odd numbers (when myPathPointCounter = 1, it's
//the second point on the path). Therefore, we use % (mod) 2 != 0 for
//even numbers.
case "even points":
if(myPathPointCounter % 2 != 0){
return true;
}
else{
return false;
}
case "odd points":
if(myPathPointCounter % 2 == 0){
return true;
}
else{
return false;
}
}
}
}




als Antwort auf: [#217583]

Eckeneffekte selbst definieren

Martin Fischer
  
Beiträge gesamt: 12783

15. Mär 2006, 11:34
Beitrag # 16 von 19
Beitrag ID: #217608
Bewertung:
(1619 mal gelesen)
URL zum Beitrag
Beitrag als Lesezeichen
Habe Dein Skript mit CS1 getestet und mit dem Originalcode verglichen:
1. bei mir werden die Maßeinheiten korrekt (in die alten Einheiten) zurückgesetzt;
2. außer daß die Einzugstruktur verlorengegangen ist (die keine Auswirkung auf die Ausführung hat), kann ich keinen Unterschied zum Originalskript feststellen.

Wann tritt der Fehler bei Dir auf?
o immer,
o wenn ich einen mm-Wert eingebe
o wenn ich einen pt-Wert eingebe
o wenn ich einen bestimmten Effekt wähle

Kommt eine Fehlermeldung?

Wie lautet die genaue Versionsnummer (nicht Seriennummer) Deines ID CS?


als Antwort auf: [#217600]

Eckeneffekte selbst definieren

sieber
Beiträge gesamt: 136

15. Mär 2006, 16:42
Beitrag # 17 von 19
Beitrag ID: #217747
Bewertung:
(1599 mal gelesen)
URL zum Beitrag
Beitrag als Lesezeichen
Hallo Martin,

ich habe mittlerweile einfach das Script neu runtergeladen und den Code überschrieben.

Jetzt funktioniert alles ohne Probleme... Verstehe ich nicht!
In jedem Fall vielen Dank für den Support!

VG

Jan


als Antwort auf: [#217608]

Eckeneffekte selbst definieren

le9
Beiträge gesamt: 97

17. Okt 2007, 14:11
Beitrag # 18 von 19
Beitrag ID: #317460
Bewertung:
(1417 mal gelesen)
URL zum Beitrag
Beitrag als Lesezeichen
Hallo zusammen,

mal ne Frage an die Script-Cracks.
Gibt es ne Möglichkeit das Script so zu ändern, dass ich im Dialogfenster die Auswahl der Ecken weiter verändern kann? Zum Beispiel muss ich oft 3 Ecken auf einmal ändern. Das geht mit dem Script nur in 2 getrennten Durchläufen. Und es wäre toll, wenn als Einheit immer mm voreingestellt ist, so dass ich nicht immer mm mit dem Eck-Radius-Wert eingeben muss.

Ich muss zum Beispiel oft die letzte Ecke und die ersten 2 Ecken "abrunden", oder die 2,3 und vierte. Kann einer das Script so modifizieren, da reichen meine Script-Kenntnisse leider nicht aus.

Einer ne Lösung?


als Antwort auf: [#217747]

Eckeneffekte selbst definieren

Peter Sauseng
Beiträge gesamt: 484

12. Feb 2010, 13:53
Beitrag # 19 von 19
Beitrag ID: #433490
Bewertung:
(1140 mal gelesen)
URL zum Beitrag
Beitrag als Lesezeichen
Ein paar Jahre später habe ich eine Anregung zu dem Thema...

Ich habe mich mit den "Corner effects" beschäftigt und festgestellt, dass die Maßeinheiten nicht zurückgesetzt werden, wenn man beim Dialogfeld nicht auf "OK", sondern auf "Abbrechen" klickt.

Gruß, Peter


als Antwort auf: [#217608]
X