inkscapeでエクステンションを自作してみた2

エクステンションを自作するにあたり、前回はinxファイルを解説した。

今回はもう一方のpyファイルを解説する。

pyファイルにはエクステンションの中身を書くので、ここが本体、メインの部分である。


まずは1行目。

1行目ではファイルのimportを行う。

何をimportしていいのかよくわからないけれども、とりあえずinkexは必須。

今回書いたプログラムではsimplestyleというのもimportしないと動かなかった。


次はクラスの定義

プログラミングをある程度知っている人はclassと聞いてすぐにピンとくると思うが、全く知らない人にとってはなんのこっちゃだと思う。

とはいえ、classはclassだ。

それ以外に説明のしようがない。

AddRectっていうのはclassの名前。

括弧の中のinkex.Effectは、

inkex.Effectっていうのを受け取ってAddrectさんが何かアクションするよ

ってこと。


classというのは関数を持ってる。

__init__って名前の関数だ。

ここでは__init__って名前の関数を定義してるんだけど、

実際何をやっているのか、僕にはよく分かってない。

たぶんinkex.Effectが持ってる__init__って関数を実行してるんだと思う。

この部分は他のpyファイルも全く同じだったので、多分書かなきゃいけないんだと思う。


んで、

ここが本体。

parentとかは良くわからないけど、とりあえず「どこのレイヤーに書く?」ってことだと思う。

styleはinkscape触ってる人ならわかると思うから省略。

attribsの中にある「simplestyle~」ってやつは良くわからん。

ぐぐったらこんな感じで書いてあったので真似した。

ひとつ言えるのは、直前で定義したstyleを引数(括弧の中)に取ってること。

「circ=」の行は定義した四角形を生成してるんだろうけど、なぜ「circ=」って書かれてるのかよくわからない。

あとinkex.addNSっていう関数が色々オブジェクトを追加する関数みたい。


最後はこんな感じ。

AddRectっていうクラスの物体(インスタンス?)を生成してeって名前つけました。

eを実行してください。

という感じの意味だと思います。


全体としては次の図の通り。

ただしpythonはインデントが命なので、真似する人はその辺気をつけて。

次回は、エクステンション実行時に数値の入力欄を出して、指定した場所に指定したサイズの矩形を作れるようにしたいなぁ。

この記事が気に入ったらサポートをしてみませんか?