2023年8月6日日曜日

 






import bpy


import math




# 小数の桁数を指定


decimal_places = 1




def create_plane_at_position(position, width, height, name, x, y, z):


    # 平面を作成(指定した座標に)


    bpy.ops.mesh.primitive_plane_add(size=1, location=position)


    plane = bpy.context.active_object




    # 幅と高さを設定


    plane.scale = (width, height, 1)




    # マテリアルを作成


    material = bpy.data.materials.new(name="Material_" + name)


    plane.data.materials.append(material)




    # マテリアルの設定


    material.use_nodes = False


    material.diffuse_color = (0.0, 1.0, 0.0, 1.0)  # 緑色 (R:0.0, G:1.0, B:0.0, A:1.0)




    # オブジェクトの名前を設定


    formatted_name = "{} ({:.{}f}, {:.{}f}, {:.{}f})".format(name, x, decimal_places, y, decimal_places, z, decimal_places)


    plane.name = formatted_name




def create_cone_or_circle_at_position(position, radius, height, name, x, y, z):


    if position == (0, 0, 0):


        # (0, 0, 0) の場合は円を作成


        bpy.ops.mesh.primitive_circle_add(radius=radius, location=position)


        obj = bpy.context.active_object


    else:


        # それ以外の場合は円錐を作成


        bpy.ops.mesh.primitive_cone_add(vertices=32, radius1=radius, radius2=0, depth=height, location=position)


        obj = bpy.context.active_object




        # 円錐の底面中心を (0, 0, 0) から遠ざける向きを計算


        direction = math.atan2(position[1], position[0])


        distance = math.sqrt(position[0]**2 + position[1]**2 + position[2]**2)


        angle = math.acos(position[2] / distance)


        obj.rotation_euler = (angle + math.pi, 0, direction + math.pi / 2)  # Y軸回りに90度回転




    # マテリアルを作成


    material = bpy.data.materials.new(name="Material_" + name)


    obj.data.materials.append(material)




    # マテリアルの設定


    material.use_nodes = False


    material.diffuse_color = (1.0, 0.0, 0.0, 1.0)  # 赤色 (R:1.0, G:0.0, B:0.0, A:1.0)




    # オブジェクトの名前を設定


    formatted_name = "{} ({:.{}f}, {:.{}f}, {:.{}f})".format(name, x, decimal_places, y, decimal_places, z, decimal_places)


    obj.name = formatted_name




# 正方形の面と円錐または円を作成


size = 0.3  # 正方形の一辺の長さ


spacing = 1.0  # 1間隔の大きさ




for i in range(-5, 6):  # -5から5までの座標に作成


    x = i * spacing


    y = 0


    z = 0




    position = (x, y, z)


    plane_name = "地図位置"


    obj_name = "事象情報"


    


    create_plane_at_position(position, size, size, plane_name, x, y, z)


    create_cone_or_circle_at_position(position, math.sqrt(2) * size / 2, size / 2, obj_name, x, y, z)





















https://mokuji000zionad.hatenablog.com/

配布ファイル 20231005 遠近法モード 表示画面の大きさ

  今日の書き出し設定 項目メモ帳 2023: 20231005   立方体と 光線 https://2023na2022.blogspot.com/2023/10/20231005.html https://mokuji000zionad.hatenablog.com/