跳轉到內容

櫥櫃視覺:最後一英里/使用者控制標準技術

來自華夏公益教科書,開放世界的開放書籍

介紹 ULUCVUCS

[編輯 | 編輯原始碼]

六角形沒有為用於編寫 UCS 的語言提供名稱。名稱是有用的速記,因此,本文件將 UCS 語言稱為 "ULUCVUCS",它是 "用於櫥櫃視覺的使用者建立標準的未命名語言" 的首字母縮寫。

變數(自定義引數)的技術和約定

[編輯 | 編輯原始碼]

系統引數與自定義引數

[編輯 | 編輯原始碼]

系統引數是櫥櫃視覺提供的物件樹的資料成員。它們中的大多數列在幫助檔案的 "使用者建立標準 | 系統引數" 或 "使用者建立標準 | 材料引數" 頁面中。自定義引數是使用者發明的名稱和使用者指定的型別的引數。自定義引數永遠不會改變模型的狀態,除非它們的價值(或從一個或多個它們的價值計算出的表示式)被分配給系統引數。從這個意義上說,它們幾乎總是類似於 "臨時" 變數。主要的例外情況是當它們用於 "延遲評估" 或透過 Part.Parameters 欄位將它們的價值傳遞到報表中心時。

資料型別

[編輯 | 編輯原始碼]

最佳實踐是在建立或分配自定義引數時始終宣告其資料型別,除非您希望它成為浮點 <meas> 值(當未指定型別時,這是預設型別)。在 CV 12 之前,CV 對未宣告資料型別的自定義引數比在更高版本中更加寬容。因此,例如,當迴圈遍歷索引引數名稱(例如 FS@{fs_index}.DY)時,CV 過去允許建立和分配索引器(在本例中為 "fs_index"),而無需資料型別。在較新的版本中,如果索引器沒有宣告資料型別,則上述表示式將在迴圈的第一次執行時計算為 "FS@1.00000000.DY",而不是 "FS@1.DY"。由於沒有名為 "FS@1.000000000.DY" 的系統引數,因此此表示式將引用一個空引數。系統引數永久保留其資料型別。在分配給系統引數時,無需宣告資料型別。

請記住,與大多數其他語言相比,引數(即變數)不會在隨後的分配中自動保留首次宣告的資料型別。因此,當您宣告並分配 my_param<deg> = 90,然後稍後重新分配為 my_param = 80 時,在這兩個分配中的第二個分配中,CV 會將其資料型別更改為預設型別 <meas>。因此,即使您已經為自定義引數建立了資料型別,您也必須在隨後的值分配中重複指定其資料型別,除非您希望其資料型別更改為 <meas>。

刪除臨時引數

[編輯 | 編輯原始碼]

CV 中的物件樹可能會變得雜亂,當這種情況發生時,評估它所描述的模型的狀態會變得更加困難和容易出錯。自定義引數主要用於儲存臨時值,這些值後來為系統引數提供值。實際上,您通常可以在宣告自定義引數的同一個 UCS 中刪除它們,這樣做是一個好習慣。唯一的例外是當使用 "延遲評估" 時。為了幫助確定哪些自定義引數應該被刪除,最好給它們一個特殊的 字首,比如 "t_",這樣它們在物件樹中就會分組在一起。這樣,如果您忘記刪除一些,您就不會讓物件樹被各種引數汙染,而您不確定是否可以安全地刪除它們。

"這個引數來自哪裡?"

[編輯 | 編輯原始碼]

很難找到您在 UCS 中宣告和分配引數的位置。在報表中心中,有一個有用的 CV 報表稱為 "使用者建立標準列表"。您可以執行該報表,單擊其內容顯示的視窗內部,按 CTRL-F,輸入您感興趣的引數的名稱,然後反覆單擊 "查詢下一個" 以掃描所有出現的位置列表。

命名約定

[編輯 | 編輯原始碼]

以一種允許您在物件樹中輕鬆掃描它們的方式命名自定義引數,並按關注領域進行分組。第一個目標是將所有自定義引數與系統引數分開分組。由於 CV 使用前導下劃線 "_" 來命名大約一半的系統引數,因此一種技術是將前導下劃線加倍。在一些未編譯的語言(如 VBScript)中,有一種命名變數的傳統,使用字首來指示其預期的資料型別。例如,一個整型變數可以被命名為 "int_my_variable",這樣當它在以後被引用時,就不會混淆它應該包含什麼資料型別,也不需要跟蹤其初始宣告和值分配來確定此資訊。在 CV 中,遵循這種傳統沒有益處,因為(如上所述)資料型別在每次對自定義引數的值分配時都是必需的,除非需要預設型別 <meas>。

=== 之間的區別

[編輯 | 編輯原始碼]

決定如何使用兩者中最簡單的方法是

  • 如果您需要**分配**,請使用=
  • 如果您需要**引用**,請使用==

例如

If cab.DX == 20 THEN
  someparameter = cab.dx
End If

=:= 之間的區別

[編輯 | 編輯原始碼]

決定如何使用兩者中最簡單的方法是

  • 如果您需要將程式碼分配給引數,請使用=
  • 如果您需要使用程式碼將值分配給引數,請使用:=

例如

someparameter := temporaryvariable + cab.dx  ;will assign the value of the equation to the parameter

someparameter = cab.dx + 2  ;will assign the equation to the parameter

Null 和 0 之間的區別

[編輯 | 編輯原始碼]
  • 如果引數不存在,則它為 Null。
  • 如果引數存在,但其值設定為 0,則它不為 Null,而是 0。

示例

If someparameter == Null Then
  (Do Something)
End If

如果引數不存在,則此條件將觸發(執行操作)。

如果引數存在且設定為 0,則條件將不會觸發。

  • 但如果引數不存在,並且您測試它的值,則它的值為 0。

示例

If someparameter == 0 Then
  (Do Something)
End If

如果引數不存在,則此條件將觸發(執行操作)。

如果引數存在且設定為 0,則條件也會觸發。

正確使用 Exit 語句

[編輯 | 編輯原始碼]

對於 EXIT 語句,您需要對要包含的所有內容使用!= AND,對要排除的所有內容使用= OR

這將使 UCS 排除門型 2、3、119、511 和 1

If DoorstyleID = 2 OR DoorstyleID = 3 OR DoorstyleID = 119 OR DoorsstyleID = 511 OR DoorstyleID = 1 Then
Exit 
End If

這將僅包含門型 15、36、17 和 4

IF DoorstyleID != 15 AND DoorstyleID != 36 AND DoorstyleID != 17 AND DoorstyleID != 4 THEN
EXIT
END IF
華夏公益教科書