1. книги
  2. Руководства
  3. Андрей Вяльцев

Макросы Datamine. Ресурсный геолог

Андрей Вяльцев
Обложка книги

Книга описывает базовые понятия программирования применительно к языку макросов Datamine. На основе реальных примеров объясняются разновидности алгоритмов, основы хорошего стиля и рассматриваются некоторые хитрости написания универсальных макросов. Книга ориентирована на геологов, работающих с Datamine и желающих увеличить свою продуктивность. Книга сопровождается большим количеством примеров и заданий, основанных на геологических задачах.

Оглавление

Купить книгу

Приведённый ознакомительный фрагмент книги «Макросы Datamine. Ресурсный геолог» предоставлен нашим книжным партнёром — компанией ЛитРес.

Купить и скачать полную версию книги в форматах FB2, ePub, MOBI, TXT, HTML, RTF и других

Макросы: что это, для чего нужны, что могут и что не могут

Для чего нужны макросы

Макросы являются прекрасным средством для того, чтобы:

— Быстро сделать много механической работы. Наверное, лучшее определение «быстро» звучит так: «быстро — это не торопясь, но без перерывов». Любое действие в Datamine будет выполняться с одинаковой скоростью вне зависимости от того, запущено оно руками или макросом (при прочих равных). Но если вам надо выполнить более одного действия, макрос будет работать быстрее вас просто потому, что он не делает перерывов между этими действиями. А человек — делает. Просто в силу своей природы: если вам надо выполнить связку TRIFIL+PROMOD на большом и сложном файле каркасов, вы вряд ли будете сидеть и любоваться тем, как выполняется TRIFIL. Скорее всего, вы отвлечетесь (поводов масса). А макрос — нет. Но даже если у вас железная сила воли и вы не отвлекаетесь от наблюдения за работой TRIFIL, на ввод параметров для PROMOD у вас уйдет времени больше, чем у макроса. Итог: макрос не делает перерывов, поэтому он быстрее ручной работы.

— Выполнить то, что сделать вручную технически сложно и долго — например, длительный циклический перебор тех или иных параметров с целью получения некоего оптимального результата. Один из макросов, разработанных авторами книги, занимается тем, что подбирает оптимальные параметры дробления при заполнении каркасов ячейками. То есть схема такая: выбрали размеры подъячеек, заполнили, проверили качество. То, что заполнено хорошо — отложили в сторону. То, что заполнено плохо, заполняется повторно с меньшими подъячейками. И так до достижения удовлетворительного результата. Для выполнения этой задачи надо многократно запускать несколько процессов (TRIFIL+PROMOD+TRIVAL+EXTRA). Да, физически вы можете запустить любой процесс несколько десятков раз (нажать на кнопку — процедура не так чтобы особо утомительная), но есть большие сомнения, что ваша психика выдержит эту монотонную «работу». У макроса психики нет. Ему сказали — он делает.

— Обеспечить прозрачность моделирования. Вместо длинных словесных описаний того, как выполнялось моделирование, можно приложить к отчетным материалам макрос — и 99% вопросов о методике моделирования будут сняты.

— Пофилонить на рабочем месте без ущерба для рабочего процесса. Ну или же заняться в это время более творческой работой — зависит от личных предпочтений. Логично переложить техническую работу на бездушную железяку, а самому в это же самое время с абсолютно чистой совестью поразмышлять о возвышенном.

Ну и, наконец, это интересно и увлекательно (хотя на этот счет есть разные мнения).

Язык макросов — неплохо развитый внутренний для Datamine язык программирования, поэтому, по сути, написание макросов — это программирование. Но поскольку вы, вероятнее всего, все-таки не программист, лучше не заявлять лишний раз о том, что вы программируете, а на вопрос «что делаешь?» отвечать нейтральное «макрос пишу».

Что такое макрос

Макрос — текстовый файл, имеющий расширение *mac и кодировку Win-1251 (да, это не совсем так, если вы находитесь в стране, где актуальность кириллицы близка к 0, но данная книга ориентирована в первую очередь на «пользователей с кириллицей»). Макросы, написанные в кодировке семейства UTF, выполняться будут, но при работе со строками результат может не вполне соответствовать ожиданиям, плюс при выводе комментариев вы, скорее всего, увидите кракозябры вместо знакомых с детства символов кириллицы.

Макрос, содержащий строку на кириллице в кодировке UTF (слева), и вывод этой же строки в окно Command Datamine (справа)

