スクリプトのメモ
使用環境はGentoo Linux でinkscape-0.46。
まずはスクリプトの動作について。
1.
起動時に
~/.inkscape/extensions/*.inx
を読み込んでEffectsメニューに登録する。
2.
登録されたメニューを実行すると
$ python rect.py --id=rect2383 /tmp/ink_ext_XXXXXX.svgT8W5WU
という感じでキックされる。
最後の引数がテンポラリのsvg入力ファイルで、途中の引数は--hoge=fuga形式のオプションが続く。
3.
引数最後のsvgを読み込んで処理して標準出力に吐き出す。
pythonでinkex.pyを使う雛形
#!/usr/bin/env python import sys sys.path.append('/usr/share/inkscape/extensions') import inkex import simplestyle class Pai(inkex.Effect): def __init__(self): inkex.Effect.__init__(self) def effect(self): pass e = Pai() e.affect()
affectがコールされると引数最後のsvgを読み込んでxmlとしてパースしてself.documentにセット。
effectをコール。
self.documentを再度xmlとして標準出力に吐き出すという一連の動作をする。
とりえあず四角を描くスクリプトを作る
事前に空っぽの画像ファイルと四角だけを描いたファイルをinkscapeで作成して保存。
差分を見る.
$ diff empty.svg rect.svg 16c16 < sodipodi:docname="empty.svg" --- > sodipodi:docname="rect.svg" 62c62,70 < id="layer1" /> --- > id="layer1"> > <rect > style="fill:#0000ff;fill-rule:evenodd;stroke:#000000;stroke-width:1px;stroke-linecap:butt;stroke-linejoin:miter;stroke-opacity:1" > id="rect2423" > width="314.28571" > height="268.57144" > x="180" > y="238.07646" /> > </g>
配下にを作る。
def effect(self): rect=inkex.etree.SubElement(self.current_layer, 'rect') rect.set('style', simplestyle.formatStyle({ 'stroke':'#000000' })) rect.set('width', str(100)) rect.set('height', str(150)) rect.set('x', str(0)) rect.set('y', str(0))
雛形のeffectメソッドを改造する。
一応黒い四角が出現した。