Головна » Файли » Готові скрипти

Заміна тексту в усіх написах на карті
16.03.2021, 13:37

Скрипт призначаней для заміни на будь-якій карті, відкритій у Digitals тексту з одного на інший. Наприклад, для заміни в готових кадастрових планах старої назви районів на нову.

В першому рядку задайте текст, який треба замінити. В другому текст, на який треба замінити.

$Input=Турківський
$Repl=Самбірський
;
;цикл по усіх об'єктах карти
$MC=@Map.Count
$N=0
%Start
$N=$N+1
$Text=@Map.Object[$N].TableText
$L=@Calc Pos("$Input","$Text")
@if $L=0 then @Goto %Next
$Text=@ReplaceChar "*$Text
$Text=@Calc replace("$Text","$Input","$Repl")
$Text=@DequoteText $Text
$Text=@ReplaceChar *"$Text
@Map.Object[$N].TableText $Text
@Map.RefreshObject $N
%Next
@if $N<$MC then @Goto %Start

Категорія: Готові скрипти | Додав: Микола
Переглядів: 1453 | Завантажень: 0 | Коментарі: 17 | Рейтинг: 5.0/1
Всього коментарів: 17
avatar
8 rorik1900 • 10:52, 16.07.2021
Добрий день, Микола.
Будь ласка підскажіть, як зробити заміну тексту в усіх відкритих картах зразу?
avatar
0
9 Микола • 17:52, 17.07.2021
Добрий день!
Скрипт для заміни текстових значень зразу у всіх відкритих картах:

avatar
3 Kochyr • 16:18, 20.05.2021
А як зробити умову щоб можна було декілька (два) значень заміни?
avatar
0
4 Микола • 19:52, 20.05.2021
Якщо я правильно зрозумів запитання, то ось так:
avatar
5 Kochyr • 13:58, 21.05.2021
Питання зрозуміли вірно. Але коли вибираєш перше значення ($Print=@Dialog.Select Це Іванов?|так|ні   - ТАК), то чомусь запитує дані $Input2=@Dialog.Ask Введіть, що треба замінити Default=ицький Size=300. Хотілося б при виборі "ТАК" другого діалогу щоб  не було.
avatar
0
6 Микола • 15:43, 21.05.2021
Тоді ось так:
avatar
7 Kochyr • 10:56, 24.05.2021
Дякую працює.
avatar
10 Kochyr • 16:33, 26.01.2022
Доброго дня. Чомусь перестали працювати змінні $Input2 та $Repl2. Із них не змінює дані тексту.
avatar
0
11 Микола • 17:29, 26.01.2022
У вас скрипт ідентичний як у коментарі 6? Якщо так, то справа в тому, що в ньому $Input2 спрацює тільки тоді, коли виконується умова $Input. Тобто, тільки тоді, коли в тексті є  слово "Іванов". Якщо в тексті умови "$Input=Іванов" не знайдено, то скрипт другу умову виконувати не буде.

Щоб дві умови були незалежні одна від одної, приберіть із скрипту рядок:
@if $L=0 then @Goto %Next
avatar
12 Kochyr • 18:04, 26.01.2022
Якщо внести значення в $Input2 Іванов Іван Іванович то зміна тексту на $Repl2 Петров Петро Петрович не відбувається
avatar
13 Kochyr • 11:52, 27.01.2022
Всеодно не працює. Не міняє Іванов Іван Іванович на Петров Петро Петрович

avatar
0
14 Микола • 20:18, 27.01.2022
Замініть код на такий простіший:
avatar
15 Kochyr • 15:47, 28.01.2022
Чомусь не працює. Ось dmf https://fex.net/uk/s/2d9sznn
avatar
0
16 Микола • 01:25, 29.01.2022
Справа в тому, що у вас ПІБ перенесено частково у другий рядок. А це означає, що там використані ще символи "||". Їх треба враховувати при пошуку і заміні. Щоб в такому випадку замінювало, зробіть ось так:

avatar
17 Kochyr • 13:39, 31.01.2022
Дякую, тепер працює.
avatar
1 Kochyr • 17:46, 17.03.2021
А якось так можна щоб через введення даних?

$Intut=@Dialog.Ask Введіть, що треба замінити Default=Лохвицький Size=300
$Intut=@ReplaceChar "*$Intut
$Repl=@Dialog.Ask Введіть, на що це треба замінити Default=Миргородський Size=300
$Repl=@ReplaceChar "*$Repl

а далі по скрипту без
$Input=Турківський
$Repl=Самбірський
avatar
0
2 Микола • 20:34, 17.03.2021
Так і зробіть, як ви написали. Там все просто:
$Input=@Dialog.Ask Введіть, що треба замінити Default=Лохвицький Size=300
$Repl=@Dialog.Ask Введіть, на що це треба замінити Default=Миргородський Size=300
;цикл по усіх об'єктах карти
$MC=@Map.Count
$N=0
%Start
$N=$N+1
$Text=@Map.Object[$N].TableText
$L=@Calc Pos("$Input","$Text")
@if $L=0 then @Goto %Next
$Text=@ReplaceChar "*$Text
$Text=@Calc replace("$Text","$Input","$Repl")
$Text=@DequoteText $Text
$Text=@ReplaceChar *"$Text
@Map.Object[$N].TableText $Text
@Map.RefreshObject $N
%Next
@if $N<$MC then @Goto %Start
avatar