Скрипт для определения типа выделенного компонента или объекта. |
Home· Статьи · Вакансии · Чертежи · 3D Галерея · 2D Галерея · Форум · Форум Realtime | Реклама |  Конкурсы | RAR Award | Правила |
Здравствуйте, гость ( Вход | Регистрация )
Скрипт для определения типа выделенного компонента или объекта. |
16/04/2014, 08:16
Сообщение
#1
|
|
Персональный аниматор Группа: Участник Сообщений: 1 743 Регистрация: 11/01/2005 Из: Новосибирск Пользователь №: 9 411 |
Приветствую!
Давно не скриптовал, сейчас туплю Не получается создать скрипт для определения типа выделенного компонента или объекта. Точнее, надо, чтоб при разном выделении выполнялись разные команды. Подскажите, плз! Сообщение отредактировал Nevajno - 16/04/2014, 08:28 |
|
|
16/04/2014, 09:20
Сообщение
#2
|
|
пишу на С++ за еду Группа: Пользователи Сообщений: 7 292 Регистрация: 08/12/2003 Из: компилятора Пользователь №: 3 739 |
может это?
Цитата string $mesh[] = `ls -type mesh`;
select $mesh; |
|
|
16/04/2014, 09:44
Сообщение
#3
|
|
Персональный аниматор Группа: Участник Сообщений: 1 743 Регистрация: 11/01/2005 Из: Новосибирск Пользователь №: 9 411 |
|
|
|
16/04/2014, 15:04
Сообщение
#4
|
|
Мастер Группа: Пользователи Сообщений: 1 070 Регистрация: 17/04/2007 Из: отТуда Пользователь №: 47 967 |
Код mc.filterExpand( sm=(.., ) ) В sm (selectionMask) указываются типы итемов. Например: Код if mc.filterExpand( items, sm=(34,) ): do something В данном случае будет фильтровать итемы по полигонам. Исли итемы не указаны то будет работать с текущим выделением. В маске можно указывать разные типы. В доке есть описание масок. Это пистон, но я думаю понятно что к чему... Сообщение отредактировал VUX - 16/04/2014, 15:06 |
|
|
16/04/2014, 15:12
Сообщение
#5
|
|
Мастер Группа: Пользователи Сообщений: 1 070 Регистрация: 17/04/2007 Из: отТуда Пользователь №: 47 967 |
|
|
|
16/04/2014, 20:03
Сообщение
#6
|
|
Персональный аниматор Группа: Участник Сообщений: 1 743 Регистрация: 11/01/2005 Из: Новосибирск Пользователь №: 9 411 |
Спасибо, попробую. Правда, питоном совсем не пользовался.
Можно ли в нем вызывать мел-команды? Сообщение отредактировал Nevajno - 16/04/2014, 20:15 |
|
|
16/04/2014, 20:11
Сообщение
#7
|
|
Мастер Группа: Пользователи Сообщений: 1 070 Регистрация: 17/04/2007 Из: отТуда Пользователь №: 47 967 |
MEL
Код $polygons=`filterExpand -sm 34`;
if (size($polygons) > 0) { \\ DO SOMETHING WHITH SELECTED POLYGONS } |
|
|
16/04/2014, 22:22
Сообщение
#8
|
|
Мастер Группа: Пользователи Сообщений: 1 070 Регистрация: 17/04/2007 Из: отТуда Пользователь №: 47 967 |
|
|
|
16/04/2014, 22:31
Сообщение
#9
|
|
Мастер Группа: Пользователи Сообщений: 1 070 Регистрация: 17/04/2007 Из: отТуда Пользователь №: 47 967 |
|
|
|
17/04/2014, 03:21
Сообщение
#10
|
|
Персональный аниматор Группа: Участник Сообщений: 1 743 Регистрация: 11/01/2005 Из: Новосибирск Пользователь №: 9 411 |
Приветствую! Давно не скриптовал, сейчас туплю Не получается создать скрипт для определения типа выделенного компонента или объекта. Точнее, надо, чтоб при разном выделении выполнялись разные команды. Подскажите, плз! а что нужно в скрипте - мож помогу Изначально решил расширить функции Маркинг меню: Сам уже давно сделал, чтоб разных окнах вызывались разные ММ. Вот и решил добавить возможности, чтоб при разных видах выделении (типа объекта или его компонентов), вызывались разные маркинг менюшки. Уже давно хотел заняться этим, да всё времени не было. Но недавно, описывая преимущество ММ на соседнем форуме, вновь вспомнил об этом улучшении... задачка вроде бы простая, но что-то запутался с определением видов компонентов. Сообщение отредактировал Nevajno - 17/04/2014, 03:29 |
|
|
17/04/2014, 13:44
Сообщение
#11
|
|
Персональный аниматор Группа: Участник Сообщений: 1 743 Регистрация: 11/01/2005 Из: Новосибирск Пользователь №: 9 411 |
Вроде бы сам разобрался. Получилось вот так:
if(size(`filterExpand -sm 12`)>=1) print "Polygon"; else if(size(`filterExpand -sm 10`)>=1) print "NURBS"; else if(size(`filterExpand -sm 9`)>=1) print "Curve"; else if(size(`filterExpand -sm 31`)>=1) print "Vertex"; else if(size(`filterExpand -sm 32`)>=1) print "Edges"; else if(size(`filterExpand -sm 34`)>=1) print "Face"; else if(size(`filterExpand -sm 35`)>=1) print "UV"; Начальный шаблон готов. Остальное - дело техники... Сообщение отредактировал Nevajno - 17/04/2014, 13:52 |
|
|
17/04/2014, 15:54
Сообщение
#12
|
|
Мастер Группа: Пользователи Сообщений: 1 070 Регистрация: 17/04/2007 Из: отТуда Пользователь №: 47 967 |
Я бы так сделал. Меньше вычислений и больше эффективности:
Код $items = `ls -sl`; if ( size($items) ) > 0 { $polyMeshes = `filterExpand -sm 12 $items`; $nurbsSurfaces = `filterExpand -sm 10 $items`; $nurbsCurves = `filterExpand -sm 9 $items`; $polyVerts = `filterExpand -sm 31 $items`; $polyEdges = `filterExpand -sm 32 $items`; $polyFaces = `filterExpand -sm 34 $items`; $polyUVs = `filterExpand -sm 35 $items`; if ( size($polyMeshes) ) > 0 { // Poly Meshes in Selection. Also other types can exists in selection } ... } else print "Empty selection !!!"; Так же, чем больше входиш во вкус тем более универсальным хочется его сделать. Например чтобы в выделении требовались только вертексы и ничего иного, то продолжаем проверять условия по типу: если polyVerts>0 и polyFaces==0 и т.д. и т.п. Чтобы работало в разных панелях по разному, рыть в сторону getPanel -t ... Сообщение отредактировал VUX - 17/04/2014, 15:56 |
|
|
17/04/2014, 18:20
Сообщение
#13
|
|
Персональный аниматор Группа: Участник Сообщений: 1 743 Регистрация: 11/01/2005 Из: Новосибирск Пользователь №: 9 411 |
Я бы так сделал. Меньше вычислений и больше эффективности: CODE $items = `ls -sl`; if ( size($items) ) > 0 { $polyMeshes = `filterExpand -sm 12 $items`; $nurbsSurfaces = `filterExpand -sm 10 $items`; $nurbsCurves = `filterExpand -sm 9 $items`; $polyVerts = `filterExpand -sm 31 $items`; $polyEdges = `filterExpand -sm 32 $items`; $polyFaces = `filterExpand -sm 34 $items`; $polyUVs = `filterExpand -sm 35 $items`; if ( size($polyMeshes) ) > 0 { // Poly Meshes in Selection. Also other types can exists in selection } ... } else print "Empty selection !!!"; Так же, чем больше входиш во вкус тем более универсальным хочется его сделать. Например чтобы в выделении требовались только вертексы и ничего иного, то продолжаем проверять условия по типу: если polyVerts>0 и polyFaces==0 и т.д. и т.п. Чтобы работало в разных панелях по разному, рыть в сторону getPanel -t ... Спасибо, попробую. А с панелями, как я уже писал раньше, разобрался давным-давно. |
|
|
Bots |
Системное сообщение
|
|
|
|
|
Текстовая версия | Сейчас: 24/04/2024 - 00:00 |