[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:
(15095 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: 9428

9. Sep 2005, 13:16
Beitrag # 2 von 19
Beitrag ID: #186581
Bewertung:
(15086 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....

Gruß
Dirk

[LMCP - LEVY MEDIA MULTICHANNEL PUBLISHING]
http://www.levy-media.de


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:
(15076 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:
(15070 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;
}
}
}
}
Herzlich
Haeme Ulrich
-

Die besten Tricks in der Inbox:
http://www.ulrich-media.ch/...wsletter-abonnieren/

u l r i c h - m e d i a


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:
(15068 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: 4865

9. Sep 2005, 14:42
Beitrag # 6 von 19
Beitrag ID: #186609
Bewertung:
(15065 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

Grüßle
Christoph Steffens

http://www.eventbrite.de/o/idug-stuttgart-8157231696


als Antwort auf: [#186607]

Eckeneffekte selbst definieren

mpeter
Beiträge gesamt: 4623

9. Sep 2005, 16:55
Beitrag # 7 von 19
Beitrag ID: #186637
Bewertung:
(15050 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?
Gruß
Magnus

OSX 10.12.6, Adobe CS6/CC


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:
(14803 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:
(14760 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".

Oskar


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:
(14754 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: 12626

15. Mär 2006, 09:45
Beitrag # 11 von 19
Beitrag ID: #217569
Bewertung:
(14742 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;


Viele Grüße
Martin




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:
(14737 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: 3489

15. Mär 2006, 10:01
Beitrag # 13 von 19
Beitrag ID: #217579
Bewertung:
(14736 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: 12626

15. Mär 2006, 10:18
Beitrag # 14 von 19
Beitrag ID: #217583
Bewertung:
(14733 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.

Viele Grüße
Martin




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:
(14719 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]
X

Veranstaltungskalender

Hier können Sie Ihre Anlässe eintragen, welche einen Zusammenhang mit den Angeboten von HilfDirSelbst.ch wie z.B. Adobe InDesign, Photoshop, Illustrator, PDF, Pitstop, Affinity, Marketing, SEO, Büro- und Rechtsthemen etc. haben. Die Einträge werden moderiert freigeschaltet. Dies wird werktags üblicherweise innert 24 Stunden erfolgen.

pdf-icon Hier eine kleine Anleitung hinsichtlich Bedeutung der auszufüllenden Formularfelder.

Veranstaltungen
08.11.2022

Frankfurt, Fraport Conference Center
Dienstag, 08. Nov. 2022, 13.30 - 18.00 Uhr

Seminar

Auf der Enfocus World Tour stellen wir Ihnen gemeinsam mit Enfocus die aktuellen Highlights von Enfocus Switch und dem Impressed Workflow Server (IWS) vor. Wir präsentieren Ihnen anhand typischer Aufgabenstellungen in einem modernen Produktionsbetrieb die Möglichkeiten, die Enfocus Switch für die Automatisierung und Standardisierung von Abläufen bietet. Wir haben sowohl für Produktionsverantwortliche als auch technisch Interessierte ein spannendes Programm vorbereitet, bei dem Sie sicherlich viel Neues erfahren werden, welches Sie in Ihrem eigenen Betrieb umsetzen können. Die Veranstaltung bietet darüber hinaus eine hervorragende Möglichkeit, sich mit anderen Anwendern und Workflow-Spezialisten auszutauschen und Antworten auf konkrete Aufgabenstellungen zu erhalten, welche Sie mit Hilfe von Enfocus Switch/IWS umsetzen möchten.

Wir sind jeweils an 2 Tagen in Frankfurt, Hamburg und München vor Ort. Der erste (halbe) Tag richtet sich in erster Linie an Betriebsleiter und Produktionsverantwortliche in Druckereien - ist also weniger technisch orientiert - sondern gibt einen Überblick zu den heutigen Möglichkeiten einer automatisierten Produktion.

Der zweite Tag (Switch Anwender-Treffen) richtet sich an bestehende Switch-Anwender und Administratoren.

Anmeldung und weitere Infos: https://www.impressed.de/schulung.php?c=sDetail&sid=310

Ja

Organisator: Enfocus/Impressed

Kontaktinformation: Silvia Noack, E-Mailsnoack AT impressed DOT de

https://www.impressed.de/schulung.php?c=sDetail&sid=310

Enfocus World Tour 2022
Veranstaltungen
08.11.2022

Frankfurt, Fraport Conference Center
Dienstag, 08. Nov. 2022, 13.30 - 18.00 Uhr

Seminar

Auf der Enfocus World Tour stellen wir Ihnen gemeinsam mit Enfocus die aktuellen Highlights von Enfocus Switch und dem Impressed Workflow Server (IWS) vor. Wir präsentieren Ihnen anhand typischer Aufgabenstellungen in einem modernen Produktionsbetrieb die Möglichkeiten, die Enfocus Switch für die Automatisierung und Standardisierung von Abläufen bietet. Wir haben sowohl für Produktionsverantwortliche als auch technisch Interessierte ein spannendes Programm vorbereitet, bei dem Sie sicherlich viel Neues erfahren werden, welches Sie in Ihrem eigenen Betrieb umsetzen können. Die Veranstaltung bietet darüber hinaus eine hervorragende Möglichkeit, sich mit anderen Anwendern und Workflow-Spezialisten auszutauschen und Antworten auf konkrete Aufgabenstellungen zu erhalten, welche Sie mit Hilfe von Enfocus Switch/IWS umsetzen möchten.

Wir sind jeweils an 2 Tagen in Frankfurt, Hamburg und München vor Ort. Der erste (halbe) Tag richtet sich in erster Linie an Betriebsleiter und Produktionsverantwortliche in Druckereien - ist also weniger technisch orientiert - sondern gibt einen Überblick zu den heutigen Möglichkeiten einer automatisierten Produktion.

Der zweite Tag (Switch Anwender-Treffen) richtet sich an bestehende Switch-Anwender und Administratoren.

Anmeldung und weitere Infos: https://www.impressed.de/schulung.php?c=sDetail&sid=310

Ja

Organisator: Enfocus/Impressed

Kontaktinformation: Silvia Noack, E-Mailsnoack AT impressed DOT de

https://www.impressed.de/schulung.php?c=sDetail&sid=310

Enfocus World Tour 2022