Если берется переменная типа 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.
Доступны три типа множеств: Множества фигур, множества точек, и множества переменных.
Когда фигура измеряется несколько раз в течение выполнения программы, автоматически создается множество фигур. Количество фигур множества равно количеству измерений фигуры.
Уважаемый посетитель!
Чтобы распечатать файл, скачайте его (в формате Word).
Ссылка на скачивание - внизу страницы.