2013-09-06 4 views
1

Есть ли способ правильно получить индексы из функции API Pymel/Maya?Как получить индекс края от выбора?

Я знаю, что у Pymel есть функция, называемая getEdges(), однако согласно их документам это получить их с выбранного лица, однако мне просто нужны они из выбранных ребер.

Возможно ли это?

+0

Если вы голосуете за это, не могли бы вы хотя бы сказать мне, почему? Я не понимаю ... –

ответ

4

Хотя ваш ответ будет работать на theodox, я нашел гораздо более простое решение после серьезного копания!

Выходит, скрывается и не очень хорошо документируется, была функция, иронически называемая indices(), я искал ее, но ничего не появилось в документах.

Pymel

selection[0].indices()[0]

выше, даст нам целое число от выбранного ребра. Простой и элегантный!

3

Вы имеете в виду только расширенный список выбранных ребер? Это просто FilterExpand -sm 32 или cmds.filterExpand (sm = 32) или pm.filterExpand (sm = 32) при выборе края. Эти команды всегда строки, вы хватаете индексы вне их с регулярным выражением:

# where objs is a list of edges, for example cmds.ls(sl=True) on an edge selection 
cList = "".join(cmds.filterExpand(*objs, sm=32)) 
outList = set(map (int, re.findall('\[([0-9]+)\]', cList))) 

, который даст вам множество, содержащее целые индексы ребер (я использую наборы так что его легко сделать такие вещи, как найти края общие для двух групп без петель или если тесты)

+0

Я также нашел, что могу сделать это так: self.edgeIndex1 = int (selection [0] .split ('[') [1] .split (']') [0]) «однако это довольно уродливо для чего-то, что может быть так просто? 'selection [0] .getEdgeIndex()' Вы уверены, что больше ничего нет? haha –

+0

Помимо выполнения установленных тестов - здесь поддерживается не так много целых индексов над компонентами: все, что вы делаете с майей, должно знать как объект, так и компонент, которые вы получаете с помощью ls или filterexpand. – theodox

+0

Я нашел лучшее решение, но я поднял ваш ответ! Пожалуйста, см. Мой ответ! :) –