Metadata-Version: 2.1
Name: PyRastrWin
Version: 0.1.6
Summary: Python-пакет для взаимодействия с RastrWin3
Home-page: https://gitverse.ru/Shurik412/PyRastrWin
Author: Shurik412
Author-email: shurik412@mail.ru
License: GitVerse 1.0
Keywords: PyRastrWin,RastrWin3,RastrWin,RUSTab,Rastr,rastr_win,rastr_win3
Platform: Windows
Classifier: License :: Other/Proprietary License
Classifier: Programming Language :: Python :: 3.10
Classifier: Operating System :: Microsoft :: Windows
Requires-Python: >=3.10
Description-Content-Type: text/markdown
License-File: LICENSE
Requires-Dist: pywin32>=306
Provides-Extra: dev
Requires-Dist: pytest>=7.0; extra == "dev"
Requires-Dist: twine>=4.0.2; extra == "dev"

# **PyRastrWin**

**Python-пакет для взаимодействия с ПВК RastrWin3 x64(x32)**

## 🚀 Описание проекта

**PyRastrWin** — это Python-библиотека, разработанная для взаимодействия с программным комплексом RastrWin3, который используется для моделирования и анализа электроэнергетических систем. Программный комплекс RastrWin3 предназначен для решения задач по расчету, анализу и оптимизации режимов электрических сетей и систем.

RastrWin используется более чем в 150 организациях на территории:

- России
- Казахстана
- Киргизии
- Беларуси
- Молдовы
- Монголии
- Сербии

