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