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はインデントが命なので、真似する人はその辺気をつけて。
次回は、エクステンション実行時に数値の入力欄を出して、指定した場所に指定したサイズの矩形を作れるようにしたいなぁ。
この記事が気に入ったらサポートをしてみませんか?