Встроить окно расчета на свой сайт

Окно расчета Temper-3D можно показать на любой странице: трехмерная модель, температурное поле, температура под курсором. Читатель крутит модель мышью и не покидает вашу страницу. Подходит производителям (узел вашего изделия с настоящим расчетом), преподавателям (задача для занятия), авторам статей и научных работ (расчет, на который можно сослаться и который можно проверить).

Что такое встроенное окно

Это тот же просмотрщик, в который открывается ссылка на расчет, но в режиме показа: без шапки, панелей и горячих клавиш. По умолчанию в окне видны модель с легендой, нижняя строка с температурой под курсором и кнопка «Открыть полностью» - она открывает тот же расчет целиком (разрезы, изотермы, потоки, модель текстом). Что еще показывать, вы задаете параметром ui.

Готовый код

Код - обычный iframe: адрес расчета по ссылке, embed=1 и ui= с нужными токенами. Режим показа включается и сам, когда окно открыто внутри iframe; embed=1 делает это явным.

<iframe
  src="https://temper3d.ru/r/КЛЮЧ?embed=1&ui=status,open,legend"
  width="100%" height="480" style="border:0"
  loading="lazy" allowfullscreen
  title="Расчет Temper-3D"></iframe>

Не нужно собирать адрес вручную: в Temper Cloud откройте расчет, на вкладке «Расчет» нажмите «Код для сайта», отметьте, что показывать, и нажмите «Скопировать».

Что показывать: параметр ui

В ui перечислены только те части окна, которые нужно показать, через запятую. Неизвестные токены игнорируются. Без параметра работает набор status,open,legend (легенда - картинка). Если включаете вкладки и панели, дайте окну побольше места по высоте.

ТокенЧто показывает
headerШапка окна.
tabsПолоса вкладок: Расчет, Вид, Разрезы, Текст и другие.
panelsПанель выбранной вкладки с настройками и данными расчета.
legendЛегенда температур. Без этого токена остается только картинка-шкала.
statusНижняя строка: температура под курсором.
toolsКнопки поверх модели.
helpСправка и подсказки.
openКнопка «Открыть полностью»: тот же расчет в полном окне, в новой вкладке.
sendКнопки «Отправить на расчет».
editПравка текста модели. Без этого токена текст на вкладке «Текст» только для чтения (кнопка отправки на расчет скрыта), текст от вашей страницы окно принимает и так. «Открыть полностью» открывает полное окно, где править можно.
keysГорячие клавиши. Без этого токена окно клавиш не принимает, чтобы не перехватывать клавиатуру вашей страницы.

Живой пример

Тест 3 стандарта EN ISO 10211. Окно ниже встроено кодом выше, с токенами tabs,panels,status,open,legend.

Окно загружается.

Управление со страницы

Страница-хозяин может управлять окном сообщениями postMessage: диапазоном заливки, камерой, набором показываемого. Это то, как работают кнопки под примером и демонстрация на главной.

Ограничение. Окно принимает команды и отвечает только страницам с того же адреса, что и оно (https://temper3d.ru): сообщения от чужих сайтов оно игнорирует. На чужом сайте окно работает как показ: набор частей задается параметром ui в адресе, камеру и срезы читатель двигает сам. Примеры ниже рассчитаны на страницы temper3d.ru.

Команды

Каждая команда - сообщение {type: "temper-view-cmd", cmd: …}; необязательный seq - ваш номер команды, окно вернет его в ответе.

cmdЧто делает
range {from, to}Диапазон заливки в °C (to больше from).
focus {target}Камера к точке: room-max и room-min - крайняя температура на поверхностях, обращенных в помещение; hot и cold - по всем поверхностям.
overviewОбщий вид с вращением.
stopОстановить вращение.
view {view}Весь вид одной строкой: камера, срезы, изотермы, заливка, вкладка. Строка - тот же набор параметров, что в адресе окна после «?».
ui {ui}Что показывать: строка «tabs,panels» или массив токенов.
const frame = document.querySelector("iframe");
const send = (msg) => frame.contentWindow.postMessage(msg, "https://temper3d.ru");

send({ type: "temper-view-cmd", seq: 1, cmd: "range", from: 0, to: 12 });  // диапазон заливки, °C
send({ type: "temper-view-cmd", cmd: "focus", target: "room-max" });       // камера к самой теплой точке в помещении
send({ type: "temper-view-cmd", cmd: "overview" });                        // общий вид с вращением
send({ type: "temper-view-cmd", cmd: "stop" });                            // остановить вращение
send({ type: "temper-view-cmd", cmd: "ui", ui: "status,legend" });         // сменить набор показываемого

Ответ окна

Окно присылает temper-view-state при готовности и при любом изменении вида.

window.addEventListener("message", (e) => {
  if (e.source !== frame.contentWindow || e.data?.type !== "temper-view-state") return;
  const { tMin, tMax, fillFrom, fillTo, rotating, seq } = e.data;
  // tMin, tMax - границы поля расчета; fillFrom, fillTo - текущий диапазон заливки;
  // seq - номер последней примененной команды: по нему видно, что окно команду приняло
});

Как сослаться на расчет в статье

Укажите ссылку на расчет, дату его завершения и версию движка. Дата завершения показана на вкладке «Расчет» в сведениях («Завершен»). Версию движка сервис отдает по адресу https://api.temper3d.ru/v1/engine (в MCP - temper_engine): записывайте ее на момент расчета. Пример:

Расчет температурного поля узла: Temper-3D (Temper Cloud), https://temper3d.ru/r/КЛЮЧ,
дата расчета 25.10.2026, движок версии N.

Какие расчеты можно встраивать

Окно читает расчет по его ссылке /r/КЛЮЧ, поэтому встроить можно только расчет с открытой ссылкой: доступ «по ссылке» (unlisted) или «в общем списке» (listed). Закрытый расчет (private, это значение по умолчанию) читатель без входа в аккаунт не увидит: окно предложит войти. Доступ меняет только владелец расчета - через API (PATCH /v1/runs/{id}/link с {"visibility": "unlisted"}) или MCP (temper_link_set_visibility). Открытая ссылка доступна всем, кто ее знает, поэтому не открывайте расчеты, которые не предназначены для публикации.

Расчет с закрытой ссылкой, как и локальный файл, встроить нельзя: у них нет адреса, который увидит читатель.