Библиотека полезных скриптов

Можливо ще є параметри з цією функцією?

Микола доброго дня. Спасибі за скрипт. Дуже корисна річ. Особливо коли терміново треба знайти певну ділянку. А як би зробити, щоб також знайти ділянку в ДМФ?

vinmap.net/forum/viewtopic.php?p=18653#18653

Класний скрипт!!! Чи можна в ньому зробити пошук по частині слова. Наприклад: “Бур-Кравцов ОА.xml” а пошук по частині слова “Кравцов”??? Чи можливо зробити вибір по чому шукати Кадастровий номер чи Прізвище можливо ще й Адресу добавити (тут напевно складно буде)??? В когось є варіанти як це зробити.

Можливо комусь буде корисно:
Якщо у базі файлів не повний кадастровий номер і взагалі невідомо чи є портібна ділянка… чи в *.xml, або кварталі ін4 у яких більше однієї ділянки, хоч і 1250… а потрібно знайти ділянку Кирієнко Євгенії Ігорівни…
Для пошуку слів, чи тексту із декількох слів, українською мовою у середині файлів для вказаної папки та всіх внутрішніх папок у файлах: *.in4, *.xml, .uws на сьогоднішній день користуюсь програмою DocFetcher.
Аналоги: AVSearch та Findtxt - відпочивають поряд з DocFetcher. (Інтерфейс російською мовою).
При першому додаванні папки для індексації у переліку “Розширення файлів” - Звичайний текст: добавляємо із випадаючого списку розширення наших файлів (
.in4, *.xml, *.uws) та запускаємо індексацію.
Потім тільки у полі пошуку вводимо те що хочемо знайти і отримаємо у верхньому вікні список файлів у яких є такі слова… а у нижньому попередній перегляд тексту всередині цього файлу і переглядяємо по черзі усі варіанти…
Можете самі почитать:
http://docfetcher.sourceforge.net/ru/index.html

Доброго ВАМ дня! Скажіть чи поділіться будь ласка скриптом (якщо не важко), який би підписував координату Х та У кожної поворотної точки земельної ділянки. Дякую.

Можна так:
;вкажіть id шару, в якому створювати точки
$id=id70001
$MapCount=@MapCount
@if $MapCount=0 then @Break
$N=@Map.SelCount
@If $N<1 @Break Виділіть об’єкт для створення підписів
@Map.AddNodes $id 1
@Map.Selected.CreateCaptions -4 1 2 1 1 2 5
@Map.Selected.CreateCaptions -3 1 2 1 1 2 2

Дякую.Дякую.Дякую.Дякую.Дякую.Дякую.Дякую.Дякую.Дякую. :smiley:

[quote=“Dmitry_Zolotar”]
Извлечение в In4 всех участков в карте

Скрипт извлекает в In4 все участки и записывает в рабочую папку(Сервис-Настройки-Главная-Рабочая папка по умолчанию). Удобен при большом кол-ве участков в карте тем что, в отличии от команды “Извлечь в ин4…”, закрывает за собой окна и следит за дубляжем имен файлов.

А можливо дописати скріпт так, щоб викачуємий in4 файл і присвоював кадастровий номер земельної ділянки у форматі, наприклад - 6825088400:05:003:1208, але без двокрапки???

А можливо все так само, тільни ім’я файла щоб витягувало з:

=Parent[23]:Parent[24]:Parent[25]:CUT(4,4,P[34]) КН_Кадастровий номер ЗД

і зберігало у вигляді кадастрового номера без двокрапки, дуже потрібно!!!
Щиро вдячний!

[quote=“Dmitry_Zolotar”]
Извлечение в In4 всех участков в карте

$Path=d:\temp
$FE=@FolderExists $Path
@if $FE<>1 then @Break Путь “$Path” не существует
$SL=@Map.Selected.List
@Text[1].Text $SL
$SC=@Text[1].Count
@if $SC<1 then @Break Пометьте Іn4-участок(ки)
$SourceMap=@ActivateMap
@Map.DeselectAll
$I=0
%Loop
$I=$I+1
$SO=@Text[1].Line[$I]
$LID=@Map.Object[$SO].LayerID
@if $LID<>20000 then @Goto %Next
@Map.SelectObject $SO
$CadNumber=@Map.Object[$SO].CalculateFormula PARENTDSPARENTSDP[SC]
$FN=@Map.Object[$SO].Parameter[CM]
@if $FN= then $FN=$CadNumber
@if $FN= then @Goto %Next
Файл | Извлечь участок в In4
@Map.SaveToFile $Path$FN.in4
@CloseMap
@ActivateMap $SourceMap
@Map.DeselectAll
%Next
@if $I<$SC then @Goto %Loop

