2023年4月18日火曜日

20230419 00b  ガリレオ先輩の帆船 箱庭

 

成功 十字額縁 平行移動 縦横 2つのスクリプト

4月 16, 2023

https://chatgpt111blender2023.blogspot.com/2023/04/blog-post_16.html





https://polyhaven.com/a/lilienstein







# 平行移動  xz  縦 額縁


import bpy

import math


# 画像ファイルのパス

image_path = r"C:\aaa 2023 dondon\aaa2023いつもの\test_image\main-image デューラー メトロポリタン.jfif"


# アニメーションのフレーム数を設定

animation_frames = 2000


# 平行移動距離を設定

translation_distance = 0.01


# 画像を開く

try:

    image = Image.open(image_path)

except:

    # ファイルが読み込めなかった場合は縦3横4の比でオブジェクトを作成する

    width, height = 4, 3

else:

    # 画像の幅と高さを取得する

    width, height = image.size


# サイズを計算する

if width > height:

    size = width

    ratio = height / width

else:

    size = height

    ratio = width / height


# 正方形を作成

bpy.ops.mesh.primitive_plane_add(size=size, enter_editmode=False, align='WORLD', location=(0,0,0))

square_obj = bpy.context.active_object


# オブジェクトに名前を付ける

square_obj.name = "xz 平行移動 額縁"


# オブジェクトを指定した位置に移動する

square_obj.location = (-6, 10, 0)


# アスペクト比を保ったままオブジェクトのスケールを変更する

if width > height:

    square_obj.scale[1] = ratio

else:

    square_obj.scale[0] = ratio


# マテリアルを作成

material = bpy.data.materials.new(name="ImageMaterial")

material.use_nodes = True

square_obj.data.materials.append(material)

square_obj.active_material = material


# テクスチャイメージを読み込む

tex_path = image_path

tex = bpy.data.images.load(tex_path)


# テクスチャノードを作成し、マテリアルに接続する

tex_node = material.node_tree.nodes.new("ShaderNodeTexImage")

tex_node.image = tex

tex_node.location = (-400, 0)

output_node = material.node_tree.nodes["Material Output"]

material.node_tree.links.new(tex_node.outputs[0], output_node.inputs[0])


# アニメーションのキーフレームを設定

for i in range(animation_frames+1):

    bpy.context.scene.frame_set(i)

    square_obj.location[0] += translation_distance

    square_obj.keyframe_insert(data_path="location")


# オブジェクトをXZ平面に回転する

square_obj.rotation_euler = (1.5708, 0, 0)


20230419 00a  テスト中 ガリレオ先輩の帆船 箱庭

 

原型 立方体と 頂点の基本セット

4月 18, 2023

https://chatgpt111blender2023.blogspot.com/2023/04/blog-post_18.html


原型 立方体の対角線 面と立体と 辺長さ 3種類

4月 18, 2023

https://chatgpt111blender2023.blogspot.com/2023/04/blog-post_71.html



blender python


先頭業に 設定を定義して

オブジェクト名 obj = zion_name

zion_namer = "円柱”で 1から12番の番号を付け加える


円柱を12本 使って 立方体の骨格を作る


円柱12本が配置される立方体の大きさは 1辺2単位

これも 長さが変えられるように設定


円柱12本が配置される立方体の中心位置も設定できるようにする

初期値は 000


円柱の半径は 0.1 が初期値


想定される 立方体の12の辺に相当する位置に 円柱12本を配置して


以下は、中心が (0, 0, 0) で1辺の長さが2の立方体の12本の辺に沿って円柱を配置するスクリプト例です。



blender が 強制終了する不具合 したから まず1辺 2の立方体をオブジェクト名 付きで 描く 次に 半径 0.1の球体8個を

 立方体の頂点 8つに オブジェクト名 付きで 描く


ここまで やって


ball のオブヘクト名を ball_001 から008 連番にして

ball と ballを 両端とする円柱を半径 0.05 で 12本描けるはず

描いて



import bpy


# 1辺2の立方体を作成

bpy.ops.mesh.primitive_cube_add(size=2, enter_editmode=False, location=(0,0,0))

cube = bpy.context.object

cube.name = "cube"


# 立方体の頂点の座標

vertex_coords = [(1,1,1), (-1,1,1), (-1,-1,1), (1,-1,1), (1,1,-1), (-1,1,-1), (-1,-1,-1), (1,-1,-1)]


