- ベストアンサー
Illustratorスクリプト 新規文書上での処理についての質問
- Adobe Illustratorのスクリプティング処理で新規ドキュメント上での処理について質問があります。
- 特に、アクティブドキュメントのループ処理中に作成した新規ドキュメント上にコピーした要素のプロパティにアクセスできない問題が発生しています。
- 解決策または代替案があれば教えていただきたいです。
- みんなの回答 (2)
- 専門家の回答
質問者が選んだベストアンサー
shut0325です。 簡単なコードを書いてテストしてみましたが、可能でした。 下記のコードでは、最初のアクティブドキュメント(BaseDoc)内の選択されたオブジェクトを新規ドキュメント(MyDoc)に複製し、100(ポイント)ピッチで、配置(移動)しています。 ちょっと引っかかった点としては BaseDoc.activate(); この部分で、最初のアクティブドキュメントをアクティブにしないと、新規書類に対して何も処理してくれませんでした。 今回は各々で複製→複製先で移動とやっていますが、元ドキュメントをアクティブにしてコピー(copy())→複製先ドキュメントをアクティブにしてペースト(paste())すると、選択は維持されたままになっているので、複製先でループ処理して移動、、、としてもいいと思います。 var BaseDoc = activeDocument; var Mydoc = app.documents.add(); var mat = new Array; BaseDoc.activate(); for (var i in BaseDoc.selection){ mat[i] = BaseDoc.selection[i].duplicate(Mydoc); mat[i].position = [100*i,100]; }
その他の回答 (1)
- shut0325
- ベストアンサー率40% (490/1207)
コードがないので、何が問題か良くわかりませんが、開始時のアクティブドキュメント及び新規ドキュメントは変数に格納していますでしょうか? 下記の様な感じです。 var docref = activeDocument; var Mydoc = app.documents.add(); 最初に宣言しておけば、後は、変数名を指定しての処理が進められます。
補足
ご回答ありがとうございます。 > コードがないので、何が問題か良くわかりませんが、開始時のアクティブドキュメント及び新規ドキュメントは変数に格納していますでしょうか? はい、スクリプト実行時のアクティブドキュメントとスクリプト実行中に作成するドキュメントを区別するために、変数に格納しています。 以下のように新規ドキュメント上にコピーした画像の座標を(0,0)に移動させようとすると止まってしまいます。 //newDoc = 新規作成したドキュメント //imgObj = コピーする画像オブジェクト imgObj.moveToBeginning(newDoc); newDoc.pageItems[0].translate(0, 0); 新規ドキュメントに画像をコピー後、画像の座標を操作するスクリプトを組むことはできるのでしょうか…?
お礼
お返事遅くなってすみません。 サンプルコードを元に色々やったらうまく動きました。 とても参考になりました、ありがとうございます!