Выполнение расчетов из макроса (VBScript)
Используем ZuluNetTools для ZuluThermo для запуска поверочного расчета тепловых сетей из макросаБиблиотека компонентов для автоматизированных расчетов инженерных сетей.
Для выполнения расчетов из макроса необходима лицензия на ZuluNetTools
Sub poverka
' исходные данные
tn = Array(-19.8,-18.3,-8.5,-1.2,6.9,7.9,-0.4,-10.4,-16.9)
t1 = Array(81.8,79.3,63.5,53.2,40.3,39,52.3,68.4,78.5)
h = Array(744,672,744,720,600,720,744,720,744)
Month_calc = Array("январь","февраль","март","апрель","май","сентябрь","октябрь","ноябрь","декабрь")
'''''''''''''''''''''''''''''''
Q_ist = 0
Cost_el =0
Q_poter = 0
Cost_poter = 0
' создание необходимых объектов
Set L = zulu.ActiveMapDoc.Layers.Active
Set Out = OpenOutputChannel ("Сообщения")
out.Clear
Set task = CreateObject("ZuluComNetOcx.TaskThermo")
Set network = CreateObject("ZuluComNetOcx.Network")
'''''''''''''''''''''''''''''
' ID источика
ist = l.CurrentID
'''''''''''''''''''''''''''''
' проверка что это источник
If L.Elements.Item(ist).typeid <> 1 Then
msgbox "Это не источник"
Else
' Выбор расчетного слоя
network.OpenNetwork L, 1
''''''''''''''''''''''''''''
' настройки расчетов
task.Network = network
task.PoverkaThermoLoss = 2
'task.PoverkaThermoLoss = 1
task.PoverkaCalcRo = True
task.PoverkaUseFromNaladka = true
task.PoverkaUseLeaks = true
''''''''''''''''''''''''''''
' выбираем источник
task.Sources.Add(ist)
''''''''''''''''''''''''''''
' Цикл расчетов
count_calc = UBound(t1) - LBound(t1)
for i = 0 to count_calc
Out.Put "{\B}Расчет на температуру наружного воздуха за " &Month_calc(i)& +CHR(10)+"Среднемесячная температура "& tn(i) & " ,°С " +CHR(10)
L.ExecSQL "update set [Текущая температура воды в подающем тру-де,°С]= " + CStr(t1(i)) + ", [Текущая температура наружного воздуха,°С] = " + CStr(tn(i)) + " where sys = " + CStr(ist) + ""
' запуск расчета
res = task.Run(2, true)
'анализ ошибок
count = task.Errors.Count
for j = 0 to count - 1
OUT.Put task.Errors(j).Text + CHR(10)
Next
' получение результатов
Set Result_i = L.ExecSQL("SELECT [Суммарная тепловая нагрузка, Гкал/ч],[Затраты на электроэнергию] where sys = " + CStr(ist) + "")
Set res_out_i= Result_i.DataSet
Q_ist = res_out_i.FieldValue(0)
Cost_el = res_out_i.FieldValue(1)
Out.Put Chr(9) +"Среднемесячная тепловая нагрузка = " + Chr(9) + CStr(Q_ist) + CHR(10)
Set Result = L.ExecSQL("SELECT sum([Тепловые потери в подающем трубопроводе, ккал/ч] + [Тепловые потери в обратном трубопроводе, ккал/ч])" )
Set res_out= Result.DataSet
Q_poter = res_out.FieldValue(0)*0.000001
Cost_poter = res_out.FieldValue(0)*1614.27*0.000001
Out.Put Chr(9) +"Среднемесячные тепловые потери = "+ Chr(9) + CStr(round(Q_poter,3)) + CHR(10)
Out.Put Chr(9) +"Среднемесячные затраты на электроэнергию = "+ Chr(9) + CStr(Cost_el) + CHR(10)
Out.Put Chr(9) +"Среднемесячные затраты на тепловые потери = "+ CStr(round(Cost_poter,2))+ CHR(10)
Sum_Q_ist = CDbl(Sum_Q_ist) + CDbl(Q_ist)*h(i)
Sum_Cost_el =CDbl(Sum_Cost_el) + cint(Cost_el)*h(i)
Sum_Q_poter = CDbl(Sum_Q_poter) + cint(Q_poter)*h(i)
Sum_Cost_poter = CDbl(Sum_Cost_poter) + CDbl(Cost_poter)*h(i)
Out.Put "-------------------------------------------------------"+ CHR(10)
Next
Out.Put "{\B}ГОДОВЫЕ ПАРАМЕТРЫ:" + CHR(10)
Out.Put "Суммарная годовая тепловая нагрузка = " + Chr(9) + CStr(round(Sum_Q_ist,2)) + CHR(10)
Out.Put "Суммарные годовые затраты на электроэнергию = "+ Chr(9) + CStr(Sum_Cost_el) + CHR(10)
Out.Put "Суммарные годовые тепловые потери = "+ Chr(9) + CStr(round(Sum_Q_poter,2)) + CHR(10)
Out.Put "Суммарные годовые затраты на тепловые потери = "+ CStr(round(Sum_Cost_poter,2))+ CHR(10)
''''''''''''''''''''''''''''
End if
End Sub
Последнее обновление — 17.02.2023 13:39:40