Render.ru

выделить element

Еван Антонов

Активный участник
Рейтинг
5
#1
Добрый день.
Есть интерес сделать возможность выделять весь элемент по выделенному вертексу\ребру.
Знаю что максе есть кнопки "Element" и "Select by Element", но хота написать скриптик, который бы выделял сразу весь шейп по хоткею.
Я предполагаю что скрипт будет определять рабочий режим (вертексы или ребра) и дальше перебирать прилегающие ребра\вертексы и добавлять к выделению

Вопрос: как мне выделить все прилегающие к выделенному вертексу\ребру вертексы\ребра????

P.S. Переползаю с maya на max, так что данная задумка родом из maya (там есть такой интструмент).
 

igorznag

Мастер
Рейтинг
103
#2
Простой пример:
В новой сцене создаем один чайник Teapot и конвертируем его в Editable Poly.
Запускаем скрипт.
Меню Customize->Customize User Interface->Keyboard. Group=Main UI. Category=_igorznag.
Назначаем нужную клавишу (например, клавишу "M") для igorznag_test.
Выделяем вертекс/ребро. Нажимаем клавишу "M".
Код:
macroScript igorznag_test category:"_igorznag"
(
if classof $==Editable_Poly then
(
if subobjectLevel == 1 then
(
$.EditablePoly.ConvertSelection #Vertex #Element
$.EditablePoly.ConvertSelection #Element #Vertex
)
if subobjectLevel == 2 then
(
$.EditablePoly.ConvertSelection #Edge #Element
$.EditablePoly.ConvertSelection #Element #Edge
)
)
)
Чтобы запустить скрипт нужно:
1. Создаем текстовый файл (NotePad) и копируем код (текст) скрипта.
2. Сохраняем текстовый файл с названием "test.ms"
3. В главное меню MaxScript выбираем пункт Run Script. Выбираем файл "test.ms"
 

Еван Антонов

Активный участник
Рейтинг
5
#3
Простой пример:
В новой сцене создаем один чайник Teapot и конвертируем его в Editable Poly.
Запускаем скрипт.
Меню Customize->Customize User Interface->Keyboard. Group=Main UI. Category=_igorznag.
Назначаем нужную клавишу (например, клавишу "M") для igorznag_test.
Выделяем вертекс/ребро. Нажимаем клавишу "M".
macroScript igorznag_test category:"_igorznag"
(
if classof $==Editable_Poly then
(
if subobjectLevel == 1 then
(
$.EditablePoly.ConvertSelection #Vertex #Element
$.EditablePoly.ConvertSelection #Element #Vertex
)
if subobjectLevel == 2 then
(
$.EditablePoly.ConvertSelection #Edge #Element
$.EditablePoly.ConvertSelection #Element #Edge
)
)
)
Чтобы запустить скрипт нужно:
1. Создаем текстовый файл (NotePad) и копируем код (текст) скрипта.
2. Сохраняем текстовый файл с названием "test.ms"
3. В главное меню MaxScript выбираем пункт Run Script. Выбираем файл "test.ms"
Фига. Спасибо!! я расчитывал на более скромный ответ, но ты ответил более чем развернуто.
 

igorznag

Мастер
Рейтинг
103
#5
Почему вы работаете с edit_mesh?

Конвертируем вручную edit_mesh в Editable_Poly.
Работаем с Editable_Poly.
Конвертируем вручную Editable_Poly в Editable_Mesh.
 

Еван Антонов

Активный участник
Рейтинг
5
#6
Почему вы работаете с edit_mesh?

Конвертируем вручную edit_mesh в Editable_Poly.
Работаем с Editable_Poly.
Конвертируем вручную Editable_Poly в Editable_Mesh.
с едит меш работаю (некоторые просят в нем выкладывать объекты). А вообще, стараюсь универсально делать. мало ли что )
 

igorznag

Мастер
Рейтинг
103
#7
с едит меш работаю (некоторые просят в нем выкладывать объекты)
Работаем с Editable Poly. В конце работы, Editable Poly конвертируем в Editable Mesh и выкладываем.
А вообще, стараюсь универсально делать. мало ли что )
Что означает "универсально"?
а как так же в edit_mesh конвертнуть по вертексу?
Вы работаете с базовым объектом Editable_Mesh?
Вы работаете с модификатором Edit_Mesh?
Во время редактирования, всегда выделен только один узел (объект)?
 

Еван Антонов

Активный участник
Рейтинг
5
#8
Цитата Еван Антонов #6:с едит меш работаю (некоторые просят в нем выкладывать объекты)
Работаем с Editable Poly. В конце работы, Editable Poly конвертируем в Editable Mesh и выкладываем.
Цитата Еван Антонов #6: А вообще, стараюсь универсально делать. мало ли что )
Что означает "универсально"?
Цитата Еван Антонов #4:а как так же в edit_mesh конвертнуть по вертексу?
Вы работаете с базовым объектом Editable_Mesh?
Вы работаете с модификатором Edit_Mesh?
Во время редактирования, всегда выделен только один узел (объект)?
универсально - значит что б инструмент работал в различных ситуациях. сейчас один хоткей у меня выделяет элемент как в режиме эдит поле, так и в окне редактора раскладки.

Как пример: у меня написанн небольшой скриптик который по одному хоткею велдит выбранные вертиксы в один (привычка с майки). так вот ему пофиг какой эдит режим (еще он работает как стич в unwrap редакторе) активен и нет необходимости в лишник телодвижениях

P.S. может я всю жизнь буду моделить только в Edit_Poly, но пока есть желание сделать максимально удобный инструмент
 
Сверху