Open1

オブジェクトのメッシュの選択方法

黒狐黒狐

オブジェクトのメッシュの頂点や辺を選択する方法。参考:
Selected vertex ...
オブジェクトモードでないとselectをTrueにできない、ということみたいです。

import bpy

me = bpy.data.meshes['Cube.001']

for p in me.polygons:
    print(p)
    
bpy.ops.object.mode_set(mode="OBJECT")
me.polygons[0].select=True
bpy.ops.object.mode_set(mode="EDIT")

Cube.001はメッシュの名前になります。明示的にオブジェクトモードにしたうえで、polygonsの0を選択し、編集モードに移るときちんと面が選択されています。


たとえばこの状態で押し出しするなどすれば、自由に押し出し位置を変更、なんてことができそうです。
 例として円柱の頂点の選択・・

import bpy

me = bpy.data.meshes['Cylinder.001']

for p in me.polygons:
    print(p)
    
bpy.ops.object.mode_set(mode="OBJECT")

for v in me.vertices:
    if(v.index % 2 == 1): v.select = True 

bpy.ops.object.mode_set(mode="EDIT")

結果:


円柱の頂点は上下交互に番号が振られるので、奇数だけ取れば上面だけ選択されるようです。押し出しで上に伸ばした場合、新しくできた頂点はそのまま次からの番号が振られる(この場合ディテール24なので48~71が振られる)ので、>47とすればそこだけ抽出できるし、<48と&2==1を合わせれば中途のループを選択して枝分かれ、みたいなこともできます。

import bpy

me = bpy.data.meshes['Cylinder.001']

for p in me.polygons:
    print(p)
    
bpy.ops.object.mode_set(mode="OBJECT")

for v in me.vertices:
   if(v.index < 48 and v.index % 2 == 1): v.select = True

bpy.ops.object.mode_set(mode="EDIT")

結果: