Можна використати @Map.AddNodes LayerNumber Mode - “Добавляет пикеты в узлы помеченных объектов. Mode соответствует выбору в окне Добавить узлы (1-7)”.
Появился вопрос в процессе написания длинного скрипта, работа которого прерывается выводом на экран сообщений от программы (Digitals XE), которые убираются нажатием Enter на клавиатуре. Какую строчку нужно добавить в мой скрипт чтобы системные сообщения сами закрывались и скрипт продолжал свою работу дальше?
Сейчас я вынужден три раза нажимать Enter в процессе выполнения скриптом своей работы. В идеале, я не хочу нажимать Enter вообще.
Примечание: @SendChars не помогает.
В мене - помагає в 99% випадків наступний код:;На вході скрипта - позначені об'єкти, точки яких иають бути суміщеними
;Суміщаєм з сусідніми
@SendChars <CR>
@ExecuteMenu EditAlign
$CountSelStart=@Map.SelCount
;якщо не суміщено жодної точки - видаєм діалог для задіяння команди SendChars
@If $CountSelStart=0 then @Dialog.Confirm
@If $CountSelStart=0 then @Goto %EndNextEditAlign
;пропускаєм суміщення з сусідніми, поки суміщених не виявиться стільки,
;скільки суміщено попердній раз, або поки суміщених не буде 0
%StartNextEditAlign
$CountSelOld=@Map.SelCount
@SendChars <CR>
@ExecuteMenu EditAlign
@Map.BeginUpdate
$CountSelNew=@Map.SelCount
;якщо суміщених 0 - видаєм діалог для задіювання команди SendChars
@If $CountSelNew=0 then @Dialog.Confirm
@If $CountSelNew=0 then @Goto %EndNextEditAlign
@If $CountSelNew<>$CountSelOld then @Goto %StartNextEditAlign
%EndNextEditAlignЗастосовано “Суміщення з сусідніми”, повідомлення про кількість суміщених “гаситься” командою @SendChars стільки раз, скільки воно виводиться. От відео, де два рази підряд суміщаються з сусідніми точки створюваного полігона. Sumischennja.exe (913 KB)
Есть скрипт: @Map.Layers.SetAttributesNumber Symbol PenStyle PenColor PenWidth BrushStyle BrushColor State Font_Name FontSize FontStyle FontColor
Он отвечает за стиль линии, заливку и прочее.
Как заполнять эти (подчеркнутые) параметры. Кто-нибудь может пример показать?
Користуюсь для “розборки” параметрів ручним встановленням бажаного типу заливки і функцією @Map.Layers.GetAttributes. Так от: @Map.Layers.GetAttributes-“номер УЗ, тип линии, цвет линии, толщина, тип заливки, цвет заливки, статус,…” далі - атрибути шрифта: шрифт, розмір, стиль, колір. Наприклад:
57 0 65535 30 8 16777215 0 Arial 80 0 -2147483640
Відповідно: @Map.Layers.SetAttributes Number * * * * 8 16777215 * * * * *
має встановити для шару Number стиль заливки 8-ий по списку (10%), колір заливки 16777215 (білий), а знак * означає що значення атрибута слід залишити незмінним.
Є функції @Map.MaxParameterValue ParamIndex та @Map.MinParameterValue ParamIndex, які відповідно знаходять найбільше і найменше значення параметра.
А потрібно знайти найбільше і найменше значення дати виготовлення ТД (TD - В,10.01.2009,МПП “Землемір”, Іванов І.І.) І запам’ятати відповідні об’єкти.
Теоретично, можна було б число (10.01.2009) витягнути у певну перемінну $Value, яку у свою чергу розбити на три перемінні: $Rik=@StringPart 3.$Value $Micyac=@StringPart 2.$Value $Chyslo=@StringPart 1.$Value
і потім порівняти спочатку рік, якщо однакові - місяць, а потім чисто. Але прописати все це циклами надто складно виглядає. Бо плюс до всього треба одночасно запам’ятовувати номер об’єкта, в якому це число знаходиться.
Питання, чи можливо доступними скриптовими функціями в Digitals це реалізувати якось простіше?
Дякую.
Было бы неплохо добавить возможность использования в скриптах тригонометрических функций (хотя бы основных), таких как: sin, cos, tg, ctg. Например, получать sin внутренних углов после их вставки и т.п.
Можно добавить такую возможность? Исходя из этого следует, так же, добавить соответствующие параметры в список доступных любому слою любого шаблона (как площадь, длины линий и т.п.).
Насколько я понимаю, команда Внутренний угол вставляет значения углов в виде текстовой строки. Чтобы это значение подать на вход функции sin его нужно разобрать на части, преобразовать в числа и соединить с учетом того, градусы это были, минуты или секунды.
Хм. На самом деле, до этой задачи скрипт не добирается. Ошибка происходит раньше. Что он вообще должен делать (простыми словами) и какие исходные данные?
доброго дня. поділіяться будь ласка скриптом доя масової конвертаціїї ін4 в ХМЛ за допомогою вбудованого фунціонала в діжіталі.
і підскажіть як поправити конвертування ? ( коли конвертуєш код цільового призначення 2,1 залишається без змін а потрібно щоб було 01,01.) дякую
Исходные данные - только множество границ населенных пунктов в одном файле.
Нужно чтобы скрипт искал во всех границах (то есть только в одном слое) все углы, которые меньше чем 20° и добавлял найденные углы в группу.
Так как таких углов больше чем их синусов, то найти их потом легче как раз через значение их синусов (мне так кажется, но я могу ошибаться).
Внутренние углы в диапазоне от 340° до 360° так же должны находится. (Они вроде как тоже получаются меньше 20°, только являются внешними)
После нахождения таких углов я просто прохожусь по ним в созданной скриптом группе и “тягаю” их до нужного мне значения угла. После этого вновь повторяю проверку до тех пор пока таких углов (меньше 20°) не будет вообще.
Якщо включити опцію Десяткове представлення кутів (пункт меню Сервіс>Налаштування… на вкладці Вигляд у фреймі Карта) - будете мати кути з десятковими знаками. Зверніть увагу на організацію цикла за допомогою @Map.NextSelected LastNumber - почитайте приклади в бібліотеці скриптів. Я внутрішній кут вираховував би з використанням @Map.Object[N].LineAngle[N].