Цитата:
Сообщение от 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
}
}
[свернуть]