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

fendak, дякую за розгорнуту відповідь)

Взагалі в мене з масштабом трохи плутанина. Функцією @Map.GetProperties змінюється масштаб карти але разом з тим дійсно змінюється розмір тексту та супутніх обєктів. Коли змінюю масштаб dmt шаблону вручну все залишається в своїх розмірах а масштаб відповідно змінено (це видно на звеху на панелі) на любий. Тобто коли формую документ з цього шаблону(із зміненим масштабом) нового масштабу набуває лише ділянка.

Поки що думаю спробувати так:

$1=@Dialog.Select Вкажіть цільове призначення|Присадибка|С/г землі
@if $1=Присадибка then @Goto %Script1 else @Goto %Script2
%Script1
@FileOpen C:/Digitals/Присадибка.дмт
$2=@Dialog.ListSelect Масштаб|500|1000|2000|…
@Map.GetProperties $2
Файл|Сохранить
Файл|Закрить
@Break
%Script2

і далі через Сервис|Документи… формуємо документ

  1. вам треба міняти масштаб не в карті з обмінником, а у шаблоні.
  2. @if $1=Присадибка @Goto Script1 then Script2” є неправильно сформованим рядком скрипту. Замість нього, скоріш за все має бути “@if $1=Присадибка @Goto Script2”
  3. яке відношення до масштабу має цільове призначення?

Поставте в шаблон масштаб OBJECTSCALE і не мучтеся з цим.

1)Присадибка.дмт - це ж і є шаблон.(А скрипт 2 повинен бути такий же як 1, тільки замість шаблону “присадибка.дмт” буде відкриватися “С/г землі.дмт”) назва шаблону може бути різна)
2)Дійсно не вірно, я хотів написати @if $1=Присадибка then @Goto %Script1 else @Goto %Script2
3)Та це просто для кожного цільового призначення свій окремий шаблон(вони в мене трохи відрізняються)

Ну все одно дякую за допомогу)

то ви спочатку обробляєте шаблон, а потім його запускаєте?) я б до такого не додумався.
Є ще функція @ExecuteDocument, якою можете прямо з тої ж кнопки скриптом запускати потрібний шаблон. Можете вручну зробити шаблони для різних масштабів і в залежності від ваших умов запускати той чи інший шаблон автоматично.
нема за що, мені також цікаво це.

для sergykydr

Ну наконец-то еще 1 человек встал на right way, который понял, что не надо создавать миллион шаблонов с разными масштабами, а нужно создать по одному дмт-шаблону для каждого вида чертежа и скриптово там менять масштаб :mrgreen:
@Map.SetProperties Scale Name|FrameX[1] FrameY[1]|… - эта функция не подходит
OBJECTSCALE - не дает нужного контроля
Решение в общем как всегда оказалось банальным:

$scale=@Dialog.ListSelect Масштаб|500|1000|2000|…
@FileOpen C:/Digitals/Присадибка.дмт
@SendChars $scale
[ panTools.Властивості карти ]
Файл|Сохранить
Файл|Закрить

все геніальне просто :slight_smile:
Правда дивно, що при зміні масштабу в dmt-шаблоні міняється площа ділянки. Адже на звичайній карті міняється розмір рамки. Очевидно, так відбувається за задумом розробників, які мовчать.

Як в скриптах Digitals зробити контроль вузлів так, щоб автоматично заповнювався допуск (0,1) та виправлялися відразу ВСІ вузли?
Пробував функцією @SendChars 0,1, але тоді зразу вискакує наступне вікно, де вибираються вузли, а скрипт в той час продовжує роботу. Неможливо зробити контроль вузлів.
Пробував просто командою Вигляд|Контроль вузлів. Те ж саме. Скрипт не бачить, що контроль вузлів складається з двох діалогових вікон і продовжує роботу після закриття першого вікна.
А необхідно якось реалізувати, щоб:

  1. автоматично заповнювалося вікно з допуском 0,1;
  2. автоматично підтверджувалося (ОК) наступне вікно плюс інтегрувалося значення “Виправити все”;
  3. щоб скрипт на цей момент робив паузу.

Або, можливо, є якась інша функція, яка за це відповідає?
Знайшов тільки @ExecuteMenu InternalName, але де взяти значення внутрішніх імен команд?

Тут

Зрозуміло.
Правда, воно мало що міняє. Це, практично, просто дублювання інших функцій. А от як, скажімо, прописати команду кнопки “Виправити все” для контролю вузлів?

