7,762
社区成员
发帖
与我相关
我的任务
分享
Dim oAnsoftApp
Dim oDesktop
Dim oProject
Dim oDesign
Dim oEditor
Dim oModule
Set oAnsoftApp = CreateObject("AnsoftMaxwell.MaxwellScriptInterface")
Set oDesktop = oAnsoftApp.GetAppDesktop()
oDesktop.RestoreWindow
Set oProject = oDesktop.GetActiveProject()
Set oDesign = oProject.GetActiveDesign()
dim TimeSelect
dim TimeSelectSub
dim FileInc
Dim project_path
i = 0
j = 0
'find the directory where the vb script is located (Project Directory Location)
project_path = oProject.GetPath()
'Prompt User for Input Data
StartTimein = Inputbox("Enter the Starting Time (sec)" &chr(13) & "(as defined in Saved Fields)")
EndTimein = Inputbox("Enter the End Time (sec)" &chr(13) & "(as defined in Saved Fields)")
dtin = Inputbox("Enter the Time Step (sec)" &chr(13) & "(as defined in Saved Fields)")
NamedExpression = Inputbox("Enter the name of the Named Expression" &chr(13) & "(e.g. AverageLoss_1)")TotalTimeSteps = (int(((EndTimein - StartTimein)/dtin)+1)*100)/100
TotalSteps_s = "FYI: The total number of Field Solutions used for Averaging is " & TotalTimeSteps &chr(13) &chr(13) & _
"Click OK to Continue, Hit Esc to interrupt script."
msgbox (TotalSteps_s)
StartTime=StartTimein*1e9 'Converts to ns for use in the Fields Calculator
EndTime=EndTimein*1e9
dt=dtin*1e9
Set oModule = oDesign.GetModule("FieldsReporter")
oModule.EnterQty "TotalLoss" 'Load Core Loss and Smooth it
oModule.CalcOp "Smooth"
For n = StartTime to EndTime Step dt
TimeSelect = n
TimeSelectSub = CStr(TimeSelect) & "ns"
i = 1+i
FileInc = i
Filename = "\Test_" & CStr(FileInc) & ".fld"
'Save Fields to a File in Fields Calculator
oModule.CalculatorWrite project_path & Filename, _
Array("Solution:=", "Setup1 : Transient"), _
Array("Time:=", TimeSelectSub)
Next
'ReLoad Saved Core Loss Fields and Add Fields together
j=j+1
FileInc = j
Filename = "\Test_" & CStr(FileInc) & ".fld"
oModule.CalculatorRead project_path & Filename, _
"Setup1 : Transient", "Fields", _
Array("Time:=", TimeSelectSub)
For j = 2 to i
FileInc = j
Filename = "\Test_" & CStr(FileInc) & ".fld"
oModule.CalculatorRead project_path & Filename, _
"Setup1 : Transient", "Fields", _
Array("Time:=", TimeSelectSub)
oModule.CalcOp "+"
Next
'Divide all fields by total number of ouput field results, i
oModule.EnterScalar CStr(i)
oModule.CalcOp "/"
oModule.AddNamedExpression NamedExpression, "Fields"
msgbox ("The Script is Complete. " &chr(13) & _
"After selecting the geometry to plot the averaged field," &chr(13) & _
"the Named Expression can be selected under Field Overlays -> Fields -> Named Expressions.")
StartTimein = Inputbox("Enter the Starting Time (sec)" &chr(13) & "(as defined in Saved Fields)")
EndTimein = Inputbox("Enter the End Time (sec)" &chr(13) & "(as defined in Saved Fields)")
dtin = Inputbox("Enter the Time Step (sec)" &chr(13) & "(as defined in Saved Fields)")
NamedExpression = Inputbox("Enter the name of the Named Expression" &chr(13) & "(e.g. AverageLoss_1)")
Private Sub Command1_Click()
form1.[变量]=text1.text
form2.hide
form1.show
End Sub
form1.hide
form2.show