2023年4月18日火曜日

正六角形を 正三角形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