Ксожалению, видимо таблица рейтига важнее возможности вставки кода на фрум или прикрепления файлов, поэтому так выложу:
poly_count = (Polyop.getNumFaces $)
currentTM = $.transform
$.transform = (matrix3 [1,0,0] [0,1,0] [0,0,1] [0,0,0])
for i = 1 to poly_count do(
nm_array = #()
nm = polyop.getFaceNormal $ i
for j = 1 to 3 do (
append nm_array (abs nm[j])
)
max_value = amax nm_array
max_value_index = finditem nm_array max_value
--polyop.setFaceMatID $ i max_value_index
case max_value_index of (
1: polyop.setFaceMatID $ i 1
2: polyop.setFaceMatID $ i 2
3: polyop.setFaceMatID $ i 3
)
)
$.transform = CurrentTM
Тут всё просто - 1 - х, 2 - y, 3 - z. Case выбирает какая из осей нормали полигона ближе к данной глобальной оси и назначает ИД. ИД находятся после i, можете назначить 2м осям одинаковые ИД, будет окрашивать все вертиклаьные поверхности в 1 цвет, все горизонтальные - в другой.
Естественно, объект должен быть выделен и конвертирован в эдит поли.