Advertisement
Guest User

Untitled

a guest
Jul 17th, 2018
83
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
text 9.82 KB | None | 0 0
  1. ' cosav2
  2.  
  3.  
  4. Sub Main ()
  5.  
  6. Dim side As Double
  7. Dim side_ini As Double
  8. Dim message As String
  9. Dim message2 As String
  10. Dim message3 As String
  11. Dim ntri(it) As Double
  12. Dim gap As Integer
  13. gap=10
  14.  
  15. side = W_seir/2
  16. message="sergio"
  17. Component.Delete "component1"
  18. Component.Delete "component2"
  19. Component.Delete "component3"
  20. Component.Delete "component4"
  21.  
  22.  
  23. Dim h(it-1) As Double
  24. h(0) = Sqr(3*(side^2)/4)
  25.  
  26. 'Triangulo principal
  27. With Extrude
  28. .Reset
  29. .Name message
  30. .Component "component1"
  31. .Material "PEC"
  32. .Mode "Pointlist"
  33. .Height 0
  34. .Origin "0.0", "0.0", h_substrate
  35. .Uvector "1.0", "0.0", "0.0"
  36. .Vvector "0.0", "1.0", "0.0"
  37. .Point side, 2*h(0)
  38. .LineTo 0, 0
  39. .LineTo 2*side, 0
  40. .LineTo side, 2*h(0)
  41. .Create
  42. End With
  43.  
  44. ' Triangulo a invertir
  45. With Extrude
  46. .Reset
  47. .Name message
  48. .Component "component2"
  49. .Material "PEC"
  50. .Mode "Pointlist"
  51. .Height 0
  52. .Origin "0.0", "0.0", h_substrate
  53. .Uvector "1.0", "0.0", "0.0"
  54. .Vvector "0.0", "1.0", "0.0"
  55. .Point side, 2*h(0)
  56. .LineTo 0, 4*h(0)
  57. .LineTo 2*side, 4*h(0)
  58. .LineTo side, 2*h(0)
  59. .Create
  60. End With
  61. side_ini=side
  62.  
  63.  
  64. ' Bloque principal a quitar
  65.  
  66. With Extrude
  67. .Reset
  68. .Name "Electrode"
  69. .Component "component1"
  70. .Material "PEC"
  71. .Mode "Pointlist"
  72. .Height 0
  73. .Origin "0.0", "0.0", h_substrate
  74. .Uvector "1.0", "0.0", "0.0"
  75. .Vvector "0.0", "1.0", "0.0"
  76. .Point side, 0+h(0)*tolerance*0.5
  77. .LineTo side/2+side/2*tolerance*0.5, h(0)-h(0)*tolerance*0.5
  78. .LineTo 3*side/2-side/2*tolerance*0.5, h(0)-h(0)*tolerance*0.5
  79. .LineTo side, 0+h(0)*tolerance*0.5
  80. .Create
  81. End With
  82.  
  83. Solid.Subtract "component1:sergio", "component1:Electrode"
  84.  
  85. ' Bloque principal del triangulo a quitar
  86.  
  87. With Extrude
  88. .Reset
  89. .Name "Electrode"
  90. .Component "component2"
  91. .Material "PEC"
  92. .Mode "Pointlist"
  93. .Height 0
  94. .Origin "0.0", "0.0", h_substrate
  95. .Uvector "1.0", "0.0", "0.0"
  96. .Vvector "0.0", "1.0", "0.0"
  97. .Point side, 4*h(0)-h(0)*tolerance*0.5
  98. .LineTo side/2+side/2*tolerance*0.5, 3*h(0)+h(0)*tolerance*0.5
  99. .LineTo 3*side/2-side/2*tolerance*0.5, 3*h(0)+h(0)*tolerance*0.5
  100. .LineTo side, 4*h(0)-h(0)*tolerance*0.5
  101. .Create
  102. End With
  103.  
  104. Solid.Subtract "component2:sergio", "component2:Electrode"
  105.  
  106.  
  107.  
  108. ntri(0)=1
  109. For cont=1 To (it-1)
  110. ntri(cont)=ntri(cont-1)*3
  111. Next cont
  112.  
  113.  
  114. Dim auxiliar As Integer
  115.  
  116. Dim coorx(3,3^it) As Variant
  117. Dim coory(3,3^it) As Variant
  118.  
  119. Dim tempx(3,3^it) As Variant
  120. Dim tempy(3,3^it) As Variant
  121.  
  122. Dim temp2x(3,3^it) As Variant
  123. Dim temp2y(3,3^it) As Variant
  124.  
  125. For cont4=1 To 3
  126. For cont5=1 To (3^it)
  127.  
  128. tempx(cont4,cont5)=0
  129. tempy(cont4,cont5)=0
  130.  
  131. temp2x(cont4,cont5)=0
  132. temp2y(cont4,cont5)=0
  133.  
  134. coorx(cont4,cont5)=0
  135. coory(cont4,cont5)=0
  136.  
  137. Next cont5
  138. Next cont4
  139.  
  140. Dim cont2 As Integer
  141. Dim cont3 As Integer
  142.  
  143. coorx(1,1)=side/2
  144. coorx(2,1)=side
  145. coorx(3,1)=3*side/2
  146.  
  147. coory(1,1)=h(0)
  148. coory(2,1)=0
  149. coory(3,1)=h(0)
  150.  
  151.  
  152.  
  153.  
  154. For index = 1 To it
  155. message="sergio"
  156. message=message & Cstr(index)
  157.  
  158. side=side/2
  159. h(index-1) = Sqr(3*(side^2)/4)
  160. ' coorx=tempx
  161. ' coory=tempy
  162.  
  163.  
  164. cont3=1
  165. cont2=1
  166. Do While cont2<=ntri(index)
  167.  
  168.  
  169. ' Vértices del triangulo derecho
  170. tempx(1,cont2)=coorx(2,cont3)+side/2
  171. tempy(1,cont2)=coory(2,cont3)+h(index-1)
  172. tempx(2,cont2)=coorx(2,cont3)+side
  173. tempy(2,cont2)=coory(2,cont3)
  174. tempx(3,cont2)=coorx(2,cont3)+3*side/2
  175. tempy(3,cont2)=coory(2,cont3)+h(index-1)
  176.  
  177. temp2x(1,cont2)=tempx(1,cont2)+tolerance*side/2
  178. temp2y(1,cont2)=tempy(1,cont2)-tolerance*h(index-1)
  179. temp2x(2,cont2)=tempx(2,cont2)
  180. temp2y(2,cont2)=tempy(2,cont2)+tolerance*h(index-1)
  181. temp2x(3,cont2)=tempx(3,cont2)-tolerance*side/2
  182. temp2y(3,cont2)=tempy(3,cont2)-tolerance*h(index-1)
  183.  
  184. message=message & Cstr(cont3)
  185.  
  186.  
  187. Call newTriangle( temp2x(1,cont2), temp2y(1,cont2), temp2x(2,cont2),temp2y(2,cont2),temp2x(3,cont2),temp2y(3,cont2),message)
  188. message2="component1:" & message
  189. Solid.Subtract "component1:sergio", message2
  190.  
  191. 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)
  192. message3="component2:" & message
  193. Solid.Subtract "component2:sergio", message3
  194.  
  195.  
  196. 'Vértices del triangulo superior
  197. ' Al estar inicializados igual que arriba se copia todo
  198. tempx(1,cont2+1)=coorx(1,cont3)+side/2
  199. tempy(1,cont2+1)=coory(1,cont3)+h(index-1)
  200. tempx(2,cont2+1)=coorx(1,cont3)+side
  201. tempy(2,cont2+1)=coory(1,cont3)
  202. tempx(3,cont2+1)=coorx(1,cont3)+3*side/2
  203. tempy(3,cont2+1)=coory(1,cont3)+h(index-1)
  204.  
  205. temp2x(1,cont2+1)=tempx(1,cont2+1)+tolerance*side/2
  206. temp2y(1,cont2+1)=tempy(1,cont2+1)-tolerance*h(index-1)
  207. temp2x(2,cont2+1)=tempx(2,cont2+1)
  208. temp2y(2,cont2+1)=tempy(2,cont2+1)+tolerance*h(index-1)
  209. temp2x(3,cont2+1)=tempx(3,cont2+1)-tolerance*side/2
  210. temp2y(3,cont2+1)=tempy(3,cont2+1)-tolerance*h(index-1)
  211.  
  212.  
  213. 'Hay que adaptar la funcion newTriangle
  214.  
  215. message=message & Cstr(cont3)
  216.  
  217. 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)
  218. message2="component1:" & message
  219. Solid.Subtract "component1:sergio", message2
  220.  
  221. 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)
  222. message3="component2:" & message
  223. Solid.Subtract "component2:sergio", message3
  224.  
  225. 'Vértices del triangulo izquierdo
  226.  
  227. tempx(1,cont2+2)=coorx(2,cont3)-3*side/2
  228. tempy(1,cont2+2)=coory(2,cont3)+h(index-1)
  229. tempx(2,cont2+2)=coorx(2,cont3)-side
  230. tempy(2,cont2+2)=coory(2,cont3)
  231. tempx(3,cont2+2)=coorx(2,cont3)-side/2
  232. tempy(3,cont2+2)=coory(2,cont3)+h(index-1)
  233.  
  234. temp2x(1,cont2+2)=tempx(1,cont2+2)+tolerance*side/2
  235. temp2y(1,cont2+2)=tempy(1,cont2+2)-tolerance*h(index-1)
  236. temp2x(2,cont2+2)=tempx(2,cont2+2)
  237. temp2y(2,cont2+2)=tempy(2,cont2+2)+tolerance*h(index-1)
  238. temp2x(3,cont2+2)=tempx(3,cont2+2)-tolerance*side/2
  239. temp2y(3,cont2+2)=tempy(3,cont2+2)-tolerance*h(index-1)
  240.  
  241. 'Hay que adaptar la funcion newTriangle
  242. message=message & Cstr(cont3)
  243.  
  244. 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)
  245. message2="component1:" & message
  246. Solid.Subtract "component1:sergio", message2
  247.  
  248. 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)
  249.  
  250. message3="component2:" & message
  251. Solid.Subtract "component2:sergio", message3
  252.  
  253. cont2 = cont2 + 3
  254. cont3=cont3+1
  255.  
  256. Loop
  257.  
  258. For cont6=1 To 3
  259. For cont7=1 To (3^it)
  260. coorx(cont6,cont7)=tempx(cont6,cont7)
  261. coory(cont6,cont7)=tempy(cont6,cont7)
  262. Next cont7
  263. Next cont6
  264.  
  265.  
  266. Next index
  267.  
  268. ' Definimos el gap
  269.  
  270. With Extrude
  271. .Reset
  272. .Name "gap"
  273. .Component "component3"
  274. .Material "PEC"
  275. .Mode "Pointlist"
  276. .Height 0
  277. .Origin "0.0", "0.0", h_substrate
  278. .Uvector "1.0", "0.0", "0.0"
  279. .Vvector "0.0", "1.0", "0.0"
  280. .Point side_ini-gap/2, 4*h(0)
  281. .LineTo side_ini-gap/2, 4*h(0)+gap/2
  282. .LineTo side_ini+gap/2, 4*h(0)+gap/2
  283. .LineTo side_ini+gap/2, 4*h(0)
  284. .LineTo side_ini-gap/2, 4*h(0)
  285. .Create
  286. End With
  287. Solid.Subtract "component2:sergio", "component3:gap"
  288.  
  289. With Extrude
  290. .Reset
  291. .Name "gap"
  292. .Component "component4"
  293. .Material "PEC"
  294. .Mode "Pointlist"
  295. .Height 0
  296. .Origin "0.0", "0.0", h_substrate
  297. .Uvector "1.0", "0.0", "0.0"
  298. .Vvector "0.0", "1.0", "0.0"
  299. .Point side_ini-gap/2, 4*h(0)-gap/2
  300. .LineTo side_ini-gap/2, 4*h(0)
  301. .LineTo side_ini+gap/2, 4*h(0)
  302. .LineTo side_ini+gap/2, 4*h(0)-gap/2
  303. .LineTo side_ini-gap/2, 4*h(0)-gap/2
  304. .Create
  305. End With
  306.  
  307. Solid.Subtract "component1:sergio", "component4:gap"
  308.  
  309. ' Solid.Subtract "component1:sergio", "component3:gap"
  310.  
  311.  
  312.  
  313. End Sub
  314.  
  315. 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)
  316. ' Dim h(it-1) As Double
  317. ' h(0) = Sqr(3*(side^2)/4)
  318. With Extrude
  319. .Reset
  320. .Name message
  321. .Component "component1"
  322. .Material "PEC"
  323. .Mode "Pointlist"
  324. .Height 0
  325. .Origin "0.0", "0.0", h_substrate
  326. .Uvector "1.0", "0.0", "0.0"
  327. .Vvector "0.0", "1.0", "0.0"
  328. .Point p2x, p2y
  329. .LineTo p3x, p3y
  330. .LineTo p1x, p1y
  331. .LineTo p2x, p2y
  332. .Create
  333. End With
  334.  
  335. End Sub
  336.  
  337. 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)
  338. ' Dim h(it-1) As Double
  339. ' h(0) = Sqr(3*(side^2)/4)
  340. With Extrude
  341. .Reset
  342. .Name message
  343. .Component "component2"
  344. .Material "PEC"
  345. .Mode "Pointlist"
  346. .Height 0
  347. .Origin "0.0", "0.0", h_substrate
  348. .Uvector "1.0", "0.0", "0.0"
  349. .Vvector "0.0", "1.0", "0.0"
  350. .Point p2x, p2y
  351. .LineTo p3x, p3y
  352. .LineTo p1x, p1y
  353. .LineTo p2x, p2y
  354. .Create
  355. End With
  356.  
  357. End Sub
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement