Я нарисовал многоугольник с помощью инструмента «Перо». Теперь я хотел бы нарисовать маленькие круги (иллюстрирующие вершины) в контрольных точках многоугольника.
По запросу скрипт для этого на выбранных путях. Это альтернатива ответу @CConroy, которая может упростить задачу в долгосрочной перспективе. Он рисует символы в точках и касательных и соединяет касательные линиями. Вы можете использовать палитру символов, чтобы изменить их внешний вид после факта. Может кому пригодится.
Поместите следующее в файл .jsx и запустите его с выбранными путями:
#target illustrator
main();
function main(){
var sym = createSymbolsIfNeeded(activeDocument);
handlePaths(activeDocument.selection,
sym.anchor, sym.tangent);
// pass undefined for sym tangent if you dont want
// tangent handles.
}
function handlePaths(sel, symAcnhor, symDir) {
for(var i = 0; i < sel.length; i++){
if(sel[i].typename == "PathItem"){
symbolsOnPoints(sel[i], symAcnhor, symDir);
}
// you would possibly need to recurse
// the groups and compound paths in some
// cases.
}
}
function symbolsOnPoints(path, symAcnhor, symDir) {
var pts = path.pathPoints;
for(var i = 0; i < pts.length; i++){
var pos = pts[i].anchor
if(!(symDir === undefined)) {
var pos2 = pts[i].rightDirection;
if (dist(pos, pos2) > 0.1){
drawLine(pos, pos2);
centeredSymbol(pos2, symDir);
}
pos2 = pts[i].leftDirection;
if (dist(pos, pos2) > 0.1){
drawLine(pos, pos2);
centeredSymbol(pos2, symDir);
}
}
centeredSymbol(pos, symAcnhor);
}
}
function centeredSymbol(pos, symbol) {
var p = pos.slice(0);
sym = activeDocument.symbolItems.add(symbol);
p[0] -= sym.width/2.0;
p[1] += sym.height/2.0;
sym.position = p;
return sym;
}
function drawLine(p1, p2) {
var line = activeDocument.pathItems.add();
line.setEntirePath([p1,p2]);
return line;
}
function dist(a, b){
return Math.sqrt(Math.pow(b[0]-a[0], 2) +
Math.pow(b[1]-a[1], 2));
}
function createSymbolsIfNeeded(doc){
var symAnchor;
try {
symAnchor = doc.symbols.getByName("Anchor");
}
catch(err) {
var circle = doc.pathItems.ellipse(5,5,5,5);
symAnchor = doc.symbols.add(circle);
symAnchor.name = "Anchor";
circle.remove();
}
var symTangent;
try {
symTangent = doc.symbols.getByName("Tangent");
}
catch(err) {
var rect = doc.pathItems.rectangle(5,5,5,5);
var symTangent = doc.symbols.add(rect);
symTangent.name = "Tangent";
rect.remove();
}
return {anchor : symAnchor, tangent: symTangent};
}
Изображение 1: Пример результата. Вы можете легко изменить различные символы маркера, выиграв палитру символов.
PS: Скрипт не очень безопасный и стабильный, потому что это один из моих собственных скриптов для быстрой документации, так что будьте осторожны.
PPS: я отправил этот код в битбакет
Начните с рисования линии и окружности, а затем придайте каждому из них стиль, как бы вы хотели, чтобы стороны и вершины многоугольника выглядели.
Перетащите линию на панель «Кисти» и выберите «Узорчатая кисть». В диалоговом окне «Параметры узорчатой кисти» установите для первой плитки (внешний угол) значение «Нет» и нажмите «ОК».
Затем, удерживая клавишу Option, перетащите круг на панель кистей в первый слот плитки . Вы вернетесь в диалоговое окно «Параметры узорчатой кисти», но теперь ваши круги будут вместо всех вершин (в основном углов). Повторите перетаскивание опций для 3 оставшихся фрагментов кисти.
вот еще один способ рисовать круги или квадраты в каждой опорной точке (хотя без указателей направления)
Используйте Плагин подписки , который является бесплатным плагином иллюстратора, созданным именно для этой цели (среди прочего).
В ссылке, которую я добавляю, вы найдете учебные пособия для всего, что делает плагин, но специально для ваших нужд вы будете использовать этот инструмент:
джуджа
Зохар Леви
Бентех