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

1)Не виходить функцією @Map.Object[N].SetXMLTag ParamNumber Query Value вносити відомості про другого і наступних співвласників.

2)Не працюють функції @Map.Parameters.FindByID та @Map.Parameters.FindByName

3)Десь зустрічав на форумі, що можна DMT-шаблони підтягувати з папки скриптом. І не знаходжу, де це було. Власне, цікавить, чи можна з будь-якої папки (щось не виходить), чи тільки з якоїсь конкретно

4)Після останнього оновлення (вірніше перевстановлення програми заново із файлу Setup, що на сайті) вікно скрипту, яке викликається функцією @Dialog.Message стало нечитабальним, кнопка ОК налазить на текст. Віндовс XP

Меню Сервіс > Властивості на вкладці Головна поле зі списком Основний шрифт - виберіть той шрифт, який був вибраний у налаштуваннях Digitals, при яких текст в діалозі відображався нормально. Використовуйте опцію В усіх діалогах. Зміна шрифта може допомогти: наприклад на Wndows 7-10 - “Arial Kyr”.

В будь-якому випадку, Ви побачите різницю у відображенні тексту повідомлення.

Підкажіть як скриптово встановити рамку по ширині видимого вікна?

.jpg

червоним виділено необхідну рамку

Або чи можна одразу видиму область зберегти в растрове зображення?

$SO=@Map.SelectedObject
@if $SO=0 then @Break Пометьте объект
$X=@Map.Object[$SO].Parameter[-4]
$Y=@Map.Object[$SO].Parameter[-3]
$PP=@ProgramPath
$FN=$PP\Pictures\selected.bmp
;Высота и ширина - 297 210 мм, разрешение - 600 dpi, формат пикселя - 24-bit grayscale
@Map.CreateLayout $X $Y 297 210 0 600 24 $FN
;открываем просмотрщик по умолчанию
@Run $FN

Добрый день!
Чи можна додати можливість функцією @ExecuteDocument DMTTemplateName, генерувати ДМТ-шаблон, який знаходиться за межами папки Digitals?.
А також, щоб можна було звертатися до конкретного шаблону в папці з розширенням DMT.

Доброго вечора!
Чи є якась можливість при скриптовому редагуванні XML-тегів вказати сьогоднішню дату у розділі технічної документації?
$N=@Map.SelectedObject
@Map.Object[$N].ParameterTag[ID7000522] Today
Що потрібно в даному випадку вставити у код замість Today ?

Є функція @Date
$Data=@Date
$chyslo=@StringPart 1.$Data
$misyac=@StringPart 2.$Data
$rik=@StringPart 3.$Data
$Data=“$rik-$misyac-$chyslo”
$Data=@DequoteText $Data
@Map.Object[$N].ParameterTag[ID7000522] $Data

Дякую, усе працює :slight_smile:

Як вивести в діалогове вікно сумарну площу декількох угідь(обєктів). Можливо функція @Map.CalculateForestArea дозволяє це зробити.

Виділяючи необхідні обєкти на панелі “Инфо” параметр 0 показує необхідну сумарну площу, але коли я її вивожу через функцію @Dialog.WaitBox показується площа одного з обєктів.

@Map.SelectByParameters 1|31=35.1
$2=@Map.Selected.GetParameter 0
@Dialog.WaitBox Будівлі - $2га

$MapCount=@MapCount
@if $MapCount=0 then @Break
$N=@Map.SelCount
@if $N=0 then @Break Виділіть об’єкти для яких треба розрахувати загальну площу
$SumArea=0
$N=0
%Start
$N=@Map.NextSelected $N
@if $N=0 then @Break Площа виділених об’єктів $SumArea га
$Area=@Map.Object[$N].Parameter[0]
$Area=@Calc replace(“$Area”,“,”,“.”)
$Area=@DequoteText $Area
$SumArea=@Calc $SumArea+$Area
@Goto %Start

fendak Дякую!

Було б не погано, якби розробники Digitals описали як працюють функції @Map.Object[N].ParameterTag[N]Value та @Map.Object[N].SetXMLTag ParamNumber Query Value

Чим вони відрізняються?

І чому одна функція редагує теги ось так:
@Map.Object[$SO].ParameterTag[ID7000522] $Data

а інша ось так:
@Map.Object[$SO].SetXMLTag id7000500 Settlement смт.Меденичі

тобто, без “” та “<>”

