<?xml version="1.0" encoding="windows-1251"?>
<!-- Данный файл на примере описывает формат XML -файла для линейки программ packer3d-ver3, который содержит список ящиков. -->
<!-- Файл содержит список ящиков, предназначенных для укладки в транспортные средства. -->

<!-- Элементы файла содержат атбрибут val, по которому на этот элемент можно сослаться из другого места файла -->
<!-- Когда файл сохранятеся программой, атрибут val автоматически присваивается всем элементам, однако при ручном формировании файла -->
<!-- этот атрибут можно определить уникальным образом только для тех элементов, на которые будут ссылки из другой части файла. -->

<!-- Обязательный корневой элемент dapl, с атрибутами (обязательно должны присутствовать): -->
<!-- - object="item" -->
<!-- - version="1.4" -->
<dapl object="item" version="1.4">
  <!-- Обязательный объединяющий элемент items: -->
  <items val="1">
    <!-- Каждый ящки описывается тегом item, который содержит перечисление характеристик ящика. -->
    <!-- Обязательным атрибутом тега item должен быть kind, который опеределяет вид ящика: -->
    <!--  - box - обыкновенный прямоугольный ящик с тремя линейными размерами -->
    <!--  - cyl - цилинлр (бочка или кега) определяемая диамтром и высотой (пример ниже) -->
    <!--  При перечислении свойств ящика, все ненужные ограничения могут быть пропущены.-->
    <item val="2" kind="box">
      <!-- Название ящика - не более 1000 симовлов -->
      <name>гр.ящик1</name>
      <!-- Длина -->
      <length>100</length>
      <!-- Ширина -->
      <width>100</width>
      <!-- Высота -->
      <height>100</height>
      <!-- Масса -->
      <mass>1.000000</mass>
      <!-- Стоимость -->
      <price>0.000000</price>
      <!-- Ограничение на ориентацию ящика в транспортном средстве -->
      <!-- Данный раздел определяет вдоль каких направлений могут быть ориентированы линейные размеры ящика -->
      <!--  - a - вдоль любого направления  -->
      <!--  - x - ТОЛЬКО вдоль направления X (вдоль длины ТС) -->
      <!--  - у - ТОЛЬКО вдоль направления Y (вдоль ширины ТС) -->
      <!--  - z - ТОЛЬКО вдоль направления Z (вдоль высоты ТС) -->
      <!--  В частности, для того чтобы ящик не кантовался при укладке надо указать значение z для параметра height.-->
      <dir>
        <length>a</length>
        <width>a</width>
        <height>a</height>
      </dir>
      <!-- Порядок загрузки. Если в списке ящиков есть ящики с разным порядком, то  -->
      <!-- сначала будут загужены ящики с порядком 0, затем с порядком 1, и т.п.  -->
      <!-- Данная функциональность используется в случае, когда ТС загружается или разгруажается в нескольких точках.  -->
      <!-- В этом случае алгоритм предложит такую схему укладки, при которой сначала можно загрузить ящики порядка 0,  -->
      <!-- затем, в следующей точке, дозагрузить к ним ящики порядка 1 и так далее -->
      <order>0</order>
      <!-- Группы предмета. -->
      <!-- В некоторых случаях, определенные наборы ящиков определяют некий комплект. Например, когда перевозится мебель в разобранном состоянии, -->
	    <!-- все составные части одного предмета мебели составлют комплект (или группу). При это в каждой ТС должно быть обязатльно загружено целое число комплектов. -->
      <!-- То есть недопустимо, чтобы часть составных частей одного предмета медели вошли в одно ТС, а часть в другое. -->
      <!-- Для того чтобы алгоритм вычислят схему укладки, в кторой все ящики одного коплекта обязательно входят в одно ТС, для ящиков такого типа надо определить параметры группы -->
      <group>
        <!-- Наззвание группы -->
        <name>группа1</name>
        <!-- Иденттификатор группы, должен быть одним и тем же для всех ящиков комплекта -->
        <id>1</id>
        <!-- Количество ящиков такого типа в комлекте Например, в комплект шкафа могут входить 3 одинкаовых ящика "полки", -->
        <!-- при этом количество самих комплектов может быть больше 1, например, 4. Тогда данное значение должно быть равно 3, -->
        <!-- а параметр quantitiy (полное количество ящиков) 3*4=12 -->
        <quantity>1</quantity>
      </group>
      <!-- Допустимое давление на яшик сверху, если он ориентирован указанным линейным размером вертикально. -->
      <!-- Когда ящик хрупкий, и нельзя чтобы на него было поставлено много тяжелых ящиков, надо этим параметром ограничивать максимально допустимое давление. -->
      <!-- Однако, подбирая наиболее удачное и оптимальное положение ящика, алгоритм может переворачивать его.  И для разных ориентаций ящика, может быть указано разное ограничение. -->
      <!-- Если параметр не указан - ограничение отсутсвует. -->
      <press>
        <!-- Допустимое давление на яшик, если его длина ориентирована вертикально. -->
        <length/>
        <!-- Допустимое давление на яшик, если его ширина ориентирована вертикально. -->
        <width/>
        <!-- Допустимое давление на яшик, если его высота ориентирована вертикально. -->
        <height/>
      </press>
      <!--Хрупкость ящика: -->
      <!-- - 0 - означает, что ящик не имеет ограничений по хрупкости (установки на него сверху других предметов), -->
      <!--  - 1 - означает, что никакие ящики не могут быть установлены сверху данного ящика,-->
      <!-- - N>1 -означает, что не более чем (N-1) ящиков такого же ти могут быть установлены сверху данного ящика.-->
      <fragility>
        <!--хрупкость ящика, если его длина ориентирована вертикально.  -->
        <length>0</length>
        <!--хрупкость ящика, если его ширина ориентирована вертикально.  -->
        <width>0</width>
        <!--хрупкость ящика, если его высота ориентирована вертикально.  -->
        <height>0</height>
      </fragility>
      <!-- Замерзаемость ящика (морозостоякость)  -->
      <!-- В некоторых случаях, когда речь идет о перевозки продуктов, в зимнее время года, определенные ящики надо ставить подальше от двери, чтобы они не замерзли. -->
      <!-- Этот параметр определяет требования к установке ящика подальше от двери, 0 - нет ограничение на установку, 1 - ящик чуствителен к морозу. -->
      <freezable>0</freezable>
      <!-- Количество ящиков на паллете. -->
      <!-- Парамерт определяет количество ящков такого типа на паллетах, хранящихся на складе. -->
      <!-- Данный параметр используется в методе рядной загрузки, когда мы должны укалдывать ящики последовательно, -->
      <!-- причем каждый раз использовать такое кочлиество, которое кратное количеству ящиков на паллете. -->
      <!-- Это надо для того, чтобы гузчики последовательног гурзили паллеты поступающие со склада, а не откладывали -->
      <!-- с них ящики "на потом". -->
      <!-- Замечание: этот параметр никак не связан с укладкой ящиков на паллетах. -->
      <pal_quantity>0</pal_quantity>
      <!-- Уровень укладки. -->
      <!-- Это свойство является альтернативой всяким максимальным давлениеям на грань и -->
      <!-- определяет какие предметы могут быть сверху каких. -->
      <!-- Предметы 0-вого уровня могут быть в любом месте и допускают установку сверху любых предметов. -->
      <!-- На предметы уровня N можно ставить только предметы уровня N и выше. -->
      <level>0</level>
      <!-- Цвет предмета при отображении на схеме укладки (в HTML формате) -->
      <color>#0000FF</color>
      <!-- Количество предметов такого типа в заказе на расчет -->
      <quantity>2</quantity>
    </item>
    <!-- Пример еще одного прямоугольного ящика, входящего в первую группу  -->
    <item val="3" kind="box">
      <name>гр.ящик2</name>
      <length>100</length>
      <width>100</width>
      <height>100</height>
      <mass>1.000000</mass>
      <balt_id/>
      <price>0.000000</price>
      <dir>
        <length>a</length>
        <width>a</width>
        <height>a</height>
      </dir>
      <order>0</order>
      <group>
        <name>группа1</name>
        <id>1</id>
        <quantity>1</quantity>
      </group>
      <press>
        <length/>
        <width/>
        <height/>
      </press>
      <fragility>
        <length>0</length>
        <width>0</width>
        <height>0</height>
      </fragility>
      <freezable>0</freezable>
      <pal_quantity>0</pal_quantity>
      <level>0</level>
      <color>#663399</color>
      <quantity>2</quantity>
    </item>
    <!-- Пример прямоугольного ящика, не входящего ни в какую группу  -->
    <item val="4" kind="box">
      <name>ящик1</name>
      <length>100</length>
      <width>100</width>
      <height>100</height>
      <mass>1.000000</mass>
      <balt_id/>
      <price>0.000000</price>
      <dir>
        <length>a</length>
        <width>a</width>
        <height>a</height>
      </dir>
      <order>0</order>
      <group>
        <name/>
        <id>0</id>
        <quantity>0</quantity>
      </group>
      <press>
        <length/>
        <width/>
        <height/>
      </press>
      <fragility>
        <length>0</length>
        <width>0</width>
        <height>0</height>
      </fragility>
      <freezable>0</freezable>
      <pal_quantity>0</pal_quantity>
      <level>0</level>
      <color>#00FF00</color>
      <quantity>5</quantity>
    </item>
    <!-- Пример цилиндричесокго ящика (бочка или кега), не входящего ни в какую группу  -->
    <!-- Тут вместо параметров length и width должен быть указан параметр diam, определящие диаметр бочки. -->
    <item val="5" kind="cyl">
      <name>ящик2</name>
      <diam>100</diam>
      <height>100</height>
      <mass>1.000000</mass>
      <balt_id/>
      <price>0.000000</price>
      <dir>
        <length>a</length>
        <width>a</width>
        <height>a</height>
      </dir>
      <order>0</order>
      <group>
        <name/>
        <id>0</id>
        <quantity>0</quantity>
      </group>
      <press>
        <length/>
        <width/>
        <height/>
      </press>
      <fragility>
        <length>0</length>
        <width>0</width>
        <height>0</height>
      </fragility>
      <freezable>0</freezable>
      <pal_quantity>0</pal_quantity>
      <level>0</level>
      <color>#00FF00</color>
      <quantity>6</quantity>
    </item>
  </items>
</dapl>
