Аналитика
http://www.geosystema.net/forum/

Скрипти Допоможіть будь ласка.)
http://www.geosystema.net/forum/viewtopic.php?f=1&t=19814
Страница 1 из 2

Автор:  matskows [ 16 ноя 2020 09:24 ]
Заголовок сообщения:  Скрипти Допоможіть будь ласка.)

Доброго дня! Хто може допомогти або підказати що потрібно ще дописати щоб вставляло проміри без нажимання кнопки ок та без діалогового вікна Вставка проміри схема!

@Map.DeselectAll
@Map.SelectLayer ID11330000
@Map.SelectLayer ID20000
Вставка | Промеры и схема...

Автор:  Руслан Пархуць [ 16 ноя 2020 10:18 ]
Заголовок сообщения:  Re: Скрипти Допоможіть будь ласка.)

matskows писал(а):
Доброго дня! Хто може допомогти або підказати що потрібно ще дописати щоб вставляло проміри без нажимання кнопки ок та без діалогового вікна Вставка проміри схема!

@Map.DeselectAll
@Map.SelectLayer ID11330000
@Map.SelectLayer ID20000
Вставка | Промеры и схема...


Використайте команду @SendChars у своєму скриптi

Автор:  VictorR [ 17 ноя 2020 13:15 ]
Заголовок сообщения:  Re: Скрипти Допоможіть будь ласка.)

@Map.DeselectAll
@Map.SelectLayer ID11330000
@Map.SelectLayer ID20000
@SendChars <CR>
Вставка | Промеры и схема...
@Map.DeselectAll

Автор:  Dmitry_Zolotar [ 17 ноя 2020 16:53 ]
Заголовок сообщения:  Re: Скрипти Допоможіть будь ласка.)

Важливо щоб усі потрібні "галочки" вже були обрані в цьому діалозі до виклику скрипта

Автор:  Руслан Пархуць [ 18 ноя 2020 00:59 ]
Заголовок сообщения:  Re: Скрипти Допоможіть будь ласка.)

Скрипт для виставлення потрiбних параметрiв вiкна "Промiри та схема" перед викликом вiкна
$CBMode=[Режим (0 - промiри, 1 - схема)]
$CBVisible=[Промiри тiльки до видимих (1 - так, 0 - нi)]
$CBRight=[Круг право (для Режиму $CBMode=1) 1 - так, 0 - нi]
Код:
; Режим (0 - промiри, 1 - схема)
$CBMode=0
; Промiри тiльки до видимих (1 - так, 0 - нi)
$CBVisible=0
; Круг право (для Режиму $CBMode=1)
$CBRight=0
;
$PPath=@ProgramPath
$IniFile=$PPath\Ged.ini
$Ex=@FileExists $IniFile
@If $Ex=0 Then @Break Помилка читання файлу налаштувань!
@Text[1].Load $IniFile
; -------------------------------------------------------------------------
; замiна FormID.grbMode
; -------------------------------------------------------------------------
$Pos=@Text[1].IndexOf [FormID.grbMode]
@If $Pos=0 Then @Break Помилка читання файлу налаштувань!|Вiдсутнiй тег [FormID.grbMode]
$Pos=$Pos+1
$Line=@Text[1].Line[$Pos]
$Param=@StringPart 1=$Line
@If "$Param"<>"ItemIndex" Then @Break Помилка читання файлу налаштувань!|Помилковий параметр тегу [FormID.grbMode]|Очiкується "ItemIndex", отримано "$Param"
; ставимо значення 0 ('Промiри')
$Line=$Param=$CBMode
@Text[1].Line[$Pos]=$Line
; -------------------------------------------------------------------------
; замiна FormID.chbVisible
; -------------------------------------------------------------------------
$Pos=@Text[1].IndexOf [FormID.chbVisible]
@If $Pos=0 Then @Break Помилка читання файлу налаштувань!|Вiдсутнiй тег [FormID.chbVisible]
$Pos=$Pos+1
$Line=@Text[1].Line[$Pos]
$Param=@StringPart 1=$Line
@If "$Param"<>"Checked" Then @Break Помилка читання файлу налаштувань!|Помилковий параметр тегу [FormID.chbVisible]|Очiкується "Checked", отримано "$Param"
; ставимо значення 0 (вiдключаємо)
$Line=$Param=$CBVisible
@Text[1].Line[$Pos]=$Line
; -------------------------------------------------------------------------
; замiна FormID.chbRight
; -------------------------------------------------------------------------
$Pos=@Text[1].IndexOf [FormID.chbRight]
@If $Pos=0 Then @Break Помилка читання файлу налаштувань!|Вiдсутнiй тег [FormID.chbRight]
$Pos=$Pos+1
$Line=@Text[1].Line[$Pos]
$Param=@StringPart 1=$Line
@If "$Param"<>"Checked" Then @Break Помилка читання файлу налаштувань!|Помилковий параметр тегу [FormID.chbRight]|Очiкується "Checked", отримано "$Param"
; ставимо значення 0 (вiдключаємо)
$Line=$Param=$CBRight
@Text[1].Line[$Pos]=$Line
; -------------------------------------------------------------------------
; записуємо змiнений файл
@Text[1].Save $IniFile
;@SendChars <CR>
@ExecuteMenu InsertDistances
;

