[5202] Illustrator 2021のリピート機能をスクリプトで実現

投稿:  著者:



《結構面白い効果が得られます》

■クリエイター手抜きプロジェクト[650]
 Illustrator CS6〜2020編 
 Illustrator 2021のリピート機能をスクリプトで実現する
 古籏一浩




━━━━━━━━━━━━━━━━━
■クリエイター手抜きプロジェクト[650]
Illustrator CS6〜2020編 
Illustrator 2021のリピート機能をスクリプトで実現する

古籏一浩
https://bn.dgcr.com/archives/20210405110100.html

─────────────────

今回は、2021のリピート機能をスクリプトで実現するというネタです。ただ、全部を実現するというのは文字数の都合上無理があるので、とりあえず手軽にできる部分からです。

最初から無理に全部作ろうとしたりすると失敗する可能性が高いので、簡単にできるものから少しずつ作っていくのが無難です。

まずは、簡単な上下左右の繰り返し(リピート)処理からです。スクリプトは以下のようになります。リピート機能を実現する、もっとも簡単なスクリプトになります。

基本というか、ベースになるわけです。これをベースにして、機能を拡張していけばよいでしょう。スクリプトの修正などは、自由に行ってもらって構いません。

使い方ですが、リピートさせる図形を一つだけ選択します。複雑な図形の場合は、グループ化してから実行すれば、一つの図形とみなされ処理されます。

スクリプトを実行すると、横と縦の繰り返し数を入力するダイアログが表示されます。入力すれば、後は自動的に指定した数だけ、図形がリピートして配置されます。

// リピート機能 for Illustrator CS6〜2020
(function(){
var sel=app.selection;
if(sel.length != 1){
alert("繰り返し図形を1つだけ選択してください");
return;
}
var basePattern=sel[0];
var repW=prompt("横の繰り返し数を入れてください",8);
if(!repW){ return; } // キャンセルされた
var repH=prompt("縦の繰り返し数を入れてください",8);
if(!repH){ return; } // キャンセルされた
repW=parseInt(repW); // 数値に変換
repH=parseInt(repH); // 数値に変換
for(var j=0; j<repH; j++){
for(var i=0; i<repW; i++){
var dup=basePattern.duplicate();
dup.left=basePattern.left+basePattern.width*i;
dup.top=basePattern.top-basePattern.height*j;
}
}
basePattern.remove();
})();

なお、ベースとなる選択した図形は削除されます。削除したくない場合は、最後の方にある

basePattern.remove();

の行を削除してください。以後のスクリプトも同様です。

次に、図形と図形の間隔を指定できるバージョンです。上のスクリプトでは、入力するのは横と縦の繰り返し数だけでしたが、今度は横と縦の間隔も入力します。なお、数値の単位はpoint(pt/ポイント)です。


// リピート機能 for Illustrator CS6〜2020
// 間隔を指定できるバージョン
(function(){
var sel=app.selection;
if(sel.length != 1){
alert("繰り返し図形を1つだけ選択してください");
return;
}
var basePattern=sel[0];
var repW=prompt("横の繰り返し数を入れてください",8);
if(!repW){ return; } // キャンセルされた
var repH=prompt("縦の繰り返し数を入れてください",8);
if(!repH){ return; } // キャンセルされた
var offsetW=prompt("横の間隔を指定してください",-10);
if(!offsetW){ return; } // キャンセルされた
var offsetH=prompt("縦の間隔を指定してください",-10);
if(!offsetH){ return; } // キャンセルされた
repW=parseInt(repW); // 数値に変換
repH=parseInt(repH); // 数値に変換
offsetW=parseInt(offsetW);
offsetH=parseInt(offsetH);
for(var j=0; j<repH; j++){
for(var i=0; i<repW; i++){
var dup=basePattern.duplicate();
dup.left=basePattern.left+(basePattern.width+offsetW)*i;
dup.top=basePattern.top-(basePattern.height+offsetH)*j;
}
}
basePattern.remove();
})();

間隔を指定できる単位がptだけでは不便だ、という人もいるでしょう。Illustratorは内部では全部ptで計算するため、ptで指定した方が誤差は少なくなります。単位を変換すると、どうしても誤差が発生し、さらに今回のような繰り返し処理では誤差が発生しやすくなります。

それでもmmやcmなどの単位を指定したいというのであれば、以下の2行を下記のように変更してください。これで、間隔を2mmや1.56cmという単位付きの数値で、指定できるようになります。

offsetW=parseInt(offsetW);
offsetH=parseInt(offsetH);
    ↓
offsetW=(UnitValue(offsetW)).as("pt");
offsetH=(UnitValue(offsetH)).as("pt")

