Головна » 2016 » Січень » 1 » Скриптові функції - Обробка символьних параметрів
22:37
Скриптові функції - Обробка символьних параметрів

Термін "ПАРАМЕТРИ" в Digitals має особливе нетипове значення. Тому спершу невелике роз'яснення, що під ним розуміється. "Параметрами" в програмі вважаються символьні рядки на закладці Інфо. їх присвоюють тим чи іншим шарам. І в них можна заносити різноманітні значення для різних об'єктів карти. Наприклад, виділивши на карті об'єкт у шарі Суміжник, справа на закладці Інфо ви побачите такий список його параметрів:


Створення та видалення параметрів

@Map.Parameters.Add Code Type Name - створює новий параметр із заданим id, типом і назвою

@Map.Parameters.Delete Number - видаляє параметр по його порядковому номеру чи id

@Map.Parameters.Truncate LastIndex - видаляє всі параметри після LastIndex

Атрибути окремих параметрів

@Map.Parameters.Get Number - повертає id параметра, його тип і назву

@Map.Parameters.Set Number Code Type Name - змінює id параметра, його тип і назву

@Map.Parameters.FindByID ID - повертає порядковий номер параметра по його id і 0 - якщо такий параметр не знайдений

@Map.Parameters.FindByName Name - повертає порядковий номер параметра по його назві і 0 - якщо такий параметр не знайдений

@Map.Parameters.GetAttributes Number - повертає всі атрибути параметра: номер УЗ, тип лінії, колір лінії, товщину, тип заливки, колір заливки, статус

@Map.Parameters.SetAttributes Number Symbol PenStyle PenColor PenWidth BrushStyle BrushColor State Font_Name FontSize FontStyle FontColor - змінює всі атрибути параметра: номер УЗ, тип лінії, колір лінії, товщину, тип заливки, колір заливки, статус

 

@Map.Parameters.Name Number - повертає назву параметра

@Map.Parameters.Rename OldName,NewName - змінює назву параметра

@Map.Parameters.Mask Number [Value] - повертає чи змінює маску параметра

@Map.Parameters.RemoveCyrillic - видаляє символи кирилицею із назв параметрів

@Map.SetParamsVisibleRanges MinLevel MaxLevel [FromParamNumber] [Latitude] - встановлює діапазони видимості параметрів карти згідно рівнів Google maps. From Param Number - номер першого параметра, якщо не заданий будуть додані нові параметри. Latitude - широта центру карти, 0 - якщо не задана

Список параметрів

@Map.Parameters.List - повертає список параметрів карти у форматі: IDПараметра НазваПараметра

Map.Layers.GetValidParameters LayerIndex - повертає список доступних шару параметрів

@Map.Layers.SetValidParameters LayerIndex NumberList - змінюж список доступних шару параметрів

@ShowParameters - показує список параметрів виділеного об'єкта

@Map.Parameters.SaveToFile FileName - зберігає список параметрів карти у текстовий файл

@Map.Parameters.LoadFromFile FileName - завантажує список параметрів карти із текстового файлу

@Map.Parameters.Count - повертає кількість параметрів карти

@Map.Parameters.IDFromNames - присвоює параметрам унікальні id за їх назвами

@Map.DBFNamesFromID - додає до назви параметрів /DBF:НазваПоля на базі їх ID

Читання та редагування значень окремих параметрів

@Dialog.EditParameter ParamIndex - виводить вікно редагування параметра для виділеного об'єкта

@Map.Object[N].Parameter[N] - повертає/змінює значення параметра об'єкта

@Map.Selected.GetParameter Number - повертає значення параметра виділеного об'єкта

@Map.Selected.SetParameter Number Value  - змінює значення параметра виділеного об'єкта

@Map.Selected.ChangeParameter ParameterIndex Value - встановлює значення параметра для всіх виділених об'єктів

@Map.ReplaceParameterValues ParamIndex TextFile - замінює по текстовому файлу в певному параметрі значення лівої колонки на значення правої колонки (в текстовому файлі колонки мають розділятися знаком табуляції)

@XML.XPath Query XMLString - повертає значення XML-тегу (частини параметра)

$Address=@Map.Selected.GetParameter ID7000500
$StreetType=@XML.XPath ParcelAddress/StreetType $Address
$StreetName=@XML.XPath ParcelAddress/StreetName $Address
@Dialog.Message $StreetType $StreetName

@XML.NodeCount Query Tag XMLString - повертає число дочірніх елементів XML-тегу

$Props=@Map.Selected.GetParameter ID7000520
$Props=<Root>$Props</Root>
$PropCount=@XML.NodeCount Proprietors ProprietorInfo $Props
@Dialog.Message $PropCount
;результатом буде кількість власників ділянки

@Map.Object[N].ParameterTag[N] <XMLTag>Value - змінює значення тегу в XML-параметрі

