- 易迪拓培训,专注于微波、射频、天线设计工程师的培养
Need CST macro that updates the structure when changing the parameter
录入:edatop.com 点击:
I have write a macro that makes an universal antenna.
everything works but when I change a parameter in the parameter list I get a error:
Expecting an existing scalar var. (I=0)
Can anyone help me?
ps I'm sorry for my bad englisch I'm from germany:)
Here is the code I use:
' rotation2
Sub Main ()
GoTo Back
Exists:
Component.Delete "component1"
I=0
GoTo Back
Back:
' StoreParameter("t",1 )
' StoreParameter("b", 2)
' StoreParameter("lam", 20)'lambda
' StoreParameter("a", 5)'Winkel a
' StoreParameter("r3",7)'Innenradius Stufe3
' StoreParameter("r2",5)'Innenradius Stufe2
' StoreParameter("r1",3)'Innenradius Stufe1
' StoreParameter("l3",5)'Laenge Stufe3
' StoreParameter("l2",5)'Laenge Stufe2
' StoreParameter("l1",5)'Laenge Stufe1
' StoreParameter("d",2)'Wanddicke
' StoreParameter("l",100)'Laenge des gesammten Rillenhorns
a1=((90-a)*pi/180)
With Rotate
.Reset
.Name "solid1"
.Component "component1"
.Material "Vacuum"
.Mode "Pointlist"
.StartAngle "0.0"
.Angle "360"
.Height "0.0"
.RadiusRatio "1.0"
.NSteps "0"
.SplitClosedEdges "True"
.SegmentedProfile "False"
.SimplifySolid "True"
.UseAdvancedSegmentedRotation "True"
.Origin "0.0", "0", "0.0"
.Rvector "1.0", "0.0", "0.0"
.Zvector "1.0", "0.0", "0.0"
.Point 0,lam/2+r3
Do
'xx=I*b+I*t
.LineTo I*b+I*t,lam/2+r3
xx=(I+1)*b+I*t
.LineTo xx,lam/2+r3
xx=(I+1)*b+I*t
yy=(((I+1)*b+I*t)/Tan(a1))+r3
.LineTo xx,yy
xx=(I+1)*b+(I+1)*t
yy=(((I+1)*b+(I+1)*t)/Tan(a1))+r3
.LineTo xx,yy
I=I+1
Loop Until ((I+1)*b+(I+1)*t-(b/2)-t)/Tan(a1)> lam/4
cx=I*b+I*t
Cy=(((I*b)+(I*t))/Tan(a1))+r3
lange=cx+l1+l2+l3
I=0
Do
xx=I*b+I*t
yy=(lam/4)+((I*b+I*t)/Tan(a1))
.LineTo xx+cx,yy+Cy
xx=(I+1)*b+I*t
yy=(lam/4)+((I*b+I*t)/Tan(a1))
.LineTo xx+cx,yy+Cy
xx=(I+1)*b+I*t
yy=((I+1)*b+I*t)/Tan(a1)
.LineTo xx+cx,yy+Cy
xx=(I+1)*b+(I+1)*t
yy=((I+1)*b+(I+1)*t)/Tan(a1)
.LineTo xx+cx,yy+Cy
I=I+1
Loop Until (I*t)+(I*b)+lange >l
.LineTo cx+I*(b+t),((cx+I*(b+t))/Tan(a1))+ (lam/4)+d+r3
.LineTo 0,((cx+I*(b+t))/Tan(a1))+ (lam/4)+d+r3
.LineTo 0,lam/2+r3
On Error GoTo Exists
.Create
End With
With Rotate
.Reset
.Name "solid2"
.Component "component1"
.Material "Vacuum"
.Mode "Pointlist"
.StartAngle "0.0"
.Angle "360"
.Height "0.0"
.RadiusRatio "1.0"
.NSteps "0"
.SplitClosedEdges "True"
.SegmentedProfile "False"
.SimplifySolid "True"
.UseAdvancedSegmentedRotation "True"
.Origin "0.0", "0", "0.0"
.Rvector "1.0", "0.0", "0.0"
.Zvector "1.0", "0.0", "0.0"
.Point 0,r3
.LineTo -l3,r3
.LineTo -l3,r2
.LineTo -(l2+l3),r2
.LineTo -(l2+l3),r1
.LineTo -(l1+l2+l3),r1
.LineTo -(l1+l2+l3),((cx+I*(b+t))/Tan(a1))+ (lam/4)+d+r3
.LineTo 0,((cx+I*(b+t))/Tan(a1))+ (lam/4)+d+r3
.LineTo 0,r3
.Create
End With
End Sub
everything works but when I change a parameter in the parameter list I get a error:
Expecting an existing scalar var. (I=0)
Can anyone help me?
ps I'm sorry for my bad englisch I'm from germany:)
Here is the code I use:
' rotation2
Sub Main ()
GoTo Back
Exists:
Component.Delete "component1"
I=0
GoTo Back
Back:
' StoreParameter("t",1 )
' StoreParameter("b", 2)
' StoreParameter("lam", 20)'lambda
' StoreParameter("a", 5)'Winkel a
' StoreParameter("r3",7)'Innenradius Stufe3
' StoreParameter("r2",5)'Innenradius Stufe2
' StoreParameter("r1",3)'Innenradius Stufe1
' StoreParameter("l3",5)'Laenge Stufe3
' StoreParameter("l2",5)'Laenge Stufe2
' StoreParameter("l1",5)'Laenge Stufe1
' StoreParameter("d",2)'Wanddicke
' StoreParameter("l",100)'Laenge des gesammten Rillenhorns
a1=((90-a)*pi/180)
With Rotate
.Reset
.Name "solid1"
.Component "component1"
.Material "Vacuum"
.Mode "Pointlist"
.StartAngle "0.0"
.Angle "360"
.Height "0.0"
.RadiusRatio "1.0"
.NSteps "0"
.SplitClosedEdges "True"
.SegmentedProfile "False"
.SimplifySolid "True"
.UseAdvancedSegmentedRotation "True"
.Origin "0.0", "0", "0.0"
.Rvector "1.0", "0.0", "0.0"
.Zvector "1.0", "0.0", "0.0"
.Point 0,lam/2+r3
Do
'xx=I*b+I*t
.LineTo I*b+I*t,lam/2+r3
xx=(I+1)*b+I*t
.LineTo xx,lam/2+r3
xx=(I+1)*b+I*t
yy=(((I+1)*b+I*t)/Tan(a1))+r3
.LineTo xx,yy
xx=(I+1)*b+(I+1)*t
yy=(((I+1)*b+(I+1)*t)/Tan(a1))+r3
.LineTo xx,yy
I=I+1
Loop Until ((I+1)*b+(I+1)*t-(b/2)-t)/Tan(a1)> lam/4
cx=I*b+I*t
Cy=(((I*b)+(I*t))/Tan(a1))+r3
lange=cx+l1+l2+l3
I=0
Do
xx=I*b+I*t
yy=(lam/4)+((I*b+I*t)/Tan(a1))
.LineTo xx+cx,yy+Cy
xx=(I+1)*b+I*t
yy=(lam/4)+((I*b+I*t)/Tan(a1))
.LineTo xx+cx,yy+Cy
xx=(I+1)*b+I*t
yy=((I+1)*b+I*t)/Tan(a1)
.LineTo xx+cx,yy+Cy
xx=(I+1)*b+(I+1)*t
yy=((I+1)*b+(I+1)*t)/Tan(a1)
.LineTo xx+cx,yy+Cy
I=I+1
Loop Until (I*t)+(I*b)+lange >l
.LineTo cx+I*(b+t),((cx+I*(b+t))/Tan(a1))+ (lam/4)+d+r3
.LineTo 0,((cx+I*(b+t))/Tan(a1))+ (lam/4)+d+r3
.LineTo 0,lam/2+r3
On Error GoTo Exists
.Create
End With
With Rotate
.Reset
.Name "solid2"
.Component "component1"
.Material "Vacuum"
.Mode "Pointlist"
.StartAngle "0.0"
.Angle "360"
.Height "0.0"
.RadiusRatio "1.0"
.NSteps "0"
.SplitClosedEdges "True"
.SegmentedProfile "False"
.SimplifySolid "True"
.UseAdvancedSegmentedRotation "True"
.Origin "0.0", "0", "0.0"
.Rvector "1.0", "0.0", "0.0"
.Zvector "1.0", "0.0", "0.0"
.Point 0,r3
.LineTo -l3,r3
.LineTo -l3,r2
.LineTo -(l2+l3),r2
.LineTo -(l2+l3),r1
.LineTo -(l1+l2+l3),r1
.LineTo -(l1+l2+l3),((cx+I*(b+t))/Tan(a1))+ (lam/4)+d+r3
.LineTo 0,((cx+I*(b+t))/Tan(a1))+ (lam/4)+d+r3
.LineTo 0,r3
.Create
End With
End Sub
申明:网友回复良莠不齐,仅供参考。如需专业解答,请学习易迪拓培训专家讲授的CST视频培训教程。
上一篇:How to design a helical antenna in CST MWS with minimum back lobe radiation pattern?
下一篇:CST MWS - emission vs frequency 3D model