官方淘宝店 易迪拓培训 旧站入口
首页 > 仿真设计 > HFSS仿真设计论坛 > HFSS中的变量问题

HFSS中的变量问题

05-08
在HFSS的VBS脚本中,这样定义变量时:
oDesign.ChangeProperty Array("NAME:AllTabs", Array("NAME:LocalVariableTab", Array("NAME:PropServers",  _
  "LocalVariables"), Array("NAME:NewProps", Array("NAME:lambda", "PropType:=",  _
  "VariableProp", "UserDef:=", true, "Value:=", "32mm"), Array("NAME:dip_rad", "PropType:=",  _
  "VariableProp", "UserDef:=", true, "Value:=", "lambda/200"), Array("NAME:res_length", "PropType:=",  _
  "VariableProp", "UserDef:=", true, "Value:=", "0.475*lambda"), Array("NAME:gap_src", "PropType:=",  _
  "VariableProp", "UserDef:=", true, "Value:=", "0.38mm"), Array("NAME:dip_length", "PropType:=",  _
  "VariableProp", "UserDef:=", true, "Value:=", "(res_length-gap_src)/2"), Array("NAME:radiaton_rad", "PropType:=",  _
  "VariableProp", "UserDef:=", true, "Value:=", "dip_rad+lambda/4"), Array("NAME:radiation_height", "PropType:=",  _
  "VariableProp", "UserDef:=", true, "Value:=", "gap_src/2+dip_length+lambda/4"))))
程序运行没有错误,这样相当于在菜单操作中的预先定义变量的方法。
但是当独立定义变量如下时:
Dim lambda
Dim dip_rad
Dim res_length
Dim gap_src
Dim dip_length
Dim radiation_rad
Dim radiation_height
lambda="32mm"
dip_rad=lambda/200(注:这样是错误的,类型不同不能进行预算)
.......
问题如下:
这样定义变量,会导致后面无法进行运算。如果这样定义:lambda=32,这样就默认波长等于32m了,而不是32mm,后面的表达式是能够运算了,但是如果变量不加单位,HFSS就默认为m,加上单位就是字符串类型了,后面的表达式(lambda/200等)就无法运算。
为什么我设置了Units为"mm"时,不加单位依然默认为m呢。
谁能说说如何解决这个问题。
能不能不加单位,而把变量直接定义?

你如果非得用dim来定义的话确实是这样的
因为vbs里面的语法不允许啊
最简单的解决办法就是都是用默认的单位
然后所有变量都用纯数
比如你的波长就是 32e-3
你还可以拓展一下,比如定义mm 为10e-3
波长就是 32*mm

多谢!我还想问一下,就按我上面定义变量的方式(不是用Dim),能在后面的程序中对该变量进行操作吗?比如我在优化时,肯定要改变它的值的,我那样定义在后面改变时可以吗?

可以啊
只不过第一种方法
你一定要把变量转化成合理字符串以后才行

Top