import bpy
# 作成するコレクション名
zion_collection_name = "線分慣性系"
# コレクションが既に存在する場合は、既存のコレクションを使用する
if zion_collection_name in bpy.data.collections:
zioncol = bpy.data.collections[zion_collection_name]
else:
# コレクションが存在しない場合は、新しいコレクションを作成する
zioncol = bpy.data.collections.new(zion_collection_name)
bpy.context.scene.collection.children.link(zioncol)
半径30のサークルを作成し、xy平面(z=0)に配置するスクリプトは以下の通りです。
pythonimport bpy
# オブジェクトの名前
obj_name = "円板"
# サークルを作成する
bpy.ops.mesh.primitive_circle_add(radius=30.0, fill_type='TRIFAN', location=(0.0, 0.0, 0.0))
# オブジェクトを取得する
obj = bpy.context.object
# オブジェクトに名前を付ける
obj.name = obj_name
# オブジェクトを移動する
obj.location = (0.0, 0.0, 0.0)
このスクリプトを実行すると、半径30の円盤が作成され、xy平面(z=0)に配置されます。オブジェクトの名前は "円板" に設定されます。
半径30のサークルを作成し、xy平面(z=0)に配置するスクリプトは以下の通りです。
import bpy
# 作成するコレクション名
zion_collection_name = "線分慣性系"
# コレクションが既に存在する場合は、既存のコレクションを使用する
if zion_collection_name in bpy.data.collections:
zioncol = bpy.data.collections[zion_collection_name]
else:
# コレクションが存在しない場合は、新しいコレクションを作成する
zioncol = bpy.data.collections.new(zion_collection_name)
bpy.context.scene.collection.children.link(zioncol)
# オブジェクトの名前
zionobj_name = "円板 z2=0"
# サークルを作成する
bpy.ops.mesh.primitive_circle_add(radius=30.0, fill_type='TRIFAN', location=(0.0, 0.0, 0.0))
# オブジェクトを取得する
zionobj = bpy.context.object
# オブジェクトに名前を付ける
zionobj.name =zionobj_name
# オブジェクトを移動する
zionobj.location = (0.0, 0.0, 0.0)
# コレクションにオブジェクトをリンクする
zioncol.objects.link(zionobj)
オブジェクトが2回登録されてしまう問題については、以下のように修正することができます。
pythonimport bpy
# 作成するコレクション名
zion_collection_name = "線分慣性系"
# コレクションが既に存在する場合は、既存のコレクションを使用する
if zion_collection_name in bpy.data.collections:
zioncol = bpy.data.collections[zion_collection_name]
else:
# コレクションが存在しない場合は、新しいコレクションを作成する
zioncol = bpy.data.collections.new(zion_collection_name)
bpy.context.scene.collection.children.link(zioncol)
# オブジェクトの名前
zionobj_name = "円板 z2=0"
# オブジェクトがすでに存在する場合は、既存のオブジェクトを使用する
if zionobj_name in bpy.data.objects:
zionobj = bpy.data.objects[zionobj_name]
else:
# サークルを作成する
bpy.ops.mesh.primitive_circle_add(radius=30.0, fill_type='TRIFAN', location=(0.0, 0.0, 0.0))
# オブジェクトを取得する
zionobj = bpy.context.object
# オブジェクトに名前を付ける
zionobj.name = zionobj_name
# オブジェクトを移動する
zionobj.location = (0.0, 0.0, 0.0)
# コレクションにオブジェクトをリンクする
zioncol.objects.link(zionobj)
このように修正することで、オブジェクトが2回登録されることを避けることができます。ただし、同じ名前のオブジェクトが存在する場合は、既存のオブジェクトを使用するため、オブジェクトのプロパティが異なる場合は注意が必要です。
オブジェクトが2回登録されてしまう問題については、以下のように修正することができます。
import bpy
# 作成するコレクション名
zion_collection_name = "線分慣性系"
# コレクションが既に存在する場合は、既存のコレクションを使用する
if zion_collection_name in bpy.data.collections:
zioncol = bpy.data.collections[zion_collection_name]
else:
# コレクションが存在しない場合は、新しいコレクションを作成する
zioncol = bpy.data.collections.new(zion_collection_name)
bpy.context.scene.collection.children.link(zioncol)
# オブジェクトの名前
zionobj_name = "円板 z2=0"
# オブジェクトがすでに存在する場合は、既存のオブジェクトを使用する
if zionobj_name in bpy.data.objects:
zionobj = bpy.data.objects[zionobj_name]
else:
# サークルを作成する
bpy.ops.mesh.primitive_circle_add(radius=30.0, fill_type='TRIFAN', location=(0.0, 0.0, 0.0))
# オブジェクトを取得する
zionobj = bpy.context.object
# オブジェクトに名前を付ける
zionobj.name = zionobj_name
# オブジェクトを移動する
zionobj.location = (0.0, 0.0, 0.0)
# コレクションにオブジェクトをリンクする
zioncol.objects.link(zionobj)
このように修正することで、オブジェクトが2回登録されることを避けることができます。ただし、同じ名前のオブジェクトが存在する場合は、既存のオブジェクトを使用するため、オブジェクトのプロパティが異なる場合は注意が必要です。
# 元のコレクションから円板を削除する
import bpy
old_col = bpy.data.collections[Scene Collection]
old_col.objects.unlink(obj)
bbb