:exclamation: :exclamation: :exclamation: :exclamation: :exclamation: :exclamation: :exclamation: :exclamation: :exclamation: :exclamation: :exclamation: :exclamation: :exclamation: :exclamation: :exclamation: :exclamation: :exclamation: :exclamation: :exclamation: :exclamation: :exclamation:

PS: Якщо можливо зробіть будь ласка схожий скріпт під *.XML, бо я в програмуванні повний - 0!
Щиро вдячний за допомогу! :slight_smile:

А у вас що карта із масивом вже готових ХМЛ? Чи ви хочете, щоб зразу конвертувало в ХМЛ?

Так у мене карта із масивом вже готових ХМЛ, а тепер потрібно витягнути їх по окремості і щоб назва файла містила кадастровий номер земельної ділянки :arrow_right: *(19-и значний).xml :arrow_right: і бажано в одну папку на локальному диску! Ооо!

Проблема в тому, що в дігіталс нема функції - витягнути в ХМЛ. Через це складно суміжники сформувати.

Можливо є резон з Олійником переговорити, щоб добавили в дігіталс функцію - витягнути в ХМЛ!!!???

чому після привязки усіх чотирьох точок нічого далі не відбувається? усе зупиняється і залишається початкова ділянка тільки з привязками точок…?

Колись писав щось подiбне для товариша з Закарпаття, може чимось Вам поможе

;Для ЦIМБОРА (формування окремих ХМЛ з одного масиву 09.04.2015) $Count=@MapCount ;вихiд, коли не вiдкрито жодної карти @if $Count=0 @Break $Source=@ActivateMap $FPath=@Map.ClearFilename $FPath=@ExtractFilePath $FPath ;перевiрка, чи немає лишнiх об'єктiв на шарах in4 @Map.DeselectAll @Map.SelectLayer ID10000 ID20000 ID30000 ID50000 $ParcCnt=@Map.SelCount @if $ParcCnt=0 then @Goto %PRStart $DLG=@Dialog.Confirm На шарах IN4 є об'єкти. Витерти їх для коректного виконання програми? @if $DLG=0 then @Break @Map.Selected.Delete %PRStart: ;витираємо шари IN4 $Lay=@Map.Layers.FindByID ID10000 @if $Lay<>0 then @Map.Layers.Delete $Lay $Lay=@Map.Layers.FindByID ID20000 @if $Lay<>0 then @Map.Layers.Delete $Lay $Lay=@Map.Layers.FindByID ID30000 @if $Lay<>0 then @Map.Layers.Delete $Lay $Lay=@Map.Layers.FindByID ID50000 @if $Lay<>0 then @Map.Layers.Delete $Lay ; шари видалено @Map.DeselectAll ; берем загальнi данi xml @Map.SelectLayer ID70003 $DS=@Map.NextSelected $DS=@Map.GetObjectParamBuf $DS @Map.DeselectAll ;працюєм далi $Count=@Map.Count $CurrentObject=0 %Loop ;копiюєм в буфер шар 'реквiзити файлу' @Map.SelectLayer ID70000 @Map.Selected.Copy @Map.DeselectAll $CurrentObject=$CurrentObject+1 $LID=@Map.Object[$CurrentObject].LayerID @if $LID<>70005 then @Goto %Continue @Map.SelectObject $CurrentObject @ExecuteMenu FileExtractToIn4 $Target=@ActivateMap ;@Dialog.Message before PASTE ;вставляєм з буферу шар 'реквiзити файлу' @Map.Paste ;@Dialog.Message after PASTE ; записуємо данi 'DS' @Map.DeselectAll @Map.SelectLayer ID70003 $ParcCnt=@Map.SelCount @if $ParcCnt=0 then @Goto %CRLayer ;@Dialog.Message OLD %SetParam: $DSnew=@Map.NextSelected @Map.SetObjectParamBuf $DSnew|$DS @Map.DeselectAll ;@Dialog.Message Set parameter to obj: $DSnew @goto %NextCHK %CRLayer: ; наступну стрiчку забрати для подальшого вiдлагоджування ; @goto %NextCHK $Bnum=$CurrentObject ;@Dialog.Message OK $Bnum ; пошук елементу "Дiлянка" $CountXMLmap=@Map.Count %FindBND ;@Dialog.Message $CountXMLmap $ObjID=@Map.Object[$CountXMLmap].ID @if $CurrentObject<>$ObjID then @goto %ExitCycle ;знайдено об'єкт з нашою дiлянкою в новоствореному файлi $Bnum=@Map.Object[$CountXMLmap].Index ;@Dialog.Message IDX=$Bnum %ExitCycle $CountXMLmap=$CountXMLmap-1 @if $CountXMLmap>0 then @goto %FindBND @Map.DeselectAll ;копiюємо дiлянку в шар 'кадастрова зона' @Map.Object[$Bnum].Select @Map.Selected.Copy @Map.Paste @Map.ChangeSelectedLayer ID70003 ;@Dialog.Message End $Bnum ; ;@Dialog.Message NEW OK ;створюємо новий шар на основi дiлянки @goto %SetParam %NextCHK ; перевiрки: ; 1. якщо є шар in4-сумiжник перекидаємо його в xml-сумiжник @Map.SelectLayer ID50000 @if @Map.SelCount=0 then @Goto %XMLcreate @Map.ChangeSelectedLayer ID70010 %XMLcreate ; 2. перевiрка на к-сть дiлянок в малюнку (якщо > 1 тодi ; перекидаєм їх на шар з сумiжниками) @Map.DeselectAll @Map.SelectLayer ID70005 $ParcCnt=@Map.SelCount ; - якщо одна тодi далi @if $ParcCnt=1 then @Goto %Single ; - якщо > одної тодi $XMLobject=0 ;@Dialog.Message START %Loop2 $XMLobject=@Map.NextSelected $XMLobject $IDX=@Map.Object[$XMLobject].ID ;@Dialog.Message $ParcCnt $XMLobject $IDX $CurrentObject @if $IDX<>$CurrentObject then @Goto %ReplLayer ; викидаємо саму дiлянку з списку помiчених ;@Dialog.Message Замiна $IDX @Map.DeselectObject $XMLobject ;@Dialog.Message del %NextStep $ParcCnt=$ParcCnt-1 @if $ParcCnt>0 then goto %Loop2 @Goto %Single %ReplLayer: @Map.DeselectAll @Map.SelectObject $XMLobject ; прайюємо з параметрами XML Дiлянка-Сумiжник ; формуємо данi про землекористувача $A=@Map.Object[$XMLobject].Parameter[63] $Sstr=@Calc Pos("<Authentication>","$A") $Estr=@Calc Pos("</Authentication>","$A") $A=@Calc Copy("$A",$Sstr+16,$Estr-$Sstr-16) $A=@DequoteText $A $A=<Proprietor>$A</Proprietor> ; перекидаєм помiченi на шар сумiжникiв @Map.Selected.ChangeLayer ID70010 @Map.Selected.SetParameter 106 $A @Goto %XMLcreate ; %Single: @Map.DeselectAll ;$FName=@Map.ClearFilename $FName=@Map.XMLCadastralNumber $FName=$FPath$FName ;@Dialog.Message $FName $Suffix=0 %NextSuffix $Suffix=$Suffix+1 $FFN=$FName @if $Suffix<>1 then $FFN=$FFN($Suffix) $FFN=$FFN.xml $FE=@FileExists $FFN @if $FE<>0 then @Goto %NextSuffix %SaveIn4 @Map.SaveToFile $FFN @CloseMap $Target %Continue @ActivateMap $Source @Map.DeselectAll @if $CurrentObject<$Count then @Goto %Loop ;

