' ZuluNetTools ' Примеры создания расчетной модели для тепловой сети Источник - Насос - Камера - Потребитель ' двумя способами с последующим выполнением поверочного расчета ' ActiveX enumeration values definitions start (do not change!) Const zcnNetTypeThermo = 1 ' ActiveX enumeration values definitions end ' Построение модели сети в слое ZuluGIS Sub CalcInZulu ' Имя слоя sLayerName = "d:\test\vbs\teplo.b00" Set Tools = CreateObject("ZuluLib.ZuluTools") Set CRS = CreateObject("ZuluLib.CRS") ' Создаем проекцию для слоя CRS.InitByCode "epsg:3857" ' Создаем слой тепловой сети Tools.NetworkLayerCreate sLayerName, "Тепловая сеть", 1, CRS ' Открываем созданный слой Set L = CreateObject("ZuluLib.Layer") L.Open sLayerName ' Создаем объект для заполнения координат участкоа Set Pline = CreateObject("ZuluLib.PolyLine") ' Записываем в слой объект Ичточник ID = L.AddSymbol(0, 0, 1, 1) ' Записываем атрибуты по объекту источник L.ExecSQL "Update Set Name=""Котельная 1"", H_ras=30, H_obr=20, Nist=1, T1_r=150, Thz_r=5, Tnv_r=-26, H_geo=0, T1_t=100, Tnv_t=-10 WHERE Sys=" + CStr(ID) ' Задаем координаты участка Pline.AddPoint 0, 0 Pline.AddPoint 0, 100 ' Записываем в слой объект участок ID = L.AddPolyLine(Pline, nothing, 6, 1) ' Записываем в слой объект Насос ID = L.AddSymbol(0, 100, 4, 1) ' Записываем атрибуты по объекту Насос L.ExecSQL "Update Set Name=""НС-1"", H_geo=2, Hpod = 10 WHERE Sys=" + CStr(ID) ' Записываем в слой втрой участок Pline.Clear Pline.AddPoint 0, 100 Pline.AddPoint 0, 200 ID = L.AddPolyLine(Pline, nothing, 6, 1) ' Записываем в слой объект Камера ID = L.AddSymbol(0, 200, 2, 1) ' Записываем атрибуты по объекту Камера L.ExecSQL "Update Set Name=""ТК-1"", H_geo=2 WHERE Sys=" + CStr(ID) ' Записываем в слой третий участок Pline.Clear Pline.AddPoint 0, 200 Pline.AddPoint 0, 300 ID = L.AddPolyLine(Pline, nothing, 6, 1) ' Записываем в слой объект Потребитель ID = L.AddSymbol(0, 300, 3, 1) ' Записываем атрибуты по объекту Потребитель L.ExecSQL "Update Set Name=""Жилой дом"", N_schem=2, H_geo=0, Qo_r=0.5, T1_r=150, T3_r=95, T2_r=70, Tvso_r=20, Hso_r=1, Qgv_sred=0.1, Thv=5, Tgv=60, Hcirc=2, Nshb_so_pod_u=0, Nshb_so_obr_u=0, Regul_T=3, Dsop_u=12.33, Nel_u=5, Hzdan=10 WHERE Sys=" + CStr(ID) ' Записываем атрибуты одинаковые для всех цчастков L.ExecSQL "Update Set L=100, Dpod=0.06, Dobr=0.06, Ke_pod=1, Kz_pod=1, Ke_obr=1, Kz_obr=1 WHERE typeid = 6" ' Создаем объекты сеть и задача в ZuluNetTools Set NW = CreateObject("ZuluComNetOcx.Network") Set task = CreateObject("ZuluComNetOcx.TaskThermo") ' Связываем задачу с сетью task.Network = NW ' Открываем созданную сеть NW.OpenNetwork sLayerName, zcnNetTypeThermo ' Задаем окно сообщений Set Out = Zulu.OpenOutputChannel("Сообщения 1") Out.Activate Out.Clear Out.AutoClose = false ' Связываем задачу с окном сообщений task.SetOutput Out ' Разрешаем вывод протокола в окно сообщений task.LogMessages = true ' Выполняем поверочный расчет task.Run 2, true End Sub ' Построение модели сети в памяти Sub CalcInMemory ' Создаем объекты сеть и задача в ZuluNetTools Set NW = CreateObject("ZuluComNetOcx.Network") Set task = CreateObject("ZuluComNetOcx.TaskThermo") ' Связываем задачу с сетью task.Network = NW ' Создаем тепловую сеть в памяти NW.CreateNetwork zcnNetTypeThermo ' Задаем оъекты сети и связи ежду ними ' Источник NW.AddObject 1, 1, 1, -1, -1, 0 ' Насос NW.AddObject 3, 4, 1, -1, -1, 0 ' Участок Источник - Насос NW.AddObject 2, 6, 1, 1, 3, 100 ' Камера NW.AddObject 5, 2, 1, -1, -1, 0 ' Участок Насос - Камера NW.AddObject 4, 6, 1, 3, 5, 100 ' Потребитель NW.AddObject 7, 3, 1, -1, -1, 0 ' Участок Камера - Потребитель NW.AddObject 6, 6, 1, 5, 7, 100 ' Задаем атрибуты Источника NW.SetAttrValue 1, "Name", "Котельная 1" NW.SetAttrValue 1, "H_ras", 30 NW.SetAttrValue 1, "H_obr", 20 NW.SetAttrValue 1, "Nist", 1 NW.SetAttrValue 1, "T1_r", 150 NW.SetAttrValue 1, "Thz_r", 5 NW.SetAttrValue 1, "Tnv_r", -26 NW.SetAttrValue 1, "H_geo", 0 NW.SetAttrValue 1, "T1_t", 100 NW.SetAttrValue 1, "Tnv_t", -10 ' Задаем атрибуты Насоса NW.SetAttrValue 3, "H_geo", 3 NW.SetAttrValue 3, "Name", "НС-1" NW.SetAttrValue 3, "Hpod", "10" ' Задаем атрибуты Камеры NW.SetAttrValue 5, "H_geo", 2 NW.SetAttrValue 5, "Name", "ТК-1" ' Задаем атрибуты Потребителя NW.SetAttrValue 7, "N_schem", 2 NW.SetAttrValue 7, "H_geo", 0 NW.SetAttrValue 7, "Name", "Жилой дом" NW.SetAttrValue 7, "Qo_r", 0.5 NW.SetAttrValue 7, "T1_r", 150 NW.SetAttrValue 7, "T3_r", 95 NW.SetAttrValue 7, "T2_r", 70 NW.SetAttrValue 7, "Tvso_r", 20 NW.SetAttrValue 7, "Hso_r", 1 NW.SetAttrValue 7, "Qgv_sred", 0.1 NW.SetAttrValue 7, "Thv", 5 NW.SetAttrValue 7, "Tgv", 60 NW.SetAttrValue 7, "Hcirc", 2 NW.SetAttrValue 7, "Nshb_so_pod_u", 0 NW.SetAttrValue 7, "Nshb_so_obr_u", 0 NW.SetAttrValue 7, "Regul_T", 3 NW.SetAttrValue 7, "Dsop_u", 12.33 NW.SetAttrValue 7, "Nel_u", 5 NW.SetAttrValue 7, "Hzdan", 10 ' Задаем атрибуты участков NW.SetAttrValue 2, "L", 100 NW.SetAttrValue 2, "Dpod", 0.06 NW.SetAttrValue 2, "Dobr", 0.06 NW.SetAttrValue 2, "Ke_pod", 1 NW.SetAttrValue 2, "Kz_pod", 1 NW.SetAttrValue 2, "Ke_obr", 1 NW.SetAttrValue 2, "Kz_obr", 1 NW.SetAttrValue 4, "L", 100 NW.SetAttrValue 4, "Dpod", 0.06 NW.SetAttrValue 4, "Dobr", 0.06 NW.SetAttrValue 4, "Ke_pod", 1 NW.SetAttrValue 4, "Kz_pod", 1 NW.SetAttrValue 4, "Ke_obr", 1 NW.SetAttrValue 4, "Kz_obr", 1 NW.SetAttrValue 6, "L", 100 NW.SetAttrValue 6, "Dpod", 0.06 NW.SetAttrValue 6, "Dobr", 0.06 NW.SetAttrValue 6, "Ke_pod", 1 NW.SetAttrValue 6, "Kz_pod", 1 NW.SetAttrValue 6, "Ke_obr", 1 NW.SetAttrValue 6, "Kz_obr", 1 ' Задаем окно сообщений Set Out = Zulu.OpenOutputChannel("Сообщения 2") Out.Activate Out.Clear Out.AutoClose = false ' Связываем задачу с окном сообщений task.SetOutput Out ' Разрешаем вывод протокола в окно сообщений task.LogMessages = true ' Выполняем поверочный расчет task.Run 2, true Out.Put CHR(10) + CHR(10) + CHR(10) ' Выводим в окно некоторые результаты расчета ' Расход на потребителе Val = NW.GetAttrValue(7, "Gsum_pod") Out.Put "Gsum=" + CStr(Val) + " т/ч" + CHR(10) ' Располагаемый напор на камере Val = NW.GetAttrValue(5, "H_ras") Out.Put "Hras5=" + CStr(Val) + " м" + CHR(10) ' Температура обратной воды в камере Val = NW.GetAttrValue(5, "Tobr") Out.Put "T5=" + CStr(Val) + " °C" + CHR(10) ' Располагаемый напор на потребителе Val = NW.GetAttrValue(7, "H_ras") Out.Put "Hras7=" + CStr(Val) + " м" + CHR(10) End Sub