Объектная модель Micromine Python API: устройство и основные компоненты
Micromine предоставляет Python API (MMpy), позволяющий использовать возможности среды Micromine из Python-кода. С его помощью можно работать с проектами и файлами данных, обращаться к блочным моделям, запускать команды, создавать формы и выполнять другие операции.
Чтобы эффективно использовать API, недостаточно знать отдельные методы и примеры их вызова. Важно понимать, какие объекты предоставляет библиотека, за какие задачи они отвечают и как организовать взаимодействие между ними.
В этой статье рассмотрим структуру объектной модели Micromine Python API и основные группы объектов, на которых строится разработка пользовательских инструментов.
Материал основан на официальном справочнике Micromine Python API версии 22.0. Названия классов и методов приведены в соответствии с документацией.
1. Что представляет собой объектная модель MMpy
Объектная модель MMpy — это набор классов, через экземпляры которых Python-код взаимодействует с функциональностью Micromine.
Вместо того чтобы обращаться к приложению через набор несвязанных функций, разработчик создаёт объекты определённых типов и вызывает доступные для них методы.
Например, для работы с файлом данных используется объект MMpy.File:
import MMpy
file = MMpy.File()
Для работы с блочной моделью предназначен другой класс:
blockmodel = MMpy.BlockModel()
А для получения информации о текущем проекте используется
MMpy.Project:
project = MMpy.Project()
Каждый из этих объектов представляет отдельную область функциональности API. У него есть собственный набор методов и свойств.
2. Основные группы объектов
Для понимания API удобно разделить его объекты по функциональному назначению.
2.1. Проект и контекст работы
MMpy.Project — объект для взаимодействия с проектом Micromine.
В документации представлены операции:
Project.open()— открытие проекта;Project.close()— закрытие текущего проекта;Project.path— получение пути к проекту;Project.name— получение имени проекта;Project.title— получение заголовка проекта.
Пример получения пути к проекту:
import MMpy
project = MMpy.Project()
project_path = project.path
print(project_path)
Объект проекта позволяет получать информацию о контексте, в котором выполняется пользовательский код.
2.2. Файлы и структуры данных
Для работы с файлами данных предназначен класс MMpy.File.
Он предоставляет методы для открытия и закрытия файлов, чтения и изменения значений полей, добавления и удаления записей.
Основные методы:
| Метод | Назначение |
|---|---|
open() |
Открытие файла |
close() |
Закрытие файла |
records_count() |
Получение количества записей |
get_field_id() |
Получение идентификатора поля |
get_num_field_value() |
Чтение числового значения |
get_str_field_value() |
Чтение строкового значения |
set_field_value() |
Изменение значения поля |
add_record() |
Добавление записи |
delete_record() |
Удаление записи |
Отдельно представлена структура файла — MMpy.FileStruct.
Она позволяет работать с описанием полей: получать их типы, ширину и точность, добавлять и удалять поля, изменять параметры существующих полей.
Таким образом, в API предусмотрено разделение между операциями над содержимым файла и операциями над его структурой.
2.3. Блочные модели
Для работы с блочными моделями используется класс MMpy.BlockModel.
Его интерфейс во многом напоминает интерфейс MMpy.File, однако
ориентирован на специфические операции с блочными моделями.
Среди документированных методов:
open()иclose()— открытие и закрытие модели;records_count()— получение количества блоков;get_block_coordinates()— получение координат блока;get_num_block_value()— чтение числового значения;get_str_block_value()— чтение строкового значения;set_block_value()— изменение значения;structure()— получение структуры модели.
Также предусмотрены операции создания модели из шаблона и копирования.
Наличие отдельного класса для блочных моделей позволяет использовать специализированный интерфейс, не смешивая его с общими операциями над файлами данных.
2.4. Команды Micromine
Класс MMpy.Command предназначен для создания объекта команды
Micromine.
При создании объекта можно передать идентификатор или имя команды:
command = MMpy.Command(33526)
Для выполнения команды предусмотрен метод run():
command.run()
Этот механизм позволяет запускать функциональность приложения из Python-кода.
При этом объект команды следует рассматривать именно как интерфейс вызова команды Micromine, а не как универсальный механизм управления всеми внутренними объектами приложения.
2.5. Формы и пользовательский интерфейс
Для работы с наборами форм специализированных команд используется
MMpy.FormSet.
Объект создаётся с указанием идентификатора или имени команды:
formset = MMpy.FormSet('DBFILTER', '20.0.0.0')
В документации также представлены методы:
get()иget_field()— получение данных формы;set_field()— изменение значения поля;load()иsave()— загрузка и сохранение;open()— открытие набора форм;run()— выполнение набора форм.
Для построения наборов форм предусмотрен отдельный класс
MMpy.FormSetBuilder.
Дополнительно API содержит класс MMpy.GUI, включающий методы для
отображения диалоговых окон, например load_dialog(), save_dialog() и
message_box().
Таким образом, MMpy предоставляет несколько уровней взаимодействия с пользовательским интерфейсом: от работы с формами специализированных команд до вызова стандартных диалоговых окон.
2.6. Геометрические и пространственные объекты
В API присутствуют классы, предназначенные для представления геометрических и пространственных характеристик.
Один из них — MMpy.Point3D.
Он представляет трёхмерную точку с координатами X, Y и Z:
point = MMpy.Point3D(
x=100.0,
y=50.0,
z=50.0
)
Объект предоставляет доступ к координатам через свойства x, y и z.
В документации отдельно отмечено, что Point3D может использоваться не
только для описания точки, но и для представления вектора или размера.
Другой пример — MMpy.OrientationAxes, предназначенный для работы с
осями ориентации.
Среди его возможностей представлены операции применения геологических параметров ориентации, вращения и геостатистических настроек.
Эти объекты особенно интересны при разработке специализированных геологических и пространственных алгоритмов.
3. Дополнительные компоненты API
Помимо основных групп, справочник содержит ряд вспомогательных классов и перечислений.
| Объект | Назначение |
|---|---|
MMpy.DataGrid |
Работа с табличными данными |
MMpy.DataGridBuilder |
Построение таблиц |
MMpy.Colour |
Представление цвета |
MMpy.Font |
Параметры шрифта |
MMpy.Hatch |
Параметры штриховки |
MMpy.Symbol |
Параметры символов |
MMpy.FieldType |
Типы полей |
MMpy.StorageType |
Типы хранения |
MMpy.LineType |
Типы линий |
MMpy.BorderType |
Типы границ |
Отдельно представлены MMpy.Macro для запуска макросов и
MMpy.Micromine для получения информации о версии приложения и
идентификаторе лицензии.
Эти компоненты дополняют основной интерфейс API и позволяют решать более специализированные задачи.
4. Как организовать работу с объектами
Рассмотренные классы можно объединить в несколько функциональных уровней:
- Контекст приложения — информация о проекте и версии Micromine.
- Доступ к данным — файлы, структуры файлов и блочные модели.
- Выполнение операций — команды и макросы.
- Пользовательский интерфейс — формы, таблицы и диалоговые окна.
- Инженерные вычисления — координаты, ориентация и вспомогательные геометрические объекты.
При разработке пользовательского инструмента обычно требуется сочетать несколько таких групп.
Например, условная последовательность работы может выглядеть следующим образом:
- Получить информацию о текущем проекте.
- Определить расположение необходимых файлов.
- Открыть исходные данные.
- Выполнить необходимые вычисления.
- Записать результаты.
- При необходимости запустить команду или показать пользователю форму.
В таком подходе Python-код выступает связующим звеном между объектами MMpy и реализуемой инженерной логикой.
Заключение
Micromine Python API предоставляет набор специализированных объектов, позволяющих взаимодействовать с проектами, файлами данных, блочными моделями, командами, формами и геометрическими сущностями.
Понимание объектной модели помогает перейти от отдельных примеров Python-кода к проектированию полноценных программных инструментов.
Вместо того чтобы рассматривать MMpy как набор функций для автоматизации отдельных операций, полезнее воспринимать его как интерфейс взаимодействия Python с определёнными подсистемами Micromine.
Официальная документация: Micromine Python API — версия 22.0