$Count=@MapCount
@if $Count=0 @Break 
@Map.DeselectAll
$Dialog=@Dialog.WaitBox Виберiть початкову лiнiю для роботи 
@If $Dialog=0 @Break
$ObjSel=@Map.SelCount
@if $ObjSel=0 @Break
@if $ObjSel > 1 then goto %ErrCount
$NObj=@Map.NextSelected
$Cnt=@Map.Object[$NObj].Count
@if $Cnt<2 then goto %ErrLine
%Cycle
$CntP=$Cnt-1   
$PntPrev=@Map.Object[$NObj].Point[$CntP]
$PntCur=@Map.Object[$NObj].Point[$Cnt]
$LnAng=@Map.Object[$NObj].LineAngle[$CntP]
$LnAng=@Calc Replace("$LnAng",",",".")
$InputP=@Dialog.Ask Введiть довжину та кут (25.00 90 00 00)
$InputP=@Calc Replace("$InputP",".",",")
$InputP=@DequoteText $InputP
$Dist=@StringPart 1 $InputP
$Dist=@Calc Replace("$Dist",",",".")
$Dist=@DequoteText $Dist
$Ang1=@StringPart 2 $InputP
$Ang2=@StringPart 3 $InputP
$Ang3=@StringPart 4 $InputP
@If $Ang1= then $Ang1=0
@If $Ang2= then $Ang2=0
@If $Ang3= then $Ang3=0
@if $Ang1 < 0 then goto %LeftCrd
$Angle=(($Ang3/60+$Ang2)/60+$Ang1)*-1
@Goto %Next
%LeftCrd
$Angle=(($Ang3/60+$Ang2)/60-$Ang1)
%Next
$Angle=$LnAng-180+$Angle
$Rad=$Angle*3.1415926535897932384626433832795028841971/180
$ACos=@Calc Cos($Rad)
$PntX=@StringPart 1 $PntCur
$PntY=@StringPart 2 $PntCur
$PntX=@Calc Replace("$PntX",",",".")
$PntY=@Calc Replace("$PntY",",",".")
$DX=$PntX+$ACos*$Dist
$DX=@Calc Replace("$DX",".",",")
$DX=@DequoteText $DX
$ASin=@Calc Sin($Rad)
$DY=$PntY+$ASin*$Dist
$DY=@Calc Replace("$DY",".",",")
$DY=@DequoteText $DY
@Map.Object[$NObj].AddPoint $DX $DY
@Map.Selected.Refresh
@Window.ShowSelected
@Window.Position $DX $DY
$Cnt=@Map.Object[$NObj].Count
@Goto %Cycle
@goto %End
%ErrLine
@dialog.message Виберiть лiнiйний елемент для роботи
@goto %End
%ErrCount
@dialog.message Виберiть лише один лiнiйний елемент для роботи
%End

