スクリプトの登録方法

スクリプトの組み方はさて置き、取り合えず登録方法を記しておこうと思います。
猫ペイントの「script」フォルダの中、「menu」フォルダの中に必要なファイルがあります。
.nasファイル をDLした場合も、「menu」フォルダの中に入れます。


0aa.jpg

非表示レイヤー削除、公式の下から削除していく方法は、下2つが非表示だと1枚残るので上から削除するものを組んでみました。

np_image img = get_active_image();//編集中の画像を取得

int i,v; v = get_layer_count(img);//レイヤーの数をvに取得
for (int i = 0; i < v; --v) {//繰り返し

np_layer l = get_layer(img,v-1);//取得レイヤーを指定

//レイヤーが非表示ならレイヤーを削除
if (get_visible(l) == false) {
set_active_layer(img,l);
np_cmd(1283);//レイヤーを削除
}
}


これをリスト登録する場合です。
上記のはウィンドウスクリプトに貼り付けるならOKなのですが、リスト相手だと少し足りません。

今回は 000.txt というファイルを用意してその中にスクリプトを書き込みました。

0bb.jpg

赤枠の中が上に太文字で載せたスクリプトです。
ウィンドウに直接書き込む時にはこれで十分ですが、リストに加える場合はスクリプトがどこにあるのか指定しなければなりません。
黄緑部分はこちらで適当に決めて良い名前です。
面倒なので公式の非表示レイヤー削除に2を加えただけにしました。
水色の{かっこ}は、「ここからここまで読み込みます」という意味。

void わかりやすい名前を半角英数で() { スクリプト }

voidの後に半角空白必須です。
()も忘れないように。
「わかりやすい名前を半角英数で」と、ありますが、確かプログラム系のお約束で、特殊文字が使われていたり、最初に数字があったりするとエラーになります。
全角スペースにもご注意ください。見た目で間違いがわかりません。


次はリスト。user_list.txtに書きました。

0cc.jpg

最初に呼び出したいスクリプトを書いたファイル名を書きます。
そしたら半角空白を空けて先ほど自分で決めたスクリプトの指定名を書きます。
また半角空白を作って、半角#。
# 以降に猫ペを起動した時に使う名前を入力してください。
リストは猫ペで実際に使う時の為に、スクリプトがどこにあるのかを指定してるんですね。

これでネコペを起動すればリストに追加されていると思います。
公式で作ってあるスクリプトの書かれたファイルの拡張子は.nasですが、リストの呼び出しで拡張子も指定していたので.txtでも可能だと判断して実際に今回試してみました。
拡張子削られてたら.nas固定ということなので出来なかった技です。
追記
ただし、.txt だと1度の猫ペ起動で複数スクリプトを扱っているうちに無反応になることがあるようです。(npaint_script24 で確認)
.nas にしたら問題なくなりました。

※変わってなかったですorz エラーがでる原因は不明。


こういったものに慣れてない人のことを考えて画像付きにしてみましたが、もしこれでも分からない部分があれば、報告次第で説明加えさせていただきますー。
posted by むらせ at 2010年08月13日 19:23 | スクリプト | このブログの読者になる | 更新情報をチェックする

スクリプト試し中

スクリプトの命令一覧は、koppe panさんのスクリプトページにあります。


何となくわかったような気がするものをメモしておきます。

スクリプトを弄るのは好きなのですが、所詮は素人レベルです。
取り合えずエラーが出ずに動けばいいやって程度なので、わかる人から見れば無駄なことをしてることも多いと思います。
こうしたらいいよーとか分かる方、教えて貰えると嬉しいです。


えーと、何から書こう。
ちょっとしたものからメモ。(npaint_script06.zip 使用)

void message_box_ok(string s);//メッセージボックスを表示
これをウィンドウに入力する場合、
void message_box_ok("test");
こうするとtestと書かれたメッセージボックスが出る。
""は''でもOK。
全角文字だと文字化けする。
ウィンドウからの入力の場合 message_box_ok("test");
〜〜〜〜〜〜〜〜〜〜〜〜〜〜〜〜〜〜

選択範囲拡張してから塗り潰しをしたい時。

for (int i = 0; i < 4; ++i){
np_cmd(1584);//選択範囲を拡張1pixel
}
np_cmd(778);//塗りつぶし

拡張サイズが固定ならこれもアリだけど、固定ではないなら手動入力の拡張を使ってもよい。

np_cmd(1552);//選択範囲を拡張
np_cmd(778);//塗りつぶし

ボックスで数値入力したあと、塗り潰しも問題なく実行される。
〜〜〜〜〜〜〜〜〜〜〜〜〜〜〜〜〜〜

リファレンス一覧見てると行始めに書いてある
voidやらnp_canvasやら、よく分からないんだけど取り合えず属性だと思うことにした。
で、(np_image img,int i)やら(np_layer nl)は
intはそのまま数字を当てはめてOK、stringは文字列用、np_imageやnp_layerはそれら属性のデータを先に取得指定する必要ありと。
iとかnl、imgとあるのは、既に変数宣言してあるってことかなーと。
変数=数学のx,yみたいなもの。

