altec-icex/simple-models

Window model constructor

v1.3 2025-03-28 07:23 UTC

This package is not auto-updated.

Last update: 2025-04-25 07:48:35 UTC


README

Набор классов для создания и упаковки простых моделей окон, стеклопакетов, сэндвичей и москитных сеток.

Установка

Установка осуществляется стандартно через менеджер пакетов.

composer require altec-icex/simple-models

Описание модели окна/двери

Модель описывает прямоугольную раму окна или двери с габаритными размерами.

Рама изделия

Рама имеет тип (окно или дверь), системы профиля, основу, покрытия и фурнитуру, задаваемые кодами, а также признак наличия порога.

Рама содержит первый проём изделия.

Проём

Проём образуется контуром из балок, в него может быть установлена "вставка" и только одна.

Типы вставок:

  • заполнение: стеклопакет или сэндвич;
  • створка;
  • импост;
  • штульп.

Стеклопакет

Заполнение с артикулом стеклопакета

Сэндвич

Заполнение с артикулом сэндвича и необязательными покрытиями (собственными или унаследованными от окна).

Створка

Створка характеризуется типом открывания.

Допустимы следующие распашные типы открывания:

  • поворотная влево;
  • поворотно-откидная влево;
  • поворотная вправо;
  • поворотно-откидная вправо;
  • откидная;
  • верхнеподвесная.

Нижняя балка створки может быть заменена на цоколь.

Контур балок створки образует проём, в который можно вставить заполнение или импост.

К створке может быть добавлена москитная сетка.

Импост

Импост является разделителем проёма и образует два дочерних проёма.

Балка импоста имеет ориентацию - вертикальная или горизонтальная, устанавливается в заданное местоположение - координата по оси X для вертикального импоста и по оси Y для горизонтального. Началом системы координат является верхний левый угол рамы, ось X направлена вправо, а ось Y направлена вниз.

Два проёма импоста обозначаются как "левый-верхний" и "правый-нижний".

Штульп

Штульп образует группу из двух поворотных створок, рабочая створка штульпа может быть поворотно-откидной.

Штульп может быть левым или правым, что указывает на штульповую створку.

К штульпу может быть добавлена москитная сетка на весь проём или только на рабочую створку.

Створки, образованные штульпом не имеют собственных типов открывания и москитных сеток.

Москитная сетка

Москитная сетка имеет систему, базовый цвет, тип полотна и покрытие рамки, задаваемые кодами, а также сторону петель.

Есть возможность наследования внешнего покрытия окна для покрытия рамки.

Рама, створки, стеклопакеты, сэндвичи и москитные сетки могут быть дополнены значениями пользовательских параметров.

Примечания к распаковке в программе altAwin

  • все элементы модели будут снабжены всеми допустимыми пользовательскими параметрами со значениями по умолчанию;
  • все балки будут иметь "авто" артикул профиля и армирования;
  • все типы соединения контурных балок будут подобраны автоматически;
  • тип ручки у рабочих створок будет выбран на основе типа изделия и типа открывания;
  • ручки будут установлены в положение "авто";
  • заполнения будут обрамлены штапиком;
  • для москитных сеток будет назначен автоматический режим расстановки поперечин.

Пример использования

use SimpleModels\WindowModel;
use SimpleModels\WindowModelPacker;
use SimpleModels\SashFrameInterface;

// Создаём модель изделия размером 1400x1400
$model = new WindowModel(1400, 1400);

// Берём раму
$frame = $model->getFrame();

// Устанавливаем тип изделия с кодом "window"
$frame->setItemTypeCode('window');

// Устанавливаем систему профиля с кодом "veka"
$frame->setProfileSystemCode('veka');

// Устанавливаем систему фурнитуры с кодом "roto"
$frame->setHardwareSystemCode('roto');

// Устанавливаем внутреннее покрытие с кодом цвета "RAL8023"
$frame->setInnerCoatingCode('RAL8023');

// Устанавливаем внешнее покрытие с кодом цвета "RAL7045"
$frame->setOuterCoatingCode('RAL7045');

// Устанавливаем покрытие фальца с кодом цвета "RAL8023"
$frame->setFoldCoatingCode('RAL8023');

// Устанавливаем пользовательский параметр изделия
$frame->setUserParameterValue('sealing_color', 'gray');

// Берём проём рамы
$aperture = $frame->getAperture();

// Вставляем в проём вертикальный импост в положение 700
$impost = $aperture->insertImpost(false, 700);

// Берём левый проём импоста
$aperture = $impost->getLeftTopAperture();

// Вставляем в проём створку с типом открывания "поворотное влево"
$sash = $aperture->insertSash(SashFrameInterface::LeftTurn);

// Берём проём створки
$sashAperture = $sash->getAperture();

// Вставляем в проём стеклопакет с артикулом 4_16_4
$glass = $sashAperture->insertGlass('4_16_4');

// Устанавливаем пользовательский параметр створки
$sash->setUserParameterValue('micro_airing', true);

// Добавляем к створке москитную сетку
$mosquito = $sash->addMosquito();

// Устанавливаем систему москитной сетки с кодом "plunger"
$mosquito->setSystemCode('plunger');

// Устанавливаем базовый цвет москитной сетки с кодом "white"
$mosquito->setBaseColorCode('white');