;міняємо дату складання техдокументації на поточну
$SO=@Map.SelectedObject
$Data=@Date
$chyslo=@StringPart 1.$Data
$misyac=@StringPart 2.$Data
$rik=@StringPart 3.$Data
$Data="$rik-$misyac-$chyslo"
$Data=@DequoteText $Data
@Map.Object[$SO].ParameterTag[ID7000522] <DraftingDate>$Data

@Map.Object[N].SetXMLTag ParamNumber Query Value - встановлює вміст тегу в XML-параметрі

;міняємо дату видачі та ким виданий паспорт
@Map.DeselectAll
@Map.SelectLayer ID70005
$SO=@Map.SelectedObject
@Map.Object[$SO].SetXMLTag ID7000520 ProprietorInfo/Authentication/NaturalPerson/Passport/PassportIssuedDate 2015-02-14
@Map.Object[$SO].SetXMLTag ID7000520 ProprietorInfo/Authentication/NaturalPerson/Passport/IssuanceAuthority Дніпропетровським РВ УМВС України в Дніпропетровській області

@Map.Object[N].NextNumber ParamIndex ParentLayerIndex - повертає значення параметра об'єкта, наступного після ParentLayerIndex серед доступних даному об'єкту

@Map.Parameters.FixedListCount ParamIndex - повертає кількість значень спискового параметру

@Map.Parameters.FixedListValue ParamIndex ListIndex [NewValue] - повертає/змінює рядок із списку параметру за його індексом

Читання та редагування значень групи параметрів

@Map.Object[N].AssignParameters ObjectNumber - присвоює заданому об'єкту значення всіх параметрів іншого об'єкта

@Map.Selected.LoadParameters TemplateName - заповнює значення параметрів виділених об'єктів із шаблону

@Map.Selected.ClearParameters - очищує всі параметри виділених об'єктів

@Map.ClearUnusedParameters - очищує параметри об'єкта, які не присвоєні шару

@Map.Object[N].CopyParametersToExternal [LayerList] - копіює значення параметрів об'єкта N у значення тих же параметрів батьківського (External) об'єкта

@Map.Object[N].CopyParametersToInternal [LayerList] - копіює значення параметрів об'єкта N у значення тих же параметрів дочірнього (Internal) об'єкта

@Map.GetObjectParamBuf Number - повертає значення всіх параметрів даного об'єкта у внутрішньому форматі програми

@Map.SetObjectParamBuf Number|ParamAndTableBufзмінює значення всіх параметрів даного об'єкта у внутрішньому форматі програми

@Map.ParametersFromPDF ParamIndex PDFPath - читає інформацію про ділянку (json) з пдф

@MergeParametersFromMap MapIndex LayerIndex KeyParameter Mode(0/1) - заповнює параметри позначених об'єктів з карти MapIndex

Пошук у значеннях параметрів

@Map.FindByParameters Count|List - шукає об'єкти по значеннях їх параметрів.

@Map.SelectByParameters 2|-1>0|0=0 
;виділить об'єкти за двома параметрами: якщо довжина (параметр -1) більша за 0, і якщо площа (параметр 0) дорівнює 0

@Map.SelectByParameters Count|List  - шукає об'єкти по значеннях їх параметрів. 

@Map.SelectByParametersSelected Count|List - шукає об'єкти з числа виділених по значенню їх параметрів

@Map.FindFirstByParameters Count|List - те саме, що функція вище, але повертає номер першого знайденого об'єкта

@Map.MaxParameterValue ParamIndex [LayerIndex] - сканує всі об'єкти карти (або об'єкти в заданому шарі), повертаючи максимальне значення заданого параметра

@Map.MinParameterValue ParamIndex [LayerIndex]сканує всі об'єкти карти (або об'єкти в заданому шарі), повертаючи мінімальне значення заданого параметра

Спеціальна обробка значень параметрів

@Map.ReplaceEnglishLetters - замінює в значеннях параметрів латинські літери, які візуально співпадають з кириличними

@Map.XMLCadastralNumber - повертає повний кадастровий номер ділянки в XML файлі

@Map.GetObjectCadastralNumber ObjectIndex - повертає кадастровий номер ділянки в IN4 файлі

@Map.StreetList ParameterID -  форматує назви вулиць в параметрах карти, приводячи їх до єдиного вигляду. ParameterID - ID параметра, що містить список вулиць. Тип параметра повинен бути Список

@Map.ParseAddresses ParamIndex - розділяє адресу за комами

@Map.Object[N].AutoNumber ParamIndex ParentLayerIndex - автоматична нумерація об'єктів на карті у вказаному параметрі


Примітка: жирним шрифтом (напр.@ActivateMap) виділена назва функції, похилим шрифтом (напр.Number) змінна функції, у квадратних скобках (напр.[MapNumber]) необов'язкова змінна, яку можна не вказувати.

 

