Пример скрипта
В следующем примере описывается процедура написания скриптов для наборов форм MMO&B, включая необходимые параметры, запись набора форм, пример кода и информацию о написании скриптов для записанного набора форм. Подробную информацию о настройке Опции скриптов и использовании Редактор скриптов можно получить по ссылкам.
Наборы форм скриптов MMO&B
Для начала настройте параметры скрипта для примера записи набора форм:
Опции скриптов
Как вариант, нажмите на вкладку Проект, чтобы открыть фоновое меню Опции | Система | Опции скриптов.
![]() |
![]() |
Вкладка «Скрипт» | Вкладка «Интерпретатор» |
Запись набора форм
Кнопка Запись отображается как "активная".
Выберите соответствующую опцию для запуска целевого набора форм. В этом примере используется опция Файл | Редактировать данные | Вычислить | Вычислить (выражение):
Отключите опцию Запись на Вкладка Скрипт, группа Python для завершения записи.
При появлении соответствующего запроса дайте имя записанному сценарию и сохраните его в соответствующей папке. Например, «C:\Scripts\OffsetEastings.py».
Примечание: чтобы свести к минимуму возможные осложнения, не включайте пробелы в имя.
Если в параметрах скрипта установлен параметр «Стиль записи объектно-ориентированного скрипта», набор форм записывается как набор вложенных классов Python.
Если в параметрах сценария выбрана опция Автозагрузка сценария после записи, записанный сценарий будет отображаться в редакторе сценариев:
На этом этапе набор форм можно снова выполнить, просто выбрав опцию Запуск скрипта на панели Вкладка Скрипт, группа Python, или щелкнув на иконку Запуск на панели инструментов, чтобы выполнить записанный скрипт.
Скриптинг записанного набора форм
Записанный сценарий набора форм может быть настроен по мере необходимости, что может быть достаточным для многих простых задач.
Интеграция набора записанных форм
Если скрипт будет интегрирован в более значительный набор скриптов, возможно, с записанными скриптами из других наборов форм, то в будущем будет проще обновлять скрипты, если каждый записанный скрипт набора форм будет сохранен в отдельном файле скрипта. Скрипт для любого из включенных наборов форм затем можно обновить, просто записав новый скрипт в соответствующий файл. Если для обновленного скрипта не требуются новые параметры, изменения будут отражены немедленно, и никаких изменений в вызывающих скриптах не потребуется.
Ключевое слово import в Python облегчает эту задачу. Приведенный ниже код иллюстрирует, как скрипт Scripts\OffsetEastings.py можно вызвать из другого файла скрипта:
import MMpy
# import recorded form set class with descriptive alias
from Scripts.OffsetEastings import FormSet0 as OffsetEastingsForm
# create a new instance of the form set class
offset_eastings_form = OffsetEastingsForm()
# build and run the form set
offset_eastings_form.build().run()
Поскольку скрипт сохранен в Scripts\OffsetEastings.py, имя импортируемого модуля - Scripts.OffsetEastings.
Набор форм записывается как класс FormSet0 в этом модуле. Однако, поскольку каждая другая форма также будет записана в свой собственный файл скрипта как FormSet0, полезно назначить описательный псевдоним каждому импортированному набору форм. В этом примере назначенный псевдоним — OffsetEastingsForm.
(Класс FormSet0 основан на MMpy.Класс FormSetBuilder, который доступен из MMOB Python API.)
Последние строки в примере кода создают экземпляр класса импортированного набора форм с использованием псевдонима, а затем собирают и запускают набор форм.
Примечание: для поддержки этой функциональности в начало записанного файла скрипта («C:\Scripts\OffsetEastings.py») необходимо добавить следующую строку:
import MMpy
Установка значений полей
При записи набора форм текущие значения полей записываются и устанавливаются в методах __init__ класса FormSet0 и вложенных в него классов.
Значения, записанные для FormSet0 в примере скрипта, приведены ниже:
def __init__(self):
self['File'] = 'Small Block Model' # type:filename
self['Type'] = 0 # type:choice
self['Use'] = False # type:Boolean
self['Filter'] = NestedFormSet0() # type:formset
self['Clear'] = True # type:Boolean
self['Overwrite'] = True # type:Boolean
self['Exprgrid'] = DataGrid1() # type:grid
self['CharMissing'] = False # type:Boolean
self['BlankMissing'] = True # type:Boolean
self['HalfMissing'] = False # type:Boolean
self['Modify'] = False # type:boolean
За исключением полей, которые создают новые экземпляры вложенных классов (NestedFormSet0 и DataGrid1 в этом примере), значения полей можно заменять по мере необходимости после того, как экземпляр класса набора форм будет создан вызывающим скриптом. Например, чтобы изменить имя обрабатываемого файла и применяемое к нему выражение:
import MMpy
from Scripts.OffsetEastings import FormSet0 as OffsetEastingsForm
offset_eastings_form = OffsetEastingsForm()
# replace field values here as required
offset_eastings_form['File'] = 'Another Block Model'
offset_eastings_form['Exprgrid'][0] = ['=[North]+2500.0', 'Offset North']
offset_eastings_form.build().run()