scriptでの動作

[2654]scriptでの動作 | 投稿者:インデン | 投稿日:2009/03/25(Wed) 11:24:39
始めて投稿させていただきます。

環境はindesignCS3 Mac OS10.5.5です。

今回作業において
全ページに1点ずつ画像が配置してあるのですが、
その全ページの画像フレームを
原点センターから上下に1mm
原点ノド元から0.5mmプラスし

画像フレームの原点を小口から10mm、から15mmに設定をしなければなりません。

私自身、参考に自動処理実例集や、せうぞー様など多数の方のscriptなどを拝見し、学んでいるのですが簡単にはいきませんでした。

参考までになにか方法やこのサイトいいよとかあれば、ご伝授していただきたいのです。

私がScriptを作成するにあたり、行き詰まった箇所は

・全ページ対しての処理
・偶数ページと奇数ページでの座標違いの処理
・画像フレームサイズを変更するための記述

です。
小さな事で構いません。
なにかこれから先こうなった時、自分自身で解決できるようになりたいので。

ご指導お願いします。
» 1
[2656]Re: scriptでの動作 | 投稿者:naja | 投稿日:2009/03/25(Wed) 12:09:29
スクリプトの言語は何ですか?
インデンさんが書いたものがあれば、まずそれを先に書いてください。
それとも全てを誰かに書いてほしいと?
» 2
[2657]Re: scriptでの動作 | 投稿者:インデン | 投稿日:2009/03/25(Wed) 12:25:44
<naja様

何か肝に触るような事がありましたら、先に謝ります。
すみませんでした。

全てを誰かに書いてほしいとは言っていません。
なにか部分だけでも解説なりをいただきたいのです。

自分自身実際なにもプログラム関係は分からないので
参考になることだけでもと思い投稿しました。

scriptはjavascriptです。

お恥ずかしいですが、投稿記事にあるますように
結局、要点の箇所が分かっていませんので、このような形になっています。


(function (){
   var docObj = app.activeDocument;
   var pageObj = app.activeDocument.pages;
   var imgObj = app.activeDocument.rectangles[0];
       imgObj.move(["10mm","15mm"]);
   for (i = 0 ; i < docObj.pages.length ; i++) ;
})();
» 3
[2659]Re: scriptでの動作 | 投稿者:naja | 投稿日:2009/03/25(Wed) 12:35:01
>何か肝に触るような事がありましたら、先に謝ります。

いえいえ、怒っているわけではありません。
せうぞーさんも書いておられるように、コードに関する質問はコードを示すべきだと思うのです。

いまちょっと忙しいので、夕方?夜に改めてお返事させていただきます。
その間にどなたかが返答されるかもしれません。
» 4
[2660]Re: scriptでの動作 | 投稿者:インデン | 投稿日:2009/03/25(Wed) 12:48:49
naja様
お忙しい中、返信ありがとうございます。
お願いいたします。
» 5
[2661]Re: scriptでの動作 | 投稿者:. | 投稿日:2009/03/25(Wed) 13:17:01
んなとこでいかが?

var docObj = app.activeDocument;

for (i = 0 ; i < docObj.pages.length ; i++) {
   docObj.pages[i].rectangles[0].move("by",["10mm","15mm"]);
   }
» 6
[2662]Re: scriptでの動作 | 投稿者:. | 投稿日:2009/03/25(Wed) 13:20:04
えっと、移動が1mmの0.5mmだから、
docObj.pages[i].rectangles[0].move("by",["0.5mm","1mm"]);
ですね。失礼。
» 7
[2665]Re: scriptでの動作 | 投稿者:naja | 投稿日:2009/03/25(Wed) 18:01:42
>・全ページ対しての処理

これは.さんが既に示していらっしゃいます。

for (i = 0 ; i < docObj.pages.length ; i++) {
//ページオブジェクトdocObj.pages[i]にたいしてやりたいこと
}

になります。
しかし、これがいつも正解とは限りません。
いつも「全ページに1点ずつ画像が配置してある」とは限らないからです。
画像がまったくなかったり、たくさんあったりしたら、またつまずいてしまうかもしれません。
ドキュメントに含まれる画像すべてを対象にすれば、今回も場合も大丈夫でしょう。

var docObj = app.activeDocument;
var imgObj = docObj.allGraphics;
for (var i = 0; i < imgObj.length; i++) {
   var graphicFrame = imgObj[i].parent;
   //graphicFrameにたいしてやりたいこと
}

>・偶数ページと奇数ページでの座標違いの処理

環境設定の「単位と増減値」の「定規の単位」の「開始位置」をページにすれば、この違いを気にしなくてすみます。
もちろん、スクリプトでも変更できます。

var docObj = app.activeDocument;
docObj.viewPreferences.rulerOrigin = RulerOrigin.PAGE_ORIGIN;

通常、こうした変更をスクリプトで行う場合は、現在の設定を記憶させておいて、処理前に設定を変更し、処理後に(またはエラー時に)元の設定へ戻す必要があります。

>・画像フレームサイズを変更するための記述
.さんが示された方法は、相対位置を変更する方法です。もちろんルーラーの座標どおりに移動させることもできます。やり方はすでにインデンさんが示されたとおりです。
フレームサイズそのものを変更したいときは、2種類のプロパティを使い分けます。
graphicFrame.visibleBounds;//線幅を含んだ座標
graphicFrame.geometricBounds;//線幅を含まない座標
座標はともに[y1, x1, y2, x2]の配列です。


あとはこの組み合わせです。
頑張ってください。
» 8
[2667]Re: scriptでの動作 | 投稿者:インデン | 投稿日:2009/03/25(Wed) 18:15:50
.様、naja様ありがとうございます。

投稿してからもいろいろと自分なりに作成してみました。

おっしゃるように座標違いなどが発生しました。

作成している時に気になった箇所がありましたので質問させてください。

お~まちさんが提供されている
Scriptのオブジェクトモデルがありますが、これを元にどのように作成すれば良いのでしょうか?

extendscript内にある、ヘルプからモデル図を見てもどうしても使い方が分からないのです。

何度も質問してすみません。
この記事の書き込み元へのリンク (コメントや質問などはこちらへどうぞ)

このページをシェア