2013-09-05 2 views
0

Im, использующий Maya для выполнения определенной задачи на выбранных ребрах.Get Shape from selected Edges

Скажем, я сохранить эти края, как это:

edges = pm.filterExpand(sm=32)

Отсюда, я могу просто выбрать первый край, и получить объект, разделив юникод строку:

'pSphere1.e[274]'

Вот как я разделил его, и он дал мне pSphere1, однако вызов getShape() на нем все еще не работает, потому что это объект unicode.

object = edges[0].split('.')[0].getShape()

Есть ли лучший способ сделать это?

+0

Вы можете сделать 'eval ('pSphere1')', чтобы получить объект, но должен быть лучший способ сделать это. –

+0

Наверняка есть что-то, что может сделать Pymel для этого, что maya.core не мог, я знаю об eval, я мог бы также делать «PyNode (« pSphere1 »). GetShape()', но опять-таки должен быть другой метод @ PauloAlmeida –

+0

@ShannonHochkins 'PyNode()' лучше всего здесь, потому что он присваивает вашу строку классу propper, что дает вам все ваши методы и является базовой функцией PyMEL. Вы также можете запустить 'pSphere1.e' для получить все ребра. –

ответ

0

Мы можем найти форму от края, просто перечисляя его непосредственная связь с использованием node()

PYMEL:

pm.PyNode(selection[0].node().getParent())

Нет необходимо разбить строку или повторно отобразить массив.

2

EFilterExpand всегда возвращает строки (вызываемые из cmds или pm). Используйте PyNode для преобразования:

mesh_edges = map(pm.PyNode, pm.filterExpand(sm=32)) 
for item in mesh_edges: 
     print item.node(), item.indices()[0]