Все про скрипти

Самый гибкий вариант - это использование скриптов Digitals. Скрипт можно сохранить в нужном слое DMT шаблона и заставить его активироваться по событию. Например, использовать слой участка и запускать скрипт по событию %Events.OnAdd. При этом вы сможете выполнять все необходимые действия при генерации документа на основе DMT шаблона.

Как убрали, только вчера добавили :question: Так бы я ее и вовсе не замеметил :slight_smile:


Задач серьезных по этому поводу нет.
Есть кнопка для поворота @Map.Selected.Rotate 1 подумал что можно в цикле на пару с новой функциеей использовать (при нажатой кнопке - поворачивать), или я неправильно понял ее действие ?
А за идею с %Events.OnAdd спасибо, буду пробовать.

А ну значит, я просто не в курсе последних событий. Надо обновить Digitals :slight_smile:

Нажатие на кнопку с обработчиком событий меняет состояние “нажата/не нажата”. Для них актуально проверять @ToolbarButtonState.
Обычная кнопка запускает скрипт в момент отпускания, потому @ToolbarButtonState=0 всегда для этой кнопки в скрипте.

С этим ясно, спасибо :exclamation: Есть еще вопросы :wink:
Как “добыть” из XML/Місцерозташування земельної ділянки значение Urban/ или Rural/ (в межах/за межами)? @XML.XPath -запрос не дает результата, наверное из за того что Urban/ и Rural/ тоже являются тегами :question:

Для определения наличия тега можно использовать функцию @XML.NodeCount Query Tag XMLString где в Query указывать путь к родительскому тегу, а в Tag имя искомого дочернего элемента.

Что-то у меня с дружественным XML-форматом сразу не заладилось. Напишите пожалуйта пример для Urban, заранее спасибо.

$N=@Map.SelectedObject @If $N<=0 @Break Выделите XML участок $XML=@Map.Object[$N].Parameter[ID7000500] $Path=/ParcelLocationInfo/ParcelLocation $Found=@XML.NodeCount $Path Urban $XML @if $Found>0 then @Dialog.Message Участок в черте города @if $Found=0 then @Dialog.Message Участок за городом

:slight_smile: От воно, як все просто. Ще раз дякую за допомогу !

Немного “разобрался” с событиями %Events - узнал много нового и интересного :slight_smile: Но так и не нашел ответа на вопрос - как передать значение переменной из скрипта в заранее подготовленую таблицу местоположение, размер, “форматирование” которой определяется DMT шаблоном. Да можно использовать %Events.OnAdd - посоздавать/позаполнять параметры какого-либо слоя и создать для них подпись, но это “шаг назад” в оформлении плана.Функции FIL и SEF + обмен значений через файл txt - вполне себе рабочий вариант но только на один раз :laughing: Может разработчики согласятся их “допилить”, а именно - считывать данные из файла каждый раз при обращении, или это ломает логику их работы :question: Всю обработку данных из XML сегодня можно полноценно делать в скрипте и необходимость в генераторе отчета для построения кад.плана как бы отпадает…

Надо добавить команду скрипта меняющую содержимое объектов-таблиц? Сделаем

Такая команда уже есть - это @Map.Object[N].TableText [NewText]
параметром задаем текст таблицы, разделитель между строками - возврат каретки, разделитель между ячейками - табулятор
получить табулятор в скрипте можно так:

$Tab=@Calc char(9) $Tab=@DequoteText $Tab

Пример работы @Map.Object[N].TableText:

;Скрипт меняет содержимое помеченной таблицы $Tab=@Calc char(9) $Tab=@DequoteText $Tab $Col2=X $Col3=Y $Row=Номер п/п $Row=$Row$Tab$Col2 $Row=$Row$Tab$Col3 @Text[1].Add $Row $Col2=2.3 $Col3=3.5 $Row=1 $Row=$Row$Tab$Col2 $Row=$Row$Tab$Col3 @Text[1].Add $Row $Col2=3.6 $Col3=-4.5 $Row=2 $Row=$Row$Tab$Col2 $Row=$Row$Tab$Col3 @Text[1].Add $Row $S=@Text[1].Text $SO=@Map.SelectedObject @Map.Object[$SO].TableText $S Вид | Обновить

Как раз то что надо. И за пример использования спасибо, так бы сходу не разобрался.

Здравствуйте. За выходные под собирал вопросов :wink:

Ошибка возникает если количество строк в скрипте превышает 256, маловато :confused: , а с текстовыми файлами
работать неудобно, ввиду отсутствия “подсветки” переменных, да еще и с большим объемом текста.
Вот бы функцию для открытия текстового файла в окне редактирования скрипта ? Такое возможно ?

Как выполнить склонение по падежам ROP и DAP в скрипте ?
Нарыл на форуме:
$SO=@Map.SelectedObject
$ROPNM=@Map.Object[$SO].CalculateFormula ROP(P[NM])
@Dialog.Message $ROPNM

Для in4 - работает. Как поступить если значение получаем из XML-файла при помощи @XML.XPath ?

Имеем:
$ADR=садівниче товариство “Енергія”
$Length=@Calc Length(“$ADR”)
@Dialog.Message $Length

Думаю проблема понятна … Можно как-то побороть или это тупик ?

Без проверки количества собственников и их типа (физособа или юрособа)

$SO=@Map.SelectedObject $Props=@Map.Object[$SO].Parameter[ID7000520] $LastName=@XML.XPath /Proprietors/ProprietorInfo[1]/Authentication/NaturalPerson/FullName/LastName $Props $FirstName=@XML.XPath /Proprietors/ProprietorInfo[1]/Authentication/NaturalPerson/FullName/FirstName $Props $MiddleName=@XML.XPath /Proprietors/ProprietorInfo[1]/Authentication/NaturalPerson/FullName/MiddleName $Props $FullName=$LastName $FirstName $MiddleName @Dialog.Message $FullName $ROPNM=@Map.Object[$SO].CalculateFormula ROP($FullName) @Dialog.Message $ROPNM
Для N-ого собственника заменить порядковый номер в …ProprietorInfo[1]…

Дякую, як завжди все просто …

$CN=@Map.XMLCadastralNumber
$KO=@Calc Copy($CN,1,8)
Як за допомогою скрипта витягти із текстового списку “RadaNM” ПІБ голови місцевої ради і записати в якусь змінну за КОАТУУ (перші 8 цифр параметра $CN), за аналогією з функцією SEF(CUT(1,8,P[ID106]),RadaNM.txt)

Как-то так

$SO=@Map.SelectedObject $CN=@Map.XMLCadastralNumber $RadaID=@Calc Copy($CN,1,8) $RadaID=@DequoteText $RadaID $RadaNM=@Map.Object[$SO].CalculateFormula SEF($RadaID,RadaNM.txt)

Помогите скриптом плс. нужно выделенный полигон перенести на другую карту(где будут другие полигоны) и в зависимости внутрь какого он полигона попадет унаследовать некоторые параметры и перенести эти параметры на первоначальную карту. (как же криво я описал). т.е. выделяем объект на открытой карте, потом открываем дмф где лежат полигоны внутрь которых он должен попасть, переносим его туда, наследуем нужные параметры и вставляем обратно спец вставкой только параметры, закрываем дмф из которого наследовались параметры.

Вот сделал пример Библиотека полезных скриптов - #16 від Bondarets_Alexander