サイズ変更時にめんどくさいので、変更してからもう一度やればいいように変更。
■の外側に追加する方は大きさが変わるんで放置。位置決めが変わらない内側で何とかするタイプだけ。
tell application "Adobe InDesign CS5"
tell document 1
try
set ss to object reference of selection
on error
display dialog "選択されていません" buttons {"キャンセル"} default button 1
end try
set {button returned:btres} to display dialog "上下or左右" buttons {"上下", "左右", "キャンセル"} default button 3
repeat with s in ss
convert shape s given convert to rectangle
set r to rotation angle of s
tell application "Adobe InDesign CS5"
set myRotateMatrix_org to make transformation matrix with properties {counterclockwise rotation angle:r}
set myRotateMatrix_flat to make transformation matrix with properties {counterclockwise rotation angle:-r}
end tell
transform s in pasteboard coordinates from center anchor with matrix myRotateMatrix_flat
set {y, x, yy, xx} to geometric bounds of s
set {pr1, pr2, ps} to {{y, x, yy, x + yy - y}, {y, xx - (yy - y), yy, xx}, {y, x + ((yy - y) / 2), yy, xx - ((yy - y) / 2)}}
if btres = "上下" then set {pr1, pr2, ps} to {{y, x, y + xx - x, xx}, {yy - (xx - x), x, yy, xx}, {y + ((xx - x) / 2), x, yy - ((xx - x) / 2), xx}}
set r1 to duplicate s
convert shape r1 given convert to oval
set geometric bounds of r1 to pr1
set r2 to duplicate s
convert shape r2 given convert to oval
set geometric bounds of r2 to pr2
set geometric bounds of s to ps
set ns to add path s with {r1, r2}
transform ns in pasteboard coordinates from center anchor with matrix myRotateMatrix_org
end repeat
end tell
end tell
indesign 角丸修正 はコメントを受け付けていません
今あるものの外側に角丸をくっつけるタイプ。
tell application "Adobe InDesign CS5"
tell document 1
try
set ss to object reference of selection
on error
display dialog "選択されていません" buttons {"キャンセル"} default button 1
end try
set {button returned:btres} to display dialog "上下or左右" buttons {"上下", "左右", "キャンセル"} default button 3
repeat with s in ss
set {y, x, yy, xx} to geometric bounds of s
set {pr1, pr2, ps} to {{y, x - ((yy - y) / 2), yy, x - ((yy - y) / 2) + (yy - y)}, {y, xx - ((yy - y) / 2), yy, xx - ((yy - y) / 2) + (yy - y)}, {y, x, yy, xx}}
if btres = "上下" then set {pr1, pr2, ps} to {{y - ((xx - x) / 2), x, y - ((xx - x) / 2) + (xx - x), xx}, {yy - ((xx - x) / 2), x, yy - ((xx - x) / 2) + (xx - x), xx}, {y, x, yy, xx}}
set r1 to duplicate s
convert shape r1 given convert to oval
set geometric bounds of r1 to pr1
set r2 to duplicate s
convert shape r2 given convert to oval
set geometric bounds of r2 to pr2
add path s with {r1, r2}
end repeat
end tell
end tell
indesignで先端がまんまるの角丸 外側用 はコメントを受け付けていません
indesignの角丸が真ん丸にできないのは有名ですが、パスファインダを使ってきれいな角丸にする有名な手段はしちめんどくさいので作りました。
画像の上がindesignの角オプションでやったもの。下が↓でやったものです。
構文のカラーリングがjs用なのは気にしない方向で
tell application "Adobe InDesign CS5"
tell document 1
try
set ss to object reference of selection
on error
display dialog "選択されていません" buttons {"キャンセル"} default button 1
end try
set {button returned:btres} to display dialog "上下or左右" buttons {"上下", "左右", "キャンセル"} default button 3
repeat with s in ss
set {y, x, yy, xx} to geometric bounds of s
set {pr1, pr2, ps} to {{y, x, yy, x + yy - y}, {y, xx - (yy - y), yy, xx}, {y, x + ((yy - y) / 2), yy, xx - ((yy - y) / 2)}}
if btres = "上下" then set {pr1, pr2, ps} to {{y, x, y + xx - x, xx}, {yy - (xx - x), x, yy, xx}, {y + ((xx - x) / 2), x, yy - ((xx - x) / 2), xx}}
set r1 to duplicate s
convert shape r1 given convert to oval
set geometric bounds of r1 to pr1
set r2 to duplicate s
convert shape r2 given convert to oval
set geometric bounds of r2 to pr2
set geometric bounds of s to ps
add path s with {r1, r2}
end repeat
end tell
end tell
角丸の直径が左右幅を超えると、変なことになります。
角丸が間尺に合ってる範囲内では、最初のアイテムと同じ外形寸法になります。
普通の方法でサイズ変更をすると角丸の半径が変わりますので、一旦、長方形シェイプに戻してからサイズ変更をして、再度角丸にしてください。
applescriptでごめんなさい……。
indesignで先端がまんまるの角丸 はコメントを受け付けていません
JS版。なんとなく動く。
JSはあんまし得意じゃないので、カコイイか悪いかもわかりませんが、AS版と同じことを書いたのでだいたい同じように動きます。
JSはテンプレートがあるので、色付けは割と普通w
sel = activeDocument.selection;
for(i in sel) {
if(sel[i].typename == "GroupItem") {
p = sel[i].pathItems;
d = sel[i].placedItems;
if(p.length == 1 && d.length == 1) {
pp = p[0];
dd = d[0];
ppw = pp.width;
pph = pp.height;
ppp = pp.position;
ddw = dd.width;
ddh = dd.height;
dd.width = ppw;
dd.height = ddh * ppw / ddw;
if(pph > (ddh * ppw / ddw)) {
dd.width = ddw * pph / ddh;
dd.height = pph;
}
xdif = (ppw - dd.width) / 2;
ydif = (pph - dd.height) / 2;
if(xdif < 0 ) {xdif = -xdif;}
if(ydif < 0 ) {ydif = -ydif;}
dd.position = [ppp[0] - xdif,ppp[1] + ydif];
}
}
}
illustratorでindesignの一番左のボタンみたいなの。のJS版
JS版。 はコメントを受け付けていません
illustratorにいっぱい画像を貼る作業があったので、こんなもん人間のやる作業じゃないだろw とか思って、indesignのフレームに均等に流し込むボタンみたいなプラグインは無いものか? と探してみましたが、見つからなかったので似たようなものをつくりました。
SyntaxHighliterPlusにApplescript用のテンプレートがないので色付けがおかしいですが、そのためにJSで書くのもなんなので(まぁ、ASのような早さでは書けないわけですがw)、JS用の色付けですみません。
□でも○でも☆でもなんでも、フレームに均等に流し込んでセンタリングします。
配置ファイルとクリッピングパスが一対一のものだけ対象。
tell application "Adobe Illustrator"
tell document 1
set grilst to group items whose selected = true
repeat with ll in grilst
if (count placed items of ll) = 1 then
set {pir, plir} to {a reference to path item 1 of ll, a reference to placed item 1 of ll}
set {w, h, {x, y}} to {width of pir, height of pir, position of pir}
set {w2, h2} to {width of plir, height of plir}
set {width of plir, height of plir} to {w, h2 * w / w2}
if h > h2 * w / w2 then
set {width of plir, height of plir} to {w2 * h / h2, h}
end if
set {xdif, ydif} to {(w - (width of plir)) / 2, (h - (height of plir)) / 2}
if xdif < 0 then set xdif to -xdif
if ydif < 0 then set ydif to -ydif
set position of plir to {x - xdif, y + ydif}
end if
end repeat
end tell
end tell
illustratorでindesignの一番左のボタンみたいなの。 はコメントを受け付けていません