| Правила | Регистрация | Пользователи | Поиск | Сообщения за день | Все разделы прочитаны |  Справка по форуму | Файлообменник |

Вернуться   Форум DWG.RU > Программное обеспечение > Программирование > Зона молниезащиты реализванная через VBA. C циклом. Проблемы по мере поступления.

Зона молниезащиты реализванная через VBA. C циклом. Проблемы по мере поступления.

Ответ
Поиск в этой теме
Непрочитано 15.02.2012, 11:27 #1
Зона молниезащиты реализванная через VBA. C циклом. Проблемы по мере поступления.
Zheleznov
 
Регистрация: 20.09.2011
Сообщений: 7

Делаю. Инициативный. Но взялся пару дней назад. Опыт -школьный, и в университете чуть -чуть.
Затея!
Чтобы считал и строи зоны МП, как одиночных так и взаимодествия попарно.(для этого позже будет введено расстояния попарно,и построения осей и т.д. но позже через строку MP c координатами)
R0 и H0 - для хранения показателей,для дальнейшего расчета зон.

Подскажите что ему не нравится. Да это тока начало, но уже проблемы.
Код:
[Выделить все]
  Sub MZ2()
    Dim hx As Double
    Dim point1 As Variant
        Dim nad As Double
    Dim n, i, l As Integer
  n = InputBox("Введите колическтво МП")
  nad = InputBox("Надежность ")
     
     Dim Array_MP() As Double
     Dim Array_H() As Double
     Dim Array_R0() As Double
     Dim Array_H0() As Double

  
 For i = 1 To n
 point1 = ThisDrawing.Utility.GetPoint(, vbCrLf & "Молниеприемник")
 Array_MP(2 * i - 1) = point1(0)
 Array_MP(2 * i) = point1(1)
 Array_H(i) = InputBox("Высота МП")
  Next i
End Sub
Просмотров: 3172
 
Непрочитано 15.02.2012, 15:05
#2
Олег (jr.)

специалист по околачиванию грушевых деревьев
 
Регистрация: 14.09.2004
Pietari, Venäjä
Сообщений: 813


Залей сюда лучше чертеж (А2007) и покажи что там у тебя ДО и что ПОСЛЕ
Олег (jr.) вне форума  
 
Автор темы   Непрочитано 15.02.2012, 15:08
#3
Zheleznov


 
Регистрация: 20.09.2011
Сообщений: 7


2012, чертеж пустой. новый.
Zheleznov вне форума  
 
Непрочитано 15.02.2012, 15:17
#4
Олег (jr.)

специалист по околачиванию грушевых деревьев
 
Регистрация: 14.09.2004
Pietari, Venäjä
Сообщений: 813


Цитата:
Сообщение от Zheleznov Посмотреть сообщение
2012, чертеж пустой. новый.
Тогда как хочешь
Код HTML:
Option Explicit

  Sub MZ2()
  Dim coll As Collection
    Dim hx As Double
    Dim point1 As Variant
        Dim nad As Double
    Dim n, i, l As Integer
  n = InputBox("Введите колическтво МП")
  nad = InputBox("Надежность ")


  Set coll = New Collection
  Dim tmp(2) As Variant
 For i = 1 To n
 point1 = ThisDrawing.Utility.GetPoint(, vbCrLf & "Молниеприемник: ")

 tmp(0) = point1(0)
tmp(1) = point1(1)
tmp(2) = InputBox("Высота МП")
coll.Add tmp, CStr(i)
  Next i
  
  'Test:
  Dim itm As Variant
  For Each itm In coll
  Debug.Print itm(0) & " - " & itm(1) & " - " & itm(2)
  Next itm
  
End Sub
Олег (jr.) вне форума  
 
Автор темы   Непрочитано 15.02.2012, 15:39
#5
Zheleznov


 
Регистрация: 20.09.2011
Сообщений: 7


Спасибо, но цикл то дб с занесение координат через n кол-во молниеприемников, в массив ArrayMP(0,1(X1),2(y1),3(X2), 4(y2)) через цикл,
дабы затем произвести циклы с условием по расстоянию.
Можно так?
point1 это спомогательно.

'Test: и далее зачем? я не понимаю.
Zheleznov вне форума  
 
Непрочитано 15.02.2012, 16:14
#6
Олег (jr.)

специалист по околачиванию грушевых деревьев
 
Регистрация: 14.09.2004
Pietari, Venäjä
Сообщений: 813


Цитата:
Сообщение от Zheleznov Посмотреть сообщение
Спасибо, но цикл то дб с занесение координат через n кол-во молниеприемников, в массив ArrayMP(0,1(X1),2(y1),3(X2), 4(y2)) через цикл,
дабы затем произвести циклы с условием по расстоянию.
Можно так?
point1 это спомогательно.

