變數

變數可以爲這七種運算元類型的任意一種:整數、實數、字串、點、特徵指標、陣列或函式。產生變數後,變數即可透過 ASSIGN 陳述式接收變數的值及類型。變數 ID 可以爲任何以非數值字元開頭的字母數字字串。祇要底線不是首字元,亦可在變數 ID 中使用底線。

變數值在執行與執行之間儲存。這就意味著如果常式執行停止並重新啓動,停止執行時的變數值將與再次啓動執行時的值相同。

如果「編輯」視窗爲活動視窗,當遊標位於欄位中時,PC-DMIS 將指出變數的目前值。在執行過程中,變數值將依據執行的程式流而變更。將滑鼠指標放在目標變數上,檢視其目前值。

ASSIGN/ V1 = 2.2+2
變數 V1 爲一個值爲 4.2 的實數。

ASSIGN/ VAR1 = CIRCLE1.X
變數 VAR1 爲一個實數,其值等於指派時 CIRCLE1.X 的測量值。

ASSIGN/ MYVAR = LINE1.XYZ
變數 MYVAR 爲一個點,其值等於指派時 LINE1 的測量質心。

ASSIGN/ SVAR = 「Hello World」
變數 SVAR 爲字串,值爲「Hello World」

在這些範例中,變數均被指派了值。爲變數指派了值後,可以在運算式欄位中將變數作爲運算元使用。

這裡,V1 用在數字字段中。它被用作 prehit 命令的 prehit 值:

ASSIGN/V1=1/3PREHIT/V1

由於運算式可以在大多數可編輯欄位中使用,因此以下運算式也是有效的,並且具有相同的作用:PREHIT / 1/3。

利用參考所採用的點擴充,可以分別引用 point 型變數的分量。

ASSIGN/ V1 = MPOINT(3, 4, 5)
V1 係值為 3, 4, 5 的 point 型

ASSIGN/ XVAR = V1.X
XVAR 係值為 3 的 double 型

ASSIGN/ YVAR = V1.Y
YVAR 係值為 4 的 double 型

ASSIGN/ IVAR = V1.I
IVAR 係值為 3 的 double 型

ASSIGN/ REDUNVAR = V1.XYZ
REDUNVAR 係值為 3, 4, 5 的 point 型

以下擴充是彼此等效的。之所以兩者均予以提供,是爲了明確運算式在測量常式中的含義。

假定 V1 爲 point 型。

V1.X 與 V1.I
相同 V1.Y 與 V1.J
相同 V1.Z 與 V1.K 相同

V1.XYZ 與 V1.IJK 相同,而 V1 沒有任何擴充。

如果 string 型變數的字串值與特徵 ID 名稱、尺寸或坐標系相同,則該變數可作爲參考物件使用。


ASSIGN/V1="CIRCLE1"

倘若名稱爲 CIRCLE1 的特徵存在,則可以使用以下運算元並且這些運算元是有效的。

V1.X - CIRCLE1 的 X 測量值
V1.TX - CIRCLE1 的 X 理論值
V1.Diameter - CIRCLE1 的測量直徑
V1.Radius - CIRCLE1 的測量半徑

這種字串變數間接可用的類型僅對一級間接可用。如下情況係無效情況。

ASSIGN/V1="CIRCLE1"
ASSIGN/V2="V1"

V2.X - 求值結果爲 0 而非 CIRCLE1.X 的目前測量值。

參考 V2.X 不會以紅色文字標記爲錯誤,儘管它上面的一個運算式將其設定爲 string 型。不標記爲錯誤的原因就是,執行前測量常式的執行流未知。

然而,如果使用花括弧,則如下也無效。

ASSIGN/V1={CIRCLE1}
ASSIGN/V2={V1}

V2.X - 將獲得 CIRCLE1.X 的值。

請看下例:

ASSIGN/V1="CIRCLE1"
ASSIGN/V2="V1"
IF/CIRCLE1.X>CIRCLE1.TX,GOTO,L2
L1=LABEL/
ASSIGN/V3=V2.X
GOTO/LABEL,L3
L2=LABEL /
ASSIGN/V2=MPOINT(2,5,7)
GOTO/LABEL,L1
L3=LABEL/

如果常式執行過程中,CIRCLE1.X 值大於 CIRCLE1.TX 值,則運算式 V2.X 將有效且等於 2。否則,運算式 V2.X 等於 0,因為 V2 值在指派給 V3 時為字串 "V1"。在這些情況下,應由工件程式員來確保運算式將按預期操作。

賦值陳述式的其他說明:幾乎所有特徵參照均可在賦值陳述式的左側使用,以爲特徵的測量資料或理論資料賦值。但向量的 I、J、K 分量除外。要爲向量賦值,必須采用結果爲點的運算式,爲整個向量賦值。向量資料在輸入特徵的向量資料成員時執行正規化。

ASSIGN/CIRCLE1.I=2-illegal
ASSIGN/CIRCLE1.IJK=MPOINT(2,0,0)-legal(vector is normalized to 1,0,0)

有關在尺寸內使用變數的資訊,請參考「使用遺留尺寸」一章中的「標註變數」主題。