@Map.XMLCadastralNumber работает с XML в котором 1 участок. Попробуйте @Map.GetObjectCadastralNumber ObjectIndex, здесь можно задавать номер объекта. Ну и организуйте цикл, перебирающий все объекты карты. Примеры таких циклов ищите в библиотеке полезных скриптов.
Так вже ж було детальніше [size=130]тут[/size]. А в скрипті один рядок: @Map.RecalculateToNewDatum [OldDatumName] NewDatumName
“Пересчитывает координаты всех объектов карты в другую систему координат, например @Map.RecalculateToNewDatum SK42(5) SK63(3)”
Якщо в поточній карті не встановлено датум, то необов’язковий параметр OldDatumName має бути вказаний, інакше ніякого перерахунку координат не відбудеться. Параметр NewDatumName - назва датума, який був створений Вами у файлі Datums.ini.
В принципі, можна й потренуватись в написанні такого скрипта (не знаю - для чого велосипед). Скрипт не пропустить карту на перерахунок, якщо не вказано датум карти:$ProgPath=@ProgramPath
;Вичитуєм датум вхідної карти
$DatumOld=@Map.Datum
@If $DatumOld<> then @Goto %EndDatumOld
;Вичитуєм список датумів
@Text[1].Load $ProgPath\Datums.ini
$DatumsINITextCount=@Text[1].Count
$N=0
%StartDatumsINI
$N=$N+1
@If $N>$DatumsINITextCount @Goto %DatumsINITextEnd
$StrDatumsINIRow=@Text[1].Line[$N]
$FirstLatter=@Calc Pos(";","$StrDatumsINIRow")
@If $FirstLatter=1 @Goto %StartDatumsINI
$FirstLatter=@Calc Pos("[","$StrDatumsINIRow")
@If $FirstLatter=1 @Text[2].Add $StrDatumsINIRow
@Goto %StartDatumsINI
%DatumsINITextEnd
$ListDatumsINI=@Text[2].Text
$StrDatumInput=@Dialog.ListSelect Карті не присвоєно датум. Обов'язково виберіть зі списку датум карти.|$ListDatumsINI
$StrDatumInput=@Calc Replace("$StrDatumInput","[","",1)
$StrDatumInput=@DequoteText $StrDatumInput
$StrDatumInput=@Calc Replace("$StrDatumInput","]","",1)
$StrDatumInput=@DequoteText $StrDatumInput
@If $StrDatumInput= then @Break Визначіть датум карти.
@Map.Datum $StrDatumInput
%EndDatum
;Визначаєм новий датум карти
$NewDatum=@Dialog.ListSelect Виберіть зі списку датум карти, в який перерахувати координати карти.|$ListDatumsINI
$NewDatum=@Calc Replace("$NewDatum","[","",1)
$NewDatum=@DequoteText $NewDatum
$NewDatum=@Calc Replace("$NewDatum","]","",1)
$NewDatum=@DequoteText $NewDatum
@If $NewDatum= then @Break Визначіть датум карти.
@Map.RecalculateToNewDatum $NewDatum
@Map.SelectAll
@Window.ShowSelected
@Map.DeselectAll
Заработало! Спасибо, voha. Работает и функция и Ваш скрипт. Проблема была в том, что я работаю в многопользовательском режиме. А Дига датум ищет не в папке Мои документы\Digitals, а в C:\Program Files\Digitals. Поэтому и выдавало мне такую ошибку. Скопировал Datums.ini в Program Files и все пошло как по маслу.
Хочу просити розробників, якщо це не займе багато часу, написати для прикладу формочку в DLL, звівши в неї поля введення кута і відстані. Цю б DLL-ку в некомпільованому варіанті “з руками й ногами” забрав би. То був би хороший старт використання функції @DLLExec DLLPath.DLLFunction [Parameters] і полегшення написання своїх діалогів в подальшому:)
Расширил сообщение Новые возможности программы - #152 від Bondarets_Alexander, добавил пример использования форм, созданных в Delphi в скриптах Digitals. Это не форма для ввода угла и расстояния, там только одно поле ввода. Берите ее за основу и можете создавать формы любого уровня сложности.
Всем доброго времени суток!!! Тут по ходу дела возник вопрос как отличить в смежниках IN4 юридическое лицо от физического (нужно для переноса оных в XML).
Если считать что в физ. лица есть три слова и все начинаются с заглавных букв, то как отличить заглавную букву от прописной?
Подскажите варианты решения данной проблемы плс.
Спробував використати скрипт Библиотека полезных скриптов - #32 від Bondarets_Alexander (щодо нумерації точок об’єктів), та виникла наступна проблема, чомусь при створенні підпису з’являється довкола номеру точки коло (на скріншоті видно), котре й виводиться на друк. Підкажіть, яким чином позбавитись від цих зачарованих кіл!
Кто подскажет? Нужно переместить объект, а лучше объекты, синхронно в нужную точку и плюс еще отмасштабировать (как Карта - Система координат). Просто я хочу создать шаблон, вернее его доработать, который на даный момент умеет выбирать ближайший пункт и рисовать от него “РТК вектора” к участку. Осталось его научить подтягивать эти вектора из исходного файла (хмл) в сгенерированный шаблон, учитывая ObjectScale.
С масштабом вроде все понятно: Map.Object[N].Scale и ReScale. А вот как быть с перемещением?
@Map.Object[$N].Move X Y [Z] - перемещение объекта на заданный вектор @Map.Object[$N].MoveTo X Y [Z] - перемещение объекта в указанную точку (после перемещения центр объекта совпадет с заданной точкой)
Вот пример скрипта для перемещения выделенного объекта на заданный вектор
$Obj=@Map.SelectedObject
@if $Obj=0 then @Break Выделите объект для перемещения
$Vec=@Dialog.Ask Вектор перемещения X Y [Z] Default=100 100
@Map.Object[$Obj].Move $Vec
@Window.RefreshЭти функции можно также использовать для изменения высоты объектов, например, для установки всем объектам нулевой высоты или перемещения объектов вдоль оси Z.
Спасибо!
Может я перегибаю палку ? Отлично было бы, когда не центр объекта совпадал с заданной точкой, а точка с точкой (аналог вкладка Сбор - перемещение). А уж если не задана точка перемещаемого объекта, тогда - после перемещения центр объекта совпадет с заданной точкой.
Здраствуйте. Как программно(скриптами) сделать "Сервис → Отчет (простой список с заданными параметрами и выкинуть данные в буфер обмена)? Возможно такое? Или сохранить в текстовый файл.
UPD: Или как вариант выдать в буфер (по аналогии РепортГенератор) данные заданных параметров.
ДОброго дня! А можна зробити теж саме тільки щоб не закривалося а була можливість редагувати назву? ФайлСохранить в ХМЛ ввести імя і самому сохранити. Буду дуже вдячний!
p.s просто роблю велику кількість файлів і нажимати постійно файл/сохранить в хмл надоїдає. Ще раз ДЯКУЮ!
ОЙ!!! Аж якось соромно стало за таке нерозумне запитання задане мною . Дякую нарешті дойшло до голови те що ви писали (треба було просто вникнути і прочитати). Ще раз подякував!