モジュール関連

同梱モジュール その1

ExtensionのためのPythonモジュールを自分用にまとめてあります。

inkex.py

simplestyle.py

simplepath.py

parsePath(d)
引数

pathのd属性

戻り値

[[command, [座標リスト]],...]

参考

cubicsuperpath.parsePath()メソッドで使用されている。
座標データが欲しいだけならそちらの方が良い。

cubicsuperpath.py

parsePath(d)
引数

pathのd属性

戻り値

[[[[入る側ハンドルのX座標, Y座標],[ノードのX座標, Y座標],[出る側ハンドルのX座標, Y座標]],...],[あれば合成パスのデータが続く],...]

使用例
import cubicsuperpath
...
    for id, path in self.selected.iteritems():
        for pathData in cubicsuperpath.parsePath(path.get('d')):
            for pointData in pathData:
                handleIn  = pointData[0]
                node      = pointData[1]
                handleOut = pointData[2]
                ...
                attr = {
                    inkex.addNS('cx', 'sodipodi'): str(node[0]),
                    inkex.addNS('cy', 'sodipodi'): str(node[1]),
                    ...
                }

simpletransform.py

fuseTransform(path)

指定パスに適用されているtransform属性をd属性に適用してtransform属性を削除します。

引数
node(svg:path)
戻り値
---
使用例
import simpletransform
...
    for id, path in self.selected.iteritems():
        simpletransform.fuseTransform(path)
補足

roughBBox(cubicPath)

cubicPathデータ内で最大最小の座標を返します。

引数
cubicPath(cubicsuperpath.parsePath(d)の戻り値)
戻り値
[minX, maxX, minY, maxY]
使用例
import simpletransform, cubicsuperpath
...
    bbox = simpletansform.roughBBox(cubicsuperpath.parsePath(path.get('d')))
refinedBBox(cubicPath)

cubicPathデータで描かれるパスのバウンディングボックスの座標を返します。

引数
cubicPath(cubicsuperpath.parsePath(d)の戻り値)
戻り値
[minX, maxX, minY, maxY]
使用例
import simpletransform, cubicsuperpath
...
    bbox = simpletansform.refinedBBox(cubicsuperpath.parsePath(path.get('d')))

※roughBBox()とrefinedBBox()の違い

computeBBox(pathlist)

複数パス(Font除く)全体のバウンディングボックスの座標を返します。

引数
pathlist
戻り値
[minX, maxX, minY, maxY]
使用例
import simpletransform
...
    alist = []
    for id, path in self.selected.iteritems():
        alist.append(path)
    bbox = simpletransform.computeBBox(alist)

引数はパスリストのみを受け付けるので、idが入っているとエラーが返ってきます。
選択アイテムのバウンディングボックスを取得する場合は上のようにリストの作りなおしをする必要があります。

その他
d属性を持たないオブジェクトのバウンディングボックス(Font除く)も取得でき、パスの変換も必要ないので、refinedBBox()より使い勝手が良いかもしれません。

その他

Extension内ではパスをnodeと記述しているけれど、パスを構成する点と混同した。誤訳なのか?