ログインしてさらにmixiを楽しもう

コメントを投稿して情報交換!
更新通知を受け取って、最新情報をゲット!

おっぱいとXMLコミュのXML?データ駆動型グラフィックス?

  • mixiチェック
  • このエントリーをはてなブックマークに追加
XML?データ駆動型グラフィックス?

はじめまして。IllustratorとAppleScriptでデータドンブリする情報を探していたところreptileさんからお誘いあって登録してみました(ここで良いんですよね?)。やりたい事は、TSVデータを元にレイヤーの表示やテキスト内容を切替えてファイルを自動生成したいんですね。要するにバリアブル印刷みたいな感じです。

参考にしているのはIllustrator10のCDに入っている
scripting/Sample Scripts/AppleScript/Datasets/Datasets from Text File/
と、Adobe Illustrator CS ScriptingGuideのdataset項目のサンプルスクリプトです。

「Datasets from Text File」はTSVを読んでXMLでdatasetを吐いた後、それを読んで複数のdatasetをファイル内に一括で生成します。
「サンプルスクリプト」はオブジェクトに名前と変数を同時に割り当てて、名前で参照して内容を変更し、それをmake datasetでキャプチャーしてdatasetを1レコードづつ生成します。

【問題点】
・イラレの変数として保持出来るのは(文字/リンク画像/グラフ/表示属性)ですが、
 グラフに渡すデータのフォーマットが分からない。
 {1,2,3}で3本の柱が立ちますが、それ以外のオプションが不明
・TSV→XML→インポートでなくTSVからdatasetを生成出来ないものか?
 ちなみにExcel2004ではXML書き出しがサポートされてます。
・あんまりXML使いたくないんで、AppleScrptコミュ行った方がいいかも?(笑)

コメント(18)

【私信】http://mixi.jp/view_diary.pl?id=6085386
>でも、レイヤーはリスト化してrepeat処理できないんですよね(笑)
なんだろ、こういう事じゃなくて?
tell application "Adobe Illustrator 10"
set myAllLays to layers in document 1
repeat with tmpLay in myAllLays
set visible of tmpLay to false
end repeat
end tell

>あと、仮にdatasetが単なるテキストとして読めるのであれば
>エディターで開いてタグを検索→置換え→再保存って方法もありでは?と思います。
あれ・・・これは何に対してのレスでしょうか?話を見失いました。
>でも、レイヤーはリスト化してrepeat処理できないんですよね(笑)
ごめんなさい。
set alllays to every layer of current document visible to ture
(めちゃくちゃな書き方ですんません)
みたいな参照ができないでした(もしかしたら僕が下手なだけかも)

>エディターで開いてタグを検索→置換え→再保存って方法もありでは?と思います。

dataset自体は必ず作成される訳でそれはXMLで書かれている(と思う)のであればAIからdatasetを作成する方法よりもdatasetの構造を調べてエディターで書き込む方が手っ取り早いと感じたのです。

まだ、僕はXMLもillustratorの変数も理解できていないので変な返答をしていると思うんですが。。。。

そろそろ、ある人物が答えてくれそうなんだけど。
確か、けけたんって名前の人だったような気がします。

>あんまりXML使いたくないんで、AppleScrptコミュ行った方がいいかも?(笑)
そんな寂しい事言わないで(泣)
この際だからやってみてもいいと思うんですが。。。。
僕は結構、夢すんげー広がっているんですけどねえ。。。

10からはjavascriptにも対応してるのでブラウザから
データ作成→AIとかできそうじゃないですか。
XMLとかも間に挟めば鬼に金棒ですよ!!

ってそういう話題を見ないってことはあんまり需要ないってことかしら?
<つっこみ>tureって!(笑)</つっこみ>
それはおいといて、これで動くっぽいですよ。
tell application "Adobe Illustrator 10"
set myAllLays to every layer of current document whose visible is true
repeat with tmpLay in myAllLays
set visible of tmpLay to false
end repeat
end tell

>dataset自体は必ず作成される訳で
なんか、話がすれ違ってきたかも?
TSVを読んで内容を書き換えたいだけならdatasetはいらないんですよね。TSV→XMLはサンプルスクリプトが提供されてるので自作する必要はないのです。

>ブラウザからデータ作成→AIとか
・・・は、無理ですよね。ブラウザに書いたコードはブラウザしか制御出来ないですし。逆にAppleScriptの良い所はここですね。OS直結だからブラウザからデータ抜き出してイラレに流すとか出来るし、GUIもつけられますからね。
>それはおいといて、これで動くっぽいですよ。

