Skip to content

i-savelev/ifc_checker

Repository files navigation

ifc_checker

ifc_checker_script - скрипт для проверки IFC моделей по требованиям IDS c помощью библиотеки ifcopenshell.

Подробнее в статье

Запуск программы

Скрипт содержит интерфейс и обладает следующими настройками:

изображение
  1. Все модели IFC из выбранной папки будут проверены. Поддерживается вложенность папок. При формировании отчетов будет скопирована папочная структура директории с файалми ifc.
  2. Выбор файлов IDS
  3. Отдельные и сводный отчеты будут сохранены в выбранную папку
  4. Выбор файла конфигурации. Если указать файл конфигурации, модели ifc будут проверены только по заданным ids. Если файл конфигурации не выбирать, каждый ifc файл будет проверен по всем файлам ids.
  5. Сохранение шаблона конфигурации в формате json для последующего редактирования.
  6. Можно удалить все пропущенные проверки из итоговых отчетов.
  7. После выбора папок и файлов можно запускать проверку.
  8. Можно прямо тут открыть папку. Там будут отчеты и лог-файл.
  9. Статус проверок будет отражен в текстовом поле, в там числе и ошибки при выполнении.

В консоли будет отображаться статус выполнения в реальном времени.

image

В папке samples содержатся IFC модели и IDS файл для тестовых проверок, а также примеры отчетов для ознакомления.

Работа с конфигурацией проверки

Программа позволяет сохранить пример конфигурации в файл json:

{
    "ids-ifc_mapping": {
        "Имя ids 1": [
            "часть названия файла ifc",
            "часть названия файла ifc"
        ],
        "Имя ids 2": [
            "часть названия файла ifc",
            "часть названия файла ifc"
        ],
        "Имя ids 3": [
            "часть названия файла ifc",
            "часть названия файла ifc"
        ],
        "Имя ids 4": [
            "часть названия файла ifc",
            "часть названия файла ifc"
        ]
    }
}

В этом файле вместо "Имя ids 1" нужно указать название файла ids без расширения ".ids"

Вместо "часть названия файла ifc" указать часть названия файла ifc, например, "_КР".

Если оставить этот список пустым, по данному ids файлу будут проверены все модели.

С помощью файла конфигурации можно указывать, какие модели будут проверены по конкретному ids.

Публичный API

Пакет ifc_checker_script можно использовать не только через графический интерфейс, но и как обычный Python-модуль.

Публичные функции:

  • check_ifc(...) - запуск проверки IFC моделей по выбранным IDS файлам
  • read_json_config(...) - чтение json-конфигурации сопоставления ids-ifc_mapping
  • save_json_config_template(...) - сохранение шаблона json-конфигурации
  • ifc_exist_in_ids_dict(...) - проверка попадания IFC файла в правила конфигурации
  • delete_skipped_from_one_html(...) - удаление пропущенных проверок из одного HTML-отчета
  • delete_skipped(...) - удаление пропущенных проверок из всех HTML-отчетов в папке

Пример импорта:

from ifc_checker_script import check_ifc, read_json_config

Notebooks

В папке notebooks находятся примеры работы без GUI:

  • public_api.ipynb - обзор публичного API с примерами вызова функций модуля
  • run_tests.ipynb - запуск тестового модуля проекта из notebook

В notebooks результаты сохраняются в папку .output в корне репозитория.

Тесты

Для проверки бизнес-логики добавлен модуль tests/test_checker.py.

Тест использует данные из samples и проверяет:

  • генерацию отдельных HTML-отчетов
  • генерацию сводного отчета
  • очистку пропущенных проверок skipped

Запуск:

python -m unittest tests.test_checker

upd 2025.05.22

Добавил возможность выбирать несколько файлов ids. Теперь название файла ids указывается в скобках после названия модели. Идея: #2

upd 2025.07.19

  • Добавлена возможность указывать файл конфигурации в формате json
  • Добавлено консольное окно вывода информации о прогрессе проверок
  • Добавлены имена файлов ifc в отдельные отчеты
  • Реализовано копирование папочной структуры директории с ifc файлами
  • Ссылка в сводном отчете на конкретный отчет перенесена в заголовок с названием файла

upd 2026.01.18

  • Добавлено логгирование. Лог сохраняется в папку с отчетами
  • Добавлена кнопака для открытия папки очтетов

upd 2026.05.23

  • ifc_checker_script оформлен как модуль с публичным API через __init__.py
  • Бизнес-логика проверки IFC вынесена в отдельный модуль и может вызываться без графического интерфейса
  • Добавлены тестовый модуль и notebooks с примерами использования API и запуска тестов
  • Добавлена опция удаления пропущенных проверок из HTML-отчетов
  • В лог добавлены названия удаляемых пропущенных проверок
  • Сводный отчет переработан в табличный вид с группировкой по моделям

About

A simple tool for checking ifc models

Topics

Resources

License

Stars

Watchers

Forks

Packages

 
 
 

Contributors