Форум сайта python.su
15
Написал такой скрипт для программы Autodesk Maya:
http://pastebin.com/VDvLuv1Q
Что он делает написано в комментариях к скрипту, но почему то если сразу выбирать компоненты и применить скрипт, он не срабатывает, а вот если еще раз выбрать компоненты и применить то тогда срабатывает, т.е. если изначально сразу выбирать компоненты срабатывает со второго раза, в чем ошибка не могу понять.
C остальными условиями все работает сразу как и нужно, проблема только с этими компонентами (17-19 строки), вчера весь день голову ломал, чет так и не понял с чем связана данная проблема.
Help me 
Офлайн
43
может elif нужно заменить на if
if cmds.selectMode(q=True, co=True):
if not obj: ... elif obj: ...
if not obj: ... else: ...
Офлайн
15
sergeek, спасибо, ну в данном случае else не помогло, зато до меня наконец то доперло почему не работает, это косяк в maya, там короче если выделять компоненты через горячую клавишу или через нормальное меню, то cmds.selectMode(q=True, co=True) вернет истину, и все сработает с первого раза, а вот если выделять через маркинг менюшки (как бы панель для быстрой навигации по основным командам или что то типа того), вот тут как раз и косяк, майа переключает на компоненты только в графическом виде, а вот скажем так на программном уровне остается object mode. Поэтому cmds.selectMode(q=True, co=True) роли не играет, т.к. на программном уровне компоненты как будто и не были выделены.
Отредактировано smoke853 (Дек. 6, 2012 12:37:08)
Офлайн
43
исправить надо было тут
if cmds.selectMode(q=True, co=True):
#и если включен object mode. if cmds.selectMode(q=True, o=True): #включается инструмент insert edge loop tool и можно нарезать столько лупов, сколько нужно. cmds.setToolTo(cmds.polySelectEditCtx()) #и если включен component mode и выбраны к примеру вертексы или эджи. elif cmds.selectMode(q=True, co=True): #применить connect component к выделенным компонентам. cmds.polyConnectComponents(obj, ch=True)
elif cmds.selectMode(q=True, co=True): #применить connect component к выделенным компонентам. cmds.polyConnectComponents(obj, ch=True)
Офлайн
15
sergeek, судя по вашему ответу во 2-м посте, я исправил так, я правильно понял суть исправления ?
import maya.cmds as cmds obj = cmds.ls(sl=True) if not obj: cmds.setToolTo(cmds.polyCutCtx()) else: if cmds.selectMode(q=True, o=True): cmds.setToolTo(cmds.polySelectEditCtx()) if cmds.selectMode(q=True, co=True): cmds.polyConnectComponents()
Отредактировано smoke853 (Дек. 6, 2012 15:25:57)
Офлайн
15
Сегодня меня осинило, и я переписал скрипт, теперь все работает идеально. как и задумывалось.
http://pastebin.com/fyTtGbKY
Отредактировано smoke853 (Дек. 7, 2012 15:10:48)
Офлайн