// Устанавливаем тип полотна москитной сетки с кодом "antifly"
$mosquito->setСlothTypeCode('antifly');

// Сбрасываем наследование покрытия окна для рамки москитной сетки
$mosquito->setAutoFrameCoating(false);

// Устанавливаем покрытие рамки москитной сетки с кодом цвета "RAL7045"
$mosquito->setFrameCoatingCode('RAL7045');

// Устанавливаем пользовательский параметр москитной сетки
$mosquito->setUserParameterValue('crossbar', 1);

// Берём правый проём импоста
$aperture = $impost->getRightBottomAperture();

// Вставляем в проём сэндвич с артикулом "pvc24"
$sandwich = $aperture->insertSandwich('pvc24');

// Отключаем наследование покрытий изделия
$sandwich->setAutoCoatings(false);

// Устанавливаем внутреннее покрытие сэндвича с кодом цвета "RAL8023"
$sandwich->setInnerCoatingCode('RAL8023');

// Устанавливаем внешнее покрытие сэндвича с кодом цвета "RAL7045"
$sandwich->setOuterCoatingCode('RAL7045');

// Создаём упаковщика модели окна
$packer = new WindowModelPacker();

// Запаковываем модель для api
$pack = $packer->pack($model);

// Вывод результата
echo '<pre>' . json_encode($pack) . '</pre><hr/>';

Описание модели стеклопакета

Модель описывает прямоугольный стеклопакет с габаритными размерами.

Стеклопакет

У стеклопакета обязательно должен быть задан артикул. Также возможно задание значений пользовательским параметрам.

Примечания к распаковке в программе altAwin

  • все незаданные допустимые пользовательские параметры будут иметь значение по умолчанию.

Пример использования

use SimpleModels\GlassModel;
use SimpleModels\GlassModelPacker;

// Создаём модель стеклопакета размером 1000x1000
$model = new GlassModel(1000, 1000);

// Берём стеклопакет
$glass = $model->getGlass();

// Устанавливаем артикул
$glass->setMarking('4_16_4');

// Устанавливаем пользовательский параметр
$glass->setUserParameterValue('facet', 1);

// Создаём упаковщика модели стеклопакета
$packer = new GlassModelPacker();

// Запаковываем модель для api
$pack = $packer->pack($model);

// Вывод результата
echo '<pre>' . json_encode($pack) . '</pre><hr/>';

Описание модели сэндвича

Модель описывает прямоугольный сэндвич с габаритными размерами.

Сэндвич

У сэндвича обязательно должен быть задан артикул. Сэндвич может обладать покрытиями заданными кодами цветов. Также возможно задание значений пользовательским параметрам.

Примечания к распаковке в программе altAwin

  • все незаданные допустимые пользовательские параметры будут иметь значение по умолчанию.

Пример использования

use SimpleModels\SandwichModel;
use SimpleModels\SandwichModelPacker;

// Создаём модель сэндвича размером 1000x1000
$model = new SandwichModel(1000, 1000);

// Берём сэндвич
$sandwich = $model->getSandwich();

// Устанавливаем артикул
$sandwich->setMarking('pvc24');

// Устанавливаем внутреннее покрытие сэндвича с кодом цвета "RAL8023"
$sandwich->setInnerCoatingCode('RAL8023');

// Устанавливаем внешнее покрытие сэндвича с кодом цвета "RAL7045"
$sandwich->setOuterCoatingCode('RAL7045');

// Устанавливаем пользовательский параметр
$sandwich->setUserParameterValue('sealing', true);

// Создаём упаковщика модели сэндвича
$packer = new SandwichModelPacker();

// Запаковываем модель для api
$pack = $packer->pack($model);

// Вывод результата
echo '<pre>' . json_encode($pack) . '</pre><hr/>';

Описание модели москитной сетки

Модель описывает прямоугольную москитную сетку с габаритными размерами.

Москитная сетка

У москитной сетки обязательно должна быть задана система и опционально тип полотна и покрытие рамки с помощью кодов. Также возможно задание значений пользовательским параметрам.

Примечания к распаковке в программе altAwin

  • будет назначен автоматический режим расстановки поперечин;
  • все незаданные допустимые пользовательские параметры будут иметь значение по умолчанию.

Пример использования

use SimpleModels\MosquitoModel;
use SimpleModels\MosquitoModelPacker;

// Создаём модель москитной сетки размером 800x1400
$model = new MosquitoModel(800, 1400);

// Берём москитную сетку
$mosquito = $model->getMosquito();

// Устанавливаем систему с кодом "plunger"
$mosquito->setSystemCode('plunger');

// Устанавливаем базовый цвет с кодом "white"
$mosquito->setBaseColorCode('white');

// Устанавливаем тип полотна с кодом "antifly"
$mosquito->setСlothTypeCode('antifly');

// Устанавливаем покрытие рамки с кодом цвета "RAL7045"
$mosquito->setFrameCoatingCode('RAL7045');

// Устанавливаем левую сторону для петель
$mosquito->setHingeSide(1);

// Устанавливаем пользовательский параметр
$mosquito->setUserParameterValue('crossbar', 1);

// Создаём упаковщика модели москитной сетки
$packer = new MosquitoModelPacker();

// Запаковываем модель для api
$pack = $packer->pack($model);

// Вывод результата
echo '<pre>' . json_encode($pack) . '</pre><hr/>';