Добрый день. Есть необходимость нажатием макроса выводить в окно сообщений нагрузки связанных по направлению после узла. Написал вот такой макрос. Он хоть и работает, но на большом числе объектов - не достаточно быстро. Возможно существует способ более быстро решить данную задачу?
[CODE]Sub WayTree
Set Out = Zulu.OpenOutputChannel("Сообщения")
Out.Clear
Set L = Zulu.ActiveMapDoc.Layers.Active
L.Selection.Clear
CurrentSYS = L.CurrentID
Out.Put Cstr(CurrentSYS) + Chr(10)
set MWayTree = L.GetShortWayTreeEx(CInt(CurrentSYS),2)
Out.Put Cstr(MWayTree.Count) + Chr(10)
For i=0 to MWayTree.Count-1
L.Selection.AddElem(MWayTree.Item(i))
Next
Lname = L.UserName
Set Rslt = L.ExecSQL("CONST @Layer = '"+Lname+"'; "& vbLf & _
"SEL ECT Round(SUM([Расчетная нагрузка на отопление, Гкал/ч]),2) as Qот,"& vbLf & _
"Round(SUM([Расчетная нагрузка на ГВС, Гкал/ч]),2) as Qгвс,"& vbLf & _
"Round(SUM([Расчетная нагрузка на вентиляцию, Гкал/ч]),2) as Qвент"& vbLf & _
"fr om @Layer as L "& vbLf & _
"where geometry.selected()=1 and L.typeid=3")
Set r = Rslt.DataSet
Out.PrintDataSet r, 8 + &H100
L.Selection.Clear
End Sub
[/CODE]
[CODE]Sub WayTree
Set Out = Zulu.OpenOutputChannel("Сообщения")
Out.Clear
Set L = Zulu.ActiveMapDoc.Layers.Active
L.Selection.Clear
CurrentSYS = L.CurrentID
Out.Put Cstr(CurrentSYS) + Chr(10)
set MWayTree = L.GetShortWayTreeEx(CInt(CurrentSYS),2)
Out.Put Cstr(MWayTree.Count) + Chr(10)
For i=0 to MWayTree.Count-1
L.Selection.AddElem(MWayTree.Item(i))
Next
Lname = L.UserName
Set Rslt = L.ExecSQL("CONST @Layer = '"+Lname+"'; "& vbLf & _
"SEL ECT Round(SUM([Расчетная нагрузка на отопление, Гкал/ч]),2) as Qот,"& vbLf & _
"Round(SUM([Расчетная нагрузка на ГВС, Гкал/ч]),2) as Qгвс,"& vbLf & _
"Round(SUM([Расчетная нагрузка на вентиляцию, Гкал/ч]),2) as Qвент"& vbLf & _
"fr om @Layer as L "& vbLf & _
"where geometry.selected()=1 and L.typeid=3")
Set r = Rslt.DataSet
Out.PrintDataSet r, 8 + &H100
L.Selection.Clear
End Sub
[/CODE]