ifc_checker_script - скрипт для проверки IFC моделей по требованиям IDS c помощью библиотеки ifcopenshell.
Подробнее в статье
Скрипт содержит интерфейс и обладает следующими настройками:
- Все модели IFC из выбранной папки будут проверены. Поддерживается вложенность папок. При формировании отчетов будет скопирована папочная структура директории с файалми ifc.
- Выбор файлов IDS
- Отдельные и сводный отчеты будут сохранены в выбранную папку
- Выбор файла конфигурации. Если указать файл конфигурации, модели ifc будут проверены только по заданным ids. Если файл конфигурации не выбирать, каждый ifc файл будет проверен по всем файлам ids.
- Сохранение шаблона конфигурации в формате json для последующего редактирования.
- Можно удалить все пропущенные проверки из итоговых отчетов.
- После выбора папок и файлов можно запускать проверку.
- Можно прямо тут открыть папку. Там будут отчеты и лог-файл.
- Статус проверок будет отражен в текстовом поле, в там числе и ошибки при выполнении.
В консоли будет отображаться статус выполнения в реальном времени.
В папке 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.
Пакет ifc_checker_script можно использовать не только через графический интерфейс, но и как обычный Python-модуль.
Публичные функции:
check_ifc(...)- запуск проверки IFC моделей по выбранным IDS файламread_json_config(...)- чтение json-конфигурации сопоставленияids-ifc_mappingsave_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 находятся примеры работы без GUI:
public_api.ipynb- обзор публичного API с примерами вызова функций модуляrun_tests.ipynb- запуск тестового модуля проекта из notebook
В notebooks результаты сохраняются в папку .output в корне репозитория.
Для проверки бизнес-логики добавлен модуль tests/test_checker.py.
Тест использует данные из samples и проверяет:
- генерацию отдельных HTML-отчетов
- генерацию сводного отчета
- очистку пропущенных проверок
skipped
Запуск:
python -m unittest tests.test_checkerДобавил возможность выбирать несколько файлов ids. Теперь название файла ids указывается в скобках после названия модели. Идея: #2
- Добавлена возможность указывать файл конфигурации в формате json
- Добавлено консольное окно вывода информации о прогрессе проверок
- Добавлены имена файлов ifc в отдельные отчеты
- Реализовано копирование папочной структуры директории с ifc файлами
- Ссылка в сводном отчете на конкретный отчет перенесена в заголовок с названием файла
- Добавлено логгирование. Лог сохраняется в папку с отчетами
- Добавлена кнопака для открытия папки очтетов
ifc_checker_scriptоформлен как модуль с публичным API через__init__.py- Бизнес-логика проверки IFC вынесена в отдельный модуль и может вызываться без графического интерфейса
- Добавлены тестовый модуль и notebooks с примерами использования API и запуска тестов
- Добавлена опция удаления пропущенных проверок из HTML-отчетов
- В лог добавлены названия удаляемых пропущенных проверок
- Сводный отчет переработан в табличный вид с группировкой по моделям