Спасибо, посмотрю)
___________________________
Посмотрел я скрипт выше, так выворачивать полигоны, не отделяя их от сетки это конечно сильно)
Чаще всего мне нужно просто зеркалить элемент или уже кусок элемента, так что стандартный <<macros.run "PolyTools" "MirrorElementX">> мне вполне подходит, осталось только придумать, как перемещать отзеркаленные куски на то-же расстояние только в "минус", относительно опорной точки.
В RappaTools тоже так сделано.
Но там только относительно локальной и мировой опорной точки, и всё на разных командах.Зачем нужно 24 клавиши, если можно обойтись только 5-ю?
1 кнопка на цикл для Center Point
2 клавиши на Copy и Instance
2 клавиши на Mirror по горизонту и вертикали
_________________________________
Появился вопрос, как рассчитать положение подъобъекта в пространстве и переместить его относительно локального центра объекта?
Есть функция snapshotAsMesh $ , с ней можно получить информацию о положении всех вершин объекта в пространстве (с рёбрами и полигонами почему-то не выходит, видимо из-за того, что она записывает триангулированный Mesh).
Итак, сначала нам нужно получить координаты элемента в пространстве.
Конвертируем его в вершины и записываем их в массив:
VertSel = (SelMod.GetSelection #Vertex) as array
Затем необходимо узнать их общее положение (Как ???)
Можно ли записать через среднее значение координат выбранных точек?
MeshObj = snapshotAsMesh $
local SelMod = Filters.GetModOrObj()
local VertSel = (SelMod.GetSelection #Vertex) as array
local N = #{}
local Nv = VertSel.count
for i=1 to Nv do N=N+(getVert MeshObj VertSel[i]))
T = N/Nv -- Координаты элемента
move $.selectedVerts [0, -T.y ,0] -- Перемещение вдоль оси Y относительно [0,0,0]
TLp = $.transform p3 -- Координаты Local Point
Будет ли это работать?
move $.selectedVerts [0, TLp.y-T.y ,0]) -- Переместит ли он зеркально относительно Local Point?