2020年6月29日 星期一

如何取得3D模型的屬性

HFSS的oEditor.GetPropertyValue()可以用來取得3D模型的屬性。比方說是材料,顏色等等。如果物件是在HFSS環境當中用基礎模塊所建立出來的,那麼還可以取得像是尺寸、半徑、高度等訊息。使用GetPropertyValue()需要傳入三個參數(如圖一):<propTab>字串,<propServer>字串及<propName>字串。接下來解釋這三個參數該如何設定。

(圖一) oEditor.GetPropertyValue()需傳入之參數

圖二顯示的是一個在HFSS當中建立的圓柱,預設名稱為Cylinder1。我們用這個圓柱當作例子來解說如何取得其材料屬性及半徑屬性。材料屬性放在"Attribute"標籤底下,如果要取得物件的材料屬性,程式碼如下:

material = oEditor.GetPropertyValue('Geometry3DAttributeTab', 'Cylinder1', 'Material')
AddWarningMessage(str(material))

半徑屬性放在另一個標籤"Command"底下,如果要取得物件的半徑屬性,程式碼如下:

radius = oEditor.GetPropertyValue('Geometry3DCmdTab', 'Cylinder1:CreateCylinder:1', 'Radius')
AddWarningMessage(str(radius))

(圖二) 圓柱不同欄位之屬性
首先說明材料屬性的取得。函式傳入的第一個參數是 'Geometry3DAttributeTab',第二個參數是物件名稱 'Cylinder1',第三個參數是屬性名稱 'Material'。第二個跟第三個參數還容易理解,第一個參數要怎麼知道材料屬性的Attribute標籤是對應到'Geometry3DAttributeTab'字串?這個問題一開始也是困擾了筆者一陣子。後來發現了一個方法:啟動腳本錄製的功能,並更改該屬性值,結束錄製之後到腳本當中就可以找到該屬性所隸屬之標籤了,如圖三。

(圖三) 從錄製腳本找出所屬標籤

要取得物件的半徑屬性,第一個參數是 'Geometry3DCmdTab',第二個參數是物件名稱 'Cylinder1:CreateCylinder:1',第三個參數是屬性名稱 'Radius'。第一個屬性跟第二個屬性都很難判斷得出來,同上所述,最簡單的方式還是錄製腳本,直接觀察來取得,如圖四。

(圖四) 從錄製的腳本取得正確的標籤名及物件名
執行上面四行代碼,可以從訊息視窗看到程式碼抓到的屬性值,如圖五

(圖五) 輸出到訊息視窗的材料及半徑屬性

沒有留言:

張貼留言