FC2ブログ

スポンサーサイト

上記の広告は1ヶ月以上更新のないブログに表示されています。
新しい記事を書く事で広告が消せます。

blenderで複数オブジェクトの表示設定をまとめて変更するスクリプト

blenderで、オブジェクトの名前表示、ワイヤフレーム表示などの設定を複数オブジェクトに対してまとめて出来ないようなので、まとめて設定するためのスクリプトを作ってみました。

ここで紹介するスクリプトを実行すると、下図右下の「DisplayPanelExt」というパネルが追加され、これらのボタンを押すと、現在選択されている全てのオブジェクトに対して表示設定を変更することが出来ます。

snapshot_223_130929_162233.png


・スクリプト
import bpy



class SelObjectsNameEnable(bpy.types.Operator):
    bl_idname = "object.disp_name_enable"
    bl_label = "SelObjectsNameEnable"
    def execute(self, context):
        for obj in bpy.data.objects:
            if obj.select: obj.show_name = True
        return {'FINISHED'}

class SelObjectsNameDisable(bpy.types.Operator):
    bl_idname = "object.disp_name_disable"
    bl_label = "SelObjectsNameDisable"
    def execute(self, context):
        for obj in bpy.data.objects:
            if obj.select: obj.show_name = False
        return {'FINISHED'}


class SelObjectsWireEnable(bpy.types.Operator):
    bl_idname = "object.disp_wire_enable"
    bl_label = "SelObjectsWireEnable"
    def execute(self, context):
        for obj in bpy.data.objects:
            if obj.select: obj.show_wire = True
        return {'FINISHED'}

class SelObjectsWireDisable(bpy.types.Operator):
    bl_idname = "object.disp_wire_disable"
    bl_label = "SelObjectsWireDisable"
    def execute(self, context):
        for obj in bpy.data.objects:
            if obj.select: obj.show_wire = False
        return {'FINISHED'}


class SelObjectsAllEdgesEnable(bpy.types.Operator):
    bl_idname = "object.disp_all_edges_enable"
    bl_label = "SelObjectsAllEdgesEnable"
    def execute(self, context):
        for obj in bpy.data.objects:
            if obj.select: obj.show_all_edges = True
        return {'FINISHED'}

class SelObjectsAllEdgesDisable(bpy.types.Operator):
    bl_idname = "object.disp_all_edges_disable"
    bl_label = "SelObjectsAllEdgesDisable"
    def execute(self, context):
        for obj in bpy.data.objects:
            if obj.select: obj.show_all_edges = False
        return {'FINISHED'}


class SelObjectsXRayEnable(bpy.types.Operator):
    bl_idname = "object.disp_xray_enable"
    bl_label = "SelObjectsXRayEnable"
    def execute(self, context):
        for obj in bpy.data.objects:
            if obj.select: obj.show_x_ray = True
        return {'FINISHED'}

class SelObjectsXRayDisable(bpy.types.Operator):
    bl_idname = "object.disp_xray_disable"
    bl_label = "SelObjectsXRayDisable"
    def execute(self, context):
        for obj in bpy.data.objects:
            if obj.select: obj.show_x_ray = False
        return {'FINISHED'}


class SelObjectsTransparentEnable(bpy.types.Operator):
    bl_idname = "object.disp_transparent_enable"
    bl_label = "SelObjectsTransparentEnable"
    def execute(self, context):
        for obj in bpy.data.objects:
            if obj.select: obj.show_transparent = True
        return {'FINISHED'}

class SelObjectsTransparentDisable(bpy.types.Operator):
    bl_idname = "object.disp_transparent_disable"
    bl_label = "SelObjectsTransparentDisable"
    def execute(self, context):
        for obj in bpy.data.objects:
            if obj.select: obj.show_transparent = False
        return {'FINISHED'}


class SelObjectVisPanel(bpy.types.Panel):
    """Creates a Panel in the scene context of the properties editor"""
    bl_label = "DisplayPanelExt"
    bl_idname = "OBJECT_PT_DISP_EXT"
    bl_space_type = 'PROPERTIES'
    bl_region_type = 'WINDOW'
    bl_context = "object"

    def draw(self, context):
        layout = self.layout
        scene = context.scene

        layout.label(text="Name:")
        row = layout.row(align=True)
        row.operator("object.disp_name_enable", text="Show")
        row.operator("object.disp_name_disable", text="Hide")

        layout.label(text="Wire:")
        row = layout.row(align=True)
        row.operator("object.disp_wire_enable", text="Show")
        row.operator("object.disp_wire_disable", text="Hide")

        layout.label(text="AllEdges:")
        row = layout.row(align=True)
        row.operator("object.disp_all_edges_enable", text="Show")
        row.operator("object.disp_all_edges_disable", text="Hide")

        layout.label(text="X-Ray:")
        row = layout.row(align=True)
        row.operator("object.disp_xray_enable", text="Show")
        row.operator("object.disp_xray_disable", text="Hide")

        layout.label(text="Transparent:")
        row = layout.row(align=True)
        row.operator("object.disp_transparent_enable", text="Show")
        row.operator("object.disp_transparent_disable", text="Hide")

def register():
    bpy.utils.register_class(SelObjectsNameEnable)
    bpy.utils.register_class(SelObjectsNameDisable)
    bpy.utils.register_class(SelObjectsWireEnable)
    bpy.utils.register_class(SelObjectsWireDisable)
    bpy.utils.register_class(SelObjectsAllEdgesEnable)
    bpy.utils.register_class(SelObjectsAllEdgesDisable)
    bpy.utils.register_class(SelObjectsXRayEnable)
    bpy.utils.register_class(SelObjectsXRayDisable)
    bpy.utils.register_class(SelObjectsTransparentEnable)
    bpy.utils.register_class(SelObjectsTransparentDisable)
    bpy.utils.register_class(SelObjectVisPanel)

def unregister():
    bpy.utils.unregister_class(SelObjectsNameEnable)
    bpy.utils.unregister_class(SelObjectsNameDisable)
    bpy.utils.unregister_class(SelObjectsWireEnable)
    bpy.utils.unregister_class(SelObjectsWireDisable)
    bpy.utils.unregister_class(SelObjectsAllEdgesEnable)
    bpy.utils.unregister_class(SelObjectsAllEdgesDisable)
    bpy.utils.unregister_class(SelObjectsXRayEnable)
    bpy.utils.unregister_class(SelObjectsXRayDisable)
    bpy.utils.unregister_class(SelObjectsTransparentEnable)
    bpy.utils.unregister_class(SelObjectsTransparentDisable)
    bpy.utils.unregister_class(SelObjectVisPanel)

if __name__ == "__main__":
    register()
スポンサーサイト

テーマ : プログラミング
ジャンル : コンピュータ

コメントの投稿

非公開コメント

カレンダー
07 | 2018/08 | 09
- - - 1 2 3 4
5 6 7 8 9 10 11
12 13 14 15 16 17 18
19 20 21 22 23 24 25
26 27 28 29 30 31 -
最新記事
カテゴリ
Qt (21)
SDL (2)
MFC (2)
検索フォーム
月別アーカイブ
最新コメント
最新トラックバック
RSSリンクの表示
リンク
リンク(管理用)
FC2カウンター
上記広告は1ヶ月以上更新のないブログに表示されています。新しい記事を書くことで広告を消せます。