ГОСТ Р 10.00.00.05-2020 "Единая система информационного моделирования (ЕСИМ). Жизненный цикл объекта информационного моделирования и информационной модели" устанавливает:
-
Классификация объектов информационного моделирования (ОИМ):
- Объекты капитального строительства (ОКС)
- Комплексы зданий и сооружений
- Отдельные здания и сооружения
- Линейные объекты
- Объекты инфраструктуры
-
Типы информационных моделей:
- Генеральная модель (сводная)
- Частные модели (по видам строительства)
- Специализированные модели (по задачам)
-
Процессы жизненного цикла информационной модели:
- Создание модели
- Ведение и актуализация
- Передача между участниками
- Верификация и валидация
- Архивирование
-
Требования к данным:
- Обязательные атрибуты элементов
- Классификаторы и кодификаторы
- Связи между элементами
- Метаданные модели
-
Уровни проработки (LOD/LOI/LOG):
- LOD (Level of Development) - геометрическая детализация
- LOI (Level of Information) - информационная насыщенность
- LOG (Level of Graphics) - графическая точность
@enum ObjectClassification begin
Class_Industrial # Промышленные объекты
Class_Residential # Жилые здания
Class_Public # Общественные здания
Class_Infrastructure # Инфраструктурные объекты
Class_Transport # Транспортные сооружения
Class_Energy # Энергетические объекты
Class_Hydrotechnical # Гидротехнические сооружения
Class_Linear # Линейные объекты
Class_Network # Сетевые объекты
Class_Complex # Комплексы объектов
end- LOD 100: Массовое представление, общие параметры
- LOD 200: Приблизительная геометрия с размерами
- LOD 300: Точная геометрия с конкретными размерами
- LOD 350: Детализация узлов и соединений
- LOD 400: Изготовительская детализация
- LOD 500: Фактическое исполнение (as-built)
- LOI A: Идентификационные данные
- LOI B: Технические характеристики
- LOI C: Эксплуатационные параметры
- LOI D: Данные производителя
- LOI E: Стоимость и ресурсы
- LOI F: Временные параметры (4D)
- LOI G: Экологические данные
- Определение целей использования (Purpose)
- Выбор категории модели
- Установка требуемого LOD/LOI
- Назначение ответственных
- Планирование этапов разработки
- Проверка геометрии (clash detection)
- Проверка полноты данных
- Проверка соответствия стандартам
- Проверка связей между элементами
- Формирование отчета о проверке
- Подготовка пакета передачи
- Проверка комплектности
- Подписание передаточного акта
- Регистрация в CDE
- Обновление статусов
| Стадия ЖЦ | Мин. LOD | Мин. LOI | Категории моделей | Обязательные документы |
|---|---|---|---|---|
| П1 (Планирование) | 100 | A | Архитектурная | GPZU, ТЗ |
| П2 (Анализ) | 100 | AB | Архитектурная, Конструктивная | Отчет об изысканиях |
| П3 (Концепция) | 200 | AB | Архитектурная, Конструктивная | Концепция, ТЭО |
| Д1 (Задание) | 200 | ABC | Все основные | Задание на проектирование |
| Д2 (Предпроект) | 200 | ABC | Архитектурная, Конструктивная, Инженерная | Пояснительная записка |
| Д3 (Проект) | 300 | ABCD | Все категории | Проектная документация |
| Д4 (Рабочая) | 350 | ABCDE | Все категории | Рабочая документация |
| Д5 (Экспертиза) | 300 | ABCD | Сводная модель | Заключение экспертизы |
| С1 (Подготовка) | 350 | ABCDE | Конструктивная, Инженерная | Разрешение на строительство |
| С2 (Строительство) | 400 | ABCDEF | Все категории | Журнал работ |
| С3 (Спецработы) | 400 | ABCDEF | Специализированные | Акты скрытых работ |
| С4 (ПНР) | 400 | ABCDEFG | Инженерная, Технологическая | Протоколы испытаний |
| В1 (Исполнительная) | 500 | ABCDEFG | Исполнительная модель | ИД |
| В2 (Проверка) | 500 | ABCDEFG | Сводная модель | Акт проверки |
| В3 (Ввод) | 500 | ABCDEFG | Сводная модель | Разрешение на ввод |
| В4 (Передача) | 500 | ABCDEFG | Эксплуатационная модель | Передаточный акт |
| Э1 (Эксплуатация) | 500 | ABCDEFG | Эксплуатационная | Журнал эксплуатации |
| Э2 (ТО) | 500 | ABCDEFG | Модель ТО | План ТО |
| Э3 (Ремонт) | 500 | ABCDEFG | Ремонтная модель | Дефектная ведомость |
| Э4 (Мониторинг) | 500 | ABCDEFG | Мониторинговая модель | Отчет мониторинга |
struct ModelElement
id::UUID
guid::String # Globally Unique Identifier по IFC
name::String
type::ModelElementType
classification::String # Код по классификатору
# Геометрия
geometry::Union{Nothing, GeometryData}
lod::LevelOfDevelopment
# Информация (LOI)
attributes::Dict{String, Any}
parameters::Dict{String, ParameterValue}
# Связи
parent::Union{Nothing, UUID}
children::Vector{UUID}
related_elements::Vector{RelatedElement}
# Документы
attached_documents::Vector{UUID}
# Статусы
status::ElementStatus
created_date::Date
modified_date::Date
author::UUID
# Стадии присутствия
stages_present::Vector{DetailedLifecycleStage}
end- Work In Progress (WIP): В разработке
- Shared: Готов к обмену
- Published: Утвержден
- Archived: Архивирован
struct ElementChangeHistory
element_id::UUID
changes::Vector{NamedTuple{
(:version, :date, :author, :change_type, :description, :old_value, :new_value),
Tuple{String, Date, UUID, Symbol, String, Any, Any}
}}
endСтандарт определяет строгие правила перехода:
- Прямой переход: Только на следующую стадию
- Возврат: Возможен при выявлении несоответствий
- Параллельное выполнение: Допускается для некоторых стадий
- Точки контроля: Обязательные контрольные точки между фазами
- WIP (Work in Progress): Рабочая зона разработчика
- Shared: Зона обмена между участниками
- Published: Зона утвержденной документации
- Archived: Архив завершенных проектов
- Регистрация пользователей и ролей
- Контроль доступа к данным
- Ведение журналов операций
- Резервное копирование
- Синхронизация версий
- IFC4: Международный стандарт обмена
- RVT: Autodesk Revit
- DWG/DXF: AutoCAD
- NWD/NWC: Navisworks
- CDE: Российские платформы (ПИЛОТ BIM, SmartHub, etc.)
- ОКПД2: Классификация продукции
- КСФ: Классификатор строительных ресурсов
- ФККО: Федеральная классификация отходов
- ОКС: Общероссийский классификатор сооружений
- Полнота элементов (%)
- Соответствие LOD (%)
- Количество коллизий
- Время загрузки модели
- Размер файла
- Согласованность данных
- Корректность связей
- Соответствие стандартам
- Читаемость структуры
using UrbanMAS.Lifecycle
using UrbanMAS.BIMManager
# Создание объекта
object = LCObject(
name = "Жилой комплекс \"Северный\"",
type = :building,
category = "41.20.1", # ОКПД2
address = "г. Москва, ул. Примерная, д. 1",
coordinates = (55.7558, 37.6173),
area = 15000.0,
floors = 25,
ownership = :private
)
# Создание жизненного цикла
lifecycle = create_lifecycle(object)
# Добавление информационной модели
model = InformationModel(
object_id = object.id,
name = "Архитектурная модель",
category = Model_Architectural,
lod = LOD_200,
author = designer_id,
responsible_party = design_company_id,
applicable_stages = [Stage_PreProjectConcept, Stage_DesignPreliminary]
)
add_model!(lifecycle, model)
# Переход на следующую стадию
advance_stage!(lifecycle, Stage_DesignAssignment)# Проверка готовности к переходу
requirements = lifecycle.stage_requirements[Stage_DesignExpertise]
println("Обязательные документы:")
for doc_type in requirements.mandatory_documents
println(" - $doc_type")
end
println("\nТребуемые модели:")
for model_cat in requirements.required_model_categories
println(" - $model_cat (мин. LOD: $(requirements.minimum_lod))")
end
# Проверка выполнения критериев
is_ready = check_stage_completion(lifecycle, Stage_DesignBasic)
println("\nГотовность к переходу: $is_ready")# Создание новой версии модели
new_model = update_model_version!(
lifecycle,
model.id,
"2.0",
["Добавлены детали фасада", "Обновлены помещения"],
author = senior_designer_id
)
# Проверка истории версий
history = lifecycle.model_history[model.id]
for version in history.versions
println("Версия $(version.version): $(version.date)")
println(" Изменения: $(version.changes)")
end# Формирование полного отчета
report = export_lifecycle_report(lifecycle)
println(report)
# Получение метрик
metrics = get_lifecycle_metrics(lifecycle)
println("""
Текущая стадия: $(metrics.current_stage)
Пройдено стадий: $(metrics.total_stages_completed)
Длительность: $(metrics.duration_days) дней
Использование бюджета: $(round(metrics.budget_utilization, digits=1))%
Документов: $(metrics.document_count)
Моделей: $(metrics.model_count)
""")# Застройщик управляет ЖЦ объекта
function developer_manage_lifecycle(developer::DeveloperAgent,
lifecycle::AssetLifecycle)
# Проверка текущей стадии
current = lifecycle.current_stage
# Принятие решения о переходе
if check_stage_completion(lifecycle, current)
next_stage = get_next_stage(current)
advance_stage!(lifecycle, next_stage)
end
# Выделение финансирования
allocate_budget!(developer, lifecycle)
end# Расчет стоимости на основе модели
function calculate_cost_from_model(model::InformationModel)::Money
total = Money(0)
for element in model.elements
if has_parameter(element, "cost")
total += get_parameter(element, "cost")
end
end
return total
end# Выявление рисков на основе стадии ЖЦ
function identify_lifecycle_risks(lifecycle::AssetLifecycle)::Vector{Risk}
risks = Risk[]
stage = lifecycle.current_stage
phase = get_phase_for_stage(stage)
if phase == :design
push!(risks, Risk(:design_delay, "Задержка проектирования", 0.3, 0.7))
push!(risks, Risk(:budget_overrun, "Перерасход бюджета", 0.4, 0.6))
elseif phase == :construction
push!(risks, Risk(:safety_incident, "Несчастный случай", 0.1, 0.9))
push!(risks, Risk(:quality_defect, "Дефекты качества", 0.5, 0.5))
end
return risks
endРеализованный модуль жизненного цикла полностью соответствует требованиям ГОСТ Р 10.00.00.05-2020 и обеспечивает:
- Полное покрытие стадий ЖЦ: От предпроектной до вывода из эксплуатации
- Детализацию требований: По документам, моделям, LOD/LOI
- Управление версиями: Полный контроль версий моделей и документов
- Валидацию и проверку: Автоматическая проверка соответствия
- Интеграцию с участниками: Все агенты системы работают с единой моделью ЖЦ
- Отчетность: Формирование отчетов по требованию
Это позволяет использовать систему для:
- Моделирования градостроительной деятельности
- Анализа экономических моделей строительства
- Управления капитальными вложениями
- Контроля жизненного цикла сложных объектов