- Сообщения
- 33 703
- Реакции
- 11 004
То, что не должен правильный пацанский Offset path отрезать острые углы, не по понятиям этоFog_patcher post: 885219 сказал(а):Что конкретно?
То, что не должен правильный пацанский Offset path отрезать острые углы, не по понятиям этоFog_patcher post: 885219 сказал(а):Что конкретно?
мне не уточнили всех тонкостей, просто попросили сделать острые углы круглыми. Там фреза или нож, я не знаю точно, режут тонкий пластик. На острых углах получался брак.Действительно интересный плагин.
И действительно решает поставленную задачу.
Только вот правильно ли поставлена задача -- не знаю. В своё время (путём некоторых нехитрых манипуляций) ухитрялись резать 12 пунктовый текст на отнюдь не новом плоттере. И проблему острых углов решали НЕ скруглением (на самом деле острый угол вырезать проще, чем скруглённый).
Теперь понятно. А я про плёнку (тоже плоттер, тоже резка). Но немного другие ограничения и способы их обхода.режут тонкий пластик
if ( app.documents.length > 0 ) {
if ((!app.selection.length) || (app.selection[0].typename!="PathItem"))
{
alert("No path selected!");
} else
{
var pi=app.selection[0];
for (var i=0;i<pi.pathPoints.length;i++)
{
pi.pathPoints[i].selected=PathPointSelection.NOSELECTION;;
}
for (var i=0;i<pi.pathPoints.length;i++)
{
var pp=pi.pathPoints[i];
var xa=pp.anchor[0];
var ya=pp.anchor[1];
var xb=pp.leftDirection[0];
var yb=pp.leftDirection[1];
if ((xa==xb) && (ya==yb))
{
if (i>0)
{
xb=pi.pathPoints[i-1].anchor[0];
yb=pi.pathPoints[i-1].anchor[1];
} else
{
xb=pi.pathPoints[pi.pathPoints.length-1].anchor[0];
yb=pi.pathPoints[pi.pathPoints.length-1].anchor[1];
}
}
var xc=pp.rightDirection[0];
var yc=pp.rightDirection[1];
if ((xa==xc) && (ya==yc))
{
if (i<pi.pathPoints.length-1)
{
xc=pi.pathPoints[i+1].anchor[0];
yc=pi.pathPoints[i+1].anchor[1];
} else
{
xc=pi.pathPoints[0].anchor[0];
yc=pi.pathPoints[0].anchor[1];
}
}
var cosalpha=Math.abs(((xb-xa)*(xc-xa)+(yb-ya)*(yc-ya))/
(Math.sqrt(((xb-xa)*(xb-xa)+(yb-ya)*(yb-ya))*((xc-xa)*(xc-xa)+(yc-ya)*(yc-ya)))));
// alert(cosalpha);
if (cosalpha>0.93969262) // cos (20 grad)
{
pp.selected=PathPointSelection.ANCHORPOINT;
} else
{
// pp.selected=PathPointSelection.NOSELECTION;
}
}
}
} else alert("No document!");