はちゃー。僕が下手くそなだけだったんですね(笑)
AIの変数とサンプルに関しては明日(っていうか今日)時間があれば
試してみますっていうか今さらなんですがTSVってなんですか?(爆)
すんません。
TSVってタブ区切りテキストでしたっけ?
すみません、タブ区切りテキストのつもりで書きましたが普通は略さないですよね。
うわ〜〜〜〜すみません!!!
まだ、datasetとか触れてません(泣)
まぁ別に必要が無ければいいんじゃないですかね。
ただ、FileMakerとかEXCELで元データがあるならXMLでデータが吐けるみたいなんでコーディングが凄くラクになるっぽいですね。
データ全部読ませたら、データセットを順に切替えて必要な処理するだけですから。

でも、もうデータ一個づつ読んで処理するコード書いちゃったんですよね〜。問題なく動いてるならそれで良いですよね。
AppleScriptでグラフデータの操作って出来ましたっけ?変数使うとデータ渡すだけで動的に生成できるから、その辺はラクかも。

と言う事で、グラフに渡すデータのフォーマット分かりました。CSVを/で連結した二次元配列でした。...ってサンプルの中に『英語で』書いてありました。..._| ̄|○
(あのサンプル偉いわ。あれだけで一通りの事出来るようになってる。)

後は、同じ設定でファイルを自動的にプリントする方法が分かれば自分的には安心して寝れるんですけど。(複数ページのPDFにまとめてから印刷とかは出来れば最終手段にしたいなぁ)
2バイト文字の扱いもクリアして、印刷以外の部分はなんとか出来るようになりました。

サンプルではXMLをISO-8859-1で吐き出してますが、これではデータに日本語が使えません。ファイルを書き出す時にas unicode textでユニコードにしてやると日本語も化けずに使えました。併せて、XMLヘッダーのエンコード宣言をutf-16にする事をお忘れなく。
Illustrator10でOS9、OSX両方で動きました。
これで年賀状印刷とか、イラレだけで出来ますねー
FlashでXML使ってDBと連携するのもこんな感じなんでしょうか?

あと、サンプルだとファイル名は数字の連番ですがこれも任意に付けたいですね。イラレで、オブジェクトにバインドしない変数を作っておいてファイル名を格納したらこれは出来そうだなぁ。
ふわーめちゃくちゃ進んでますね(泣)

僕はサンプル見るどころか別件の仕事が入って更に触れなくなってしまいました。

逆に質問の嵐が飛ぶかもしれませんがよろしくです(笑)

スクリプト成功おめでとうございます。
どうも〜。まぁ動いたって言ってもほぼサンプルのままですからねぇ。
今日は保存するファイル名もデータ内で指定出来るようにしてみました。
ただし、オブジェクトにバインドしない変数ってのは駄目みたいなんで
ダミーのテキストに割り当てて、保存する時に捨てる感じで逃げました。
データから特定の列を切り出した方がスマートかもしれんけど、面倒なんで(笑)
いま会社行っても仕事無いんでスクリプトがはかどりますわ〜
【OffTopic】
データ丼は一先ず落ち着いたので最近はCMYK→スポットをやってます。
自動化作戦の作者サイトに色変換のサンプルがあって助かりまくり。
「Illustrator10自動化作戦with JavaScript」の作者サイト
OpenSpace
http://www.openspc2.org/

の資料関係コーナーの「単位変換」に変換式が載ってますよ〜
本の方はwith AppleScriptだったら即買いだったんですけど
JavaScriptなのでちょっと迷い中。
【OffTopic】
またOTですが、text art itemのlocked属性がうまく操作できません。
set locked of myTxtartitem to false
でレイヤーの鍵マークは取れるんだけど、解除できたかと思ってカーソルをのせても選択出来ない・・・あれ???

CMYK→スポットは暫定稼働中。CMYK→グレイにしてグレイ値をスポットの値に使っているので、ダイナミックレンジは維持されるものの、スポットカラー自体の輝度が高いと全体に薄くなってしまう問題あり。
illustratorコミュにも書かれてありましたがどうやらバグのようですね。
OTが続いてしまったので場所を移してみたのですがバグっぽいですねぇ。簡易フライトチェッカーっぽいものを書こうと思って、まず始めはロックの確認と解除だろう...と思ったらいきなりハマリました。上で書いたサイトの作者さんがいらっしゃって焦りましたけども。(´∀`;)

CMYK→スポットの方は、使用するスポットカラーをチェックして輝度が維持できるっぽく調整できました。
text art itemの件ですが、僕も自動処理で触っている部分があったのでチェックしてみた所、レイヤー丸ごとロックで処理しているようでした。

ログインすると、みんなのコメントがもっと見れるよ

mixiユーザー
ログインしてコメントしよう!

おっぱいとXML 更新情報

おっぱいとXMLのメンバーはこんなコミュニティにも参加しています

星印の数は、共通して参加しているメンバーが多いほど増えます。