Еще одна неприятность при работе с кодировками не-Win-1251 — это все те же кракозябры при редактировании файлов в кодировке «не той системы»: если вы настроили ваш любимый редактор на чтение именно кодировки Win-1251, то открытие файла в другой кодировке приведет к неожиданному эффекту, показанному на следующей странице.

В общем, давайте в рамках данной книги считать, что макросы пишутся в кодировке Win-1251 — и все тут.

Макрос содержит последовательность команд, которые необходимо выполнить для решения какой-либо задачи. Все команды в макросах начинаются с восклицательного знака. Макрос всегда начинается с команды START, после которой идет имя макроса. Макрос всегда заканчивается командой END. «Минимальный» макрос выглядит следующим образом (да, мы нарушим традиции и не будем писать программу «Hello, world!»):

!START NOACTION

!END

Макрос с кириллицей, созданный в кодировке Win-1251, открытый в кодировке UTF (сверху) и в кодировке Win-1251 (снизу)

Этот макрос содержит все атрибуты, необходимые для того, чтобы Datamine воспринимал файл с этим текстом как макрос: у него есть начало, имя (NOACTION) и конец. Макрос не делает ничего, но пока этого и не требуется. Пока что достаточно выглядеть как макрос. Дальше этого будет мало, но на текущем этапе можно и так.

Как запускать макрос

Существующий макрос можно запустить тремя способами (может, есть еще, но нам, кроме этих трех, ничего в голову не приходит):

— с помощью кнопки в ленте команд; кнопка расположена непосредственно на вкладке Home;

— прямо под кнопкой запуска макроса находится кнопка вызова меню работы с макросами, одним из пунктов которого также является запуск макроса; из остальных предложенных вариантов наиболее полезным является вариант Start Recording — его разберем чуть позже;

— с помощью контекстного меню, которое вызывается правой кнопкой мыши из дерева проекта.

Варианты не вполне равнозначные. Во-первых, как несложно заметить, в третьем варианте, кроме выбора файла макроса, сразу же предлагается выбрать имя макроса, так как в файле может быть больше одного макроса. В рамках книги мы не будем подробно останавливаться на этой возможности, просто будет нелишним помнить о ней. Так вот, если в файле содержится один макрос, кнопкой в ленте (первый способ) будет запущен именно он. Если несколько, то при первом или втором способе запуска после выбора файла будет предложено выбрать также и имя макроса. При запуске макроса из контекстного меню в любом случае будет предложено выбрать имя макроса — даже если он там один.

Во-вторых, в случае, если при оформлении макроса были допущены ошибки, с помощью контекстного меню макрос, скорее всего, даже не получится запустить, а с помощью кнопки меню Datamine попытается его запустить, у него ничего не получится, и в окно Command будет выведено сообщение об ошибке.

Что может и не может макрос

Макрос может:

— выполнять все операции, выполняемые процессами Datamine (теми, что запускаются из командной строки Datamine);

Командная строка Datamine, если кто забыл

— читать файлы формата dm без использования процессов Datamine, но, увы, не создавать и не изменять их (об этом чуть позже);

— управлять командами операционной системы (есть тут кто-нибудь, кто помнит, как жить без графического интерфейса, под чистой DOS?).

Например, вот такой макрос:

!START SYSMACRO

!OPSYS

echo Hello, world>> newfile. txt

!END

создаст в рабочем каталоге вашего проекта файл `newfile. txt` и запишет туда текст «Hello, world» (давайте-таки соблюдем традиции!).

Макрос не может сделать ничего, что бы выходило за рамки процессов Datamine. Например, макрос не может управлять объектами в окне 3D: он не может загрузить в окно 3D что-либо, не может в этом окне что-то сделать с загруженными данными и т. д., например, «штатными» инструментами макрос не может выполнить проверку каркасов на ошибки или соединение двух стрингов.

Когда-то давно, когда компьютеры были большими, а Datamine существовала без добавки Studio (и представляла собой набор программ), в пакете программ Datamine существовал еще один внутренний язык программирования, который как раз мог управлять окном 3D (точнее, на тот момент — программой Guide). Однако с появлением Datamine Studio этот язык тихо умер (кажется, это произошло сразу, как вышла Datamine Studio 1). В текущих версиях Datamine автоматизацию работы в окне 3D должен обеспечить JavaScript или любой язык программирования, способный подключиться к API Datamine. И, в принципе, обеспечивает. Беда в том, что делает это так себе — главным образом из-за отвратительной степени документированности этого самого API.

