Интерактивное графическое программное обеспечение PC-DMIS (Глава 26: Использование выражений и переменных), страница 9

Конструкции с переменными типа Point

Если берется переменная типа point, пользователь может применять расширения X, .Y, .Z, .I, .J, и .K, чтобы добраться до индивидуальных параметров точки. Пользователь так же может применять любые расширения в из примера для своих конструкции, не будучи вынужденным применять их затем в качестве элементов точек.

Пример:

ASSIGN/V1.X = "Some string" ASSIGN/V1.Y = ARRAY(1,3,5,9,7) ASSIGN/V1.Z = MPOINT(3,5,7)

COMMENT/REPT,V1.X

Вывод - "Какой-то ряд"

COMMENT/REPT,V1.Y[2]

Вывод - 3, второй элемент множества.

COMMENT/REPT,V1.Z.Y

Вывод - 5, значение Y MPOINT.

Путем комбинирования конструкций с функциональными возможностями языка выражений PC-DMIS возможно получить динамические конструктивные ссылки, как показано ниже:

(продолжение примера)

ASSIGN/DYNAMICSTRUCT = FUNCTION((X,Y), X.Y) C1 =COMMENT/INPUT,Please enter in item ASSIGN/TESTSTR = C1.INPUT ASSIGN/FRONT = LEFT(TESTSTR, INDEX(TESTSTR, ".")-1) ASSIGN/BACK = MID(TESTSTR, INDEX(TESTSTR, ".")) ASSIGN/RESULT = DYNAMICSTRUCT(FRONT, BACK)

Этот пример просит  ввести ссылку на переменную, разбивает ссылку сначала с помощью '.', а затем присваивает RESULT, равный той ссылке, с помощью функции DYNAMICSTRUCT.

Итак, если ввели V1.Y[4] для переменной C1.INPUT, в конечном счете получите RESULT в виде значения 9 (четвертый элемент множества, приписанного V1.Y).

Время вычисления выражения было увеличено, чтобы с большей точностью показать элементы конструкции или множества.

Указатели

Указатели известны так же как "Фигурные указатели". См. термин в Глоссарии"Фигурные указатели" для получения подробной информации.

Указатели обеспечивают простой путь ссылки на фигуру посредствам переменной или передачи объектов с помощью вызова подкоманд. Указатели схожи с обратными благодаря названиям рядов. Однако преимущество указателей содержится в подпрограммах. Указатели, в отличие от рядов, при передаче их виде аргументов в подпрограммы, позволяют осуществлять непосредственные модификации с объектом, на который указала подпрограмма. Указатели не используются в сложных выражениях. Если указатель используется в сложном выражении, он будет исчислен как ноль.

Рассмотрим следующие примеры:

Пример использования указателя:

ASSIGN/ V1 = {CIR1}

V1  - это теперь указатель, указывающий на CIR1.

ASSIGN/ DIST = DOUBLE(V1.XYZ)

Dist = расстояние от начала координат до CIR1.

Вы так же можете поместить выражение в фигурные скобки, чтобы получить фигурный указатель. В версиях, более ранних, чем 3.5, это было бы невозможно. Теперь это совершенно законный путь, чтобы получить указатель для фигуры CIR1:

ASSIGN/FEATCOUNT = 1

ASSIGN/V1={"CIR" + FEATCOUNT}

Присваивает выражение "CIR1" переменной V1.

ASSIGN/V2="CIR1"

ASSIGN/V3={V2}

Присваивает выражение "CIR1" от переменной V2 переменной V3

C1=COMMENT/INPUT, Please type a feature name.

ASSIGN/V4={C1.INPUT}

Берет имя фигуры C1.INPUT и помещает его в переменную V4.[JLH4] 

Пример подпрограммы: В вызывающей программе:

CS1 = CALLSUB/SUB.PRG,CHANGEX, {CIR1}

В подпрограмме

GEN1 = GENERIC/FEATURE SUBROUTINE/CHANGEX, ARG1 = {GEN1}

(При передаче CIR1 занимает место GEN1)

ARG1.X = 5

(Устанавливает измеренное значение X CIR1 равным 5)

END/SUBROUTINE

Пример сложного выражения:

ASSIGN/ V1 = {CIR1} + 2 {CIR1} вычисляется как ноль и таким образом все выражение вычисляется как 2.

Множества

Доступны три типа множеств: Множества фигур, множества точек, и множества переменных.

Множества фигур:

Когда фигура измеряется несколько раз в течение выполнения программы, автоматически создается множество фигур. Количество фигур множества равно количеству измерений фигуры.