А якщо файли XML?
тоді складніше, бо інформація в параметрах файлів xml заключена в спеціальні теги, а дана функція меню не вміє обробляти теги xml
в таких випадках найкраще використовувати скрипти або FastReports
тоді складніше, бо інформація в параметрах файлів xml заключена в спеціальні теги, а дана функція меню не вміє обробляти теги xml
в таких випадках найкраще використовувати скрипти або FastReports
Трохи з скриптами знайомий, цю всю інформацію витягнути зможу лише з одного XML, а мені треба треба шт. 100 і більше.
скриптами можна витягнути інформацію зразу із 1000 xml і скласти в список, де по кожній ділянці буде те, що потрібно
це робиться завдяки циклам і текстовим спискам
цикл обробляє кожну ділянку, витягуючи з неї потрібну інформацію і додаючи її в загальний текст
@Text[1].Add $KN $Area …
а потім даний текст можна або вставити на карту або просто скопіювати в буфер обміну
Доброго дня! Підскажіть будь-ласка, як з відкритих обмінників сторити список з кад. номером, ПІБ, адресою і площею по всіх файлах.
Допишiть скрипт для отримання адреси та кадастрового номеру
; Для XML створення пiдписiв вздовж довгої сторони для дiлянок та сумiжникiв
$Obj=0
%BoundCycle
$Obj=@Map.NextSelected $Obj
@If $Obj=0 Then @Goto %End
$Layer=@Map.Object[$Obj].LayerID
@If ($Layer<>70005) And ($Layer<>70010) Then @Goto %Next
@If $Layer=70010 Then @Goto %Neighbour
$Param=@Map.Object[$Obj].Parameter[ID7000520]
$NM=@XML.XPath ProprietorInfo/Authentication/LegalEntity/Name $Param
@If $NM= Then @Goto %NaturalBND
@Goto %DrawText
%NaturalBND
$NM1=@XML.XPath ProprietorInfo/Authentication/NaturalPerson/FullName/LastName $Param
$NM2=@XML.XPath ProprietorInfo/Authentication/NaturalPerson/FullName/FirstName $Param
$NM3=@XML.XPath ProprietorInfo/Authentication/NaturalPerson/FullName/MiddleName $Param
$NM=$NM1 $NM2 $NM3
@Goto %DrawText
; Сумiжник
%Neighbour
$Param=@Map.Object[$Obj].Parameter[ID7001003]
$NM=@XML.XPath LegalEntity/Name $Param
@If $NM= Then @Goto %NaturalNB
;
@Goto %DrawText
%NaturalNB
$NM1=@XML.XPath NaturalPerson/FullName/LastName $Param
$NM2=@XML.XPath NaturalPerson/FullName/FirstName $Param
$NM3=@XML.XPath NaturalPerson/FullName/MiddleName $Param
$NM=$NM1 $NM2 $NM3
@Goto %DrawText
;
%DrawText
$NumP=@Map.Parameters.FindByID 8000001
@If $NumP>0 Then @Goto %ShowText
$NumP=@Map.Parameters.Add 8000001 5 FullName
;
%ShowText
; додаємо новий параметр з iменем власника
$Param=@Map.Layers.GetValidParameters ID$Layer
$Param=$Param $NumP
@Map.Layers.SetValidParameters ID$Layer $Param
;
@Map.Object[$Obj].Parameter[ID8000001]=$NM
; виводимо надпис на екран
@Map.Object[$Obj].CreateCaption ID8000001 1 0 1 1 0 0
;
;
%Next
@Goto %BoundCycle
%End
;
Схожий скрипт зробив 2 дні тому. В буфер обміну копіюється табульований список(в ексель зручно вставляти) з кадномеру, назви власника, площі та назви виконавця робіт
@Text[1].Clear
$Tab=@Calc char(9)
$Tab=@DequoteText $Tab
$MC=@Map.Count
$I=0
%Loop
$I=$I+1
$LID=@Map.Object[$I].LayerID
@if $LID<>70005 then @Goto %Ignore
$ParcelNum=@Map.Object[$I].Parameter[ID7000513]
$CadZoneNum=@Map.Object[$I].CalculateFormula Parent[ID7000301](ID70003)
$CadQuarterNum=@Map.Object[$I].CalculateFormula Parent[ID7000401](ID70004)
$FullCadNum=@Concat $CadZoneNum,:,$CadQuarterNum,:,$ParcelNum
$Area=@Map.Object[$I].Parameter[ID7000516]
$Area=%Library.ReplaceComma $Area
$Executor=@Map.Object[$I].CalculateFormula Parent[ID7000007](ID70000)
$ExecutorNM=@XML.XPath CompanyName $Executor
$S=@Map.Object[$I].Parameter[ID7000520]
$PrCount=@XML.NodeCount /Proprietors ProprietorInfo $S
$Res=
@if $PrCount<1 then @Goto %IgnoreProp
$J=0
%LoopProp
$J=$J+1
@if $J>1 then $Res=$Res|
$IsLE=@XML.NodeCount /Proprietors/ProprietorInfo[$J]/Authentication LegalEntity $S
@if $IsLE=1 then @Goto %LE
$LN=@XML.XPath /Proprietors/ProprietorInfo[$J]/Authentication/NaturalPerson/FullName/LastName $S
$FN=@XML.XPath /Proprietors/ProprietorInfo[$J]/Authentication/NaturalPerson/FullName/FirstName $S
$MN=@XML.XPath /Proprietors/ProprietorInfo[$J]/Authentication/NaturalPerson/FullName/MiddleName $S
$Res=$Res$LN $FN $MN
@Goto %NextProp
%LE
$LEName=@XML.XPath /Proprietors/ProprietorInfo[$J]/Authentication/LegalEntity/Name $S
$Res=$Res$LEName
%NextProp
@if $J<$PrCount then @Goto %LoopProp
$ResS=@Concat $FullCadNum,$Tab,$Res,$Tab,$Area,$Tab,$ExecutorNM
@Text[1].Add $ResS
%Ignore
@if $I<$MC then @Goto %Loop
@Text[1].Copy
Доброго дня! Підскажіть будь-ласка, як з відкритих обмінників сторити список з кад. номером, ПІБ, адресою і площею по всіх файлах.
також зробив такий скрипт
Дякую всім хто відгукнувся, особливо Вам fendak ![]()
Якщо використовувати скрипти для зміни масштабу карти:
@SendChars 100
[ panTools.Властивості карти ]
То мінімальний масшстаб, який підтримується таким чином - 500. Коли ставити 100 чи 200 - функція не працює.
Альтернативна функція @Map.SetProperties Scale міняє масшстаб на 100. Але вона не підходить по тій причині, що міняючи масштаб шаблонів dmt, вона не фіксує розмір умовних знаків та підписів.
Тому прохання до розробників, якщо не вийде поправити перший варіант, чи не можна додати нову функцію @Map.SetScale FixText FixSymbols, яка б міняла масшстаб карти із можливістю включати/відключати опції “Зберегти розмір підписів”, “Фіксувати УЗ”?
Якщо використовувати скрипти для зміни масштабу карти:
@SendChars 100
[ panTools.Властивості карти ]
То мінімальний масшстаб, який підтримується таким чином - 500. Коли ставити 100 чи 200 - функція не працює.
$Scale=100
@SendChars $Scale<32>
дякую, працює
та дана функція все одно б не була зайвою, бо нема контролю скриптами за тими галочками по умовних знаках та розмірах тексту
дякую, працює
та дана функція все одно б не була зайвою, бо нема контролю скриптами за тими галочками по умовних знаках та розмірах тексту
По умовних знаках є функція @Map.Symbols.Rescale Coefficient
Извините, может я не нашел, есть ли скриптовые функции по работе с файлами (перемещение, копирование, удаление)
переміщувати файли напряму функцією нема можливості. Можна відкрити файл в програмі, зберегти його в інше місце, а оригінал потім видалити. Це скрипти дозволяють зробити.
Для копіювання файл треба відкрити в програмі і зберегти копію в іншому місці.
Для видалення файлів чи папок є прямі функції.
Функції, які стосуются файлів та папок можете переглянути тут
Якщо мова йде про текстові файли, то перегляньте таку групу функцій
Є ще функція @Run, вона дозволяє запустити exe-файл
;Копіювання файлів виглядає так:
@Run copy d:\log.txt d:\log.old
;Видалення файлів
@Run del d:*.bak
;Створення директорії
@Run md “C:\Program files\New folder”
P.S. Усі шляхи, які містять пробіл, мають бути обернуті у лапки
Можно ли добавить пару кнопок (сохранить как все), по принципу проги DipEdit.
Можно ли добавить пару кнопок (сохранить как все), по принципу проги DipEdit.
Доброго дня шановним розробникам.
У мене питання: чи можна додати скриптову функцію, яка б повертала значення координати Z точки карти з відомими координатами X та Y? Як варіант можна створити точковий об’єкт і перепризначити йому висоту з точок інших об’єктів карти
, але ж у рядку стану - так легко відображується поточна висота з курсора!
Доброго дня шановним розробникам.
У мене питання: чи можна додати скриптову функцію, яка б повертала значення координати Z точки карти з відомими координатами X та Y? Як варіант можна створити точковий об’єкт і перепризначити йому висоту з точок інших об’єктів карти
, але ж у рядку стану - так легко відображується поточна висота з курсора!
Функція @Map.CalculateZ X Y повертає висоту точки у форматі координат, аргументи - планові координати. У разі помилки повертає значення “0”.
Нова версія програми
Функція @Map.CalculateZ X Y повертає висоту точки у форматі координат, аргументи - планові координати. У разі помилки повертає значення “0”
Чемно дякую за підтримку.