Да, сразу предупреждаем: скрипты, написанные на JavaScript, в этой книге не рассматриваются.

Необходимые навыки

Собственно, единственный обязательный навык для написания макросов — это умение работать с Datamine, которое должно включать знание процессов, понимание того, для чего они используются и как работают. Временами приветствуется знание школьного курса математики и любознательность. Никакого тайного таланта к программированию не требуется. Вообще, утверждение «я не способен программировать» — полнейший абсурд. Задумайтесь на минуту: что вы будете делать сегодня после работы? Ответ, вероятно, будет примерно следующим: «В 18:00 я отключу компьютер, надену уличную обувь, запру кабинет и пойду домой. По дороге я зайду в магазин N и куплю (далее следует список)». Ну, собственно, вот: вы только что написали программу. Программу вашей жизни сегодняшним вечером. Сложно? Талант потребовался? Ситуация с написанием макросов примерно такая же: если вы знаете, что надо сделать для получения нужного результата, вы можете написать макрос.

На самом деле, ситуация с макрописательством — такая же, как, например, с бегом на 100 м: вы можете пробежать 100 м за, предположим, 18 секунд, после некоторой тренировки вы можете довести это время до 14—15 сек. При упорных тренировках, наверное, вы сможете «выбежать» из 12—13 сек. Но для того, чтобы довести это время до 10 сек., нужен талант. Так и здесь: простые макросы может писать любой, но для чего-то более сложного нужны тренировки, а с некоторого момента — предрасположенность. Но даже простые макросы здорово улучшают жизнь. Данное руководство рассчитано на людей, начинающих что-то такое писать на языке макросов и не требует наличия «чего-то эдакого».

$ Задание 1.1

Чем завершится выполнение данного макроса?

!START MACRO

!END

A) Макрос запустится, не сделает ничего и выведет информацию о завершении работы в окно Command

B) Ошибкой и выводом информации об ошибке в окне Command

C) Макрос запустится, выведет информацию об имени макроса в окно Command и не сделает более никаких действий

D) Макрос даже не запустится

$ Задание 1.2

Чем завершится выполнение данного макроса?

START MACRO

!END

A) Ошибкой и выводом информации об ошибке в окне Command либо даже не удастся его запустить

B) Макрос запустится, выведет информацию об имени макроса в окно Command и не сделает более никаких действий

C) Макрос запустится, не сделает ничего и выведет информацию о завершении работы в окно Command

$ Задание 1.3

Чем завершится выполнение данного макроса?

!START MACRO

END

A) Макрос даже не запустится

B) Ошибкой и выводом информации об ошибке в окне Command

C) Макрос запустится, выведет информацию об имени макроса в окно Command, выведет информацию о завершении работы в окно Command, но исполнительный файл макроса останется заблокированным для редактирования до перезагрузки Datamine

D) Макрос запустится, не сделает ничего и выведет информацию о завершении работы в окно Command

$ Задание 1.4

Чем завершится выполнение данного макроса?

START MACRO

END

A) Ошибкой и выводом информации об ошибке в окне Command либо же даже не удастся его запустить

B) Макрос запустится, выведет информацию о начале работы в окно Command и не сделает более никаких действий

C) Макрос запустится, выведет информацию об имени макроса в окно Command и не сделает более никаких действий

D) Макрос запустится, не сделает ничего и выведет информацию о завершении работы в окно Command

$ Задание 1.5

Чем завершится выполнение данного макроса?

!START

!END

A) Ошибкой и выводом информации об ошибке в окне Command

B) Макрос запустится, выведет информацию об имени макроса в окно Command и не сделает более никаких действий

C) Макрос запустится, не сделает ничего и выведет информацию о завершении работы в окно Command

D) Макрос запустится, выведет информацию о начале работы в окно Command и не сделает более никаких действий

E) Ошибкой и выводом информации об ошибке в окне Command, при этом исполнительный файл макроса останется заблокированным для редактирования до перезагрузки Datamine

Оглавление

Купить книгу

Приведённый ознакомительный фрагмент книги «Макросы Datamine. Ресурсный геолог» предоставлен нашим книжным партнёром — компанией ЛитРес.

Купить и скачать полную версию книги в форматах FB2, ePub, MOBI, TXT, HTML, RTF и других

Вам также может быть интересно

а б в г д е ё ж з и й к л м н о п р с т у ф х ц ч ш щ э ю я