І зверніть увагу, що деякі теги (які далеко сховані) цими функціями взагалі не редагуються. Наприклад, ProprietorCode, паспортні дані. Не виходить редагувати і теги по наступних співвласниках.

Дякую.

Чому не змінюється шлях до файлу при такому коді:

@SendChars
@SendChars
@SendChars
@SendChars D:\1.bmp
@SendChars
@SendChars
@SendChars
Экспорт в | BMP

а при такому змінюється:

@SendChars
@SendChars
@SendChars
@SendChars D:\1.bmp
Экспорт в | BMP

Спробуйте так:

@Map.SaveToTIF 300 24 D:\1.bmp

Доброго дня розробникам.
Є в мене до вас прохання, щодо функції @Map.Object[N].Centroid - “Повертає координати центроїда полігона”.

В лісовому господарстві зараз прийняли необхідність оприлюднювати “координати центра лісосіки”. Вказана функція щонайліпше підходить для вирішення задачі скриптом, однак варто зазначити: координати, скоріш за все, мають бути географічними (градуси мінути секунди).

Скриптове вирішення може бути таким:

  • визначення координат центроїда полігона в карті з пласкою системою координат;
  • створення точкового об’єкта з координатами в центроїді полігона;
  • зміна системи координат карти на “Широта/довгота”;
  • отримання географічних координат точкового об’єкта в десяткових градусах з точністю до 13-ти знаків функцією @Map.Object[N].Point[N];
  • перерахунок географічних координат з десяткових градусів у градуси мінути секунди;
  • відміна зміни системи координат карти @Map.Undo.Undo
  • видалення точкового об’єкта з координатами в центроїді полігона.

Так от: якби функція @Map.Object[N].Centroid повертала б координати центроїда полігону не з точністю 3 знаки, а з максимальною точністю… Тоді не треба було б мати справу з тимчасовими об’єктами в карті.
По-менше би, в ході виконання скрипта, тимчасових змін в карті :exclamation: Інакше, раптом скрипт не закінчить роботу з помилкою - матимем в карті непотріб.

Як ви порадите, може краще використати HTTP сервер пересчета координат? Але тут свої нюанси: блокування порта антивірусом, порт використовується іншим застосуванням… Тоді додавати функцію dll, з усіма перевірками: чи порт відкритий, чи порт не зайнятий - яка поверне в скрипт масив координат :confused: Скільки часу треба юзеру мого рівня, щоб в Delphi її написати? Може є сенс додати скриптову функцію перерахунку координат точки?

Доброго дня.
Поясніть, будь-ласка, чому коли в скриптах віднімаю одну координату із трьохзначним числом після коми від іншої такої ж, получається астрономічне число?
Наприклад:

$Res=5473934.167-5473855.713
@Dialog.Message $Res

В результаті отримаємо 78,4539999999997

Чому в скриптах обрахунок не відповідає тому, що на калькуляторі? З якою це метою зроблено? Для чого призначені ці поправки?

Звичайно, для округлення ми можемо використати @Calc truns, але все ж цікаво, чому так є?

Дякую.

Скорiше iз за типу float. Зробiть $Res=@RoundTo $Res 4 i буде все ок.

Доброго дня! Потрібен скрипт, який допомагає із вибірко обмінних файлів. Тобто є карта із завантаженими в неї обмінними файлами ІН4 і є реєстр кадастрових номерів, потрібно, щоб із карти автоматично вивантажувалися ІН4 обмінні файли згідно реєстру і зберігалися в папку. Наперед дякую!

@Map.DeselectAll ; @Text.Load d:\3.txt ;Список з кад номерами $I=1 ;перша строка $CountI=@Text.Count ;загальна кількість строк %Start ;Початок циклу ;Збільшення індексу $I=$I+1 @IF $I<=$CountI @Goto %Bum ;умова приривання циклу ; @Break Закінчився список файлів %Bum $CN=@Text.Line[$I] ; @Map.FindFirstByParameters 1|ID106=$CN $S=@Map.SelCount ; @If $S=0 @Goto %Messege %Show: @Window.ShowSelected Файл | Извлечь участок в In4 ;сохраняем обменник @Map.SaveToFile ;закрываем обменник @FileClose %Skip $I=$I+1 ; @ActivateMap 1 @Goto %Start ; %Messege ;@Dialog.Message $CN Участок не найден @Goto %Start

Дякую, скрипт і справді працює, але чомусь він вибирає ділянки через одну?