Показать сообщение отдельно
Старый 06.02.2019, 09:45   #329
Letos
Консультант
 
Регистрация: 28.06.2017
Сообщений: 555
Сказал(а) спасибо: 127
Поблагодарили 1,030 раз(а) в 366 сообщениях
Вес репутации: 344
Letos за этого человека можно гордитсяLetos за этого человека можно гордитсяLetos за этого человека можно гордитсяLetos за этого человека можно гордитсяLetos за этого человека можно гордитсяLetos за этого человека можно гордитсяLetos за этого человека можно гордитсяLetos за этого человека можно гордится
По умолчанию

Цитата:
Сообщение от Ozimko Посмотреть сообщение
Спасибо. Работает. Осталось только заставить фрагмент устанавливать на определенной высоте.
И не только высоту.... еще и первая точка фрагмента - начало координат....
Дополнил ваш код и добавил немного комментариев.
Странно, что вы решили взять для высоты координату "Action.Pos3.y", ведь позиция курсора в этот момент может быть любой. Я решил, что будет логичнее брать границы высоты по границам указанных вертикальных панелей. Также изменил вычисление размера объекта и добавил назначение позиции (трёхмерной точки).

Код


Код:
const filename = 'C:\\Bazis 10\\Фрагменты\\35\\11.fr3d';

SetCamera(p3dFront);
var Bok1 = GetPanel("Укажите 1-ую вертикальную панель");
var Bok2 = GetPanel("Укажите 2-ую вертикальную панель");
SetCamera(p3dTop);
var Back = GetEdge('Укажите заднюю границу', AxisX).First.z;
var Front = GetEdge('Укажите переднюю границу', AxisX).First.z;
SetCamera(p3dFront);

var x1 = Bok1.GabMax.x + 0;
var x2 = Bok2.GabMin.x - 0;
// Максимальная координата по высоте из двух минимальных координат панелей
var y1 = Math.max(Bok1.GabMin.y, Bok2.GabMin.y);
// Минимальная координата по высоте из двух максимальных координат панелей
var y2 = Math.min(Bok1.GabMax.y, Bok2.GabMax.y);
var z1 = Back;
var z2 = Front;
var frag = OpenFurniture(filename);
if (frag) {
    var obj = frag.Make(0, 0);
    if (obj) {
        // размер по оси = максимум - минимум
        obj.ElasticResize({
            x: x2 - x1,
            y: y2 - y1,
            z: z2 - z1
        });
        obj.Owner = Model.Temp;
    }
    // минимальная координата идёт в координату позиции
    obj.Position = {
        x: x1,
        y: y1,
        z: z1
    }
}
[свернуть]
Letos вне форума   Ответить с цитированием Вверх
2 пользователя(ей) сказали cпасибо:
AndrianoS (18.01.2021), Ozimko (06.02.2019)