• ベストアンサー

イラストレーターのマクロ?とか

こんにちわ、ちょっと悩んでいるので質問させて下さい。 イラストレーターで同じ作業を何十万回もしないといけないのですが何か良い策はないでしょうか? ただ同じ作業を繰り返すなら大群をコピペすればいいのですが 今回はちょっと事情が違います。 ●●●●・・・・・と延々に続く ↑ 円形0.5mm程度 続くピッチが加算されるのです。 ● ● ● ● ● 1mm 1.5mm 2mm 2.5mmと・・・ 加算される数値は固定です。 上手くできないので、一旦画像にして拡大とかしようと思ったのですが ●自体の大きさも変化してしまったのでNGとなりました。 どうか、お助けください。

質問者が選んだベストアンサー

  • ベストアンサー
  • proust
  • ベストアンサー率57% (62/108)
回答No.1

%!PS-Adobe-1.0 EPSF-1.0 %%BoundingBox:0 0 841 595 /mm { 2.83464567 mul } def /r 0.5 mm def /pitch 1 mm def /delta .5 mm def /x0 1 mm def /y 200 mm def 0 setgray /x x0 def 100 { x y r 0 360 arc closepath fill /x x r 2 mul pitch add add def /pitch pitch delta add def } repeat showpage 以上をTextEdit(Mac)またはメモ帳(win)でテキスト形式で「circle.ps」 というファイル名で保存したのち、イラレで開いてみてください。 (Illustrator CS(win)で確認) サイズなどは適当に数値をいじってください。

irukacyan
質問者

お礼

ありがとうございます。 いったいコレは何をしているのかチンプンカンプンですが こういう方法もあるんですね。 いったいドコで勉強すればいいんでしょう。 (恐らく生半可な姿勢では勉強できないハイクラスな域だと思いますが) しかし驚きました。 絵画パスをテキストで書くことができるんですね。 うーん、この手法をマスターすれば 自分のしたい事ができそうな気がします。

その他の回答 (4)

  • grazie
  • ベストアンサー率56% (200/355)
回答No.5

それでも、ダメなら、app.を外してください。 var objs = activeDocument.selection; それでもダメなら、 var objs = documents[0].selection;

irukacyan
質問者

お礼

できました!! var objs = activeDocument.selection;        も var objs = documents[0].selection;        も、両方動きました。 本当に有難うございます!! 助かりました。 スプリクト勉強したいと思います。

  • grazie
  • ベストアンサー率56% (200/355)
回答No.4

>var objs = app.activeDocument.sekecthion; 最後のところが間違ってます。 selection(セレクション)に直して実行してみてください。 この部分が選択されているオブジェクトを、objsに配列として代入している部分です。

参考URL:
http://www.openspc2.org/book/IllustratorCS/
  • grazie
  • ベストアンサー率56% (200/355)
回答No.3

No.1の方はポストスクリプトを直接書くという、かなり高度なことをやってるんですね。 でも、普通の人にはちょっと難しすぎるので、JavaScriptでやる方法を紹介します。 いわゆる、“スクリプト”です。 以下をテキストエディタにコピペして、適当な名前で保存します。 拡張子は .js にします。 Illustrator上で、元にするオブジェクトを選んでおいてから、 先ほどのスクリプトをスクリプトメニューから参照して実行してください。 複数選択もできます。MacでもWinでも動きます。 興味があれば勉強してみてください。 AIJavaScriptReference.pdfっていうのがインストールディスクに入っていたと思います。 var objs = app.activeDocument.selection; var mm=2.8346456;//Illustratorの内部計算はポイントで行われる。mmに変換するための数値 var increase_x_dval=0.5*mm;//増分するX距離 var increase_y_dval=0*mm; var num=10;//コピーする数 for(var i=0; i<objs.length; i++){ var obj=objs[i]; var x_dval = 1*mm;//最初の距離 var y_dval = 0*mm; for(var j=0; j<num; j++){ obj.duplicate(); obj.translate(x_dval,y_dval,undefined,undefined,undefined,undefined); x_dval=x_dval+increase_x_dval; y_dval=y_dval+increase_y_dval; } x_dval=0; y_dval=0; }

irukacyan
質問者

お礼

本当にありがとうございます。 スプリクト勉強します。 現段階でも教えてくださった式を利用すれば なんとかできそうです。 けど、何故かエラーが出て動きませんでした。 (手順が悪いのかもです) でてきたエラーは 「app is undefined Line:1 -> var objs = app.activeDocument.sekecthion;」です。 言葉から察するにオブシェクトがアクティブになっていない?? (勝手な推理ですが^^) 何度も絵画したオブジェクトを選択ツールで選択した後 スプリクトの実行をしているんですけどダメでした。 お忙しい中、申し訳ないですが もういちど伝授願えないでしょうか。

  • himajin1
  • ベストアンサー率43% (184/422)
回答No.2

ANo.1 さんの、方法、凄いですね。 結果を見て、びっくりです。 でも、自分で、応用編を作るのは、難しそう。 もう少し、素人な、私なら、こうやります。 エクセルで、プロットするべき、x,y座標を計算させて、座標の組み合わせの系列を作る。 今回の場合だと、Y座標のセル列を0に固定して作る。 X方向のピッチを計算するセル列を作り、 一行上の、Xにピッチを加算させた、X座標のセル列を作る。 X座標と、Y座標のセル列を、散布図形式のグラフに表示する。 線無し、マーカー丸形、前景色無しで表示したグラフを、 PSプリンターのドライバーで、psファイルに書き出す。 それを Illustrator で開き、余分なパーツを消す。 円の間隔を、所定の距離になるように、全体を拡大・縮小する グループ解除し、 オブジェクト、変形、個別に変形で円のサイズを、変更する。 実際には、エクセルのグラフの精度が低くて、微妙な位置はずれていますが、 自分で、自由に組める自由度は、高いのでは? 便乗質問です。proust さん、何を勉強すれば、こういうプログラムを組めるようになるのですか? とっかかりの、キーワードを教えてください。

irukacyan
質問者

お礼

なるほど、こういう方法もあるんですね。 しかし、残念な事に精度は必要なのです。 でも、すごく勉強になりました。 まさかエクセルと共同してできるなんて。 頭は柔軟にしておかないといけないと思いました。 有難うございます。

関連するQ&A