Переглядів: 6041 | Додав: Микола | Рейтинг: 0.0/0
Всього коментарів: 12
avatar
11 ivankalini4 • 12:05, 29.08.2022
Добрий день, створив параметр @Map.Parameters.Add, як тепер цей параметр добавити (скриптом), щоб відображався в закладці Інфо?
avatar
1
12 Микола • 09:13, 30.08.2022
Добрий день!
;додаємо новий параметр в список параметрів
@Map.Parameters.Add 700555 5 Назва параметра
;читаємо список доступних параметрів в шарі Земельна ділянка
$ParDil=@Map.Layers.GetValidParameters ID70005
;додаємо параметр ID700555 в список доступних шару XML Земельна ділянка
@Map.Layers.SetValidParameters ID70005 $ParDil ID700555
avatar
5 SerjN • 08:38, 24.06.2021
Доброго дня.
Пробую записати в маску параметру строку таким способом:
@Map.Parameters.Mask  =,=,=@ FIO| FIO-R| FIO-D
але вертикальні слеші викидуються і залишається строка у масці без них.
=,=,=@ FIO FIO-R FIO-D
У разі внесення строки вручну слеші зберігаються.
Підкажіть у чому тут проблема.
avatar
0
6 Микола • 11:31, 24.06.2021
Вертикальні риски в скриптах треба задавати таким чином:
$V=@Calc Char(124)
$V=@DequoteText $V
@Map.Parameters.Mask  =,=,=@ FIO$V FIO-R$V FIO-D
avatar
7 SerjN • 11:10, 25.06.2021
Дякую.
Ще одне запитання по цій же темі:
якшо до якогось поля такого діалогового вікна підключити файл довідника (наприклад Форми власності) то при виборі якогось значення вибирається тільки частина інформації (поле яке помічене знаком *).
Наприклад при виборі строки "100 приватна" вибирається тільки код "100"
А як зробити, щоб вибиралися усі поля тобто щоб результат був "100 приватна"
avatar
0
8 Микола • 15:11, 25.06.2021
Зробіть в одну колонку, і щоб роздільником коду форми власності і назви форми власності були не знаки табуляції, а звичайний пробіл.
avatar
9 SerjN • 08:34, 29.06.2021
Такий варіант не дуже підходе
А інші варіанти є? Так щоб користуватися тими довідниками, що вже присутні в Диджиталі.
avatar
0
10 Микола • 09:28, 29.06.2021
Так чи інакше знак табуляції є роздільником колонок в даних таблицях. І щоб якось одночасно відображати дві колонки - не знаю про таку можливість.
avatar
4 sanitskyidenys • 10:29, 22.04.2020
Доброго дня!
Підкажіть будь ласка, як присвоїти два різних значення одноіменного параметра двох об'єктів, третьому (тобто це лінія і два точкових об'єкти які знаходяться на її кінцях).
avatar
3 Ivan_Kalinich • 10:58, 03.02.2017
Дякую, буду далі розбиратись
avatar
1 Ivan_Kalinich • 00:10, 03.02.2017
Підскажіть будь-ласка, що я роблю не так? Заносить тільки угіддя(
_______________________________________________________
;заносимо угіддя
$PntObj=@Map.SelectLayer ID70009
@Map.Object[$PntObj].Parameter[ID7000901]=001.01 Рілля
@Map.Object[$PntObj].Parameter[ID7000902]=га
@Map.Object[$PntObj].Parameter[ID7000904]=<DeterminationMethod><ExhangeFileCoordinates/></DeterminationMethod>
@Map.RefreshObject $PntObj
;заносимо кадастрову зону
$PntObj=@Map.SelectLayer ID70003
@Map.Object[$PntObj].Parameter[ID7000300]=2120487200
@Map.Object[$PntObj].Parameter[ID7000301]=01
@Map.RefreshObject $PntObj
avatar
-1
2 Микола • 00:43, 03.02.2017
$PntObj=@Map.SelectLayer ID70009 вам поверне кількість виділених об'єктів, а не номер виділеного об'єкта
а присвоювати значення параметрам треба за номером потрібного об'єкта. Номер потрібного об'єкта можна дізнатися функцією @Map.SelectedObject:

@Map.DeselectAll
@Map.SelectLayer ID70009
$PntObj=@Map.SelectedObject
@Map.Object[$PntObj].Parameter[ID7000901]=001.01 Рілля 
@Map.Object[$PntObj].Parameter[ID7000902]=га 
@Map.Object[$PntObj].Parameter[ID7000904]=<DeterminationMethod><ExhangeFileCoordinates/></DeterminationMethod> 
@Map.RefreshObject $PntObj 
;заносимо кадастрову зону
@Map.DeselectAll
@Map.SelectLayer ID70003
$PntObj=@Map.SelectedObject 
@Map.Object[$PntObj].Parameter[ID7000300]=2120487200 
@Map.Object[$PntObj].Parameter[ID7000301]=01 
@Map.RefreshObject $PntObj

скрипт буде діяти тільки при умові, що у вашій ділянці тільки одне угіддя. Якщо ж ви хочете присвоїти відповідні значення усім угіддям, які є на ділянці, то або використовуйте цикл, або @Map.Selected.SetParameter. Наприклад:
@Map.Selected.SetParameter ID7000300 2120487200
avatar