2024/4/12

iLogic範例:檢查自訂性質與材料清單

最近幫一個Inventor使用者上iLogic課程,
內容包括參數表與應用,iLogic基本應用介紹;
其中原本想要花比較多時間介紹與實作的屬性資料處理部分被迫縮短,
原因是客戶這一段由PLM系統處理,不想浪費彼此的時間,原本準備要介紹的部分只好縮短^_^

不過客戶提出一個材質的設定狀況問我是否有機會解決?
狀況如下:
1. 如前述屬性資料包括材質由 PLM 處理
2. 屬性資料皆寫入 iProperty 的自訂性質欄位
3. 材質放在 iProperty 自訂欄位"材質",無法自動更換為 Inventor Material 內材質
4. 需要正確的材質設定才能計算機台重量
5. 使用者很容易忘記設定材料性質

問題很簡單,就是:

1. 自動檢查 PLM 導入"材質"是否在Inventor Materials清單中?
2. 如果有就自動設定 Inventor Materials
3. 如果沒有就自動設定成一般的鋼材,如SS41

坦白說我也不知道該怎麼寫,畢竟不是寫程式的專長^_^

不過我算是很會上網找資料,
果然被我在 Autodesk 英文網站討論區找到解法,
原來的問題是在問一個函數是否支援字串格式?
有網友提出解決方案,
然後就被我改成解決這個問題的程式段:

Dim sValue As String
sValue = 材質

If (MultiValue.List("Material_I").Contains(sValue)) Then
	MessageBox.Show("OK," & " 材料清單中有 " & sValue)
	iProperties.Material=材質
Else
	MessageBox.Show("NG," & " 材料清單中沒有 " & sValue & "改成 鋼")
	iProperties.Material="鋼"
End If
參數表中的"材質"屬性會輸出到 iProperty
"材質"改,iProperty 自訂性質改會觸發規則執行
一旦檢查到"材質"設定的資料在 Inventor Materials 清單中找不到
會自動跳出訊息並更改模型的材料性質為"鋼"

如果材質在清單中找得到相同的,
會自動跳出訊息通知

看來老雖老,處理問題能力還是在^_^

但是這個解法並不是單純用iLogic函數,

MultiValue.List("Material_I").Contains(sValue)

而是有用到Inventor API,或者應該說是VB的指令。

這也是麻煩的地方,在原廠說明網頁中並沒有提到MultiValue.List("xxxx")這個函數的行為功能指令,
沒學過 VB 、Inventor API的使用者(像我)就不知道可以加上 .Contains.去檢查清單中是否有跟 sValue 相同的資料,

還好網路上有很多高手可以協助。 

沒有留言:

張貼留言