# 頂点に球体を作成

for i in range(8):

    bpy.ops.mesh.primitive_uv_sphere_add(radius=0.1, enter_editmode=False, location=vertex_coords[i])

    ball = bpy.context.object

    ball.name = "ball"





zion_length = 2
zion_cube_center = (0, 0, 0) の場合

-1,0,1  

-1,0,-1

1,0,1

1,0,-1 4頂点の正方形と


-1,zion_length,1   の正方形と

-1,-zion_length,1   の正方形 


合わせて 3つの平行な 正方形を描く



import bpy


# 正方形の中心

center = (0, 0, 0)


# 正方形の大きさ

size = 1.0


# 正方形の座標

square_vertices = [

    (center[0] - size/2, center[1], center[2] - size/2),

    (center[0] + size/2, center[1], center[2] - size/2),

    (center[0] + size/2, center[1], center[2] + size/2),

    (center[0] - size/2, center[1], center[2] + size/2)

]


square_edges = [(0,1), (1,2), (2,3), (3,0)]

square_faces = [(0,1,2,3)]


# 正方形を作成する関数

def create_square(x, y, z):

    # Meshデータの作成

    mesh = bpy.data.meshes.new("Square")

    # 座標を変換して、正方形をx,y,zの位置に移動

    vertices = [(vx+x,vy+y,vz+z) for vx,vy,vz in square_vertices]

    # Meshデータに頂点、エッジ、面情報を追加

    mesh.from_pydata(vertices, square_edges, square_faces)

    # オブジェクトの作成

    obj = bpy.data.objects.new("SquareObject", mesh)

    # オブジェクトをシーンに追加

    scene = bpy.context.scene

    scene.collection.objects.link(obj)

    # オブジェクトのマテリアルを設定

    mat = bpy.data.materials.new(name="SquareMaterial")

    obj.data.materials.append(mat)


# 3つの正方形を作成

create_square(0, -1, 0)

create_square(0, 0, 0)

create_square(0, 1, 0)





import bpy


# 正方形の中心

center = (0, 0, 10)


# 正方形の大きさ

size = 1.0


# 正方形の座標

square_vertices = [

    (center[0] - size/2, center[1], center[2] - size/2),

    (center[0] + size/2, center[1], center[2] - size/2),

    (center[0] + size/2, center[1], center[2] + size/2),

    (center[0] - size/2, center[1], center[2] + size/2)

]


square_edges = [(0,1), (1,2), (2,3), (3,0)]

square_faces = [(0,1,2,3)]


# 正方形を作成する関数

def create_square(x, y, z):

    # Meshデータの作成

    mesh = bpy.data.meshes.new("Square")

    # 座標を変換して、正方形をx,y,zの位置に移動

    vertices = [(vx+x,vy+y,vz+z) for vx,vy,vz in square_vertices]

    # Meshデータに頂点、エッジ、面情報を追加

    mesh.from_pydata(vertices, square_edges, square_faces)

    # オブジェクトの作成

    obj = bpy.data.objects.new("SquareObject", mesh)

    # オブジェクトをシーンに追加

    scene = bpy.context.scene

    scene.collection.objects.link(obj)


# 3つの正方形を作成

create_square(0, -1, 0)  # y = -1

create_square(0, 0, 0)   # y = 0

create_square(0, 1, 0)   # y = 1




import bpy

import math

# 楕円のメジャー半径

major_radius = 1.0


# 楕円のマイナー半径

minor_radius = 0.1


# 楕円の座標

ellipse_vertices = []

for i in range(0, 360, 10):

    x = major_radius * cos(radians(i))

    y = minor_radius * sin(radians(i))

    z = 0

    ellipse_vertices.append((x, y, z))


# 楕円を作成する関数

def create_ellipse(x, y, z, obj_name):

    # Meshデータの作成

    mesh = bpy.data.meshes.new(obj_name)

    # 座標を変換して、楕円をx,y,zの位置に移動

    vertices = [(vx+x,vy+y,vz+z) for vx,vy,vz in ellipse_vertices]

    # Meshデータに頂点、エッジ、面情報を追加

    mesh.from_pydata(vertices, [], [])

    mesh.update()

    # オブジェクトの作成

    obj = bpy.data.objects.new(obj_name, mesh)

    # オブジェクトをシーンに追加

    scene = bpy.context.scene

    scene.collection.objects.link(obj)

    

