RUS  ENG 

Выполнение расчетов из макроса (VBScript)

Дмитрий Емельянов , 2 ноября 2020

Выполнение расчетов из макроса (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

Скачать пример (8.41 КБ)


Возврат к списку

Последнее обновление — 17.02.2023 13:39:40