banner banner banner
Макросы Datamine. Ресурсный геолог
Макросы Datamine. Ресурсный геолог
Оценить:
 Рейтинг: 0

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


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

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

Во-вторых, в случае, если при оформлении макроса были допущены ошибки, с помощью контекстного меню макрос, скорее всего, даже не получится запустить, а с помощью кнопки меню 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 и не сделает более никаких действий