一度ベースができれば、あとは応用です。2021の機能にはありませんが、少しずつ図形を回転させる機能を追加することもできます。以下のスクリプトは、一回あたりの回転角度を指定できます。文字などに適用すると、結構面白い効果が得られます。

// リピート機能 for Illustrator CS6〜2020
// 間隔と回転角度を指定できるバージョン
(function(){
var sel=app.selection;
if(sel.length != 1){
alert("繰り返し図形を1つだけ選択してください");
return;
}
var basePattern=sel[0];
var repW=prompt("横の繰り返し数を入れてください",8);
if(!repW){ return; } // キャンセルされた
var repH=prompt("縦の繰り返し数を入れてください",8);
if(!repH){ return; } // キャンセルされた
var offsetW=prompt("横の間隔を指定してください",10);
if(!offsetW){ return; } // キャンセルされた
var offsetH=prompt("縦の間隔を指定してください",0);
if(!offsetH){ return; } // キャンセルされた
var degree=prompt("一回あたりの回転角度を指定してください",10);
if(!degree){ return; } // キャンセルされた
repW=parseInt(repW); // 数値に変換
repH=parseInt(repH); // 数値に変換
offsetW=parseInt(offsetW);
offsetH=parseInt(offsetH);
degree=parseInt(degree);
for(var j=0; j<repH; j++){
for(var i=0; i<repW; i++){
var dup=basePattern.duplicate();
dup.left=basePattern.left+(basePattern.width+offsetW)*i;
dup.top=basePattern.top-(basePattern.height+offsetH)*j;
dup.rotate(i*degree);
}
}
basePattern.remove();
})();

少しずつ回転させるのではなく、0〜入力した角度までランダムに回転させるには、以下の行を変更してください。

dup.rotate(i*degree);
  ↓
dup.rotate(Math.random()*degree);


【古籏一浩】openspc@alpha.ocn.ne.jp
http://www.openspc2.org/


いくつかスターターキットやデバイスを購入したものの、数か月未開封。ひどいのは一年半未開封というものも……。

一昨年、エアコンを制御しようと制御デバイスを買ったけど、昨年も未開封のままで、下手すると今年も未開封で終わってしまうかも。まあ、そうならないように時間を作っていかないといけないんですが……。

IT・コンピューター関係とは違って、体を使う仕事は物理的な時間がどうしても必要なので、どうしようもないというのはあります。

今年は予想以上に桜の開花が早くて、撮影は挫折気味。塩尻市あたりだと例年なら4月17日頃に満開になりますが、4月3日の時点で満開、すでに散り始めていたりします。このテキストが目にとまる頃には、すでに散ってしまっているかもしれません。

それでもちょっとした時間の合間に、スマホの8Kカメラで撮影しました。8K映像が再生できる環境となると限られますが、MacBook Pro(M1 Chip)とか、Mac mini(M1 Chip)なら、再生できるのではないかと思います。

桜だけでなく水芭蕉なども撮影しました。いずれもYouTubeにアップしてありますので、ぼけ〜っと眺めたい方はどうぞ。

・桜




・カタクリ



・水芭蕉




・横川渓谷 蛇石





滝とかも撮影に行きたいのですけど、なかなか時間が……。

会社で雇っていたアルバイトが、副業禁止規定のおかげで辞めるはめに。今どき副業禁止なの? みたいな感じもしましたが、規定は規定(日本で有数の巨大な会社のせいかもしれませんが)。仕方ないので、アルバイトの分も私がやる状態に……。

・創って学ぼうプログラミング
https://news.mynavi.jp/series/makeprogram


・8K/4K/ハイビジョン映像素材集
http://www.openspc2.org/HDTV/


・クリエイター手抜きプロジェクト
http://www.openspc2.org/projectX/



━━━━━━━━━━━━━━━━━
編集後記(04/05)

●偏屈BOOK案内:石原慎太郎・曽野綾子「死という最後の未来」幻冬舎 2020
https://www.amazon.co.jp/exec/obidos/ASIN/4344036131/dgcrcom-22/


石原慎太郎と曽野綾子の対談だが、二人が並んでいる表紙になぜか違和感があった。曽野の顔がデカ過ぎるような感じ。照明の当たり具合が違う。

奥付の前のページに、カバー写真:(石原慎太郎)繰上和美(曽野綾子)篠山紀信とある。やっぱり合成か。対談も合成かと一瞬思ったが、受け答えがスムーズなので、リアルなんだろう。石原87歳、曽野88歳である。元気な年寄りだ。

何10年ぶりかの思わぬ再会であったようだ。「この私の年頃の人間は誰しも、不可避な『死』への予感と倒錯したある奇妙な期待のままに、這うようにして生きているに違いありません」と石原。