А би ще по цьому і звіт зформувати.

звiт в Geodesy.exe :slight_smile:

[size=85]10.12.2016 дописав роботу з замкненими контурами[/size]

; www.vinmap.net/forum/viewtopic.php?f=1&t=2539&start=120#38388
; 09.12.2016
$Count=@MapCount
@if $Count=0 @Break
$Sel=@Map.SelCount
@if $Sel=0 then @break Виберiть елементи
$Obj=0
;Parameters
$Dist=100
$Param=4
%Cycle
$Obj=@Map.NextSelected $Obj
$PntCnt=@Map.Object[$Obj].Count
@if $PntCnt<3 then goto %SkipElem
; якщо контур замкнений
$Closed=@Map.Object[$Obj].Closed
@if $Closed=1 then @goto %CloseElem
$PntCnt=$PntCnt-1
%DrawBS
@if $PntCnt=1 then @goto %SkipElem
$PrvCnt=$PntCnt-1
$LnAng1=@Map.Object[$Obj].LineAngle[$PntCnt]
$LnAng2=@Map.Object[$Obj].LineAngle[$PrvCnt]
@goto %Next
%CloseElem
$EndPnt=@Map.Object[$Obj].Count
$EndPnt=$EndPnt-1
$LnAng1=@Map.Object[$Obj].LineAngle[$EndPnt]
$LnAng2=@Map.Object[$Obj].LineAngle[1]
%Next
$PntCur=@Map.Object[$Obj].Point[$PntCnt]
$LnAng1=@Calc Replace("$LnAng1",",",".")
$LnAng1=@DequoteText $LnAng1
$LnAng2=@Calc Replace("$LnAng2",",",".")
$LnAng2=@DequoteText $LnAng2
$LnAng2=$LnAng2+180
@if $LnAng2>360 then $LnAng2=$LnAng2-360
$Angle=$LnAng1-180+($LnAng2-$LnAng1)/2
@if $LnAng2<$LnAng1 then $Angle=$Angle+180
$Rad=$Angle*3.1415926535897932384626433832795028841971/180
$ACos=@Calc Cos($Rad)
$PntX=@StringPart 1 $PntCur
$PntY=@StringPart 2 $PntCur
$PntX=@Calc Replace("$PntX",",",".")
$PntY=@Calc Replace("$PntY",",",".")
$PntX=@DequoteText $PntX
$PntY=@DequoteText $PntY
$DX=$PntX+$ACos*$Dist
$DX=@Calc Replace("$DX",".",",")
$DX=@DequoteText $DX
$ASin=@Calc Sin($Rad)
$DY=$PntY+$ASin*$Dist
$DY=@Calc Replace("$DY",".",",")
$DY=@DequoteText $DY
$PntX=@Calc Replace("$PntX",".",",")
$PntY=@Calc Replace("$PntY",".",",")
$PntX=@DequoteText $PntX
$PntY=@DequoteText $PntY
$Layer=@Map.Object[$Obj].Layer
$N=@Map.AddObject 0|1|$Layer|2|0 $PntX $PntY 0|0 $DX $DY 0|1|$Layer|1|$Param $Angle
$PntCnt=$PntCnt-1
@if $PntCnt>0 then @goto %DrawBS
%SkipElem
$Sel=$Sel-1
@if $Sel>0 then @goto %Cycle
%End