Автор:  voha [ 18 ноя 2020 11:57 ]
Заголовок сообщения:  Re: Скрипти Допоможіть будь ласка.)

Руслан Пархуць писал(а):
Скрипт для виставлення потрiбних параметрiв вiкна "Промiри та схема" перед викликом вiкна...
Доброго дня.
Руслан гарно виклав - розписав детально :D .
Можна ще скористатися функцією dll, тоді перевіряти наявність ключів та секцій не треба: якщо таких немає - будуть створені.
Код:
; Режим (0 - промiри, 1 - схема)
$CBMode=0
; Промiри тiльки до видимих (1 - так, 0 - нi)
$CBVisible=0
; Круг право (для Режиму $CBMode=1)
$CBRight=0
;
$PPath=@ProgramPath
$IniFile=$PPath\Ged.ini
$Ex=@FileExists $IniFile
@If $Ex=0 Then @Break Відсутній файл $PPath\Ged.ini!
;
;Параметр - рядок, в якому 4 значення, розділених символом "/": повний
; шлях до ini-файла; назва секції; назва ключа; нове значення ключа.
@DLLExec Functions.ChangeValueIniFile $IniFile/FormID.grbMode/ItemIndex/$CBMode
@DLLExec Functions.ChangeValueIniFile $IniFile/FormID.chbVisible/Checked/$CBVisible
@DLLExec Functions.ChangeValueIniFile $IniFile/FormID.chbRight/Checked/$CBRight
;
;@SendChars <CR>
@ExecuteMenu InsertDistances

Тут-же в мене виникло питання. А що, тепер усі форми, по аналогії з вікном "Промiри та схема", при ініціалізації отримують значення з файла Ged.ini :?:
Раніше ж, вроді - лише при старті Digitals?

Автор:  fendak [ 18 ноя 2020 17:37 ]
Заголовок сообщения:  Re: Скрипти Допоможіть будь ласка.)

voha писал(а):
А що, тепер усі форми, по аналогії з вікном "Промiри та схема", при ініціалізації отримують значення з файла Ged.ini

Одна точно не працює ще так - це кнопка "Лінію в смугу", галочка "Створити буферну зону"

Автор:  Руслан Пархуць [ 19 ноя 2020 10:26 ]
Заголовок сообщения:  Re: Скрипти Допоможіть будь ласка.)

fendak писал(а):
voha писал(а):
А що, тепер усі форми, по аналогії з вікном "Промiри та схема", при ініціалізації отримують значення з файла Ged.ini

Одна точно не працює ще так - це кнопка "Лінію в смугу", галочка "Створити буферну зону"

Код:
; ширина смуги
$CMWidth=1
; створити буферну зону (1 - так, 0 - нi)
$CMBuffer=0
; -------------------------------------------
$CMLine=@Assign $CMWidth<TAB><$CMBuffer><CR>
@SendChars $CMLine
@ExecuteMenu spbStrip
;

Автор:  voha [ 19 ноя 2020 10:43 ]
Заголовок сообщения:  Re: Скрипти Допоможіть будь ласка.)

Руслан Пархуць писал(а):
Код:
$CMLine=@Concat $CMWidth<TAB><$CMBuffer><CR>
@SendChars $CMLine
Дик, получається, що надсилання "1" в CheckBox його включить, а "0" - його виключить :!:. Точно, це ж його властивість на замовчування.

Автор:  Руслан Пархуць [ 19 ноя 2020 11:45 ]
Заголовок сообщения:  Re: Скрипти Допоможіть будь ласка.)

voha писал(а):
Руслан Пархуць писал(а):
Код:
$CMLine=@Concat $CMWidth<TAB><$CMBuffer><CR>
@SendChars $CMLine
Дик, получається, що надсилання "1" в CheckBox його включить, а "0" - його виключить :!:. Точно, це ж його властивість на замовчування.

Але все це є в скриптовiй ф-цiї @Map.Selected.ToStrip, тобто можна все робити i без виклику вiкна
Код:
; ширина смуги
$CMWidth=6
; створити буферну зону (1 - так, 0 - нi)
$CMBuffer=1
@Map.Selected.ToStrip $CMWidth $CMBuffer

