Решил написать сей скрипт публично.
И так:
Что надо получить:
Выделяем пару ребер и активируем. Первое ребро "скользит" по второму, но только общей вершиной.
Скрипт должен работать при любом количестве выделенных ребер, но не менее двух, и не сбрасывать выделение.
Действие производить только с последними двумя выделенными ребрами.
Тэги полигонов и ребер должны остаться прежними - Material, Part, Selection Set. А так же Weight ребер.
Скрипт должен выполняться, если одно или два из последних выделенных ребер лежат на краю только одного полигона. См. рис. ниже.
23 Комментария
Добавляйте от себя мысли по
Добавляйте от себя мысли по использованию скрипта, если таккя постановка задачи не удовлетворяет требованиям.
Буду выкладывать скрины кода с описанием хода написания. Подключайтесь, делитесь мыслями, у кого есть)
Первый блин) 3 вывод строки
Первый блин)

3 вывод строки в Log
4 запрос и присвоение количества выделенных ребер переменной $edgeN
5 если ребер больше 1, то выполняем след команды
6 в массив @edgeO записываем результат запроса выделееных ребер в порядке выделения пользователем (нулевой элемент - первое ребро, и т.д.)
10 вывод в лог строки с именами предпоследнего и последнего выделенных ребер
11 если условие в строке 5 не выполнено, то выводим строку - Select more edges.
Очень хорошая идея. И скрипт
Очень хорошая идея. И скрипт полезный, если бы понимал в программировании помог бы-бы-бы.)
Нужны логическое мышление,
Нужны логическое мышление, синтаксис скрипта из интернета, синтаксис команд модо из хелпа и с офсайта, правила хорошего тона при написании кода и конечно же желание. И очень помогает острая нехватка какой-нибудь штуки для модо.
Ньюансы совместного применения скрипта и команд модо, да и сама логика команд в модо, что для чего - в общем связка двух сущностей, это то, на что я попытаюсь пролить свет в этом випе. Всего что знаю здесь конечно не охвачу, потому как для начала постарался выбрать пример попроще.
Немного вырос. 2 - Добавил
Немного вырос.
2 - Добавил условие для проверки компонентного режима, скрипт выполняется только если выбран режим ребер.
7 и 8 строки - Запрос из 6 строки возвращает для каждого ребра 3 значения в следующем формате: (индекс слоя, индекс 0, индекс 1). Индексы это вершины на ребре. Слой - меш, в котором находится ребро. Разбиваю полученные данные о ребрах, и полученные значения помещаю в массивы.
с 12 по 31 строки - Нахожу схожие вершины, по очередно сравнивая значения массивов. При нахождении совпадающих вершин, выделяю не совпадающие.
с 36 по 39 - Если совпадения найдены, то разделяю полигон по выделенным вершинам и перехожу в режим ребер.
Остаётся удалить ребро 1, назначить на получившийся полигон и новое ребро все тэги и вернуть выделение вершин к исходному состоянию, если таковое имелось.

Текущий алгоритм описывает не все ситуации из поставленной задачи (варианты 4 и 7 на скрине ниже), т.к. просто нет полигона, который можно было бы разделить.
Как правило, выполнение того функционала, ради которого пишется скрипт, занимает не слишком значимое количество строк кода, по сравнению с описанием условий и ситуаций которые могут возникнуть или неизбежно возникают в результате выполнения самого скрипта. Посмотрим как выйдет в этом случае.
Продумывая дальнейшие действия, проверяю на прочность алгоритм новыми ситуациями:
Продолжение следует.
Я может не совсем понял, что
Я может не совсем понял, что делает скрипт, но если все-таки понял, то эта оперция очень легко делается Выделить ребро>Backspace>C или я не прав?
Нашел отличие.
Нашел отличие.
Скрипт написал, всё работает.
Скрипт написал, всё работает. Название текущее смущает, скольжения то не происходит. Предлагайте, у кого какие мысли.
Не выложу скрипт, пока
Не выложу скрипт, пока название не придумается)
Уже засыпаю, завтра подумаю,
Уже засыпаю, завтра подумаю, внесу лепту.)
edgeSwitch
edgeSwitch
Edge Runner, с намёком на
Edge Runner, с намёком на Blade Runner))
Может вернуться к истокам
Может вернуться к истокам бытия, в родную деревню. Edge separator- рёбра разделитель.) Шучу.
Edge runner мне очень нравится. Голосуем за него. Подключайтесь модонавты. Тем более кто этот скрипт породил, тот его просто обязан назвать, сам.
Тогда может так: RunnerEdge?
Тогда может так: RunnerEdge?
Согласен, уже 3 голоса.
Согласен, уже 3 голоса. Против нет? Воздержавшихся? Тринадцатый гость принимай решение.)
Никак не пойму для чего этот
Никак не пойму для чего этот скрипт.
Для редактирования сетки. Так
Для редактирования сетки. Так же как Spin или Slide, только со своей спецификой.
Чтобы не слайсить новые ребра ручками, удаляя старые. А потом ещё и тэги править, так как это уже совсем другие ребра. Так и упустить что-то можно, да и просто надоедает такая рутина.
Можно конечно сразу всё правильно делать, но бывает подправить надо.
edgeRunner
edgeRunner
Подправлять всегда надо. Что
Подправлять всегда надо. Что нибудь с весами сделать, когда их трогать начинаешь, было бы очень приятно понимать. Понятно в режиме весовых карт все видно... но а как на тактильном уровне?
Не понял. Что не понятно с
Не понял. Что не понятно с весами?
Как про грибы, завесь ты на
Как про грибы, завесь ты на них весовые карты и как они себя поведут.
Сабдивный вес ребра скрипт
Сабдивный вес ребра скрипт переносит, вес не теряется. Если речь о обычных весовых картах, то там значения хранятся только на вершинах. Вершины я не трогал, потому как ситуации разные могут быть.
Если есть пожелания и корректировки под нужды использования этого скрипта, то внести и подправить можно. Заявка нужна.
so real cool stuff
so real cool stuff