altec-icex / simple-models
Window model constructor
Requires
- php: >=7.2
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/>';