Автор:  fendak [ 21 ноя 2020 00:22 ]
Заголовок сообщения:  Re: Скрипти Допоможіть будь ласка.)

Ще б якось була можливість відновлювати початкову позицію табуляції у вікні. Бо коли користувач перед тим натисне не ОК, а Відмінити - то при запуску скрипту потім не працює.
Наприклад, щоб запустити команту Вставка - Сітка із рамкою 5000х5000, включеною галочкою Додати підписи і знятою галочкою Малий масштаб виставив ось так:
Код:
$CMLine=@Assign <TAB><TAB><TAB><TAB><TAB><TAB>5000<TAB>5000<TAB><TAB><TAB><1><TAB><0><TAB><TAB><CR>
@SendChars $CMLine
Вставка | Сітка...

Але якщо перед тим в ручному режимі поставити курсор на будь-який інший блок, крім ОК, то не працює потім, бо починає рахувати знаки табуляції від активного блоку в попередньому сеансі запуску.

Доповнено: В принципі, оптимальним варіантом є
$CMLine=@Assign 5000<TAB>5000<TAB><TAB><TAB><1><TAB><0><TAB><TAB><TAB><TAB><TAB><TAB><TAB><TAB><CR>
Тому, що після перезапуску програми дане вікно відновлює своє значення за замовчуванням, а саме: активним стає поле, де вводиться розмір рамки.

Вложения:
2020-11-21_004459.png
2020-11-21_004459.png [ 7.38 Кб | Просмотров: 6366 ]

Автор:  Dmitry_Zolotar [ 26 ноя 2020 15:49 ]
Заголовок сообщения:  Re: Скрипти Допоможіть будь ласка.)

В нову версію програми додали скриптову функцію для вставки сітки, аналогічну меню Вставка-Сітка
@Map.InsertGrid Layer X0 Y0 DX DY ObjIndex CreateCaption SmallScale Solid
Аргументи функції:
Layer - шар для об'єктів сітки
X0 Y0 - початкові координати
DX DY - кроки сітки по двом координатам
ObjIndex - номер об'єкта, в який вставляється сітка, якщо 0, то в рамку карти.
CreateCaption - додавати підписи, 0 - ні, інше значення - так
SmallScale - малий масштаб, 0 - ні, інше значення - так
Solid - 0 - хрести, інше значення - суцільна сітка

виклик
@Map.InsertGrid 1 5000000 1000000 5000 5000 0 1 0 1
аналогічний такому
Вложение:
InsertGrid.png
InsertGrid.png [ 7.3 Кб | Просмотров: 6319 ]

Автор:  voha [ 26 ноя 2020 16:23 ]
Заголовок сообщения:  Re: Скрипти Допоможіть будь ласка.)

Dmitry_Zolotar писал(а):
В нову версію програми додали скриптову функцію для вставки сітки, аналогічну меню Вставка-Сітка
@Map.InsertGrid Layer X0 Y0 DX DY ObjIndex CreateCaption SmallScale Solid...
Доброго дня розробникам. Дякую за вдосконалення. Користуючись нагодою - питання: чи можна додати по аналогії InsertSheetLayout :?: Бо наче пропустили, якось ненароком.

Автор:  Dmitry_Zolotar [ 27 ноя 2020 11:34 ]
Заголовок сообщения:  Re: Скрипти Допоможіть будь ласка.)

Додано скриптову функцію
@Map.InsertSheetLayout Layer X0 Y0 DX DY Overlap ObjIndex
Layer - шар розбивки аркушів
X0 Y0 - початкові координати
DX DY - розміри аркуша в мм
Overlap - розмір в мм перетину аркушів
ObjIndex - номер об'єкта, в який вставляється розбивка, 0 - рамка карти

До ged.lng додати строки:
Код:
Insert grid into object or map frame   Додає сітку у об'єкт чи рамку карти
Insert sheet layout intoobject or map frame   Додає розбивку на аркуші у об'єкт чи рамку карти


Цитата:
Бо наче пропустили, якось ненароком.

Саме так

Автор:  ТОВ Аспект [ 02 дек 2020 16:51 ]
Заголовок сообщения:  Re: Скрипти Допоможіть будь ласка.)

Як викликати скриптом вікно властивості лінії, таке як через Ctrl+D? Або підкажіть як маркованому відрізку змінити довжину.

Страница 1 из 2 Часовой пояс: UTC + 2 часа
Powered by phpBB © 2000, 2002, 2005, 2007 phpBB Group
http://www.phpbb.com/