# 楕円を3つ作成

create_ellipse(0, -1, 0, "Ellipse1")

create_ellipse(0, 0, 0, "Ellipse2")

create_ellipse(0, 1, 0, "Ellipse3")










import bpy

import math

import mathutils


# 外接円の半径とトーラスの minor 半径

RADIUS = 1.0

MINOR_RADIUS = 0.05


# トーラスを作成する関数

def create_torus(x, y, z):

    # Meshデータの作成

    mesh = bpy.data.meshes.new("Torus")


    # 頂点を生成する

    verts = []

    for i in range(32):

        theta = 2 * math.pi * i / 32

        for j in range(32):

            phi = 2 * math.pi * j / 32

            x1 = (RADIUS + MINOR_RADIUS * math.cos(phi)) * math.cos(theta)

            y1 = (RADIUS + MINOR_RADIUS * math.cos(phi)) * math.sin(theta)

            z1 = MINOR_RADIUS * math.sin(phi)

            verts.append((x1, y1, z1))


    # 面を生成する

    faces = []

    for i in range(32):

        for j in range(32):

            v1 = i * 32 + j

            v2 = i * 32 + (j + 1) % 32

            v3 = ((i + 1) % 32) * 32 + j

            v4 = ((i + 1) % 32) * 32 + (j + 1) % 32

            faces.append((v1, v2, v4, v3))


    # Meshデータに頂点、面情報を追加する

    mesh.from_pydata(verts, [], faces)


    # オブジェクトを作成する

    obj = bpy.data.objects.new("TorusObject", mesh)


    # オブジェクトを指定位置に移動する

    obj.location = mathutils.Vector((x, y, z))


    # オブジェクトをシーンに追加する

    scene = bpy.context.scene

    scene.collection.objects.link(obj)


# トーラスを3つ生成する

create_torus(0, 0, 0)

create_torus(2, 0, 0)

create_torus(-2, 0, 0)




import bpy

import math

import mathutils


# 外接円の半径とトーラスの minor 半径

RADIUS = 1.0

MINOR_RADIUS = 0.05


# 中央のトーラスの中心座標

zion_torus_center = (1, 0, 10)


正六角形を 正三角形6つで 表示

 




blender python


6つの正三角形で 正六角形を作りたい

正六角形の中心位置を指定できるようにする 先頭行に

正三角形の1辺の長さを指定するだけで 先頭行に


6つの正三角形のオブジェクトを作る

オブジェクトに名前を付ける 先頭行に



blender python 

円柱を作る

半径を指定

中心を指定

長さを指定

スクリプトの先頭に




blender python 

オブジェクト名 

円錐を作る

半径を指定

中心を指定

長さを指定

スクリプトの先頭に


円錐の高さの長さを z軸の 2点で 指定したい 

ensui_top = 0 ensui_bottome =-2 この2点間距離を円錐半径にする



この円錐の z=0と 底面のx=0を結ぶ 半径0.1の円柱を作って




#これから下 全部 一体スクリプト


import bpy

import math

import mathutils


# 三角形の1辺の長さを指定する

triangle_size = 2.0

kakodoai = triangle_size


# 正六角形の中心位置を指定する

hexagon_center = mathutils.Vector((0.0, 0.0, 0.0))


# 6つの正三角形を作成する

for i in range(6):

    # 三角形の頂点を計算する

    vertex1 = mathutils.Vector((math.cos(i * math.pi / 3), math.sin(i * math.pi / 3), 0.0))

    vertex2 = mathutils.Vector((math.cos((i + 1) * math.pi / 3), math.sin((i + 1) * math.pi / 3), 0.0))

    vertex3 = mathutils.Vector((0.0, 0.0, 0.0))


    # 三角形の頂点をサイズに合わせて調整する

    vertex1 *= triangle_size

    vertex2 *= triangle_size

    vertex3 *= triangle_size


    # 三角形のメッシュを作成する

    mesh = bpy.data.meshes.new("Triangle{}".format(i+1))

    mesh.from_pydata([vertex1, vertex2, vertex3], [], [(0, 1, 2)])

    mesh.update()


    # 三角形のオブジェクトを作成する

    obj = bpy.data.objects.new("Triangle{}".format(i+1), mesh)

    bpy.context.scene.collection.objects.link(obj)


