> > > > 一行ずつ読込むという文法が探しきれず行き詰まっています。
> > >
> > > File.readln()
> > > ではなくて?
> > z-様
> > アドバイスをありがとうございます。
> > いろいろ情報を探し
> > 下記のスクリプトを作ってみましたが動きません。
> > テキストファイルは
> > "L1"
> > "L2"
> > という内容です。
> > イラレのファイルのレイヤーは
> > L1
> > L2
> > という内容です。
> >
> > //ファイルを選択
> > filename = File.openDialog("Select");
> > if (filename) {
> > fileObj = new File(filename);
> > }
> > for (var ii = 0; ii <= 2; ii++) {
> >
> > //一行目だけ最初にテキストを読む。あとは繰り返し処理中に読む
> > if (ii== 0) {
> >
> > var line = fileObj.readln() ; //テキストファイルから1行読み込み変数に代入
> >
> > var layObj= activeDocument.layers[line];
> > layObj.visible=true
> > alert("visible!")
> > }
> > }
> >
> > visibleというメッセージが一回だけ表示され終了してしまいます。
> if文を見ると(ii==0)の時だけ処理するようになってますね。
> だからvisibleというメッセージが一回だけ表示され終了するのはプログラム的には正しいです。
> 行き詰まったらシンプルな所から少しずつ確実に動く事を確かめながら
> 順を追っていく事をお勧めします。
>
> var F = File.openDialog("Select");
> F.open("r");
> while(l = F.readln()){
> alert(l)
> }
> F.close();
皆様、ありがとうございました。
やっと、希望していたものが出来上がりました。
具体的な実務としては
ある印刷物について、データベースに登録してあるレイヤー名の情報から
紙をプリントし、それを見ながらイラレの上でレイヤーを選択するという
ワークフローでした。
それを自動化することが今回作成のスクリプトです。
データベースはすでにあるので、イラレでスクリプトを走らせられれば
版下が自動的にできあがります。
追加で作成する工程としては
レイヤーをすべて非表示にする。
今回のスクリプトを動かした後に非表示のレイヤーをすべて削除する
この二点です。
自力で何とかなりそうです。
出来上がったスクリプト
var F = File.openDialog("Select");//テキストファイルを選択する//
F.open("r");//ファイルを開ける
//ファイルの最後まで一行ずつ読み込む。
while(l = F.readln()){
var layerObj = activeDocument.layers; // アクティブドキュメントのLayer
//すべてのレイヤーについて
//テキストファルと一致したレイヤー名について
//レイヤーを表示状態にしロックを外す
for(var i=layerObj.length-1; i>=0; i--){
if (layerObj[i].name == l){
layerObj[i].visible = true;
layerObj[i].locked = false;}
}
}
//ファイルを閉じる
F.close();
alert("終了");
//
また行き詰まった際はよろしくお願いいたします。
[15395] ha_chan (2013/03/19 Tue 16:08)