aa
コレクション名 ”線路 円内”
を 作る
import bpy
# Create a new collection
collection_name = "線路 円内"
collection = bpy.data.collections.new(collection_name)
# Link the collection to the scene
scene = bpy.context.scene
scene.collection.children.link(collection)
blender python で
マークにする
半径0.2 の球体を 複数 作る
名前を連番で 作る
球体中心位置は
-1,0,0
0,0,0
+1,0,0
import bpy
from mathutils import Vector
def create_spheres():
centers = [Vector((-1, 0, 0)), Vector((0, 0, 0)), Vector((1, 0, 0))]
radius = 0.2
for i, center in enumerate(centers):
bpy.ops.mesh.primitive_uv_sphere_add(radius=radius, location=center)
sphere = bpy.context.active_object
sphere.name = f"Rail_{i+1}"
# Customize the sphere's properties here
# Example: Assign materials, set scale, etc.
bpy.ops.object.mode_set(mode='OBJECT')
# Call the function to create the spheres
create_spheres()
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
までの距離を求めて
トーラスの半径にする
トーラスを描く
import bpy
import math
# パラメーター設定
minor_radius = 0.02
center_positions = [(0, -math.sqrt(3), 0), (0, -2*math.sqrt(3), 0), (0, -10, 0)]
passing_point = (-1, 0, 0)
# トーラスを作成し、連番の名前を付ける
for i, center in enumerate(center_positions):
# 中心位置からの距離を計算して半径を求める
distance = math.dist(center, passing_point)
major_radius = distance
# トーラスを作成
bpy.ops.mesh.primitive_torus_add(
align='WORLD',
major_radius=major_radius,
minor_radius=minor_radius,
major_segments=48,
minor_segments=12
)
torus = bpy.context.active_object
# トーラスの位置と名前を設定
torus.location = center
torus_name = f"torus_{center[0]:.1f},{center[1]:.1f},{center[2]:.1f}"
torus.name = torus_name
コレクション名 ”円周”
を 作る
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]
print(f"Collection '{collection_name}' created.")
球体を作る
球体の半径 0.2
名前は 連番で "円中心_y"
y軸位置の 小数点第1までの名にする
球体中心位置
0,2 - √3,0
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]
print(f"Collection '{collection_name}' created.")
import bpy
import math
# Parameters
sphere_radius = 0.2
center_positions = [(0, -math.sqrt(3), 0), (0, -2*math.sqrt(3), 0), (0, -10, 0), ]
# Create spheres at the center positions
for i, center in enumerate(center_positions):
# Get the y-axis position with one decimal place
y_position = round(center[1], 1)
# Create sphere
bpy.ops.mesh.primitive_uv_sphere_add(radius=sphere_radius, location=center)
sphere = bpy.context.active_object
# Set sphere name
sphere_name = f"円中心_{y_position}"
sphere.name = sphere_name
print("Spheres created.")
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]
print(f"Collection '{collection_name}' created.")
球体を作る
球体の半径 0.2
名前は 連番で "ドーム_y"
y軸位置の 小数点第1までの名にする
球体中心位置は 以下で 計算する
blender python で
円周を複数 作る
連番で 名前を付ける
名前の付け方は
円周の中心位置 x,y,zなら ”円周_x,y,z"
x,y,zは 小数点1桁まで 使う
円周の中心
0,-√3,0
0,-2√3,0
0,-10,0
指定した
トーラス中心から
-2,0,0
までの距離を求めて
円周の半径にする
それぞれの円周の
(x,y,z)で
yが 最大位置を
球体の中心にして
球体を描く
import bpy
import math
# Define the center positions for the circular paths
center_positions = [(0, -math.sqrt(3), 0),
(0, -2 * math.sqrt(3), 0),
(0, -10, 0)]
# Define the target position for each circular path
target_position = (-1, 0, 0)
# Calculate the radius for each circular path
radii = [math.sqrt((target_position[0] - center[0]) ** 2 + (target_position[1] - center[1]) ** 2 + (target_position[2] - center[2]) ** 2) for center in center_positions]
# Create spheres on each circular path
for i, center in enumerate(center_positions):
# Generate the name for the sphere
name = "Circle_{},{},{}".format(round(center[0], 1), round(center[1], 1), round(center[2], 1))
# Set the sphere's center position
bpy.ops.mesh.primitive_uv_sphere_add(radius=radii[i], location=center)
# Rename the sphere object
sphere = bpy.context.object
sphere.name = name
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]
print(f"Collection '{collection_name}' created.")
球体を作る
球体の半径 0.2
名前は 連番で "正面_y"
y軸位置の 小数点第1までの名にする
0,2-(√3),0
0,(√13)-(2√3),0
0,(√101)-10,0
import bpy
import math
# 球体の半径
半径 = 0.2
# 位置のリスト
位置リスト = [
(0, 2 - math.sqrt(3), 0),
(0, math.sqrt(13) - (2 * math.sqrt(3)), 0),
(0, math.sqrt(101) - 10, 0)
]
# 連番でオブジェクトを作成する
for i, 位置 in enumerate(位置リスト):
# 名前の作成
名前 = "正面_y{:.1f}".format(位置[1])
# 球体を作成
bpy.ops.mesh.primitive_uv_sphere_add(radius=半径, location=位置)
球体 = bpy.context.active_object
# 名前を設定
球体.name = 名前
円柱を作る
円柱の中心 000
円柱の半径 0.1
円柱の長さ 20
-10,0,0 から +10.0,0 に
円柱の中心軸の 両端が位置する
円柱を y軸を回転軸で 90度回転
名前を付ける "線路レールの円柱”
import bpy
import math
# 円柱の中心
中心 = (0, 0, 0)
# 円柱の半径
半径 = 0.1
# 円柱の長さ
長さ = 20
# 円柱の両端の位置
始点 = (-10.0, 0, 0)
終点 = (10.0, 0, 0)
# 円柱を作成
bpy.ops.mesh.primitive_cylinder_add(
radius=半径,
depth=長さ,
location=中心,
end_fill_type='NOTHING'
)
# 作成された円柱オブジェクトを取得
円柱 = bpy.context.active_object
# 円柱の両端を設定
円柱.location = (0, 0, 0)
円柱.rotation_euler = (0, math.radians(90), 0)
円柱.scale = (1, 1, 1)
bpy.ops.object.origin_set(type='ORIGIN_CENTER')
# 両端の位置を設定
円柱.data.vertices[0].co = 始点
円柱.data.vertices[1].co = 終点
名前を付ける "線路レールの円柱”
さらに もう1つ 円柱を作る
# 円柱の両端の位置
始点 = (-10.0, 2-√3, 0)
終点 = (10.0, 2-√3, 0)
名前を付ける "線路レール 2ー√3の円柱”
import bpy
import math
# 円柱の中心
中心 = (0, 2-3**0.5, 0)
# 円柱の半径
半径 = 0.1
# 円柱の長さ
長さ = 20
# 円柱の両端の位置
始点 = (-10.0, 2-3**0.5, 0)
終点 = (10.0, 2-3**0.5, 0)
# 円柱を作成
bpy.ops.mesh.primitive_cylinder_add(
radius=半径,
depth=長さ,
location=中心,
end_fill_type='NOTHING'
)
# 作成された円柱オブジェクトを取得
円柱 = bpy.context.active_object
# 円柱の両端を設定
円柱.location = (0, 0, 0)
円柱.rotation_euler = (0, math.radians(90), 0)
円柱.scale = (1, 1, 1)
bpy.ops.object.origin_set(type='ORIGIN_CENTER')
# 両端の位置を設定
円柱.data.vertices[0].co = 始点
円柱.data.vertices[1].co = 終点
あ