「死は私の日常の中で永遠に答えの出ない命題で(略)永遠に新しい感動を伴う個人の運命でもあった」という曽野。

彼女は、あらゆることはなるようにしかならないと思っている。神様とか、何か偉大なものが、死を含めた秩序を采配している。それは神の領域であって、考えないようにしている。わからないことは、わからない。分相応でいいと思っている。

石原は、執着が強くてだめだという。多情多恨の人生というか、悔いもまだまだ山のようにある。だが曽野は、悔いはできるだけないほうがいいが、ないのもおかしいと言う。

「悔いがない人生って、陰影がなくて気持ちが悪いじゃないですか」。そんな曽野だが、死を考えなかった日は一日もない。

曽野は幼稚園からキリスト教系の学校に入り、「死」というものとは常に共にあった。死ぬ時に魂を助けてください、と毎日祈る。そんな敬虔なキリスト教徒に対し、石原は「毎日『死』を考えるとは、僕にしてみればつまらない信仰ですね」と言い放つんだからいい度胸というか、愚か者だ。

曽野は、死は義務教育の過程で学ぶべきこと、学校の先生が教えるべきだと、常に発言している。

全体に退屈な対談だ。激しいやりとりを期待していたから残念である。石原はかつて「巷の神々」という著作(私も読んだ)で、霊魂について書いていたはずなのに、今は「(人は)息を引き取ったら、一瞬で魂もなくなると思いますけどね。瞬時にチリ芥になる」なんて言ってる。ボケたのか。

そのくせ、現代文に訳した「新・法華経」を3年かけて、最近完成させた。石原のライフワークだという。わけわからん。石原の迷走の相手をする曽野も大変だが、このかみあわぬ対談をテキストに書き起こした、編集者の苦労がわかる。

曽野は、自分の見える範囲はすごく狭いが、それが大きな救いだと思っている。すべてが見えたら大変なことだという。能力の限界を知っているから謙虚にならざるを得ない。

それに対して石原は「とんでもなく大きなことを考えたら、面白くないですか? 作家なんですから」と小学生みたいな反応。情けない。

曽野は視力が失われそうになったとき、それが以前にも増して与えられたという奇跡が起こった。彼女に残りの人生を与えた存在があった。キリスト教を信じようと思ったのは、理論的ではなく、彼女の周り、生活の中には、「信仰を生きた人たち」がたくさんいて、それに触れたからだという。

石原は自分の葬式を設計して長男に伝えてある。ヨットレースの優勝カップは必ず並べる。音楽は自分が作詞し、山本直純の作曲、ダークダックス歌った「海よさらば」を流す。辞世の句も作ってある。自分の灯台を作って石碑にそれを刻むよう子供たちに命じてある、とか。みっともない自慢だ。

曽野には自分だけのいい習慣がある。50歳になった時から、寝る前に「3秒の感謝」をする。「今日までありがとうございました」と言う。もしもその夜中に死んだとしても、けじめをつけたことになる。

彼女は、死ぬということはいい〈制度〉だと思う。「自由にやりなさい」と、ずっと生きていたら、やめ時がわからない。永遠に命があったら疲れる。死なないということは、最高の罰でもある。いろいろいいことを言う。それにしても、石原慎太郎は老いてますます俗物だな。(柴田)


●桜が美しい。カタクリの花を初めて見た。片栗粉のカタクリかと調べたら、今の片栗粉はジャガイモやサツマイモからだそう。カタクリの片栗粉は下痢止めにいいらしい。川のせせらぎの音が気持ちいい。素敵な動画でした。

/家人の同僚が新型コロナ。奥様が陽性になり、検査をしたら彼も陽性だったらしい。無症状。

同僚といっても部署が違うため、ほとんど会うことはなかったらしいが、部署をまたいで動く人もいるわけで、もしかしたら家人も感染しているかもしれない。

もし症状のある人がたくさん出て、会社の機能が止まったら、その期間が長くて持ちこたえられなかったら、などと考えてしまう。

今日からの「まん延防止等重点措置」適用市に住んでる。緊急事態宣言の時に、感染予防対策もせず遅くまで開いてる飲み屋があった。他は時短要請に応じてるから、開いてるのはそこだけなので、大盛況。

チェーン店は時短どころかほぼ閉店。信用第一だもんね。開いていた飲み屋は、逃げ切りを狙っているのかもしれない。

美味しいと聞いていたので、一度は行ってみようかと思ってたけど、ワクチン打っても、その飲み屋には行かないことにした。生活がかかっているからと遅くまでやるなら、せめて対策はしてよ……。(hammer.mule)

https://ja.wikipedia.org/wiki/カタクリ