Как я понимаю, минимальный поворот объекта - 7 градусов. Если значение меньше, то объект не будет поворачиваться. Так и должно быть, или я что-то не так сделал?
P.S заметил что малые градусы работают, но только когда текущий градус не равен 90, 180, 270, 360.
Sub rot Set L = Zulu.ActiveMapDoc.Layers.Active ell =L.CurrentID set el = L.Elements.GetElement(ell)
x1 = el.GetCenter.X y1 = el.GetCenter.Y el.Rotate x1, y1, 1, 0 End Sub
Столкнулись со следующей проблемой: Символьные объекты отображаются по разному в настольной версии и в браузере при условии, что проекция карты будет не Меркатор, а например UTM. Браузер:
Настольная:
Вернуться к Меркатору - потерять возможность указывать длину линии при ее отрисовке. Пока что работаем в двух картах с разними проекциями.
Возможно я что-то упустил и в программе есть какая-то настройка, чтоб и при Меркаторе можно было адекватно длину выставлять при редактировании?
Добрый день Версия 10.0.0.8391u Дата сборки 21.12.2022
При создании линии, снизу справа пишет странную длину при операциях: Параллельно, перпендикулярно и на расстоянии. Пробовал проекции UTM и Пулково. Так и должно быть или я что-то не так сделал?
Создал запросы на карте в приложении Zulu и настроил для них формы, теперь при нажатии на дом, показывается нужная информация в приложении. Тоже самое хотелось бы видеть на сайте ВЕБ. Карту опубликовал, настроил слои. Активный слой выбрал верно и при нажатии на здание открывается просто чистый белый лист..... Хотя в настройках слоя, он видит мои формы.[/QUOTE] Один из вариантов почему так может быть: если вы используете внешнюю БД, например mssql, и забыли или не верно создали логин/пароль для пользователя. То есть в администраторе такой логин есть, а на стороне БД такого нет.
Добрый день. Вот результат связки 1С и Zulu: [URL=https://www.youtube.com/watch?v=v8pBJBgTsvE&t=5s]https://www.youtube.com/watch?v=v8pBJBgTsvE&t=5s[/URL] Но как всегда есть пару но! В этом посте расписал как работает в моем случае: [URL=https://www.politerm.com/forums/?PAGE_NAME=message&FID=1&TID=4697&TITLE_SEO=4697-otobrazhenie-dannykh-na-sloe&MID=15697&sphrase_id=10178#message15697]https://www.politerm.com/forums/?PAGE_NAME=message&FID=1&TID=4697&TITLE_SEO=...[/URL]
Соглашусь что не самый лучший способ, ибо появляется задержка при выполнении запросов, и сама интеграция только в одну сторону.
Личный канал про ZuluGIS https://www.youtube.com/channel/UCQTMjjVKb75Cq7yFlRMnFVw
1. Добавить некий символ вопросительного знака в поле, где присутствует описание.
Проблема: при добавлении описания, другие сотрудники об этом узнают только если случайно наведут мышку или им кто-то скажет. На предприятиях, где много людей, довольно трудно довести до всех информацию по изменениям. (Кстати именно из-за этого начали использовать Описание)
2. Добавить возможность отображать описание в браузерной версии (и тоже хотелось бы, чтоб и там тоже был некий значок).
Надеюсь это имели ввиду.[/QUOTE] решил пойти еще дальше: [URL=https://youtube.com/shorts/XsEWdNajxrg]https://youtube.com/shorts/XsEWdNajxrg[/URL] [/QUOTE] Сергей, подскажите, через какой механизм Вы это делаете?[/QUOTE] Все делал через MSSQL и справочники Zulu. НО!!!
Когда делал видео выше, я ставил перед собой задачу реализовать идею, некий challenge... сделать функции удобными или по настоящему рабочими в планах не было. ( да и вряд ли получиться)
По первому видео: данный способ можно применять, при условии, что будет работать один человек. Если больше, то будет вероятность одновременного использования данной функции и у кого-то нужная информация не выведется.
По второму видео: Функция не жизнеспособна. Точнее ее можно реализовать, но проблемы, которые описал выше, остаются. + к ним добавляется проблема создания некого триггера на Select - в MSSQL нет такого триггера, по этому пришлось выкручиваться иными способами.
Итого: данная реализация, по моему мнению, не стоит этого.
P.S. Вообще можно просто открыть МКД и пролистать всех потребителей - чем это не удобно?
Добрый день. Стоит задача по вызову sql запроса из макроса, при этом в запросе участвуют несколько слоев.
Что хочу:
upd ate [СНО] se t L1.[Улица:] = L2.[Участок:], L1.[Район:] = L2.[Район:] , L1.[Населённый пункт:] = L2.[Населённый пункт:] fr om [СНО] as L1, [Улицы] as L2 wh ere L1.typeid = 2 and L1.geometry.stwithin(L2.geometry)
Запустить такой запрос из макроса и именно с помощью ExecSQL, без использования zb.database и ZuluLib.ZGeometry
sub test L = Zulu.ActiveMapDoc.Layers.Active L.ExecSQL("Вставить сюда") end sub*
[QUOTE] написал: В том и проблема. В слое "Карта" нет ещё таких полей. Нужно взять некоторые поля из слоя Трасса по признаку typeid=3 и создать новую запись в слое Карта.[/QUOTE] Вы путаете понятия. У слоя нет полей, они есть у типов, при условии, что у них есть база данных. Чтобы перенести данные из полей объектов одного слоя в объекты другого слоя, то вторым сначала надо создать нужные поля. Как выше заметили, вам надо задать условия соответствия, например: перенеси адрес из объекта слоя 1 в объект слоя 2 ГДЕ поле test объекта слоя 1 равен полю test2 объекта слоя 2. Или же можно задать географическую привязку, например: где объект слоя 1 находиться в радиусе 20 см объекта в слое 2.
Ну или же можно пойти путем попроще, просто подвязать одну базу к другой по какому-то полю, но тут есть нюансы.
У одного Горсвета есть желание производить съемку своих сетей через камеру 360. Встал вопрос как эти фото поместить в Zulu. Руководство хочет чтоб фото хранились у них самих (на сервере), ссылка на сторонний ресурс не вариант.
Хочется узнать есть ли на форуме люди, которые могут написать плагин для этих целей (за ₽) или подсказать в каком направлении копать?
Также возможно ли сделать просмотрщик таких фото через веб версию с кастумизацией (через обработку событий) [URL=https://www.politerm.com/zulugisonline/webhelp/customize_css.html#css_pdf]https://www.politerm.com/zulugisonline/webhelp/customize_css.html#css_pdf[/URL]
[QUOTE] написал: [QUOTE] написал: Добрый день. Хотелось бы иметь возможность экспорта слоев в формате geosjon
Не раз сталкиваюсь с проектами, где надо из Zulu передать данные заказчику именно в geojson[/QUOTE] Добавили Файл/Экспорт/GeoJSON[/QUOTE] Здравствуйте, большое спасибо!
SQL внутри зулу воспринимает ВСЕ базы слоя как одну единую. (по крайней мере я так это понимаю)* Чтобы их разделять между собой, можно использовать where typeid = ... (номер ТИПа) Такая особенность может казаться странной, но поверьте, если ей правильно пользоваться, то это очень удобно., например: я создаю макрос, в котором с помощью sql команды, всем выделенным объектам будет присваиваться какое-то значение (в моем случае это будет Sys источника) в поле с названием ist_sys. Так вот, sql команда присвоит нужное значение ВСЕМ объектам, где есть поле ist_sys, вне зависимости от Типа и базы.
[QUOTE] написал: [QUOTE] написал: Теперь понятно, не совсем очевидно было. Тогда это делается этим методом: [URL=https://www.politerm.com/zuludoc/zuluax/index.html#LabelLayers_SetLabelLayer.html]https://www.politerm.com/zuludoc/zuluax/index.html#LabelLayers_SetLabelLayer.html[/URL]
Может кому понадобиться:
Sub update_label
Set L = Zulu.ActiveMapDoc.Layers.Active set lbl = L.LabelLayers.Item(0) L.LabelLayers.SetLabelLayer 0, lbl ,true, false ,0, 45,30
End Sub[/QUOTE] Только осторожней с перезаписыванием. Некоторые месяцами надписи в редакторе расставляют. Одним таким вызовом можно все перечеркнуть. Перед началом экспериментов сохраняйте копии[/QUOTE] О, был у меня такой случай, пол года надписи расставляли.... А конкретно в этом проекте макрос будет отрабатывать каждую ночь. Редактирование пользователями надписей не предусмотрено, им это надо только когда объект перемещают. Спасибо за предупреждение!
[QUOTE] написал: [QUOTE] написал: [QUOTE] написал: [QUOTE] написал: Добрый день Подскажите пожалуйста как сделать так, чтобы макрос переписывал существующие надписи? Например объект подвинул, но надпись осталась на прежнем месте.
Попробовал это: [URL=https://www.politerm.com/zuludoc/zuluax/index.html#LabelLayer_Update.html]https://www.politerm.com/zuludoc/zuluax/index.html#LabelLayer_Update.html[/URL] но видимо это не то.[/QUOTE] Добрый день. Сдвинуть бирку метод есть: [URL=https://www.politerm.com/zuludoc/zuluax/index.html#ZLabels_MoveLabel.html]https://www.politerm.com/zuludoc/zuluax/index.html#ZLabels_MoveLabel.html[/URL] [/QUOTE] Правильно ли я понял, что этот метод работает почти также как и функция ниже на картинке, только для указанных объектов?[/QUOTE] Переписать - это пересоздание всех бирок. А метод двигает конкретную бирку конкретного варианта надписей.[/QUOTE] Теперь понятно, не совсем очевидно было. Тогда это делается этим методом: [URL=https://www.politerm.com/zuludoc/zuluax/index.html#LabelLayers_SetLabelLayer.html]https://www.politerm.com/zuludoc/zuluax/index.html#LabelLayers_SetLabelLayer.html[/URL]
Может кому понадобиться:
Sub update_label
Set L = Zulu.ActiveMapDoc.Layers.Active set lbl = L.LabelLayers.Item(0) L.LabelLayers.SetLabelLayer 0, lbl ,true, false ,0, 45,30
[QUOTE] написал: [QUOTE] написал: Добрый день Подскажите пожалуйста как сделать так, чтобы макрос переписывал существующие надписи? Например объект подвинул, но надпись осталась на прежнем месте.
Попробовал это: [URL=https://www.politerm.com/zuludoc/zuluax/index.html#LabelLayer_Update.html]https://www.politerm.com/zuludoc/zuluax/index.html#LabelLayer_Update.html[/URL] но видимо это не то.[/QUOTE] Добрый день. Сдвинуть бирку метод есть: [URL=https://www.politerm.com/zuludoc/zuluax/index.html#ZLabels_MoveLabel.html]https://www.politerm.com/zuludoc/zuluax/index.html#ZLabels_MoveLabel.html[/URL] [/QUOTE] Правильно ли я понял, что этот метод работает почти также как и функция ниже на картинке, только для указанных объектов?
Добрый день Подскажите пожалуйста как сделать так, чтобы макрос переписывал существующие надписи? Например объект подвинул, но надпись осталась на прежнем месте.
Попробовал это: [URL=https://www.politerm.com/zuludoc/zuluax/index.html#LabelLayer_Update.html]https://www.politerm.com/zuludoc/zuluax/index.html#LabelLayer_Update.html[/URL] но видимо это не то.
написал: При запуске скрипта вне ZuluGis у меня выходит ошибка, хотя если выполнить его в ZuluGis то всё работает. Похоже ещё долго с бубном танцевать придется для решения казалось бы элементарной задачи.
по опыту на что обратить внимание: 1. разделители системы (смотреть в форматах даты, время и т.д.) 2. кодировка бат файла и vbs (ANSI, UTF) 3. Думаю у разработчиков тоже можно спросить. Есть одна компания, на их сервере тоже есть ошибка с запуском через бат файл, но устранить не получилось. Все перепробовали, хотя ровно такие же файлы у меня работают.
написал: Сергей Мечев , спасибо за интересное решение, по тексту макроса всё понятно, не совсем понятно как он запускается. Насколько я знаю файл макроса имеет расширение .vbs, у вас он запускается файлом update_theme.bat., как это работает?
Триггер на стороне mssql запускает бат файл. Сам бат файл написал ниже:
rem For 32-bit OS Set "SystemPath=%SystemRoot%\System32"
rem If 64-bit OS if exist %SystemRoot%\SysWOW64 set "SystemPath=%SystemRoot%\SysWow64"
[QUOTE] написал: Вообще-то это просто имена слоёв в карте, создаваемые по умолчанию. Вы можете отредактировать их руками в файле карты как вам удобно. В будущих версиях будет добавлено редактирование названия из GUI.[/QUOTE] Спасибо, все оказалось просто. Для других пользователей: В папке Data\WebMaps есть файлы описатели веб карт. Там можно просто удалить ненужную часть в строке name Чтобы увидеть изменения - надо очистить кеш.
И еще вопрос: можно ли сделать также по отношению к поиску?
написал: Добрый день, при внесении данных в базу слоя через стороннее приложение тематическая раскраска не реагирует на изменение данных, может быть у кого-нибудь есть готовое решение данного вопроса, которым готовы поделиться.
Добрый день! Готового решения нет. база к системе прямого отношения не имеет. Поэтому, если данные менять со стороны, система об этом знать не может. Нужно подать ей сигнал. Некоторые для этого используют триггеры в СУБД.
На триггер в СУБД к сожалению фильтр не реагирует, может быть есть ещё варианты?
Расскажу свой опыт использования триггеров на обновление тематических раскрасок: Видео для примера: https://youtu.be/80YzEfD3pMY После выбора пункта проверка в слое граница, запускался триггер на стороне СУБД, который вызывал макрос, который связывал объекты и делалась проверка. Также обновлялась раскраска. Заметьте, что вызов самого триггера происходит в другом слое, в другой таблице - это важно!
НО!!!
от идеи вызова макроса через триггер СУБД пришлось отказаться:
1. Надо правильно организовать сам триггер, чтобы не получилось замкнутого круга: пользователь что-то сделал, вызывается триггер. Он что-то делает с данными (к примеру) и вызывает сам себя. В этом случае Ваша БД просто зависнет и придется делать рестарт службы.
2. Пока макрос от триггера не отработает, таблицей нельзя будет пользоваться: получать и править информацию не получится. Не один раз было у меня такое, что по разным причинам макрос застревал или что-то еще не получалось, как итог пришлось делать рестарт СУБД.
3. Как и с автообновлением могут возникнуть проблемы с производительностью. Так например, если в слое больше 3-5 тыс объектов, то приходиться отключать автообновление, а то при каждом новом событии, весь слой подвисает на секунду и больше. Если с этим слоем работают несколько человек, при этом что-то внося, то работать становиться невозможно. Тоже самое и с триггером, который запускает обновление темы, при частых срабатываниях (раз в пару секунд) и большом количестве объектов работать станет невыносимо.
Вообще автообновление может тормозить слой на секунд 30, даже если в самом слое пару объектов. Может баг, но очень много проблем в один день принесло, остановило работу на пол дня, а я в отъезде был))
В итоге что делаю: с помощью планировщика задач, делаю задачу на запуск макроса каждую ночью. В большинстве проектов этого достаточно Если же требуется обновлять часто, особенно это касается проектов по инвентаризации, то ставим задачу с интервалом в 5-10 минут. В этом случае ничего не виснет, а темы обновляются с приемлемым интервалом.
*** Весь SQL учил по интернету, так что не удивлюсь, если я что-то делал не так с триггерами и получал зависания.
Буду очень рад, если кто-то напишет, как лучше вызывать макросы триггером, при этом безопасно.
Может быть Вам не трудно будет поделиться текстом триггера и макроса на этом форуме?
Макрос:
Sub update_theme Set L = CreateObject("ZuluLib.Layer") L.open "zulu://login:password@localhost:6477/2022/Серпухов/Слои/Здания.zl" L.Themes.UpdateTheme(1) End Sub
Думаю по макросу все понятно, если что гляньте документацию.
Триггер:
create trigger [dbo].[update_theme] on [dbo].[stats_border] for update as IF (UPD ATE(update_theme) and (sel ect top(1) update_theme fr om inserted) = 'Обновить' ) begin update [stats_border] se t update_theme = null exec master..xp_cmdshell 'D:\Zulu\SQL_VBS_BAT\update_theme.bat' end
При вставке триггера, форум добавил пробелы кое-где, их убрать не удается))