Advertisement
Not a member of Pastebin yet?
Sign Up,
it unlocks many cool features!
- ' cosav2
- Sub Main ()
- Dim side As Double
- Dim side_ini As Double
- Dim message As String
- Dim message2 As String
- Dim message3 As String
- Dim ntri(it) As Double
- Dim gap As Integer
- gap=10
- side = W_seir/2
- message="sergio"
- Component.Delete "component1"
- Component.Delete "component2"
- Component.Delete "component3"
- Component.Delete "component4"
- Dim h(it-1) As Double
- h(0) = Sqr(3*(side^2)/4)
- 'Triangulo principal
- With Extrude
- .Reset
- .Name message
- .Component "component1"
- .Material "PEC"
- .Mode "Pointlist"
- .Height 0
- .Origin "0.0", "0.0", h_substrate
- .Uvector "1.0", "0.0", "0.0"
- .Vvector "0.0", "1.0", "0.0"
- .Point side, 2*h(0)
- .LineTo 0, 0
- .LineTo 2*side, 0
- .LineTo side, 2*h(0)
- .Create
- End With
- ' Triangulo a invertir
- With Extrude
- .Reset
- .Name message
- .Component "component2"
- .Material "PEC"
- .Mode "Pointlist"
- .Height 0
- .Origin "0.0", "0.0", h_substrate
- .Uvector "1.0", "0.0", "0.0"
- .Vvector "0.0", "1.0", "0.0"
- .Point side, 2*h(0)
- .LineTo 0, 4*h(0)
- .LineTo 2*side, 4*h(0)
- .LineTo side, 2*h(0)
- .Create
- End With
- side_ini=side
- ' Bloque principal a quitar
- With Extrude
- .Reset
- .Name "Electrode"
- .Component "component1"
- .Material "PEC"
- .Mode "Pointlist"
- .Height 0
- .Origin "0.0", "0.0", h_substrate
- .Uvector "1.0", "0.0", "0.0"
- .Vvector "0.0", "1.0", "0.0"
- .Point side, 0+h(0)*tolerance*0.5
- .LineTo side/2+side/2*tolerance*0.5, h(0)-h(0)*tolerance*0.5
- .LineTo 3*side/2-side/2*tolerance*0.5, h(0)-h(0)*tolerance*0.5
- .LineTo side, 0+h(0)*tolerance*0.5
- .Create
- End With
- Solid.Subtract "component1:sergio", "component1:Electrode"
- ' Bloque principal del triangulo a quitar
- With Extrude
- .Reset
- .Name "Electrode"
- .Component "component2"
- .Material "PEC"
- .Mode "Pointlist"
- .Height 0
- .Origin "0.0", "0.0", h_substrate
- .Uvector "1.0", "0.0", "0.0"
- .Vvector "0.0", "1.0", "0.0"
- .Point side, 4*h(0)-h(0)*tolerance*0.5
- .LineTo side/2+side/2*tolerance*0.5, 3*h(0)+h(0)*tolerance*0.5
- .LineTo 3*side/2-side/2*tolerance*0.5, 3*h(0)+h(0)*tolerance*0.5
- .LineTo side, 4*h(0)-h(0)*tolerance*0.5
- .Create
- End With
- Solid.Subtract "component2:sergio", "component2:Electrode"
- ntri(0)=1
- For cont=1 To (it-1)
- ntri(cont)=ntri(cont-1)*3
- Next cont
- Dim auxiliar As Integer
- Dim coorx(3,3^it) As Variant
- Dim coory(3,3^it) As Variant
- Dim tempx(3,3^it) As Variant
- Dim tempy(3,3^it) As Variant
- Dim temp2x(3,3^it) As Variant
- Dim temp2y(3,3^it) As Variant
- For cont4=1 To 3
- For cont5=1 To (3^it)
- tempx(cont4,cont5)=0
- tempy(cont4,cont5)=0
- temp2x(cont4,cont5)=0
- temp2y(cont4,cont5)=0
- coorx(cont4,cont5)=0
- coory(cont4,cont5)=0
- Next cont5
- Next cont4
- Dim cont2 As Integer
- Dim cont3 As Integer
- coorx(1,1)=side/2
- coorx(2,1)=side
- coorx(3,1)=3*side/2
- coory(1,1)=h(0)
- coory(2,1)=0
- coory(3,1)=h(0)
- For index = 1 To it
- message="sergio"
- message=message & Cstr(index)
- side=side/2
- h(index-1) = Sqr(3*(side^2)/4)
- ' coorx=tempx
- ' coory=tempy
- cont3=1
- cont2=1
- Do While cont2<=ntri(index)
- ' Vértices del triangulo derecho
- tempx(1,cont2)=coorx(2,cont3)+side/2
- tempy(1,cont2)=coory(2,cont3)+h(index-1)
- tempx(2,cont2)=coorx(2,cont3)+side
- tempy(2,cont2)=coory(2,cont3)
- tempx(3,cont2)=coorx(2,cont3)+3*side/2
- tempy(3,cont2)=coory(2,cont3)+h(index-1)
- temp2x(1,cont2)=tempx(1,cont2)+tolerance*side/2
- temp2y(1,cont2)=tempy(1,cont2)-tolerance*h(index-1)
- temp2x(2,cont2)=tempx(2,cont2)
- temp2y(2,cont2)=tempy(2,cont2)+tolerance*h(index-1)
- temp2x(3,cont2)=tempx(3,cont2)-tolerance*side/2
- temp2y(3,cont2)=tempy(3,cont2)-tolerance*h(index-1)
- message=message & Cstr(cont3)
- Call newTriangle( temp2x(1,cont2), temp2y(1,cont2), temp2x(2,cont2),temp2y(2,cont2),temp2x(3,cont2),temp2y(3,cont2),message)
- message2="component1:" & message
- Solid.Subtract "component1:sergio", message2
- Call newTrianglev2( temp2x(1,cont2), 8*h(0)-temp2y(1,cont2), temp2x(2,cont2), 8*h(0)-temp2y(2,cont2),temp2x(3,cont2), 8*h(0)-temp2y(3,cont2),message)
- message3="component2:" & message
- Solid.Subtract "component2:sergio", message3
- 'Vértices del triangulo superior
- ' Al estar inicializados igual que arriba se copia todo
- tempx(1,cont2+1)=coorx(1,cont3)+side/2
- tempy(1,cont2+1)=coory(1,cont3)+h(index-1)
- tempx(2,cont2+1)=coorx(1,cont3)+side
- tempy(2,cont2+1)=coory(1,cont3)
- tempx(3,cont2+1)=coorx(1,cont3)+3*side/2
- tempy(3,cont2+1)=coory(1,cont3)+h(index-1)
- temp2x(1,cont2+1)=tempx(1,cont2+1)+tolerance*side/2
- temp2y(1,cont2+1)=tempy(1,cont2+1)-tolerance*h(index-1)
- temp2x(2,cont2+1)=tempx(2,cont2+1)
- temp2y(2,cont2+1)=tempy(2,cont2+1)+tolerance*h(index-1)
- temp2x(3,cont2+1)=tempx(3,cont2+1)-tolerance*side/2
- temp2y(3,cont2+1)=tempy(3,cont2+1)-tolerance*h(index-1)
- 'Hay que adaptar la funcion newTriangle
- message=message & Cstr(cont3)
- Call newTriangle( temp2x(1,cont2+1), temp2y(1,cont2+1), temp2x(2,cont2+1),temp2y(2,cont2+1),temp2x(3,cont2+1),temp2y(3,cont2+1),message)
- message2="component1:" & message
- Solid.Subtract "component1:sergio", message2
- Call newTrianglev2( temp2x(1,cont2+1), 8*h(0)-temp2y(1,cont2+1), temp2x(2,cont2+1), 8*h(0)-temp2y(2,cont2+1),temp2x(3,cont2+1), 8*h(0)-temp2y(3,cont2+1),message)
- message3="component2:" & message
- Solid.Subtract "component2:sergio", message3
- 'Vértices del triangulo izquierdo
- tempx(1,cont2+2)=coorx(2,cont3)-3*side/2
- tempy(1,cont2+2)=coory(2,cont3)+h(index-1)
- tempx(2,cont2+2)=coorx(2,cont3)-side
- tempy(2,cont2+2)=coory(2,cont3)
- tempx(3,cont2+2)=coorx(2,cont3)-side/2
- tempy(3,cont2+2)=coory(2,cont3)+h(index-1)
- temp2x(1,cont2+2)=tempx(1,cont2+2)+tolerance*side/2
- temp2y(1,cont2+2)=tempy(1,cont2+2)-tolerance*h(index-1)
- temp2x(2,cont2+2)=tempx(2,cont2+2)
- temp2y(2,cont2+2)=tempy(2,cont2+2)+tolerance*h(index-1)
- temp2x(3,cont2+2)=tempx(3,cont2+2)-tolerance*side/2
- temp2y(3,cont2+2)=tempy(3,cont2+2)-tolerance*h(index-1)
- 'Hay que adaptar la funcion newTriangle
- message=message & Cstr(cont3)
- Call newTriangle( temp2x(1,cont2+2), temp2y(1,cont2+2), temp2x(2,cont2+2),temp2y(2,cont2+2),temp2x(3,cont2+2),temp2y(3,cont2+2),message)
- message2="component1:" & message
- Solid.Subtract "component1:sergio", message2
- Call newTrianglev2( temp2x(1,cont2+2), 8*h(0)-temp2y(1,cont2+2), temp2x(2,cont2+2), 8*h(0)-temp2y(2,cont2+2),temp2x(3,cont2+2), 8*h(0)-temp2y(3,cont2+2),message)
- message3="component2:" & message
- Solid.Subtract "component2:sergio", message3
- cont2 = cont2 + 3
- cont3=cont3+1
- Loop
- For cont6=1 To 3
- For cont7=1 To (3^it)
- coorx(cont6,cont7)=tempx(cont6,cont7)
- coory(cont6,cont7)=tempy(cont6,cont7)
- Next cont7
- Next cont6
- Next index
- ' Definimos el gap
- With Extrude
- .Reset
- .Name "gap"
- .Component "component3"
- .Material "PEC"
- .Mode "Pointlist"
- .Height 0
- .Origin "0.0", "0.0", h_substrate
- .Uvector "1.0", "0.0", "0.0"
- .Vvector "0.0", "1.0", "0.0"
- .Point side_ini-gap/2, 4*h(0)
- .LineTo side_ini-gap/2, 4*h(0)+gap/2
- .LineTo side_ini+gap/2, 4*h(0)+gap/2
- .LineTo side_ini+gap/2, 4*h(0)
- .LineTo side_ini-gap/2, 4*h(0)
- .Create
- End With
- Solid.Subtract "component2:sergio", "component3:gap"
- With Extrude
- .Reset
- .Name "gap"
- .Component "component4"
- .Material "PEC"
- .Mode "Pointlist"
- .Height 0
- .Origin "0.0", "0.0", h_substrate
- .Uvector "1.0", "0.0", "0.0"
- .Vvector "0.0", "1.0", "0.0"
- .Point side_ini-gap/2, 4*h(0)-gap/2
- .LineTo side_ini-gap/2, 4*h(0)
- .LineTo side_ini+gap/2, 4*h(0)
- .LineTo side_ini+gap/2, 4*h(0)-gap/2
- .LineTo side_ini-gap/2, 4*h(0)-gap/2
- .Create
- End With
- Solid.Subtract "component1:sergio", "component4:gap"
- ' Solid.Subtract "component1:sergio", "component3:gap"
- End Sub
- Sub newTriangle( ByVal p1x As Double,ByVal p1y As Double,ByVal p2x As Double,ByVal p2y As Double,ByVal p3x As Double,ByVal p3y As Double, ByRef message As String)
- ' Dim h(it-1) As Double
- ' h(0) = Sqr(3*(side^2)/4)
- With Extrude
- .Reset
- .Name message
- .Component "component1"
- .Material "PEC"
- .Mode "Pointlist"
- .Height 0
- .Origin "0.0", "0.0", h_substrate
- .Uvector "1.0", "0.0", "0.0"
- .Vvector "0.0", "1.0", "0.0"
- .Point p2x, p2y
- .LineTo p3x, p3y
- .LineTo p1x, p1y
- .LineTo p2x, p2y
- .Create
- End With
- End Sub
- Sub newTrianglev2( ByVal p1x As Double,ByVal p1y As Double,ByVal p2x As Double,ByVal p2y As Double,ByVal p3x As Double,ByVal p3y As Double, ByRef message As String)
- ' Dim h(it-1) As Double
- ' h(0) = Sqr(3*(side^2)/4)
- With Extrude
- .Reset
- .Name message
- .Component "component2"
- .Material "PEC"
- .Mode "Pointlist"
- .Height 0
- .Origin "0.0", "0.0", h_substrate
- .Uvector "1.0", "0.0", "0.0"
- .Vvector "0.0", "1.0", "0.0"
- .Point p2x, p2y
- .LineTo p3x, p3y
- .LineTo p1x, p1y
- .LineTo p2x, p2y
- .Create
- End With
- End Sub
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement