下面是这个脚本的源代码, 红色的部分,就是我要做个有文本框的界面的地方
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.")
20 个解决方案
#1
createobject.
没看到红的。
没看到红的。
#2
我了个去这么长,物理没学好电磁啥的看不懂,代码我就不看了。。。
依楼主大概意思,应该是新建个窗体,工程——添加窗体——窗体,这样就可以了,然后新建个text文本框和一个确认按钮一个取消按钮就可以了
确认按钮的功能是把text文本框中你输入的值传递给form1,这个楼主应该会的吧,大概就是
然后用下面这段代码代替原来inputbox的那段:
依楼主大概意思,应该是新建个窗体,工程——添加窗体——窗体,这样就可以了,然后新建个text文本框和一个确认按钮一个取消按钮就可以了
确认按钮的功能是把text文本框中你输入的值传递给form1,这个楼主应该会的吧,大概就是
Private Sub Command1_Click()
form1.[变量]=text1.text
form2.hide
form1.show
End Sub
然后用下面这段代码代替原来inputbox的那段:
form1.hide
form2.show
#3
我看楼上的回答者,是不懂,人家问的是VBS,不是VB。VBS是VB Script,就是用Basic语言写成的脚本命令。
VBS本身无法添加窗口,因为VBS是脚本语言,并非真正的编译。再加上你用InputBox是同步的,在用户还没有单击确定之前,程序不会继续执行下去,你说对吗;但是你用窗口,那是异步的,窗口一出现,程序就继续向下执行,这时候用户都没有输入值,非得出错不可。
VBS本身无法添加窗口,因为VBS是脚本语言,并非真正的编译。再加上你用InputBox是同步的,在用户还没有单击确定之前,程序不会继续执行下去,你说对吗;但是你用窗口,那是异步的,窗口一出现,程序就继续向下执行,这时候用户都没有输入值,非得出错不可。
#4
我又孤陋寡闻了=。=没看到是VBS
刚学到多媒体还木有学VBS。。。
#5
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)")
就是这个地方的代码
#6
还请大家说说 谢谢您了
#7
建个dll么,
#8
我也想知道啊
#9
这个有限元软件软件 只支持VBS的
#10
我的意思是建个dll,以后用vbs调用。
#11
谢谢您的回复 ,但因为软件只支持vbs 所以这个方法似乎不行
#12
VBS好像不能调用API。。。
#13
恳请大家能继续说说 小弟再次谢谢您的热心帮助!
#14
还请大家说说
#15
依旧期待大家的回答
#16
用vb写个 atx dll,里面画好你想要的窗口,在写一个 类,调整适用范围为 公开,在vbs里面createobject 那个类。。。。 自己去发挥吧
#17
谢谢 PctGL的思路
可惜小弟干的是电机 对程序这东西只懂得皮毛 你说的方法 似乎要画很长时间去研究 唉! 自叹所学有限
#18
从你上面那堆代码来看,写这个dll应该没问题
#19
我记得以前用win2000的时候看到过系统自带的能建立窗口的脚本,好像是wsh写的。
反正当时感觉很神奇,就是一个vbs或者js文件,点了以后就出现个窗体,里面有好多类似vb的控件
好像一个正常的应用程序一样,可以执行。以前乱翻windows文件夹发现的,现在不记得怎么找了
反正当时感觉很神奇,就是一个vbs或者js文件,点了以后就出现个窗体,里面有好多类似vb的控件
好像一个正常的应用程序一样,可以执行。以前乱翻windows文件夹发现的,现在不记得怎么找了
#20
那些vbs 主体内容是 录制 VBS做的 我只是在录制的基础上 改改而已
#21
#1
createobject.
没看到红的。
没看到红的。
#2
我了个去这么长,物理没学好电磁啥的看不懂,代码我就不看了。。。
依楼主大概意思,应该是新建个窗体,工程——添加窗体——窗体,这样就可以了,然后新建个text文本框和一个确认按钮一个取消按钮就可以了
确认按钮的功能是把text文本框中你输入的值传递给form1,这个楼主应该会的吧,大概就是
然后用下面这段代码代替原来inputbox的那段:
依楼主大概意思,应该是新建个窗体,工程——添加窗体——窗体,这样就可以了,然后新建个text文本框和一个确认按钮一个取消按钮就可以了
确认按钮的功能是把text文本框中你输入的值传递给form1,这个楼主应该会的吧,大概就是
Private Sub Command1_Click()
form1.[变量]=text1.text
form2.hide
form1.show
End Sub
然后用下面这段代码代替原来inputbox的那段:
form1.hide
form2.show
#3
我看楼上的回答者,是不懂,人家问的是VBS,不是VB。VBS是VB Script,就是用Basic语言写成的脚本命令。
VBS本身无法添加窗口,因为VBS是脚本语言,并非真正的编译。再加上你用InputBox是同步的,在用户还没有单击确定之前,程序不会继续执行下去,你说对吗;但是你用窗口,那是异步的,窗口一出现,程序就继续向下执行,这时候用户都没有输入值,非得出错不可。
VBS本身无法添加窗口,因为VBS是脚本语言,并非真正的编译。再加上你用InputBox是同步的,在用户还没有单击确定之前,程序不会继续执行下去,你说对吗;但是你用窗口,那是异步的,窗口一出现,程序就继续向下执行,这时候用户都没有输入值,非得出错不可。
#4
我又孤陋寡闻了=。=没看到是VBS
刚学到多媒体还木有学VBS。。。
#5
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)")
就是这个地方的代码
#6
还请大家说说 谢谢您了
#7
建个dll么,
#8
我也想知道啊
#9
这个有限元软件软件 只支持VBS的
#10
我的意思是建个dll,以后用vbs调用。
#11
谢谢您的回复 ,但因为软件只支持vbs 所以这个方法似乎不行
#12
VBS好像不能调用API。。。
#13
恳请大家能继续说说 小弟再次谢谢您的热心帮助!
#14
还请大家说说
#15
依旧期待大家的回答
#16
用vb写个 atx dll,里面画好你想要的窗口,在写一个 类,调整适用范围为 公开,在vbs里面createobject 那个类。。。。 自己去发挥吧
#17
谢谢 PctGL的思路
可惜小弟干的是电机 对程序这东西只懂得皮毛 你说的方法 似乎要画很长时间去研究 唉! 自叹所学有限
#18
从你上面那堆代码来看,写这个dll应该没问题
#19
我记得以前用win2000的时候看到过系统自带的能建立窗口的脚本,好像是wsh写的。
反正当时感觉很神奇,就是一个vbs或者js文件,点了以后就出现个窗体,里面有好多类似vb的控件
好像一个正常的应用程序一样,可以执行。以前乱翻windows文件夹发现的,现在不记得怎么找了
反正当时感觉很神奇,就是一个vbs或者js文件,点了以后就出现个窗体,里面有好多类似vb的控件
好像一个正常的应用程序一样,可以执行。以前乱翻windows文件夹发现的,现在不记得怎么找了
#20
那些vbs 主体内容是 录制 VBS做的 我只是在录制的基础上 改改而已