毎日モザイク

White Room Layout Works

Archive for the ‘無芸DTPツール’ Category

2012-06-22T13:34:54+09:00 [Fri]

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
			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
2012-06-19T17:59:06+09:00 [Tue]

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
2012-06-19T17:22:27+09:00 [Tue]

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でごめんなさい……。

2012-02-09T20:31:38+09:00 [Thu]

JS版。

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版

2012-02-08T03:18:53+09:00 [Wed]

illustratorでindesignの一番左のボタンみたいなの。

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