dropdowns.add({stringList:myStringList, selectedlndex:0});
}
)
}
)
)
}
II Конец диалога
var myRetum = myDialog. show (); if (myRetum == true) {
II Получение значений из диалога
var myComerType = myCornerEffectButtons.selectedButton; var myOffset = myOffsetEditbox.editValue;
var myPattern = myStringList [myPattemDropdown.selectedlndex]; myDialog.destroy();
for(i = 0; i<myObjectList.length; i++) {
myChangeCorners (myObjectList [i], myCornerType', myOffset, myPattern);
}
// Возврат к предыдущим настройкам единиц измерения app.activeDocument.viewPreferences.horizontalMeasurementUnits = myOldXUnits;
app.activeDocument.viewPreferences,verticalMeasurementUnits = myOldYUnits;
}
else{
myDialog,destroy();
}
}
function myChangeCorners(myObject, myCornerType, myOffset, myPattern){ II Функция создает список всех координат опорных точек,
II а также координат касательных к ним (в случае наличия кривых II сегментов) и записывает их в массив. После того как необходимые II координаты вычислены, можно сразу же создать кривые нужной формы II используя свойство entirePath. Это гораздо производительнее, //'чем создавать кривую точка за точкой.
var myPathPoint, myPoint, myPointA, myPointB, myPointC, myAnchor, myX, myY, myXl, myYl, myX2, myY2, myX3, myY3; var myNewXl, myNewYl, myNewX2, myNewY2, myXOffset, myYOffset, myPoint, myPathPoint;
for(var myPathCounter = 0; myPathCounter < myObject.paths.length; myPathCounter ++){ var myPath = myObject.paths[myPathCounter];
// Массив, в который будут заноситься все координаты точек // и их направляющих myPointArray = new Array;
for (var myPathPointCounter = 0; myPathPointCounter < myPathi,pathPoints.length; myPathPointCounter ++) {
// Считывание параметров каждой точки.
// Определяем, должна ли точка подвергаться преобразованиям, if(myPointTest(myPathPointCounter, myPath, myPattern) == false)! // Если точка не принадлежит ни одной из списка myPattern,
// сохраняем положение опорной точки и координаты // обеих касательных
with(myPath.pathPoints[myPathPointCounter]){ myXl = leftDirection[0]; myYl = leftDirection[l]; myX2 = anchor[0]; myY2 = anchor[1]; myX3 = rightDirection[0]; myY3 = rightDirection[l];
}
// Запись параметров текущей точки без изменений myPoint = [[myXl, myYl], [myX2, myY2], [myX3, myY3]];
II Запоминание параметров в массиве с координатами всех точек myPointArray.push(myPoint);
}
else {
II Если точка будет подвергаться трансформациям.
II Основные преобразования (см. рис. 10.1).
II Текущая точка - точка А
myPointA = myPath.pathPoints[myPathPointCounter]; myAnchor = myPointA.anchor; myXl = myAnchor[0]; myYl = myAnchor[1];
II Для корректных преобразований нужно рассматривать II взаимное расположение каждой точки с ее двумя ближайшими II соседями. myPointB - следующая точка на прямой.
II Учитываем особенности работы InDesign с путями.
II Если myPathPoint - последняя точка .прямой, то,
II соответственно, myPointB - начальная точка, if (myPathPointCounter = (myPath.pathPoints.length - 1)){ myPointB = myPath.pathPoints[0];
}
else {
myPointB = myPath.pathPoints[myPathPointCounter + 1];