2023年7月5日水曜日

20230706 円柱線路 追加

 a

















コレクション名 ”線路”

だけを 作る



import bpy


# Collection name

collection_name = "線路"


# Create the collection if it doesn't exist

if collection_name not in bpy.data.collections:

    collection = bpy.data.collections.new(collection_name)

    bpy.context.scene.collection.children.link(collection)

else:

    collection = bpy.data.collections[collection_name]









blender python で 円柱を作る


円柱の中心 y=0

円柱の中心軸が x軸に平行

円柱の半径 0.05

円柱の長さ 20


名前を付ける "線路レール_y”

y は 円柱の中心の y成分 数値


y軸を 回転軸に 90度回転させる




import bpy


# パラメータ

center_y = 0.0  # 円柱の中心のy座標

radius = 0.05  # 円柱の半径

length = 20.0  # 円柱の長さ

name = "線路レール_y"  # オブジェクト名


# 円柱を作成

bpy.ops.mesh.primitive_cylinder_add(

    radius=radius,

    depth=length,

    location=(0, center_y, 0),

    rotation=(0, 0, 0)

)


# 作成したオブジェクトの名前を変更

obj = bpy.context.active_object

obj.name = name


# y軸を中心に90度回転

bpy.ops.object.select_all(action='DESELECT')

obj.select_set(True)

bpy.context.view_layer.objects.active = obj

bpy.ops.transform.rotate(value=1.5708, orient_axis='Y')


# オブジェクトのマテリアルを作成

material = bpy.data.materials.new(name="Cylinder Material")

material.diffuse_color = (0.8, 0.2, 0.2, 1.0)  # RGB色を設定


# オブジェクトにマテリアルを割り当て

obj.data.materials.append(material)


# 作成したオブジェクトを選択解除

obj.select_set(False)








円柱を4つ 作って


円柱の中心 y=0 で作る

円柱の中心 y=2ー√3 で作る

円柱の中心 y=√3 で作る

円柱の中心 y=ー√3 で作る

すべて

y軸を回転軸に 90度回転


import bpy

import math


# パラメータ

radius = 0.05  # 円柱の半径

length = 20.0  # 円柱の長さ

names = ["Cylinder1", "Cylinder2", "Cylinder3", "Cylinder4"]  # オブジェクト名


center_positions = [0.0, 2 - math.sqrt(3), math.sqrt(3), -math.sqrt(3)]  # 中心位置のy座標


for i, center_y in enumerate(center_positions):

    # 円柱を作成

    bpy.ops.mesh.primitive_cylinder_add(

        radius=radius,

        depth=length,

        location=(0, center_y, 0),

        rotation=(0, 0, 0)

    )


    # 作成したオブジェクトの名前を変更

    obj = bpy.context.active_object

    obj.name = names[i]


    # y軸を中心に90度回転

    bpy.ops.object.select_all(action='DESELECT')

    obj.select_set(True)

    bpy.context.view_layer.objects.active = obj

    bpy.ops.transform.rotate(value=1.5708, orient_axis='Y')


    # オブジェクトのマテリアルを作成

    material = bpy.data.materials.new(name="Cylinder Material")

    material.diffuse_color = (0.8, 0.2, 0.2, 1.0)  # RGB色を設定


    # オブジェクトにマテリアルを割り当て

    obj.data.materials.append(material)


    # 作成したオブジェクトを選択解除

    obj.select_set(False)







ああああああああああああああ



blender python で

トーラスを複数 作る

連番で 名前を付ける


名前の付け方は 

トーラスの中心位置 x,y,zなら ”torus_x,y,z"

x,y,zは 小数点1桁まで 使う

 

トーラスのマイナー半径  0.02


トーラスの中心 

0,-√3,0

0,-2√3,0

0,-10,0



指定した

トーラス中心から

-1,0,0

までの距離を求めて

radius_zionad と定義



トーラスの半径を

2*radius_zionad 


トーラスを描く



import bpy

import math


# パラメータ

minor_radius = 0.02  # トーラスのマイナー半径


center_positions = [(0, -math.sqrt(3), 0),

                    (0, -2 * math.sqrt(3), 0),

                    (0, -10, 0)]  # トーラスの中心位置


target_position = (-1, 0, 0)  # 目標位置

radius_zionad = math.sqrt((target_position[0] - center_positions[0][0]) ** 2 +

                          (target_position[1] - center_positions[0][1]) ** 2 +

                          (target_position[2] - center_positions[0][2]) ** 2)  # 中心から目標位置までの距離

torus_radius = 2 * radius_zionad  # トーラスの半径


# トーラスを作成

for i, center in enumerate(center_positions):

    # トーラスを作成

    bpy.ops.mesh.primitive_torus_add(

        align='WORLD',

        major_radius=torus_radius,

        minor_radius=minor_radius,

        location=center,

    )


    # 作成したオブジェクトの名前を設定

    obj = bpy.context.active_object

    name = f"torus_{center[0]:.1f},{center[1]:.1f},{center[2]:.1f}"

    obj.name = name





y= √3の 直線と

y=-√3を中心とする円周の交点に

半径 0.2 の球体を描く


円周の中心座標は (0,ー√3,0)

円周の半径4


import bpy

import math


# パラメータ

sphere_radius = 0.2  # 球体の半径

circle_radius = 4.0  # 円周の半径


# 円周の中心座標

circle_center = (0, -math.sqrt(3), 0)


# 円周と直線の交点のy座標

intersection_y = math.sqrt(3)


# 交点のx座標

intersection_x = [-2, 2]


# 交点を中心に球体を作成

for x in intersection_x:

    intersection_point = (x, intersection_y, 0)

    bpy.ops.mesh.primitive_uv_sphere_add(

        radius=sphere_radius,

        location=intersection_point

    )


    # 作成したオブジェクトの名前を設定

    obj = bpy.context.active_object

    obj.name = "Sphere_{}".format(x)


# 円周を作成

bpy.ops.mesh.primitive_circle_add(

    radius=circle_radius,

    location=circle_center

)




半径0.2の球体を作る

0,+√3、0


import bpy


# パラメータ

sphere_radius = 0.2  # 球体の半径

center_point = (0, 3 ** 0.5, 0)  # 球体の中心座標 (0, √3, 0)


# 球体を作成

bpy.ops.mesh.primitive_uv_sphere_add(

    radius=sphere_radius,

    location=center_point

)


# 作成したオブジェクトの名前を設定

obj = bpy.context.active_object

obj.name = "Sphere y=√3"







半径0.2の球体を作る

-1,+√3、0

1,+√3、0


import bpy


# パラメータ

sphere_radius = 0.2  # 球体の半径

center_points = [(-1, 3 ** 0.5, 0), (1, 3 ** 0.5, 0)]  # 球体の中心座標


# 球体を作成

for center_point in center_points:

    bpy.ops.mesh.primitive_uv_sphere_add(

        radius=sphere_radius,

        location=center_point

    )


    # 作成したオブジェクトの名前を設定

    obj = bpy.context.active_object

    obj.name = f"Sphere_{center_point[0]}_{center_point[1]}_{center_point[2]}"






aaaaa