# 正六角形の中心にオブジェクトを移動する

for obj in bpy.data.objects:

    obj.location += hexagon_center


# オブジェクトに名前を付ける

for i, obj in enumerate(bpy.data.objects):

    obj.name = "Triangle{}".format(i+1)





import bpy

import math

import mathutils

zion_name = "過去円周 正三角形の辺"


# 円柱のパラメータを指定する

radius = kakodoai  # 半径

length = 0  # 長さ

center = mathutils.Vector((0.0, 0.0, -kakodoai))  # 中心位置


# 円柱のメッシュを作成する

bpy.ops.mesh.primitive_cylinder_add(radius=radius, depth=length, enter_editmode=False, location=center)

obj = bpy.context.active_object


# 円柱のオブジェクト名を設定する

obj.name = zion_name




import bpy

import math

import mathutils

zion_name = "過去円周 正三角形の辺"


# 円柱のパラメータを指定する

radius = kakodoai  # 半径

length = 0  # 長さ

center = mathutils.Vector((0.0, 0.0, - 0.5*3**(0.5)*kakodoai))  # 中心位置


# 円柱のメッシュを作成する

bpy.ops.mesh.primitive_cylinder_add(radius=radius, depth=length, enter_editmode=False, location=center)

obj = bpy.context.active_object


# 円柱のオブジェクト名を設定する

obj.name = zion_name






import bpy

import math

import mathutils


# 円錐のパラメータを指定する

height =  triangle_size # 2点間の距離

radius = height  # 半径

ensui_top = 0  # 上部座標のz値

ensui_bottom = - triangle_size  # 下部座標のz値

center = mathutils.Vector((0.0, 0.0, (ensui_top + ensui_bottom) / 2.0))  # 中心位置

cone_name = "My Cone"  # オブジェクト名


# 円錐のメッシュを作成する

bpy.ops.mesh.primitive_cone_add(radius1=radius, radius2=0.0, depth=height, enter_editmode=False, location=center)

obj = bpy.context.active_object


# オブジェクト名を設定する

obj.name = cone_name



cylinder_name = "My Cylinder"  # オブジェクト名


cylinder_radius = 0.1  # 半径


cylinder_height = height  # 高さ


cylinder_center = mathutils.Vector((0.0, 0.0, 0.0))  # 中心位置


bpy.ops.mesh.primitive_cylinder_add(radius=cylinder_radius, depth=cylinder_height, enter_editmode=False, location=cylinder_center)


cyl_obj = bpy.context.active_object


cyl_obj.name = cylinder_name




正三角形 20230418 tue



import bpy

# コレクションを作成

collection_name = "正三角形"

if collection_name not in bpy.data.collections:

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

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

else:

    zionad_collection = bpy.data.collections[collection_name]







# 座標が (-1, 0, 0), (1, 0, 0), (0, -√3, 0) の正三角形


import bpy
import math

# 頂点座標の設定
v1 = (-1, 0, 0)
v2 = (1, 0, 0)
v3 = (0, -math.sqrt(3), 0)
vertices = [v1, v2, v3]

# メッシュオブジェクトの作成
mesh = bpy.data.meshes.new(name="Triangle")
mesh.from_pydata(vertices, [], [(0, 1, 2)])

# オブジェクトの作成とシーンへの追加
obj = bpy.data.objects.new(name="Triangle", object_data=mesh)
bpy.context.scene.collection.objects.link(obj)










前回のスクリプトを以下のように修正して、中心の正六角形の頂点を (0, -math.sqrt(3), 0) にするようにしました。



正三角形を中心にして隣り合う正三角形を作成し、辺の長さが一致するように配置し、最終的に正六角形を構成する













# 星型 失敗


import bpy
import math
import mathutils

# 正三角形を構成する3つの頂点座標
v1 = mathutils.Vector((-1, 0, 0))
v2 = mathutils.Vector((1, 0, 0))
v3 = mathutils.Vector((0, -math.sqrt(3), 0))

# 中心にある正六角形の頂点座標を計算する
center = mathutils.Vector((0, -math.sqrt(3), 0))
radius = math.sqrt(3)
angle = 2 * math.pi / 6
hexagon_vertices = []
for i in range(6):
    x = center.x + radius * math.cos(i * angle)
    y = center.y + radius * math.sin(i * angle)
    z = center.z
    hexagon_vertices.append(mathutils.Vector((x, y, z)))