この考えを元にアクティブレイヤーの名前を変更にチャレンジ。
void set_name(np_layer nl,string name);//レイヤー名を設定
を見るとnp_layerがあるのでnp_layerを取得する。
np_layer get_active_layer(np_image img);//アクティブレイヤーを取得
今回はアクティブレイヤーを変更したいのでこれでいいと思う。
が、今度はnp_imageがついてきた。
np_imageも取得する必要があるっぽい?
np_image get_active_image();//アクティブな画像を取得
じゃ、これっすね。

//アクティブイメージを取得して、変数「img」に代入
np_image img = get_active_image();
//イメージ取得して指定したアクティブレイヤーを取得して「l」に代入
np_layer l = get_active_layer(img);
//アクティブイメージとレイヤーを取得できた=指定先決定したのでそこにtestを反映させる
set_name(l,"test");

代入式があった方が解りやすいから使ってるけど、使わないことも可能です。
その場合はこれ。
set_name(get_active_layer(get_active_image()),"test");

**********************

これらの考え方で大丈夫だと思う。多分・・・。
ずーっと()内の指定の意味が分からなくて、繋げるのに苦労してたんですよ。

取り合えず今私が理解したっぽいもののメモはここまで。
posted by むらせ at 2010年08月14日 18:14 | スクリプト | このブログの読者になる | 更新情報をチェックする

表示レイヤー結合スクリプト

表示レイヤー結合用スクリプトです。
フォルダとグループ化の判定が可能になったので組みました。
現段階(npaint_script07.zip) での精一杯。
無駄部分があっても気にしない。

2012/07/02 追記
これと、フォルダのみ結合・グループのみ結合・フォルダ&グループ結合の3つをセットにしました。
http://nekop.seesaa.net/article/278389331.html

以下は以前の記事です。

スクリプトは「続きを読む」に折り畳んであります。
8/17 修正

表示レイヤーと表示レイヤーの間に非表示レイヤーやフォルダがあると、「下のレイヤーと結合」を使ってるだけなので結合されません。

・グループ化しているレイヤーを判断して結合。非表示レイヤーが混ざっていれば削除
・グループ化のレイヤーがなくなってから全体の結合開始


非表示レイヤーを残して置きたいときのことを考え、削除は組み込んでいません。
非表示レイヤーが不用なら、先に非表示レイヤー削除のスクリプトを実行してから結合を実行してください。

注:
グループ化の親レイヤー(?)が非表示になっていれば、その上に置かれたグループ化レイヤーは表示状態であっても目視不可能になりますが、データ上ではそのレイヤーが表示レイヤーであることに変わりはないのでそこだけ結合されます。

続きを読む
posted by むらせ at 2010年08月16日 00:39 | スクリプト | このブログの読者になる | 更新情報をチェックする

レイヤー全て左右反転

レイヤーが多い時に画像反転したい時は写真屋など他ソフトを使用してたのですが、スクリプトで一斉レイヤー反転が可能になったので組みました。
「スクリプト」→「ウィンドウスクリプト」にコピペすると使えます。
登録したい場合は スクリプトの登録方法 を、参照ください。


np_image img = get_active_image();//編集中の画像を取得

for (int i = 0; i < get_layer_count(img); ++i) {//繰り返し

np_layer l = get_layer(img,i);//取得レイヤーを指定
set_active_layer(img,l);//アクティブレイヤーを指定

np_cmd(NP_HREVERSE_LAYER);//左右反転
}



以下はオマケ

freemaniaのねーこさんがツイッターで「スクリプト実行で現在の年月日+時間+連番.psdみたいなことをしてみたい。」と書いていたのを見て以来ちょっと気にしてたのですが。
時間取得でよく見るメソッドは無理で、Angel Scriptで調べようとしたけどこれは私がついていけませんでした。
でも string の型で時間取得可能になれば、画像名を変更してから名前を付けて保存は可能なのは確認できました。
連番は厳しいですけど。
そこは時間を分まで取得しちゃえばよいと思われ。

実験で組んだもの

np_image img = get_active_image();

string name1 = get_name(img);
string name2 = "test";
string name3 = name1 + name2;
np_layer nl = get_active_layer(img);

set_name(nl,name3);
set_name(img,name2);
np_cmd(516); //名前をつけて保存


新規ではなく、保存してあるファイルを開いてこれを実行すると
・アクティブレイヤーの名前が「ファイル名.拡張子test」
・ファイル名が「test」
・「test.psd」で保存するか確認が出る

となります。
スクリプト側で全角文字を指定しようとすれば文字化けしますが、読み込んだデータ、この場合ファイル名が全角文字だとしてもそのまま全角文字で吐き出し可能のようです。
※ npaint_script08.zip から全角文字が使えるようになりました。
タグ:スクリプト
posted by むらせ at 2010年08月18日 22:56 | スクリプト | このブログの読者になる | 更新情報をチェックする

