Add Dispatch_V0.1.1
This commit is contained in:
104
Dispatch_V0.1.1/gui/components/model_view/_mv_racks.py
Normal file
104
Dispatch_V0.1.1/gui/components/model_view/_mv_racks.py
Normal file
@@ -0,0 +1,104 @@
|
||||
# -*- coding: utf-8 -*-
|
||||
# gui/components/model_view/_mv_racks.py
|
||||
"""Логика работы с размещением стеллажей и связанными визуальными состояниями.
|
||||
|
||||
Этот модуль компонует полный ``RackPlacementMixin`` из набора
|
||||
мелких подмиксинов, каждый из которых отвечает за отдельную область
|
||||
логики размещения стеллажей. Также здесь хранятся константы уровня
|
||||
класса, общие для всех подмиксинов.
|
||||
"""
|
||||
|
||||
from __future__ import annotations
|
||||
|
||||
from gui.components.model_view._mv_racks_projection import RackPlacementProjectionMixin
|
||||
from gui.components.model_view._mv_racks_visual import RackPlacementVisualMixin
|
||||
|
||||
from gui.components.model_view._mv_racks_lifecycle import RackLifecycleMixin
|
||||
from gui.components.model_view._mv_racks_crud import RackCrudMixin
|
||||
from gui.components.model_view._mv_racks_camera import RackCameraMixin
|
||||
from gui.components.model_view._mv_racks_shelf import RackShelfMixin
|
||||
from gui.components.model_view._mv_racks_selection import RackSelectionMixin
|
||||
from gui.components.model_view._mv_racks_move import RackMoveMixin
|
||||
from gui.components.model_view._mv_racks_picking import RackPickingMixin
|
||||
from gui.components.model_view._mv_racks_shelf_render import RackShelfRenderMixin
|
||||
from gui.components.model_view._mv_racks_hover import RackHoverMixin
|
||||
from gui.components.model_view._mv_racks_preview import RackPreviewMixin
|
||||
from gui.components.model_view._mv_racks_codes import RackCodesMixin
|
||||
from gui.components.model_view._mv_racks_collision import RackCollisionMixin
|
||||
from gui.components.model_view._mv_racks_mezzanine import RackMezzanineMixin
|
||||
|
||||
|
||||
class RackPlacementMixin(
|
||||
RackLifecycleMixin,
|
||||
RackCrudMixin,
|
||||
RackCameraMixin,
|
||||
RackShelfMixin,
|
||||
RackSelectionMixin,
|
||||
RackMoveMixin,
|
||||
RackPickingMixin,
|
||||
RackShelfRenderMixin,
|
||||
RackHoverMixin,
|
||||
RackPreviewMixin,
|
||||
RackCodesMixin,
|
||||
RackCollisionMixin,
|
||||
RackMezzanineMixin,
|
||||
RackPlacementProjectionMixin,
|
||||
RackPlacementVisualMixin,
|
||||
):
|
||||
"""Миксин с логикой размещения стеллажей внутри зоны."""
|
||||
|
||||
_PALLET_CENTER_SPAN_MM = 3706
|
||||
_PALLET_FOOTPRINT_WIDTH_SINGLE_MM = 3796
|
||||
_PALLET_DEPTH_MM = 1100
|
||||
_PALLET_HEIGHT_MM = 2505
|
||||
_PALLET_BUFFER_MM = 100
|
||||
_RACK_COLLISION_BUFFER_MM = 100
|
||||
_MAX_BUFFER_OVERLAP_MM = 100
|
||||
_MEZZANINE_CONTAINMENT_MARGIN_MM = 100
|
||||
_SHELF_NORMS = {
|
||||
"A": {
|
||||
"base_surface_offset_from_bbox_top_mm": 0.0,
|
||||
"min_base_height_mm": 80.0,
|
||||
"min_useful_height_mm": 16.0,
|
||||
"min_inter_shelf_mm": 53.0,
|
||||
"shelf_height_mm": 37.0,
|
||||
"step_mm": 53.0,
|
||||
},
|
||||
"B": {
|
||||
"base_surface_offset_from_bbox_top_mm": 15.0,
|
||||
"min_base_height_mm": 130.0,
|
||||
"min_useful_height_mm": 68.0,
|
||||
"min_inter_shelf_mm": 113.0,
|
||||
"shelf_height_mm": 45.0,
|
||||
"step_mm": 37.5,
|
||||
},
|
||||
"PALLET": {
|
||||
"base_surface_offset_from_bbox_top_mm": 55.0,
|
||||
"min_base_height_mm": 252.0,
|
||||
"min_useful_height_mm": 112.0,
|
||||
"min_inter_shelf_mm": 250.0,
|
||||
"shelf_height_mm": 250.0,
|
||||
"step_mm": 50.0,
|
||||
},
|
||||
}
|
||||
|
||||
|
||||
# ---------------------------------------------------------------------------
|
||||
# Module workflow notes
|
||||
# ---------------------------------------------------------------------------
|
||||
# 1) Задача модуля:
|
||||
# Композиционный фасад подсистемы стеллажей.
|
||||
#
|
||||
# 2) Последовательность действий и вызовов:
|
||||
# A. Композиционный класс RackPlacementMixin:
|
||||
# Назначение: объединяет поведение через RackLifecycleMixin, RackCrudMixin, RackCameraMixin, RackShelfMixin, RackSelectionMixin, RackMoveMixin, RackPickingMixin, RackShelfRenderMixin, RackHoverMixin, RackPreviewMixin, RackCodesMixin, RackCollisionMixin, RackMezzanineMixin, RackPlacementProjectionMixin, RackPlacementVisualMixin.
|
||||
# Собственная вычислительная логика отсутствует; маршрутизация идёт в родительские миксины.
|
||||
#
|
||||
# 3) Важные ограничения и инварианты:
|
||||
# - Модуль выполняется в составе ModelViewWidget и использует согласованные поля состояния self._... .
|
||||
# - Межмодульная связность: только через фасад model_view; прямые обращения между zone, rack, shelf, cell запрещены.
|
||||
# - Очистка состояния должна быть идемпотентной: повторный вызов не меняет корректное состояние в ошибочное.
|
||||
#
|
||||
# 4) Правило сопровождения:
|
||||
# - Любое изменение сценария должно сопровождаться обновлением этого блока с сохранением фактического порядка вызовов.
|
||||
# - При добавлении метода указывать его место в цепочке сценария (запуск, основной шаг, завершение, вспомогательная логика).
|
||||
Reference in New Issue
Block a user