'Test: и далее зачем? я не понимаю.
Я без чертежа даже не буду заморачиваться извини
Олег (jr.) вне форума  
 
Автор темы   Непрочитано 16.02.2012, 08:06
#7
Zheleznov


 
Регистрация: 20.09.2011
Сообщений: 7


зачем? бурем чертеж, подгружаем модуль, и пользуемся!
Zheleznov вне форума  
 
Непрочитано 16.02.2012, 09:21
#8
5hev

roads
 
Регистрация: 22.12.2010
msk
Сообщений: 121
<phrase 1= Отправить сообщение для 5hev с помощью Skype™


Zheleznov, видимо потому что не все знают о каких "зонах" идет речь
5hev вне форума  
 
Автор темы   Непрочитано 16.02.2012, 09:49
#9
Zheleznov


 
Регистрация: 20.09.2011
Сообщений: 7


Зона одиночных молниеприемников, в дальнейшем она разрастется, до взаимодействие,
(Взаимодействие в зависимости от расстояния, и высот ),
Разновысотные, одинакоковой высоты, кроме того есть РД 87 года, но картинки можно и поэтому посмотреть.

Код:
[Выделить все]
 Option Explicit

  Sub MZIToG()
  Dim tmp As Collection
    Dim H0 As Collection
    Dim R0 As Collection
    Dim H As Collection
    Dim R As Collection
        Dim R0n, H0n As Variant
        Dim point1 As Variant
        Dim nad, Radius, hx, h1 As Double
    Dim n, i, l As Integer
  n = InputBox("Ââåäèòå êîëè÷åñêòâî ÌÏ")
  nad = InputBox("Íàäåæíîñòü ")
  hx = InputBox("Óðîâåíü ìîëíèåçàùèòû(âûñîòà îáîðóäîâàíèÿ) ")
Dim My_Circle2 As AcadCircle

  Set tmp = New Collection
  
 For i = 1 To n
 point1 = ThisDrawing.Utility.GetPoint(, vbCrLf & "Ìîëíèåïðèåìíèê: ")
 R0.Add point1(0), CStr(2 * i - 1)
 H0.Add point1(1), CStr(2 * i)

h1 = InputBox("Âûñîòà ÌÏ")
 H.Add h1, CStr(i)
If nad = 0.9 And H(i) < 100 Then ' ðàñ÷åò H0, R0
  R0n = 0.85 * H(i)
  H0n = 1.2 * H(i)

If nad = 0.9 And H(i) >= 100 Then
          R0n = 0.85 * H(i)
          H0n = (1.2 - 10 ^ (-3) * (H(i) - 100)) * H(i)
         
     If nad = 0.99 And H(i) <= 30 Then
          R0n = 0.8 * H(i)
          H0n = 0.8 * H(i)
          
     If nad = 0.99 And 30 < H(i) >= 100 Then
          R0n = 0.8 * H(i)
          H0n = 0.7 * H(i)
          
     If nad = 0.99 And 100 < H(i) >= 150 Then
          R0n = (0.8 - 10 ^ (-3) * (H(i) - 100)) * H(i)
          H0n = 0.7 * H(n)
         
          If nad = 0.999 And H(i) <= 30 Then
          R0n = 0.7 * H(i)
          H0n = 0.6 * H(i)
         
          If nad = 0.999 And 30 < H(i) >= 100 Then
          R0n = (0.7 - 7.14 * 10 ^ (-4) * (H(i) - 30)) * H(i)
          H0n = (0.6 - 1.43 * 10 ^ (-3) * (H(i) - 30)) * H(i)
      
          If nad = 0.999 And 100 < H(i) >= 150 Then
          R0n = (0.65 - 10 ^ (-3) * (H(i) - 100)) * H(i)
          H0n = (0.5 - 2 * 10 ^ (-3) * (H(i) - 100)) * H(i)
          R0.Add R0n, CStr(i)
          H0.Add H0n, CStr(i)
                                                                   End If
                                                                   End If
                                                                   End If
                                                                   End If
                                                                   End If
                                                                   End If
                                                                   End If
                                                                   End If
                                                
R(n) = R0(i) * (H0(i) - hx) / H0(i) 'ðàñ÷åò ðàäèóñà íà âûñîòå hx
point1(0) = tmp(2 * i - 1)
point1(1) = tmp(2 * i)
point1(2) = 0
Radius = R(i)
Set My_Circle2 = ThisDrawing.ModelSpace.AddCircle(point1, Radius)

  Next i
  

End Sub
Zheleznov вне форума  
Ответ
Вернуться   Форум DWG.RU > Программное обеспечение > Программирование > Зона молниезащиты реализванная через VBA. C циклом. Проблемы по мере поступления.

Размещение рекламы
Опции темы Поиск в этой теме
Поиск в этой теме:

Расширенный поиск