Міцного здоров’я всім!

Товариство, виникла наступна проблема (на рівному місці, як завжди). Допоможіть будь-ласка, коли хто знає.
У процесі виконання скриптом послідовної номерації наявна необхідність вибору (в ручному режимі) параметру, куди й будуть вноситись згенеровані послідовні номери. Яким чином вказати програмі, що необхідно у параметр,наприклад ID1001, записати ту злощасну номерацію.
Текст скрипта:

@SendChars 1
popCalculator | Последовательная нумерация…

Дякую.

Така операція виконується в “активному” на момент виконання операції параметрі. Активним параметром є той, значення якого активувалось для зміни останнім. Вихід - в ручній активації потрібного параметра. Приклад тут.

Міцного здоров’я всім!

Величезне дякую пане voha за роз’яснення щодо активного параметру.
Вийшов з положення за допомогою функції @Map.Selected.ChangeParameter. Запрацювало, без вказування у ручному режимі.
Текст скрипта наступний:

@Map.Selected.ChangeParameter ID50031 - потрібному параметру присвоюється порожнє значення (таким чином він активується)
@SendChars 5624680700000000001
popCalculator | Последовательная нумерация…

Можливо кому й стане в нагоді.
Дякую.

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

Здрастьє!
В мене така проблема: є купа(десь біля тисячі :open_mouth: ) файлів xml, в яких є по декілька ділянок, потрібно кожну ділянку зберегти в окремий файл з назвою кад.номером цієї ділянки. Чи можливо це зробити скриптом, хоч би по одному файлі за раз? Наперед дякую!

а хіба ж таке можливе? На скільки знаю, в окремий файл XML можна зберегти тільки одну ділянку. Це вам не IN4. В Digitals навіть функції не існує, яка б витягувала ділянку в XML з масиву файлів за аналогом Витягнути ділянку в IN4

Крепкого здоров’я всім!

Швидше за все мова йде про конвертовані ІЛС-Менеджером обмінних файлів старі файли IN-4. Такі файли робили на масиви паїв, або інші масиви суцільно розміщених земельних ділянок. На наших теренах теж мали такий клопіт, та пішли шляхом розділення (розчленування - коли Ваша воля) IN-4-файлів, із послідуючою конвертацією вижезгаданим менеджером. Що й Вам, Степаша, рекомендую, оскільки є можливість через пункт меню “Файл-извлечь(сохранить) в IN4” в ручному режимі (без написання скрипту) виконати дану задачу. Або просіть розробників, нехай напишуть особисто для Вас такий скрипт. Ще одне пригадалося - як правило шар IN4-Квартал був один, загальний по контуру масиву ділянок, для використання “Файл-извлечь(сохранить) в IN4” необхідно буде скопіювати шар IN4-Ділянка та змінити його на IN4-Квартал (тобто урівняти кількість цих шарів), а також внести семантику до всіх IN4-Кварталів.

Дякую.

Допоможіть розібратися з функцією @Dialog.SaveFile Filter Filename. А конкретно із строкою Filter. Як я зрозумів тут зазначається формат зберігаємого файлу, щоб я туди не писав файл не зберігається.

Це правильно, що результатом виконання функції @Dialog.SaveFile Filter Filename є шлях до файла. На те і є ця функція, щоб скрипт мав лише повну назву файла. Збереження файла треба виконувати окремою скриптовою функцією @Map.SaveToFile [Name] [Format] - “Записывает карту в файл заданного формата. Если параметр формат не указан, то он определяется автоматически по расширению”

Наприклад:;Отримання повної назви файла, який треба зберегти з назвою 'Збережений' в форматі kmz $FileName=@Dialog.SaveFile *.kmz D:\Збережений.kmz ;Збереження файла 'Збережений.kmz' за шляхом, вибраним в діалозі @Dialog.SaveFile @Map.SaveToFile $FileName[attachment=0]SaveFile.exe[/attachment]

voha, дякую за відповідь, але виходить наступне:

Скопіюйте цей код:

$FileName=@Dialog.SaveFile *.dmf D:\1.dmf
@Map.SaveToFile $FileName

І вставте собі в кнопку. Це на випадок, що може ви якийсь символ поставили кирилицею.
Якщо ж все одно не йде, то або версія програми не підтримує функцію, або ж якась заборона на збереження файлів програмою на диску D