RUS  ENG 

WayTree. Дерево путей. Связанные по направлению

Страницы: 1
RSS
WayTree. Дерево путей. Связанные по направлению
 
Добрый день. Есть необходимость нажатием макроса выводить в окно сообщений нагрузки связанных по направлению после узла. Написал вот такой макрос. Он хоть и работает, но на большом числе объектов - не достаточно быстро. Возможно существует способ более быстро решить данную задачу?
Код
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
 
Цитата
написал:
Добрый день. Есть необходимость нажатием макроса выводить в окно сообщений нагрузки связанных по направлению после узла. Написал вот такой макрос. Он хоть и работает, но на большом числе объектов - не достаточно быстро. Возможно существует способ более быстро решить данную задачу?
Добрый день. Если сеть большая, то при первом обращении к процедуре или после изменения геометрии потребуется время для инициализации модели сети. Дерево по идее строится быстро. Заполнение в цикле группы может тормозить. И выполнение запроса может тормозить.
Сделайте после кажого этапа вывод строки в окно сообщение. Выполнить процедуру. Включите в окне сообщения "Отображать время". Посмотрите какой этап сколько времени занимает.
 
Заполнение группы работает долго. Можно как то иначе сделать? В смысле без цикла с добавлением в группу объектов по одному.
Изменено: Алексей Демин - 03.02.2025 17:22:48
 
Цитата
написал:
Заполнение группы работает долго. Можно как то иначе сделать? В смысле без цикла с добавлением в группу объектов по одному.
Добавим метод, чтобы элементы дерева в группу одним вызовом дбавлять без цикла
 
Цитата
написал:
Заполнение группы работает долго. Можно как то иначе сделать? В смысле без цикла с добавлением в группу объектов по одному.
Добавили для дерева свойство ElementKeys. Теперь группу можно создавать одим вызовом
Код
L.Selection.ModifyByKeys 1, MWayTree.ElementKeys
 
Большое спасибо!
Страницы: 1