平行(抜きアリ)・水平ライン(抜きなし)

平行線と水平線、垂直線のスクリプトです。
平行線は抜きアリで、スピード線として使えます。

3種をテキストでDL - 0line.txt
右クリックで保存してから、拡張子を.txt から.nas に変更してください。

DLして登録する場合、user_list.txtに
0line.txt draw_heiko #線/平行線
0line.nas draw_suihe #線/水平
0line.nas draw_suit #線/垂直

と書いてください。

スクリプトだけの場合、「続きを読む」にあります。
続きを読む
posted by むらせ at 2010年11月08日 16:23 | スクリプト | このブログの読者になる | 更新情報をチェックする

擬似ぼかしフィルタ

npaint134full.zip 以降に付いた、【加工】でも擬似ぼかし可能です。
【スクリプト】→【加工】→【ペン アクティブレイヤー4.1】
【加工】は時間が掛かりますが、下記の方法よりも綺麗だと思います。
【加工】でのぼかしブラシ設定とぼかし量に関しては 加工・全体ぼかし 参照。
自分は早いほうが良いので下記の方法を使い続けてますが、【加工】が付いたのでスクリプト導入がよく分からない人は【加工】がオススメです。


全体を猫ペでぼかせるように組んでみました。
あくまで擬似的なもので、ぼかし用のブラシを選択してからスクリプト開始してください。
尚、ブラシサイズを強制的に400にしてから描画しているので、PCの環境によっては重いかもしれません。

void bokashi() {

np_canvas c = get_active_canvas();
np_image img = get_active_image();
int w = get_width(img); //キャンバスの幅を取得
int h = get_height(img); //キャンバスの高さを取得

double old_brush_size = get_brush_size();//ブラシサイズを取得
set_brush_size(400);

if ( h <= 370){
double j = h / 2 ;
draw_line(c,0,j,w,j);
}

if ( h > 370){
int j = h / 370 ;

for (int i = 0; i <= j; ++i) {
int y = 370 * i ;
draw_line(c,0, 185 + y, w, 185 + y);
}
}
set_brush_size(old_brush_size);//ブラシサイズを戻す
}
タグ:スクリプト
posted by むらせ at 2010年11月19日 19:26 | スクリプト | このブログの読者になる | 更新情報をチェックする

ストライプ・ボーダースクリプト

選んでるブラシで罫線をひけます。
2回のクリックで幅を指定できるので、固定のテクスチャよりも自由度高いのが特徴。

見本画像
bo.jpg

n_thukai_stripes.nas ←縦・横・斜線全て

n_thukai_stripes.nas draw_border #縞々/ボーダー
n_thukai_stripes.nas draw_stripe #縞々/ストライプ
n_thukai_stripes.nas draw_slash #縞々/スラッシュ
n_thukai_stripes.nas draw_slash45a #縞々/45度右上がり
n_thukai_stripes.nas draw_slash45b #縞々/45度右下がり
n_thukai_stripes.nas draw_cross #縞々/クロス
n_thukai_stripes.nas draw_cross45 #縞々/クロス45度


猫ペイントの「script」フォルダの中、「menu」フォルダの中に、
DLした n_thukai_stripes.nas を入れて、user_list に上の緑の文字列をコピペすると使えるようになります。


縦・横線のみが欲しい場合、スクリプトのソースは続きにあります。

続きを読む
タグ:スクリプト
posted by むらせ at 2010年11月22日 17:56 | スクリプト | このブログの読者になる | 更新情報をチェックする

スラッシュスクリプト

先日の縦・横スクリプトの斜線版です。
45度・135度固定と、斜線の角度も自由にできるスクリプトで3種となってます。
角度固定はクリック2回で幅だけ指定。
角度自由は、最初のクリック2回で斜線角度を作り、3回目のクリックで幅を決めます。

スクリプトのテキスト
右クリックで保存してから、拡張子.txt は.nas に変更してください。
0line2.txt ←斜線のみ
n_thukai_stripes.nas ←縦・横・斜線全て

n_thukai_stripes.nas draw_border #縞々/ボーダー
n_thukai_stripes.nas draw_stripe #縞々/ストライプ
n_thukai_stripes.nas draw_slash #縞々/スラッシュ
n_thukai_stripes.nas draw_slash45a #縞々/45度右上がり
n_thukai_stripes.nas draw_slash45b #縞々/45度右下がり
n_thukai_stripes.nas draw_cross #縞々/クロス
n_thukai_stripes.nas draw_cross45 #縞々/クロス45度


猫ペイントの「script」フォルダの中、「menu」フォルダの中に、
DLした n_thukai_stripes.nas を入れて、user_list に上の緑の文字列をコピペすると使えるようになります。

posted by むらせ at 2010年11月25日 16:23 | スクリプト | このブログの読者になる | 更新情報をチェックする