An open API service indexing awesome lists of open source software.

https://github.com/i-savelev/ifc_checker

A simple tool for checking ifc models
https://github.com/i-savelev/ifc_checker

bim ifc

Last synced: 11 days ago
JSON representation

A simple tool for checking ifc models

Awesome Lists containing this project

README

          

# ifc_checker

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

Подробнее в [статье](https://habr.com/p/883016/)

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

изображение

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

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

image

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

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

Программа позволяет сохранить пример конфигурации в файл json:
```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-отчетов в папке

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

```python
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`

Запуск:

```bash
python -m unittest tests.test_checker
```

## upd 2025.05.22
Добавил возможность выбирать несколько файлов ids. Теперь название файла ids указывается в скобках после названия модели.
Идея: https://github.com/i-savelev/ifc_checker/pull/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-отчетов
- В лог добавлены названия удаляемых пропущенных проверок
- Сводный отчет переработан в табличный вид с группировкой по моделям