В России основными пользователями являются [Системный Оператор Единой Энергетической Системы (СО ЕЭС) и его филиалы](https://www.so-ups.ru/), Федеральная Сетевая Компания (ФСК), МРСК, проектные и научно-исследовательские институты (Энер-госетьпроект, ВНИИЭ, НИИПТ и т.д.).

[Программные комплексы RastrWin, RastrWin3, Bars, Lincor, Rustab, RastrKZ, RastrMDP.](https://www.rastrwin.ru/index.php)

Пакет позволяет автоматизировать задачи, такие как:

- Загрузка файлов с автоматическим определением шаблона в RastrWin3
- Сохранение файлов с автоматическим определением шаблона в RastrWin3
- Чтение и запись данных из таблиц RastrWin3
- Интеграция с другими Python-инструментами для анализа данных и визуализации

## 🎯 Возможности

✅ Подключение к RastrWin3 через COM-интерфейс

✅ Чтение данных из таблиц (например, узловых данных, ветвей, генераторов)

✅ Запуск расчетов и анализ результатов

✅ Поддержка сценариев для автоматизации рутинных задач

## 🛠️ Требования

- **Python 3.10+**

- **RastrWin3** (установленный и активированный)

- **Windows OS**

## 🧩 Зависимости

- `pywin32` — для взаимодействия с COM-интерфейсом Windows

## 📦 Установка

Вы можете установить пакет с помощью `pip`:

```bash
pip install PyRastrWin
```

Или напрямую из репозитория:

```bash
pip install git+https://gitverse.ru/Shurik412/PyRastrWin.git
```

## 🚀 Примеры использования

### 📊 **1. Подключение к RastrWin3**

```python
from PyRastrWin import RastrWin

# Создаем объект для взаимодействия
rastr = RastrWin()

# Открываем файл с моделью *.rst или любой другой шаблон 
rastr.load(filename="C:\\tmp\\test9.rst")

# Запускаем расчет режима клавиша `F5`
rastr.rgm()

# Сохраняем файл
rastr.save()

#
# Либо можно импортировать отдельные функции 

# import PyRastrWin
from PyRastrWin import rgm, load, save

# import pywin32
from win32com.client import Dispatch

# Создаем объект RastrWin с помощью lib pywin32
RASTR = Dispatch("Astra.Rastr")

# Открываем файл с моделью *.rst или любой другой шаблон
# Шаблон определяется через расширение загружаемого файла
load(rastr_win=RASTR, filename="C:\\tmp\\test9.rst")
# также можно загрузить по своему шаблону
# load(rastr_win=RASTR, filename="C:\\tmp\\test9.rst", name_template="режим")

# Запускаем расчет режима клавиша `F5`
rgm(rastr_win=RASTR)

# Сохраняем файл
# Шаблон определяется через расширение загружаемого файла
save(rastr_win=RASTR, filename="C:\\tmp\\test9.rst")
```

## ⚡ 2. Получение данных из модели

```python
# Получение параметра "Мощность генерации P" узла по порядковому номеру 
value_param = rastr.get_node(param="pg", row=0)
print(value_param) # 50.0
```

## ⚡ 3. Изменение данных в модели

```python
# Получение параметра "Мощность генерации P" узла по порядковому номеру
value_param_before = rastr.get_node(param="pg", row=0)
print(value_param_before) # 50.0

rastr.chenge_node(param="pg", row=0, value=60.0)

value_param_after = rastr.get_node(param="pg", row=0)
print(value_param_after) # 60.0
```

## 📚 Документация

Полная документация доступна по ссылке:  
📖 [Документация RastrPy](https://gitverse.ru/Shurik412/PyRastrWin/content/master)

## 🤝 Вклад в проект

Мы приветствуем ваши идеи, исправления и новые функции!

Присылайте свои идеи на эл. почту `shurik412@mail.ru`.

Создавайте **Issues** или присылайте **Pull Requests**.

## 🧑‍💻 Авторы

- **Александр Охрименко** — разработка и поддержка.
- **Служба электрических режимов/Филиал АО «СО ЕЭС» «Объединенное диспетчерское управление энергосистемы Центра»**

## ⚖️ Лицензия

Этот проект лицензирован под **GitVerse 1.0**

Подробнее см. [GitVerse 1.0](LICENSE).


# Changelog

Все заметные изменения в этом проекте документируются в этом файле.

## [0.1.5] - 2025-01-26

### Added in [0.1.5]

- Добавлены в configure_logging_save_file параметр filename для сохранение файла логов с дополнительным имененм.

```python

configure_logging_save_file(level=logging.DEBUG, filename: str = "")
```

### Changed

- Улучшена документация для API (README.md).

### Fixed

- Документацию в модулях.

## [0.1.5] - 2025-01-26

### Added in [0.1.5]

- Добавлены импорты

```python
from PyRastrWin import rgm        # функция для расчета режима;
from PyRastrWin import calc_i_dop # функция пересчитывает допустимые токи нагрузки (ТНВ) на основе температуры воздуха и процента перегрузки по току;
from PyRastrWin import run        # Запускает расчет ЭМПП в режиме аналогичном, используемому командой пользовательского интерфейса «Динамика».;
from PyRastrWin import run_ems    # Проводит расчет и возвращает результат расчета ЭМПП в EMS-режиме;
from PyRastrWin import mdp        # Функция для расчета МДП;
from PyRastrWin import ekv        # Функция для Эквивалентирования модели;
```

### Changed

- Улучшена документация для API (README.md).

### Fixed

- 

## [0.1.4] - 2025-01-08

### Added in [0.1.4]

- Добавлена возможность сохранять загруженный файл на выбор ползователя.
- Добавлена возможноть получени и изменения параметров в таблице node (Узлы).

```python
# Получение параметра "Мощность генерации P" узла по порядковому номеру
value_param_before = rastr.get_node(param="pg", row=0)
print(value_param_before) # 50.0

# Изменение параметра "Мощность генерации P" узла по порядковому номеру
rastr.chenge_node(param="pg", row=0, value=60.0)

value_param_after = rastr.get_node(param="pg", row=0)
print(value_param_after) # 60.0
```

## [0.1.3] - 2025-01-08

### Changed

- Улучшена документация для API (README.md).

## [0.1.2] - 2025-01-07

### Added in [0.1.2]

- Добавлена документация для API (README.md).

### Fixed

- Исправлены ошибки при импорте модуля logger.

## [0.1.1] - 2025-01-07

### Added in [0.1.1]

- Первый релиз проекта.
- Добавлены основные функции: загрузка и сохранение модели. Запуск расчета: Уст. режима, ЭМехПП в режиме Run и EMS, эквивалетирование.
