PHPackages                             altec-icex/skeleton-windows - PHPackages - PHPackages  [Skip to content](#main-content)[PHPackages](/)[Directory](/)[Categories](/categories)[Trending](/trending)[Leaderboard](/leaderboard)[Changelog](/changelog)[Analyze](/analyze)[Collections](/collections)[Log in](/login)[Sign up](/register)

1. [Directory](/)
2. /
3. [Templating &amp; Views](/categories/templating)
4. /
5. altec-icex/skeleton-windows

ActiveLibrary[Templating &amp; Views](/categories/templating)

altec-icex/skeleton-windows
===========================

Skeleton window template model

v1.1(4y ago)017MITPHPPHP &gt;=7.2

Since Aug 6Pushed 3y ago1 watchersCompare

[ Source](https://github.com/altec-icex/skeleton-windows)[ Packagist](https://packagist.org/packages/altec-icex/skeleton-windows)[ Docs](https://altec.ru)[ RSS](/packages/altec-icex-skeleton-windows/feed)WikiDiscussions master Synced yesterday

READMEChangelog (2)DependenciesVersions (3)Used By (0)

skeleton-windows
================

[](#skeleton-windows)

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

Установка
---------

[](#установка)

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

```
composer require altec-icex/skeleton-windows

```

Описание модели
---------------

[](#описание-модели)

Модель конструкции состоит из изделий, пристыкованных друг к другу слева направо.

### Изделие

[](#изделие)

Изделия основаны на прямоугольных рамах, заданных шириной и высотой (нижняя балка параллельна полу). Верхние балки рам всех изделий конструкции лежат на одной прямой. Каждое изделие имеет тип (окно или балконная дверь), который задаётся кодом.

Левый верхний угол изделия является началом системы координат: ось X направлена вправо, ось Y направлена вниз.

Балки рамы образуют контур, содержащий первый проём изделия.

### Проём

[](#проём)

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

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

- заполнение;
- створка;
- импост;
- группа импостов.

### Заполнение

[](#заполнение)

Заполнение - это стеклопакет или сэндвич.

### Створка

[](#створка)

Створка характеризуется типом открывания. Контур балок створки образует проём. Допустимы следующие типы открывания:

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

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

### Импост

[](#импост)

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

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

### Группа импостов

[](#группа-импостов)

Группа импостов состоит из нескольких (N) одинаково ориентированных балок и образует несколько (N+1) проёмов.

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

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

[](#примечания-к-распаковке-в-программе)

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

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

[](#пример-использования)

```
use SkeletonWindows\Model;
use SkeletonWindows\SashFrame;
use SkeletonWindows\ModelPacker;

// Создаём новую модель
$model = new Model();
$model->setUserParameterValue('installation', true);

// Добавляем раму изделия c типом "window" и габаритами 1400 x 1400 мм
$frame = $model->add('window', 1400, 1400);
// Устанавливаем пользовательский параметр изделия
$frame->setUserParameterValue('base_profile', true);

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

// Берём левый проём импоста
$aperture = $impost->getLeftTopAperture();
// Вставляем в проём створку с типом открывания "поворотное влево"
$sash = $aperture->insertSash(SashFrame::LeftTurn);
// Устанавливаем польз. параметры створки
$sash->setUserParameterValue('micro_airing', true);
// Устанавливаем москитную сетку из системы с кодом "system_code" к створке
$mosquito = $sash->addMosquito('system_code');
// Устанавливаем польз. параметры москитной сетки
$mosquito->setUserParameterValue('anti_cat', true);
// Берём проём створки
$aperture = $sash->getAperture();
// Вставляем в проём стеклопакет
$aperture->insertFilling(false);

// Берём правый проём импоста
$aperture = $impost->getRightBottomAperture();
// Вставляем в проём стеклопакет
$filling = $aperture->insertFilling(false);
// Устанавливаем пользовательский параметр cтеклопакета
$filling->setUserParameterValue('coating', 'low_e');

// Добавляем раму изделия c типом "balcony_door" и габаритами 800 x 2000 мм
$frame = $model->add('balcony_door', 800, 2000);

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

// Берём проём створки
$aperture = $sash->getAperture();
// Вставляем в проём горизонтальный импост в положение 1400 мм
$impost = $aperture->insertImpost(true, 1400);

// Берём верхний проём импоста
$aperture = $impost->getLeftTopAperture();
// Вставляем в проём стеклопакет
$aperture->insertFilling(false);

// Берём нижний проём импоста
$aperture = $impost->getRightBottomAperture();
// Вставляем в проём сэндвич
$filling = $aperture->insertFilling(true);

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

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

// Посмотрим, что получилось
echo '' . json_encode(json_decode($pack), JSON_PRETTY_PRINT) . '';
```

###  Health Score

23

—

LowBetter than 27% of packages

Maintenance20

Infrequent updates — may be unmaintained

Popularity6

Limited adoption so far

Community7

Small or concentrated contributor base

Maturity51

Maturing project, gaining track record

 Bus Factor1

Top contributor holds 100% of commits — single point of failure

How is this calculated?**Maintenance (25%)** — Last commit recency, latest release date, and issue-to-star ratio. Uses a 2-year decay window.

**Popularity (30%)** — Total and monthly downloads, GitHub stars, and forks. Logarithmic scaling prevents top-heavy scores.

**Community (15%)** — Contributors, dependents, forks, watchers, and maintainers. Measures real ecosystem engagement.

**Maturity (30%)** — Project age, version count, PHP version support, and release stability.

###  Release Activity

Cadence

Every ~327 days

Total

2

Last Release

1777d ago

### Community

Maintainers

![](https://www.gravatar.com/avatar/da11a9b25666f9c59d17a0cb64287fe806170ea949dc33d1e6233cb398967bb7?d=identicon)[icexdev](/maintainers/icexdev)

---

Top Contributors

[![altec-icex](https://avatars.githubusercontent.com/u/68859304?v=4)](https://github.com/altec-icex "altec-icex (4 commits)")

---

Tags

modeltemplatewindows

### Embed Badge

![Health badge](/badges/altec-icex-skeleton-windows/health.svg)

```
[![Health](https://phpackages.com/badges/altec-icex-skeleton-windows/health.svg)](https://phpackages.com/packages/altec-icex-skeleton-windows)
```

###  Alternatives

[phpoffice/phpword

PHPWord - A pure PHP library for reading and writing word processing documents (OOXML, ODF, RTF, HTML, PDF)

7.5k34.7M186](/packages/phpoffice-phpword)[rize/uri-template

PHP URI Template (RFC 6570) supports both expansion &amp; extraction

420137.3M46](/packages/rize-uri-template)[larablocks/pigeon

A more flexible email message builder for Laravel 5 including chained methods, reusable message configurations, and message layout and template view management.

143.7k](/packages/larablocks-pigeon)

PHPackages © 2026

[Directory](/)[Categories](/categories)[Trending](/trending)[Changelog](/changelog)[Analyze](/analyze)