# 正六角形を作成する
mesh = bpy.data.meshes.new("HexagonMesh")
hexagon_object = bpy.data.objects.new("HexagonObject", mesh)
hexagon_object.location = center
bpy.context.collection.objects.link(hexagon_object)
mesh.from_pydata(hexagon_vertices, [], [[0, 1, 2], [0, 2, 3], [0, 3, 4], [0, 4, 5], [0, 5, 1], [1, 2, 3, 4, 5]])

# 周囲の5つの正三角形を作成する
triangle_vertices = [v1, v2, v3]
for i in range(5):
    angle = i * 2 * math.pi / 5
    rotation_matrix = mathutils.Matrix.Rotation(angle, 3, 'Z')
    new_vertices = [rotation_matrix @ vertex for vertex in triangle_vertices]
    mesh = bpy.data.meshes.new("TriangleMesh")
    triangle_object = bpy.data.objects.new("TriangleObject", mesh)
    triangle_object.location = center
    triangle_object.rotation_euler = rotation_matrix.to_euler()
    bpy.context.collection.objects.link(triangle_object)
    mesh.from_pydata(new_vertices, [], [[0, 1, 2]])

print("Objects created successfully.")









内接 外接 正六角形 厚さ なし  20230418 tue



import math

edge_length = 4 * math.pi / 3

print(edge_length)


2/(3**(0.5))




# 半径4/(3**(0.5))の円周に 内接する正六角形



import bpy
import math

# 半径と中心座標の設定
radius = 4 / (3 ** (0.5))
center = (0, -3 ** (0.5), 0)

# 正六角形の頂点座標の計算
vertices = []
for i in range(6):
    angle = math.radians(60 * i)
    x = center[0] + radius * math.cos(angle)
    y = center[1] + radius * math.sin(angle)
    z = center[2]
    vertices.append((x, y, z))

# メッシュオブジェクトの作成
mesh = bpy.data.meshes.new(name="Hexagon")
mesh.from_pydata(vertices, [], [(0, 1, 2), (0, 2, 3), (0, 3, 4), (0, 4, 5), (0, 5, 1), (1, 5, 4, 3, 2)])

# オブジェクトの作成とシーンへの追加
obj = bpy.data.objects.new(name="Hexagon", object_data=mesh)
bpy.context.scene.collection.objects.link(obj)


# オブジェクト名を設定する
obj.name = "外接正六角形"






# 半径2の円周に 内接する正六角形



import bpy
import math

# 半径と中心座標の設定
radius = 2
center = (0, -3 ** (0.5), 0)

# 正六角形の頂点座標の計算
vertices = []
for i in range(6):
    angle = math.radians(60 * i)
    x = center[0] + radius * math.cos(angle)
    y = center[1] + radius * math.sin(angle)
    z = center[2]
    vertices.append((x, y, z))

# メッシュオブジェクトの作成
mesh = bpy.data.meshes.new(name="Hexagon")
mesh.from_pydata(vertices, [], [(0, 1, 2), (0, 2, 3), (0, 3, 4), (0, 4, 5), (0, 5, 1), (1, 5, 4, 3, 2)])

# オブジェクトの作成とシーンへの追加
obj = bpy.data.objects.new(name="Hexagon", object_data=mesh)
bpy.context.scene.collection.objects.link(obj)

# オブジェクト名を設定する
obj.name = "内接正六角形"








# 半径 2/(3**(0.5)) の トーラス 0,ー√3,0




# 半径 2/(3**(0.5)) の トーラス 0,ー√3,0

import bpy
import math
from math import radians

# トーラスを作成する
bpy.ops.mesh.primitive_torus_add(major_radius=4/(3**(0.5)), minor_radius=0.05)

# 作成したトーラスを選択する
torus = bpy.context.active_object

# 回転させる軸を選択する
zion_xyz = 'zana'

if zion_xyz == 'xana':
    # 軸を中心に90度回転させる
    torus.rotation_euler[0] = radians(0)
    torus.rotation_euler[1] = radians(90)
    torus.rotation_euler[2] = radians(0)
    # X軸方向に伸ばす
    torus.scale[0] = 1
    torus.scale[1] = 1
    torus.scale[2] = 1
    
