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")