本日は小ネタ枠です。
以前紹介したBlenderのPythonスクリプトをファイルドラッグで起動する方法を記事にします。
サンプルスクリプト
以下の記事で作成した ifc ファイルの画像を出力するサンプルスクリプトで試します。
bluebirdofoz.hatenablog.com
スクリプト内で直接記述していた読み込みファイルのパスを引数から受け取るよう修正します。
Python での引数の取得は、以下の記述で可能です。
# sysインポート import sys # sys.argvから引数を取得 args=sys.argv
以下の通りスクリプトを修正しました。
・3DRender_args.py
# 不要なシステムパスの削除 import sys, os pythonexedir=os.path.dirname(sys.executable) del sys.path[5:] sys.path.append(pythonexedir + '\\lib\\site-packages') sys.path.append(pythonexedir + '\\lib\\site-packages\\blender') # 変換対象のファイルパスを取得 args=sys.argv # 2つ目の引数が追加のファイルパス importfilepath=args[1] # bpy インポート import bpy # ユーザ設定での IfcBlender アドオンの有効化 bpy.ops.preferences.addon_enable(module='io_import_scene_ifc') # デフォルトの Cube を削除 bpy.data.objects.remove(bpy.data.objects['Cube']) # ifcファイルの読み込み bpy.ops.import_scene.ifc(filepath=importfilepath) # ifcファイルの大きさ調整 for item in bpy.data.objects: # 全メッシュオブジェクトを対象に処理を行う if item.type == 'MESH': # 大きさを15倍に設定する item.scale[0] = 15.0 item.scale[1] = 15.0 item.scale[2] = 15.0 # レンダリングの実行と画像ファイルの出力 bpy.context.scene.render.engine = 'CYCLES' bpy.context.scene.render.resolution_percentage = 50 bpy.ops.render.render() bpy.data.images['Render Result'].save_render(filepath='.\image.png')