3d форум по Blender

Blender => Вопросы от новичков => Тема начата: gtacn2424 от 12 Декабрь 2015, 15:23:07

Название: API
Отправлено: gtacn2424 от 12 Декабрь 2015, 15:23:07
Пишу скрипт чтоб узнавать длину edge, через формулу пифагора, но вот проблема, в питоне я почти что ноль, и мне нужно узнать как получить данные об каждой vertex которая прилягает к edge x1 y1 z1, x2 y2 z2.
как я понял нужно через
bpy.data
Но как дальше я не знаю.
Название: Re: API
Отправлено: sungreen от 12 Декабрь 2015, 16:34:59
>> Пишу скрипт чтоб узнавать длину edge
>> в питоне я почти что ноль,
... если честно, то длину edge можно узнать стандартными средствами - в правой панали инструментов есть секция Mesh Display и в ней Edge Info в которой можно установить чек Length, а при желании и Angle ...

... если не знаешь питона, то начни с описания постановки задачи - чего ты хочешь в конечном итоге? хотя бы ...

(https://content-28.foto.my.mail.ru/mail/unixinfo/_myphoto/s-617.png)
Название: Re: API
Отправлено: LanuHum от 12 Декабрь 2015, 16:45:58
Пишу скрипт чтоб узнавать длину edge, через формулу пифагора, но вот проблема, в питоне я почти что ноль, и мне нужно узнать как получить данные об каждой vertex которая прилягает к edge x1 y1 z1, x2 y2 z2.
как я понял нужно через
bpy.data
Но как дальше я не знаю.
Код
 Для данного случая в API есть параметр select. Выделяем исследуемую edge. Далее, создаём список выделенных edges 
e = []
for edge in bpy.context.object.data.edges: # идём по всем edges
    if edges.select == True: " # если edge  выделено, то записываем индексы вершин в список
       e.append(edge.vertices[0],edge.vertices[1])
Теперь создаём список координат нужных вершин и идём по списку вершин
co = []
for vert in bpy.data.vertices:
    if vert.index in {e[0],e[1]}:
        co = vert.co[:]
        co.append(vert.co[:])
print (co)

Разумеется, это, возможно, абсолютно не оптимизированный код относительно поставленной задачи, но этот код даёт полное представление стороны, в которую нужно копать :)