getViewSize() -- размер вьюпорта в пикселях
PushPrompt "temp" -- вывод текста вот сюда
mesagebox "Privet" -- простой месэчбокс
if (queryBox "3>2?") then "Pravilno" else "Nepravilno" --месэчбокс с вопросом
_______________________________________________________________
“%”в MaxScript
format “%” <переменная>
Так работает функция format, которой передаются параметры в виде знаков процента как тех мест, куда будет записываться та информация, которая указывается в положениях, соответствующих этим знакам %, указанная после кавычек. Ну а \n это уж переход к новой строке.
Вот пример скрипта, который печатает порядковый номер вершины и через пробел её позицию x,y,z без скобок типа Point3
"Selected Vertices"
vArr = $.selectedVerts as bitArray
"OUTPUT"
for i in vArr do (format "% \t %,%,% \n " (i-1) ((polyop.getVert $ i).x) ((polyop.getVert $ i).y) ((polyop.getVert $ i).z))
Результат в листнере
178 0.393365,-25.1171,11.7888
209 -5.15904,-27.417,6.00988
210 0.735364,-26.8364,6.00988
_______________________________________________________________
-- для объектов i в геометрии где нет спрятанных и целевых объектов собрать объекты o в массив.
for i in geometry where not i.isHidden and classof i!= TargetObject collect i
|
|
_______________________________________________________________
viewport.getTM() -- матрица трансформации камеры вьюпорта.
_______________________________________________________________
Рассадка одного объекта на вершины другого объекта
delete $*_Clone_* -- Для повторного выполнения скрипта предварительно удаляются предыдущие объекты
delete $GeoSphere* -- Для повторного выполнения скрипта предварительно удаляются предыдущие объекты
delete $box* -- Для повторного выполнения скрипта предварительно удаляются предыдущие объекты
TargetObj = Geosphere radius: 200 -- Целевой объект - геосфера радиусом 200
SourceObj = box() -- Объект источник - бокс
MeshObj = snapshotAsMesh TargetObj -- snapshotAsMesh - это снимок параметров геометрии объекта в глобальной системе координат, универсально работающий и для mesh и для Poly
for v = 1 to MeshObj.numVerts by 1 do -- для каждой вершины v начиная с v = 1 до последней вершины (количество вершин.numVerts) объекта MeshObj, по одной - by 1 (так же можно например и через одну установить by 2) делать
(
NewObj = instance SourceObj -- Создать новый объект инстансовый объекту источника
NewObj.name = uniquename (SourceObj.name + "_Clone_") -- задаётся уникальное имя
NewObj.transform = matrixFromNormal (getNormal MeshObj v) -- Задаётся матрица трансформации объекта равной матрице нормали (взять нормаль вершины объекта MeshObj)
NewObj.pos = getVert MeshObj v -- установить позиции вершин объекта MeshObj
NewObj.parent = TargetObj -- Сделать для объекта NewObj парентом целевой объект
)
_______________________________________________________________