Render.ru

Есть ли способ провести линию перпендикулярно наклонной поверхности?

xim_max

Активный участник
Рейтинг
13
#1
Если нажимать галку autogrid, то рисование сплайнами происходит на данной наклонной плоскости, но не перпендикулярно ей.
Или простейшее: надо разрезать ту же самую стену, которая стоит под углом, точно по нормали, а не на глаз, как это сделать? (см. аттач)
 

Вложения

  • 14,8 КБ Просмотров: 969

moreeasy

Знаток
Рейтинг
25
#2
Извините, априори, на Вашем скриншоте неуместно говорить о "наклонной плоскости"!
Но если я правильно трактую условия задачи, то необходимо строить сплайн Section (с включенной опцией autogrid) на перпендикулярной плоскости к будущему сечению, а затем: A (латиница)и rotate на 90 градусов???!!!
 

xim_max

Активный участник
Рейтинг
13
#3
на Вашем скриншоте неуместно говорить о "наклонной плоскости"!
предположим, это вид Top плоскости, которая расположена вертикально по оси Z, либо просто опорная линия, из которой в дальнейшем получиться плоскость. и к ней в координатах XY надо провести перпендикуляр.
К сожалению, повторюсь, нет под рукой 3дмаха по причине 32й оси, но, я так понял, что можно нарисовать отдельный сплайн Section, который порежет выбранный объект неким способом. В смысле -- спасибо, поищу. Но про угол поворота: подозреваю, что шоткат A включает инструмент Rotate. Пробовал рисовать в плоскости autogrid и потом думал повернуть на 90 гр, но внизу в "координатах угла" объекта стоят какие-то непонятные углы наклона по всем трём координатам, и явно не относительно плоскости опорного объекта (т.к. иначе они должны быть равны нулю). И, какие углы поставить в координатах X и Y, чтоб сплайн повернулся не относительно их, а выбранного объекта (или самого себя) на 90 градусов, мозг не осиливает.
В общем, в понедельник попробую, что даёт шоткат А (скорее всего от angle), и тогда диалог с вами будет более конструктивным.
Поясню ещё одну тонкость: я так и не нашел, как точно и пропорционально изменить размеры объекта (про это пока тему не создаю), да, через гугл есть способы, но слишком сложные для простейшей операции, поэтому не ожидаю, что есть простейший оператор, просто поворачивающий объект на нужный угол по нужной оси. Да и как его просчитать этот угол, если плоскость стоит во всех плоскостях под "неправильными" углами?
 
Последнее редактирование:

igorznag

Мастер
Рейтинг
103
#4
Если нажимать галку autogrid, то рисование сплайнами происходит на данной наклонной плоскости, но не перпендикулярно ей.
Можно сначала создать вспомогательный объект Box с галкой autogrid, а потом с галкой autogrid и с привязкой к вершинам (ребрам) рисуем сплайн.
1.jpg
Или простейшее: надо разрезать ту же самую стену, которая стоит под углом, точно по нормали, а не на глаз, как это сделать?
Как вы это делаете вручную на глаз? Скрипты можно использовать?

Пример. Конвертируем стену в объект Editable Poly.
Выделяем одно ребро-Edge.
Запускаем скрипт. В новом окне нажимаем кнопку Align.
В свитке Edit Geometry нажимаем кнопку Slice Plane.
Перемещаем Slice Plane по оси Z в новой системе координат.
В свитке Edit Geometry нажимаем кнопку Slice.
Если нужно, выделяем полигоны, которые нужно разрезать.
Код:
try destroydialog igorznag_slice_plane_align catch()
rollout igorznag_slice_plane_align "Slice"
(
button btn_apply "Align" pos:[5,5] width:70 height:25
on btn_apply pressed do
(
if(selection.count==1)then
(
obj=modPanel.getCurrentObject()
if(classof obj==Editable_Poly)then
(
es_ba=polyop.getEdgeSelection obj; es_a=es_ba as array
if(es_a.count==1 )then
(
ev=polyOp.getEdgeVerts obj es_a[1]
ev1_coord=polyop.getVert obj ev[1] node:selection[1]
ev2_coord=polyop.getVert obj ev[2] node:selection[1]
ev1ev2=ev2_coord-ev1_coord
if(length ev1ev2>0)then
(
undo on
(
with animate off
(
axis_x=normalize ev1ev2
theMatrix=matrixfromnormal axis_x
p=(ev1_coord+ev2_coord)/2
theMatrix.pos=p
try delete $grid_poly_igorznag catch ()
g=grid name:"grid_poly_igorznag"; g.transform=theMatrix
toolmode.coordsys g; freeze g; hide g
polyOp.setSlicePlane selection[1] (ray p axis_x) ((length ev1ev2)/2.0)
redrawViews();
)--with animate off
)--undo on
)--if(length ev1ev2>0)then
)--if(es_a.count==1
)--if(classof obj==Editable_Poly)then
)--if(selection.count==1)then
)--on btn_apply pressed do
); createdialog igorznag_slice_plane_align 80 35
Чтобы запустить скрипт нужно:
1. Создаем текстовый файл (NotePad) и копируем код (текст) скрипта.
2. Сохраняем текстовый файл с названием "test.ms"
3. В главное меню MaxScript выбираем пункт Run Script. Выбираем файл "test.ms"

 

igorznag

Мастер
Рейтинг
103
#5
Поясню ещё одну тонкость: я так и не нашел, как точно и пропорционально изменить размеры объекта
Объясните подробнее и с картинками или видео.
Есть скрипт RealSizeTB. Он подходит для вашего случая?
В окне скрипта включаем кнопку "Uniform/nonUniform scale".
3.jpg
про это пока тему не создаю
Почему? Тогда можете в этой теме подробно объяснить ваши вопросы.
через гугл есть способы, но слишком сложные для простейшей операции
Озвучьте нам эти способы, чтобы мы тоже знали их и чтобы мы их не предлагали вам.
поэтому не ожидаю, что есть простейший оператор, просто поворачивающий объект на нужный угол по нужной оси.
Да и как его просчитать этот угол, если плоскость стоит во всех плоскостях под "неправильными" углами?
Объясните подробнее и с картинками или видео.
 

xim_max

Активный участник
Рейтинг
13
#6
Последнее редактирование:
Сверху