Hi everyone, i’d like to know how to select vertices from one/several mesh/es by user’s value, from keyboard, from va, from drivers, from…i don’t know.
The question born to me when i have a city mesh and I would like to select all third floors of all the buildings in a neighborhood. I like to select vertices (or edges, or faces) giving user’s value of the coordinate (X, or both, or all) and a value. Thankl you
should show some pics to better explain what you mean
also are all the 3 floors at same level Z for instance ?
or variable terrain height
is this with old API or new Bmesh API ?
might be possible with bpy.data
happy bl
I have my city mesh…and i want to select…all vwertices with axis x = 523.
what kind of mesh data is it using nly tri’s and quads or Bmesh with ngon?
it is easy to go through all verts and find a Z value
happy bl
try something like this
import bpy , bmesh
z1 = 0.38
zprec =0.05 # 5 %
Zmax = z1+zprec *z1
Zmin = z1-zprec *z1
vnz = 0
print ()
print (" NEw Verts list &&&&&&&&&&&&&&&&&&&&&&&&&&")
print ()
bpy.ops.object.select_all(action='DESELECT')
bpy.ops.object.select_pattern(extend=False, pattern="Sphere", case_sensitive=False)
ob = bpy.context.active_object
print ('selected ob =',len(bpy.context.selected_objects))
for ob in bpy.context.selected_objects:
print ('select ob =',ob)
#for ob in C.selected_objects:
#ob = bpy.context.active_object
vnz = 0
print ('ob name =',ob.name)
if ob.type == 'MESH':
# scene.objects.active = ob #set active object
print ('ob name =',ob.name)
for vert in ob.data.vertices:
# print ('Vco Z =',vert.co[2] )
if vert.co[2] <=Zmax and vert.co[2]>=Zmin:
print ('Z v.co[2]=', vert.co[2], ' Zmax =',Zmax, 'Zmin =' , Zmin)
vnz+=1
vert.select = True #ensure Z vertices are selected
else:
vert.select = False
print ()
print ('Verts at Z =' ,z1 ,' + / - ',zprec*100,' % =', vnz )
print ()
print ()
print (" end2 Verts list &&&&&&&&&&&&&&&&&&&&&&&&&&")
print ()
happy bl
thank you. i`ll try.
i have changed in the code Sphere by Cube.
I subdivided the Cube into 8x8. I changed 5 lines of the script code:
z1 = 0.2
z2=4
zprec =0.05 # 5 %
Zmax = z1+zprec *z2
Zmin = z1-zprec *z2
I discovered that every 4 step of z2 value, the selection growed one row each time until z2= 28 maximum value.
When i subdivided the Cube into 64x64 (next subdivision from 8x8),the selection growed four row each time until z2= 28 also maximum value.
I don’t know but i think there is something good in it. Thank you.
just did a proof test on a sphere
but could be change for active selected object too
happy bl