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

Можливо хтось стикався з проблемою. В скрипті не хоче відкривати файли - видає помилку про невідомий формат файлу. Є потреба виділити об’єкти шару одного файлу, скопіювати їх, відкрити інший файл та вставити туди. До моменту копіювання все працює. На відкритті файлу - помилка, невідомий формат файлу. Хоча якщо його просто відкрити чи навіть через окремий скрипт - то відкриває без проблем. Дякую.

прикріпіть сюди ваш скрипт, складно так сказати в чому там причина

$Count=@Map.Layers.Count
$CurrentCount=1
%Start
@If $CurrentCount<=$Count then @Goto %Yes else @Goto %End
%Yes
@Map.SelectLayer $CurrentCount
@Map.Selected.Copy
@FileOpen E:\N.dmf
Правка | Вставить
$Name=@Map.ClearFilename
$Name=$Name.shp
@Map.SaveToFile $Name
@FileClose
$CurrentCount=$CurrentCount+1
@Goto %Start
%End
@Break

у мене ваш скрипт відкриває нормально файл та зберігає по назві шарів в папці E:\N без помилок
більше не скажу, бо я не знайомий із структурою файлу shp і алгоритмами його збереження, можливо саме збереження вносить в програму якусь ноту

мені взагалі дивно, що при такому збереженні створюється папка і в неї додаються файли .DBF, .shp та .shx. Для dmf чи xml функцією @Map.SaveToFile $Name відбувалася б просто заміна старого файлу на новий.

Дякую Вам що подивились скрипт. Щось стається таке, чого я поки-що не можу виловити:)

Доброго дня. Чи існує функція, яка створить чистий файл? Або з існуючого файлу видалить всі шари із менеджера шарів.

ф-цiя @Map.Layers.Delete Number [Safe]

$Count=@MapCount @if $Count=0 @Break $C=@Map.Layers.Count @If $C=0 @Break $D=@Dialog.Confirm Витерти всi пустi шари карти? @If $D=0 @Break %Start: @Map.Layers.Delete $C Safe $C=$C-1 @if $C>0 @Goto %Start

Дякую.

Є таке питання по шарах. Деякі шари в менеджері мають назву, яка містить різні символи та пробіли після назви. Під час збереження в шейп таку назву зберігати не хоче - видає повідомлення про неможливість збереження. Як краще вирішити таку задачу. В принципі назви шарів можна взагалі не зберігати - основне ID. Чи можна отримати ID шару за його порядковим номером? Дякую.

@Map.Layers.Get Number

Дякую. Але як з цього виділити тільки ID, а відкинути номер і назву шару?

$Line=@Map.Layers.Get 1 $ID=@StringPart 1 $Line $TP=@StringPart 2 $Line $NM=@StringPart 3 $Line @Dialog.Message $Line|$ID|$TP|$NM

Дякую. Щось про цей варіант не подумав:)

Перепрошую, якби значення 8 не спричиняло помилку “Access violation at address 0040C3AA in module ‘Ged.exe’. Read of address C28F5C21” при з’єднанні лінійних об’єктів, питання б не виникало. Однак: чи можна однією командою обнулити згадану інформацію про всі точки всіх об’єктів карти? Чи єдиний вихід - переприсвоєння координат кожній точці всіх об’єктів?

Розумію, що інформація службова, тому моє питання може видатись не коректним.
Якби так хоч знати: за яких обставин (чи то - “криворуких” дій при зборі об’єктів) реєстрована точка характеризується маскою “8”?

P.S. Очевидно, проблема з “Розділити”, “З’єднати” не в масці точок.
Прошу розробників подивіться, будь-ласка, в карті[attachment=0]Problem_Split-Join.dmf[/attachment]Допомагає лише перестворення об’єкта (@Map.AddObject) з обнуленими масками.

Доброго дня. Підкажіть будь-ласка, як добавити до шару параметр (за порядковим номером шару і параметра)?

$Layer=2
$Parameter=0
$VL=@Map.Layers.GetValidParameters $L
@Map.Layers.SetValidParameters $VL $P

Дякую.

Доброго дня. Як в змінній, де міститься текст видалити перший символ? Дякую.

[b]@Calc Delete/b – видаляє частину рядка (число символів y, починаючи з символа x).
у вашому випадку [b]$Zminna=@Calc Delete/b

Дякую. Іду пробувати.