摘要:
大家在科研和工作中,往往會遇到如何在CST中構建人工重復性高、建模步驟繁瑣的模型,以及多次導出仿真結果數據等問題。和HFSS的vbs腳本一樣,CST也自帶VBA腳本控制,并支持MATLAB調用。
0 1 CST的VBA語言
在CST主界面按F1即可打開官方自帶的Help文檔。
對于微波專業的學生和科研從業者,大部分情況下選用的是CST的MICROWAVE STUDIO (MWS)。因此,查看學習CST MWS VBA語法和對象即可滿足日常學習、工作需求。
點擊Hom?e:Macros>Open VBA Macro Editor,即可打開CST自帶的VBA開發環境。
復制粘貼MsgBox行的代碼到VBA編輯器中,點擊即可彈出信息提示框。(全部復制可能會報錯!親測!)
'#Language "WWB-COM" Option Explicit Sub Main MsgBox("Hello World") EndSub
對于初學者而言,若要熟練使用VBA開發環境對CST進行代碼式建模開發,還需要掌握兩方面知識:VBA語言的基本語法規則和CST的Objects調用規則。
前者可以在VBA開發環境下按F1鍵,調出Help文檔。
官方幫助文檔是學習VBA基本語法規則的一大利器,不需要從頭到尾都學一遍??梢员羞厡W邊用的方法,活學活用。不過學習常用的變量定義、數組、循環、判斷、字符等最基礎的知識是很有必要的。
有了語法基礎后,就需要根據自己的學習工作需求,去VBA Objects下找自己需要對象的調用規則。例如下圖所示的Brick對象的一個構建。該對象有Reset、Name、Component、Material、Xrange、Yrange、Zrange、Create這么幾個方法。
根據Help文檔的講解,我們在VBA開發環境中復制下面6-15行的代碼到Sub Main代碼塊內,點擊運行即可在CST中建立一個矩形實體。(全部復制可能會報錯!親測?。?/p>
'#Language "WWB-COM" OptionExplicit Sub Main With Brick .Reset .Name ("brick1") .Component ("component1") .Material ("PEC") .Xrange (0, 1) .Yrange (0, 3) .Zrange (0, 5) .Create End With End Sub
不過這種建模方法有一個缺點:和HFSS的自動化建模只有vbs代碼一樣,建立的模型在CST的History List沒有記錄,喪失了CST建模的一大利器!
好在可以打開CST官方Macro文件進行參考,比如自帶的Dipole Antenna這個mcs文件。經過對比,不難發現,只需要將前面的代碼變成字符串形式,通過AddToHistory即可將建模代碼添加至History List。
依葫蘆畫瓢,Sub Main和End Sub之間的代碼替換如下,執行VBA命令后即可在History List下找到本次建模的詳細代碼:
Dim sCommand As String '@ define brick1 sCommand = "" sCommand = sCommand + "With Brick " + vbLf sCommand = sCommand + " .Reset" + vbLf sCommand = sCommand + " .Name (""brick1"")" + vbLf sCommand = sCommand + " .Component (""component1"")" + vbLf sCommand = sCommand + " .Material (""PEC"")" + vbLf sCommand = sCommand + " .Xrange (0, 1)" + vbLf sCommand = sCommand + " .Yrange (0, 3)" + vbLf sCommand = sCommand + " .Zrange (0, 5)" + vbLf sCommand = sCommand + " .Create" + vbLf sCommand = sCommand + "End With" + vbLf MsgBox(sCommand) AddToHistory "define brick1", sCommand
0 2 MATLAB調用CST
MATLAB調用CST有兩種方法,一種是通過Shell語言的轉移字符!。
例如已經編寫好了待執行的vba腳本,文件類型命名為.bas(其他類型文件,比如.mcr,可能不會被識別)。然后按下面的語法結構,修改CST安裝路徑和bas文件路徑即可調用成功。這種方法和通過hfssapi包編寫好相應的vbs腳本文件,再用MATLAB調用HFSS執行vbs腳本命令類似。不過這種方法在嘗試調用高版本CST2022時,會因為采用了批處理(Batch)腳本調用而需要手動確認license的現象。
! "D:softwareCST2018CST DESIGN ENVIRONMENT.exe" -m E:test.bas
另一種方法則是通過matlab actxserver創建一個COM服務器,通過invoke調用COM對象或接口上的方法。
%如果裝了2個CST,不管怎么切換license,其只會創建最新安裝的cst對象! cst = actxserver('CSTStudio.application');%創建CST應用對象 mws = invoke(cst, 'NewMWS');%調用MWS應用對象 app = invoke(mws, 'GetApplicationName');%獲取當前應用名稱 ver = invoke(mws, 'GetApplicationVersion');%獲取當前應用版本號 invoke(mws, 'FileNew');%新建一個CST文件 filename='D:CSTFileDipole_model.cst'; invoke(mws, 'SaveAs', filename,'True'); invoke(mws, 'Quit'); release(mws); release(cst);
就通用性而言,第二種方法較優。網上也有很多關于這方面的代碼可供參考,個人可以根據需求將代碼進行封裝,便于后續的傳參調用。
實例展示
審核編輯 :李倩
-
matlab
+關注
關注
185文章
2974瀏覽量
230420 -
CST
+關注
關注
7文章
63瀏覽量
17726
原文標題:CST的VBA語言 & MATLAB調用CST
文章出處:【微信號:射頻學堂,微信公眾號:射頻學堂】歡迎添加關注!文章轉載請注明出處。
發布評論請先 登錄
相關推薦
評論