[QUOTE] написал: IntersectByRadius действительно оказался очень полезным. Часто бывает, что в площадном объекте лежит много маленьких участков, но этот метод как раз помогает, если добавить условие "если число объектов полностью попавших в радиус 2х метров <1 = истина". 2 метра радиус хорошо подходит. Ну это конечно, если в исходном слое есть узлы. В слое, где 8600 домов без метода IntersectByRadius, получалось 1800 домов, где были созданы лишние потребители, с этим методом их было меньше 20. Оставлю макрос на всякий случай.
[/QUOTE] Можно сделать так: [CODE]Sub create_obj_in_line
Set Out = Zulu.OpenOutputChannel("Сообщения")
Set L = zulu.ActiveMapDoc.Layers.Active
Set Line_ob = CreateObject("ZuluLib.PolyLine") Set objz = CreateObject("ZuluLib.ZPoint") Out.Clear
Set Keys_uch = L.ElementKeys.SelectByType(6,0)
For i = 1 To Keys_uch.Count
set Line_ob = L.Elements.getElement(Keys_uch.Item(i)).PolyLine Point_X = Line_ob.GetX(Line_ob.NumTops) Point_y = Line_ob.GetY(Line_ob.NumTops)
Criterium = 1024 'eIntersects
'Получаем коллекцию тех, кого зацепила окрестность 2 Set Keys = L.IntersectByRadius(Point_X,Point_y, 2, Criterium, 0)
'Перебираем всех, кого зацепила окрестность For j = 1 to Keys.Count
Set El = L.Elements.GetElement(Keys(j))
'Если находим полигон, то на конце участка ставим символ If El.GraphType = 5 Then 'eGraphTypePrimSquare
[QUOTE] написал: Изначально пробовал в разных слоях - результат был тот же. Сейчас попробовал прибавлять к координатам небольшие значения, чтобы сместить точки - не помогло, результат не изменился. Посмотрел какие сисы он пишет в sys_polygon - действительно, пишет все подряд, не только полигоны, а что попала под 5 пикселей вокруг точки с учетом масштаба.[/QUOTE] Можно попробовать IntersectByRadius с малым радиусом [URL=https://politerm.com/zuludoc/zuluax/index.html#Layer_IntersectByRadius.html]https://politerm.com/zuludoc/zuluax/index.html#Layer_IntersectByRadius.html[/URL]
Вернет коллекцию всех, кто в окрестность попал, в коллекции ищем объект типа полигон.
[QUOTE] написал: А можете подсказать? Вот есть метод IsPointInContour method (ZGeometry), который проверяет попадание точки в полигон. А как его применить, чтобы не перебирать каждый полигон в цикле по сисам в отдельности. А то получается, что идет прохождение в цикле по всем участкам, берется 1 точка, а потом еще и проверяет в цикле по всем полигонам, боюсь такое будет очень долго работать. Может быть можно как-то получить 1 единый полигон, со все площадных объектов? Или еще как то?[/QUOTE] Если нужно проверять попал конец участка в контур или нет, может идти по концам участков и для слоя контура вызывать ElemIDByXY Если -1, значит не попал, инчаче ID контура, в кого конец попал
[QUOTE] написал: [QUOTE] написал: [QUOTE] написал: Добрый день. Столкнулся со следующей ситуацией. Есть слой с площадными объектами (домами), а так же есть слой с участками. Требуется на конце участка, который попал в площадной объект создать потребителя. Как создавать символьные объекты по координатам в VBS мне понятно, но не понятно как взять координаты начала или конца участка и можно ли вообще их как то получить?[/QUOTE] Добрый день. Element.Polyline [URL=https://politerm.com/zuludoc/zuluax/index.html#Element_PolyLine.html]https://politerm.com/zuludoc/zuluax/index.html#Element_PolyLine.html[/URL]
А у Polyline GetX, GetY, первой и послдней точки[/QUOTE] Спасибо. Если я все верно понял Function GetX (TopNum As Long) As Double TopNum - номер вершины ломаной (нумерация с единицы). Для получения первой точки TopNum указываем 1. Для последней используем свойство NumTops. [/QUOTE] Да.
[QUOTE] написал: Добрый день. Столкнулся со следующей ситуацией. Есть слой с площадными объектами (домами), а так же есть слой с участками. Требуется на конце участка, который попал в площадной объект создать потребителя. Как создавать символьные объекты по координатам в VBS мне понятно, но не понятно как взять координаты начала или конца участка и можно ли вообще их как то получить?[/QUOTE] Добрый день. Element.Polyline [URL=https://politerm.com/zuludoc/zuluax/index.html#Element_PolyLine.html]https://politerm.com/zuludoc/zuluax/index.html#Element_PolyLine.html[/URL]
[QUOTE] написал: То есть авария в данном случае это ручное отключение участка, и никак иначе.[/QUOTE] Почему только ручное? Можно программно отключать, если прогрaмму пишите. Расчет надежености так и делает. Программно отключает по очереди каждый элемент, выполняет расчет, анализирует результат, затем восстанавливает работу элемента и переходит к отключению следующего. Если есть вопросы по реализации, пришлите, пожалуйста, телефон для связи на [URL=mailto:[email protected]][email protected][/URL]
[QUOTE] написал: Спасибо, данный пункт понятен. А возможно указывать аварии по периодам для автоматического расчета коэффициента интенсивности отказов, или данный параметр только считать вручную и указывать в характеристиках сети? В модуле ZuluHydro есть имитация порыва сети, нет ли чего подобного в ZuluTermo.[/QUOTE] В ZuluHydro имитация конкретной аварии - отверстия в трубе. В ZuluThermo аварией является отключение элемента. Причем сразу и подающего и обратного. Расчет надежности не требует определять, характер авариии, сколько воды выльется и т.д.
[QUOTE] написал: [QUOTE] написал: Что конкретно пояснить?[/QUOTE] Как интерпретировать eGraphTypeHotSpot и eGraphTypeUnknow? Мне надо из описания элементов символа создать описание SVG.На [/QUOTE] На Unknown не обращать внимание. Это внутреннее использование. eGraphTypeHotSpot - это точка на символе, которой символ будет привязываться к местности.
[QUOTE] написал: Доброго времени суток. В панели настроек расчета надежности есть пункты о выводе информации об авариях и выводе ID объектов на которых авария привела к отказу. [IMG]file:///C:/Users/PTO5/Desktop/Screenshot_1.jpg[/IMG]. Нигде не могу найти как же эту аварию создать то..... Знаки аварий и ремонта никак не отражаются на состоянии сети.[/QUOTE] Добрый день. В расчете надежности аварии создаются автоматически последовательно для каждого участка или задвижки. В протокол выводится ID объекта, для которого имитируется авария, и если есть отказы, выводится список ID объектов с отказами. Знаки аварий тут ни при чем
[QUOTE] написал: Вопрос про типы элементов в символе остался открытым. Если можно, проясните его.[/QUOTE] eGraphTypeHotSpot - точка привязки изображения символа к местности eGraphTypeSegment - это сегмент (дуга с заливкой) eGraphTypeUnknown - это Unknown eGraphTypePrimSquare - полигон
1. Если смотреть стили в приложении, то попадаются стили, где элемент выключен.
Можно ли как-то программно получить эту информацию, что элемент выключен? 2. ШАГ и ДЛИНА ШТРИХА у линии в приложении ZuluGis и через COM-объект отличаются примерно в 3 раза. В приложении показывается 28(ШАГ), а если получать программно, то видим 7.4. Это какая-то особенность или ошибка? 3. Как можно получить размер символа?[/QUOTE] 1. Layer.LineStyles.Item(0).StyleElements.GetElemVisible(0)
2. В программе размеры в миллиметрах. В Программе переключатель (рикселы\миллиметры)
3. Что имеется в виду? Размер в байтах - Symbol.GetBLOBSize() Габариты - Symbol.GetBoundsRectangle
написал: Добрый день! Не знаю как вышло, но произошло задвоение элементов слоя, т.е. появились участки как будто скопированные они лежат по верх существующих линий и их тяжело обнаружить, если удалить участок на месте его расположен ещё один. При том, при проверке информации через базу пишет,что нет данных (именно на скопированных участках которые лежат на существующих), возможно ли их как то удалить?
[QUOTE] написал: При расчете тепловых потерь калькулятором расчета нормативных тепловых потерь из меню Задачи – Калькулятор и посредством модуля Zulu Thermo получены разные величины тепловых потерь при внесении идентичных исходных данных. При этом, выявлена закономерность, чем меньше участков в системе теплоснабжения от локальной котельной, тем погрешность результата меньше. К примеру, при трех участках тепловых сетей от котельной до дома погрешность 3,6%. В случае четырех участков величина тепловых потерь, рассчитанная Zulu Thermo отличается на 13,8% от верной величины, рассчитанной вручную по методике и калькулятором расчета нормативных тепловых потерь. Подскажите пожалуйста, в чем может быть ошибка. Версия программы 10.0.0.8692u. [/QUOTE] Добрый день. Нужны еще среднегодовые параметры по источнику, расчетная температура наружного воздуха, и ряд других. Пришлите, пожалуйста, тестируемый слой, скриншот калькулятора с параметрами на [URL=mailto:[email protected]][email protected][/URL] И телефон для связи
[QUOTE] написал: Решил написать конвертер symbol в svg. Но есть вопросы. 1. У некоторых символов, например:
В списке SymbolElements есть такие типы eGraphTypeHotSpot eGraphTypeSegment eGraphTypeUnknown eGraphTypePrimSquare
Если с eGraphTypePrimSquare всё понятно, то как трактовать другие типы? Опытным путём выяснилось, что eGraphTypeSegment это Arc. 2. Вывел цвета для этих элементов. В итоге, только BorderColor у типов eGraphTypeSegment и eGraphTypePrimSquare были не равны 0. BorderColor у обоих элементов был одинаковый. В итоге получилось создать svg для простых символов, типа крест или VII. С символами где есть сложные формы и заливки, пока непонятно.
Может есть какие-то тонкости по работе с элементами символов?[/QUOTE] Добрый день. Еесли BorderColor равен 0xff000001 (4278190081) - это значит, что его цвет будет более темным оттенком цвета заливки (PatColor) В редакторе символа это соответствует цвету (авто)
[QUOTE] написал: Добрый день. ZuluGIS 2021. При расчете сопел выяснилось, что в формуле расчета сопла используется минимально необходимый напор перед элеватором ( дельта Hэл.мин). Который считается по формуле из Вашей инструкции: дельта Hэл.мин = 1,4 х дельтаНсо х (1+u)^2 При графике 150/70 ,95-в систему, дельта Hэл.мин получается либо 14,3 м.в.ст (при Нсо=1 м) , либо 28,672 м.в.ст. (при Нсо=2 м) . Вопрос : Как задать НЕ минимально необходимый напор перед системой отопления (дельта Hэл.мин) , а чтобы использовался в формуле Расчетный располагаемый напор, по базе потребителей , обозначаемый как напор на регуляторе напора СО (Hset_nal - реальное название поля). Потому что при наладке перед элеваторным узлом возникают располагаемые напоры отличные от 14,3 и 28,672 м.в.ст.[/QUOTE] Добрый день. Пришлите, пожалуйста, телефон для связи на [URL=mailto:[email protected]][email protected][/URL]. Нужны уточнения
написал: Добрый день. Установили ZuluGIS на новый компьютер, версия 10.0.0.8959. Взяты tab файлы с SAS.Планета и при добавлении карты в Zulu выпадает ошибка не удалось загрузить слой. Прикрепляю во вложение скрин ошибки. Помогите решить данный вопрос
Добрый день. К tab файлу должен прилагаться файл самого изображения. Если открыть tab блокнотом, в строке FILE указано имя растрового файла. Он тоже есть? Если да, то какой у него формат и размеры?
[QUOTE] написал: Добрый день!Хочу реализовать на карте в мобильном приложении для обходчиков трасс подсветку маршрутов обхода.
Сначала думал, что в мобильном приложении при помощи поиска найду необходимые участки. Далее, выделю в группу найденные участки, тем самым подсвечу необходимый маршрут. Не получилось, как я понял, в мобильной версии не реализовано выделение в группу. (и еще вопрос. В результатах поиска получаю не больше 20 участков - это связано с тем, что у меня демо?)
Второй вариант - создание тем на каждый маршрут. Этот вариант отпадает потому, что маршрутов для района у нас может быть больше 20, а самих районов 22. 440 тем в слое это уже слишком...
Какие варианты вы можете предложить?
Версия ПО: ZuluGIS Mobile 10.0.0.8950(1008950000) в демонстрационном режиме.[/QUOTE] Добрый день! Мобильная версия не обладает полным функционалом десктопа, и развивается по мере поступления пожеланий от пользователей. Чтобы подробней обсудить, что бы хотелось в мобильную версию добавить, пришлите, пожалуйста, телефон для связи на [URL=mailto:[email protected]][email protected][/URL]
[QUOTE] написал: Добрый день, уважаемые коллеги! Подскажите, пожалуйста, кто-нибудь занимался вопросом прогнозирования отключений тепловых сетей и расчетом времени выстывания здания. Можно ли с помощью ZULU это смоделировать? Пример: Отключение ТС на 10 зданий разного года постройки и типа (кирпич, панели и т.д.). Просьба поделиться опытом. Если в зулу нет возможности выполнить расчет, как можно посчитать вручную?[/QUOTE] Добрый день! Расчет выстывания производится в расчете надежности. Там коэффициент аккумуляции как раз зависит от материала здания. Напрямую эти расчеты из надежности использовать сейчас просто при отключении потребителей не получится, т.к. задача не стояла. Но в принципе расчет остывания из методики расчета надежности задействовать можно. Пришлите, пожалуйста, почту или телефон для связи на [URL=mailto:[email protected]][email protected][/URL] уточним задачу
[QUOTE] написал: Добрый день. Версия 10.0.0.8928u.x64. Необходимо сопоставить каждого потребителя в слое тепловой сети с участком тепловой сети от которого этот потребитель подключен. Хотелось бы на выходе получать выгрузку в формате excel с двумя столбцами: системный код потребителя и системный код участка тепловой сети. Помогите, пожалуйста, с написанием макроса или подскажите с помощью каких инструментов возможно автоматизированное решение по данному вопросу? Заранее спасибо.[/QUOTE] Добрый день. Есть ролик по анализу топологии в макросах. И текст макроса по ссылке в описании. [URL=https://youtu.be/qerFkGQTIyM?si=ghbj_REd76FXCYdg]https://youtu.be/qerFkGQTIyM?si=ghbj_REd76FXCYdg[/URL] Какой узел с каким участком связан получается методом GetIncidentElements
[QUOTE] написал: Ситуация такая на сервер где установлен ZuluServer установили новый жесткий диск, есть ли возможность его привязать, чтоб его было видно в проводнике.[/QUOTE] У ZuluServer в качестве корня области данный используется только одна папка, указанная в файле zuluserv.cfg в параметре RootDir d:\ZSData\Data
Если все данные должны лежать на этом новом диске, то создайте там папку и укажите ее в RootDir
Если планируется использовать этот диск как добавочный к уже имеющейся области данных сервера, попробуйте подключить его в область данных как виртуальную папку
[URL=https://msreview.net/windows-10/3412-kak-montirovat-zhestkij-disk-v-vide-papki-na-windows-10.html]Как монтировать жёсткий диск в виде папки на Windows 10 » MSReview[/URL]
SQL запрос для того, чтобы можно было нумеровать по порядку колодцы в слое водоснабжение. ВК- и дальше номер, Помогите написать SQL запрос для того, чтобы можно было нумеровать по порядку колодцы в слое водоснабжение. ВК- и дальше номер
SQL запрос для того, чтобы можно было нумеровать по порядку колодцы в слое водоснабжение. ВК- и дальше номер, Помогите написать SQL запрос для того, чтобы можно было нумеровать по порядку колодцы в слое водоснабжение. ВК- и дальше номер
написал: For i = 1 To Keys.Count text = preff & n Db.UpdateBaseRecord Keys.Item(i), "Name" , text, 0 n = n + 1 Next
Код
For i = 1 To Keys.Count
Set el = L.Elements.Item(Keys.Item(i)) 'Получаем объект по ключу
If el.ModeId = 1 Or el.ModeId = 5 Then 'Применяем только к нужным режимам
text = preff & n
Db.UpdateBaseRecord Keys.Item(i), "Name" , text, 0
n = n + 1
end if
Next
SQL запрос для того, чтобы можно было нумеровать по порядку колодцы в слое водоснабжение. ВК- и дальше номер, Помогите написать SQL запрос для того, чтобы можно было нумеровать по порядку колодцы в слое водоснабжение. ВК- и дальше номер