elif zion_xyz == 'yana':
    # 軸を中心に90度回転させる
    torus.rotation_euler[0] = radians(90)
    torus.rotation_euler[1] = radians(0)
    torus.rotation_euler[2] = radians(0)
    # Y軸方向に伸ばす
    torus.scale[0] = 3
    torus.scale[1] = 3
    torus.scale[2] = 3
    
elif zion_xyz == 'zana':
    # Z軸を中心に90度回転させる
    torus.rotation_euler[0] = radians(0)
    torus.rotation_euler[1] = radians(0)
    torus.rotation_euler[2] = radians(0)
    # Z軸方向に伸ばす
    torus.scale[0] = 1
    torus.scale[1] = 1
    torus.scale[2] = 1
    
else:
    print('Invalid rotation axis selected.')

# トーラスの位置を変更する
torus.location = (0, -3**(0.5), 0)

# オブジェクト名を変更する
torus.name = "torus_半径_2/(3**(0.5))_radius"














# 半径 2 の トーラス 0,ー√3,0

import bpy
import math
from math import radians

# トーラスを作成する
bpy.ops.mesh.primitive_torus_add(major_radius= 2, minor_radius=0.05)

# 作成したトーラスを選択する
torus = bpy.context.active_object

# 回転させる軸を選択する
zion_xyz = 'zana'

if zion_xyz == 'xana':
    # 軸を中心に90度回転させる
    torus.rotation_euler[0] = radians(0)
    torus.rotation_euler[1] = radians(90)
    torus.rotation_euler[2] = radians(0)
    # X軸方向に伸ばす
    torus.scale[0] = 1
    torus.scale[1] = 1
    torus.scale[2] = 1
    
elif zion_xyz == 'yana':
    # 軸を中心に90度回転させる
    torus.rotation_euler[0] = radians(90)
    torus.rotation_euler[1] = radians(0)
    torus.rotation_euler[2] = radians(0)
    # Y軸方向に伸ばす
    torus.scale[0] = 3
    torus.scale[1] = 3
    torus.scale[2] = 3
    
elif zion_xyz == 'zana':
    # Z軸を中心に90度回転させる
    torus.rotation_euler[0] = radians(0)
    torus.rotation_euler[1] = radians(0)
    torus.rotation_euler[2] = radians(0)
    # Z軸方向に伸ばす
    torus.scale[0] = 1
    torus.scale[1] = 1
    torus.scale[2] = 1
    
else:
    print('Invalid rotation axis selected.')

# トーラスの位置を変更する
torus.location = (0, -3**(0.5), 0)

# オブジェクト名を変更する
torus.name = "torus_2_radius"










# 電車列車 6長さ用 半径 (3**2 +3)**(0.5)の トーラス 0,ー√3,0

import bpy
import math
from math import radians

# トーラスを作成する
bpy.ops.mesh.primitive_torus_add(major_radius= (3**2 +3)**(0.5), minor_radius=0.05)

# 作成したトーラスを選択する
torus = bpy.context.active_object

# 回転させる軸を選択する
zion_xyz = 'zana'

if zion_xyz == 'xana':
    # 軸を中心に90度回転させる
    torus.rotation_euler[0] = radians(0)
    torus.rotation_euler[1] = radians(90)
    torus.rotation_euler[2] = radians(0)
    # X軸方向に伸ばす
    torus.scale[0] = 1
    torus.scale[1] = 1
    torus.scale[2] = 1
    
elif zion_xyz == 'yana':
    # 軸を中心に90度回転させる
    torus.rotation_euler[0] = radians(90)
    torus.rotation_euler[1] = radians(0)
    torus.rotation_euler[2] = radians(0)
    # Y軸方向に伸ばす
    torus.scale[0] = 3
    torus.scale[1] = 3
    torus.scale[2] = 3
    
elif zion_xyz == 'zana':
    # Z軸を中心に90度回転させる
    torus.rotation_euler[0] = radians(0)
    torus.rotation_euler[1] = radians(0)
    torus.rotation_euler[2] = radians(0)
    # Z軸方向に伸ばす
    torus.scale[0] = 1
    torus.scale[1] = 1
    torus.scale[2] = 1
    
else:
    print('Invalid rotation axis selected.')

# トーラスの位置を変更する
torus.location = (0, -3**(0.5), 0)

# オブジェクト名を変更する
torus.name = "torus_電車列車6長さ対応_radius"