詰まって、4時間ぐらい吹き飛ばされたため、個人用メモ。
したいこと
BlenderでSVGを読み込み、メッシュ化する。すると、煮るなり焼くなり押し出しするなり、出来るようになるので例えば、SVGファイルをドラッグアンドドロップするだけで、マグネットのSTLファイルを吐き出すプログラムなどを作れる。
ちょっとググって見る
ぴったりなページ、あるじゃないの!と思い、やってみました。
しかし、そう簡単には行かないのが世の常。エラーが出てしまいました。つまり、出来ないよ、と言っているわけです。類似サイトにあるサンプルコードも見て回りましたが、どれを行ったとしても。やはり同じエラーが出てしまう......。大変困りました。
RuntimeError: Operator bpy.ops.object.convert.poll() failed, context is incorrect
解決策
このページを見つけるのに、3時間以上の時間を費やしていました。
簡単に言うと、単にselectするだけでなく、アクティブオブジェクトにしてやらないといけない、ということですね。ということで、以下のコードで想定通り動きました。
toMesh.py
bpy.ops.import_curve.svg(filepath=r"D:\test.svg")
bpy.ops.object.select_all(action='SELECT') //selectする
name=bpy.context.selected_objects[0].name
bpy.context.view_layer.objects.active = bpy.data.objects[name] //アクティブにする
bpy.ops.object.convert(target='MESH')
もっといい方法があれば教えてください。
以上。