Аналитика

Цифровая фотограмметрия, картография и землеустройство
Текущее время: 22 ноя 2017 16:44

Часовой пояс: UTC + 2 часа




Начать новую тему Ответить на тему  [ Сообщений: 161 ]  На страницу Пред.  1 ... 4, 5, 6, 7, 8, 9, 10, 11  След.
Автор Сообщение
 Заголовок сообщения: Re: Библиотека полезных скриптов
СообщениеДобавлено: 11 сен 2015 14:51 
Специалист
Специалист

Зарегистрирован:
04 май 2011 13:47
Сообщения: 37
sergykydr писал(а):
sirenko_s_a писал(а):
А як зробити щоб по кожному окремому обмеженню забивати інформацію. Бо коли вибираєш ЛЕП то присвоює ЛЕП всім існуючим обмеженням на ділянці.


Так не повино бути, десь помилка. Скиньте скрін з менеджеру шарів вашого XML.


добавив розшифрування обмеження 01.05 Охоронна зона ..... Все одно


Вложения:
Image 003.jpg
Image 003.jpg [ 49.06 Кб | Просмотров: 9549 ]
Вернуться к началу
 Профиль Отправить email  
 
 Заголовок сообщения: Re: Библиотека полезных скриптов
СообщениеДобавлено: 12 сен 2015 08:40 
Эксперт
Эксперт

Зарегистрирован:
09 сен 2014 19:26
Сообщения: 97
Всеж таки краще привязуватись до ID параметру:

%LEP
@Map.Selected.SetParameter ID7000801 Охоронна зона навколо (вздовж) об’єкта енергетичної системи
@Map.Selected.SetParameter ID7000803 <RestrictionEntitlement><DocumentType>01</DocumentType><DocumentName>Закон України "Про землі енергетики та правовий режим спеціальних зон енергетичних об'єктів"</DocumentName><DocumentDate>2010-07-09</DocumentDate></RestrictionEntitlement>
@Map.Selected.SetParameter ID7000808 <RestrictionTerm><Permanent/></RestrictionTerm>
@Map.Selected.SetParameter ID7000812 <Payment><Free/></Payment>
@Dialog.Message Для виділеного об'єкта вибрано тип обмеження:"$Tip"
@goto %konecobmez


Вернуться к началу
 Профиль Отправить email  
 
 Заголовок сообщения: Re: Библиотека полезных скриптов
СообщениеДобавлено: 15 сен 2015 12:33 
Специалист
Специалист

Зарегистрирован:
04 май 2011 13:47
Сообщения: 37
sergykydr писал(а):
Всеж таки краще привязуватись до ID параметру:

%LEP
@Map.Selected.SetParameter ID7000801 Охоронна зона навколо (вздовж) об’єкта енергетичної системи
@Map.Selected.SetParameter ID7000803 <RestrictionEntitlement><DocumentType>01</DocumentType><DocumentName>Закон України "Про землі енергетики та правовий режим спеціальних зон енергетичних об'єктів"</DocumentName><DocumentDate>2010-07-09</DocumentDate></RestrictionEntitlement>
@Map.Selected.SetParameter ID7000808 <RestrictionTerm><Permanent/></RestrictionTerm>
@Map.Selected.SetParameter ID7000812 <Payment><Free/></Payment>
@Dialog.Message Для виділеного об'єкта вибрано тип обмеження:"$Tip"
@goto %konecobmez


Просто супер з прив'язкою до ID


Вернуться к началу
 Профиль Отправить email  
 
 Заголовок сообщения: Re: Библиотека полезных скриптов
СообщениеДобавлено: 22 сен 2015 12:15 
Эксперт
Эксперт

Зарегистрирован:
11 сен 2012 09:11
Сообщения: 51
fendak писал(а):
Написав сприпт, який автоматично визначає в якій стороні світу знаходиться межовий знак
Тут можна переглянути відео, як воно працює

Перед запуском відриваємо IN4
Код:
;Перевірка наявності відкритої карти
$CountMap=@MapCount
@If $CountMap=0 then @Break Для роботи скрипту потрібен IN4
$N=@Map.Count
@If $N=0 @Break На карті немає об'єктів
@Map.DeselectAll
@Map.SelectLayer ID20000
$N=@Map.SelCount
@If $N=0 @Break На карті немає ділянок
@Map.Selected.CreateCaptions -9 0 2 1 1 2 3
@Map.Copy
$SelObj=@Map.SelectedObject
$Range=@Map.Object[$SelObj].GetMinMax
$MinX=@StringPart 1 $Range
$MinX=%Library.ReplaceComma $MinX
$MinX=$MinX-1
$MaxX=@StringPart 4 $Range
$MaxX=%Library.ReplaceComma $MaxX
$MaxX=$MaxX+1
$CntrX=@Calc ($MinX+$MaxX)/2
$MinY=@StringPart 2 $Range
$MinY=%Library.ReplaceComma $MinY
$MinY=$MinY-1
$MaxY=@StringPart 5 $Range
$MaxY=%Library.ReplaceComma $MaxY
$MaxY=$MaxY+1
$CntrY=@Calc ($MinY+$MaxY)/2
;
$Ser1X=@Calc ($MaxX-$MinX)/3+$MinX
$Ser2X=@Calc ($MaxX-$MinX)/3+$Ser1X
$Ser1Y=@Calc ($MaxY-$MinY)/3+$MinY
$Ser2Y=@Calc ($MaxY-$MinY)/3+$Ser1Y
;
@FileNew Визначення сторони світу
@Map.Layers.SetAttributes 2 0 0 16777215 30 1 16777215 0 Courier_New 80 0 -2147483640
$P1=@Map.NewObject ID10000
@Map.Object[$P1].AddPoint $CntrX $CntrY
@Map.Object[$P1].AddPoint $Ser2X $MinY
@Map.Object[$P1].AddPoint $MaxX $MinY
@Map.Object[$P1].AddPoint $MaxX $Ser1Y
@Map.Object[$P1].AddPoint $CntrX $CntrY
@Map.Object[$P1].Delete 1
;
$P2=@Map.NewObject ID10000
@Map.Object[$P2].AddPoint $CntrX $CntrY
@Map.Object[$P2].AddPoint $MaxX $Ser1Y
@Map.Object[$P2].AddPoint $MaxX $Ser2Y
@Map.Object[$P2].AddPoint $CntrX $CntrY
@Map.Object[$P2].Delete 1
;
$P3=@Map.NewObject ID10000
@Map.Object[$P3].AddPoint $CntrX $CntrY
@Map.Object[$P3].AddPoint $MaxX $Ser2Y
@Map.Object[$P3].AddPoint $MaxX $MaxY
@Map.Object[$P3].AddPoint $Ser2X $MaxY
@Map.Object[$P3].AddPoint $CntrX $CntrY
@Map.Object[$P3].Delete 1
;
$P4=@Map.NewObject ID10000
@Map.Object[$P4].AddPoint $CntrX $CntrY
@Map.Object[$P4].AddPoint $Ser2X $MaxY
@Map.Object[$P4].AddPoint $Ser1X $MaxY
@Map.Object[$P4].AddPoint $CntrX $CntrY
@Map.Object[$P4].Delete 1
;
$P5=@Map.NewObject ID10000
@Map.Object[$P5].AddPoint $CntrX $CntrY
@Map.Object[$P5].AddPoint $Ser1X $MaxY
@Map.Object[$P5].AddPoint $MinX $MaxY
@Map.Object[$P5].AddPoint $MinX $Ser2Y
@Map.Object[$P5].AddPoint $CntrX $CntrY
@Map.Object[$P5].Delete 1
;
$P6=@Map.NewObject ID10000
@Map.Object[$P6].AddPoint $CntrX $CntrY
@Map.Object[$P6].AddPoint $MinX $Ser2Y
@Map.Object[$P6].AddPoint $MinX $Ser1Y
@Map.Object[$P6].AddPoint $CntrX $CntrY
@Map.Object[$P6].Delete 1
;
$P7=@Map.NewObject ID10000
@Map.Object[$P7].AddPoint $CntrX $CntrY
@Map.Object[$P7].AddPoint $MinX $Ser1Y
@Map.Object[$P7].AddPoint $MinX $MinY
@Map.Object[$P7].AddPoint $Ser1X $MinY
@Map.Object[$P7].AddPoint $CntrX $CntrY
@Map.Object[$P7].Delete 1
;
$P8=@Map.NewObject ID10000
@Map.Object[$P8].AddPoint $CntrX $CntrY
@Map.Object[$P8].AddPoint $Ser1X $MinY
@Map.Object[$P8].AddPoint $Ser2X $MinY
@Map.Object[$P8].AddPoint $CntrX $CntrY
@Map.Object[$P8].Delete 1
@Window.Refresh
@Map.Paste
@Map.SelectLayer ID20000
@Map.AddNodes 30
@Map.DeselectAll
Перевірка | Очистить удаленные объекты
@Map.SelectAll
Вигляд | Показати позначені
$MC=@Map.Count
$N=0
@Map.DeselectAll
%Pochatok
$N=$N+1
$LID=@Map.Object[$N].LayerID
@If ($LID=10000) then @Goto %Next
$NomerT=@Map.Object[$N].Parameter[91]
@Map.SelectObject $N
@Map.Selected.Cut
@Map.Paste
$ParentObj=@Map.ParentObject $N
@if $ParentObj=$P1 then @Dialog.Message Точка $NomerT знаходиться на північному заході ділянки
@if $ParentObj=$P2 then @Dialog.Message Точка $NomerT знаходиться на півночі ділянки
@if $ParentObj=$P3 then @Dialog.Message Точка $NomerT знаходиться на північному сході ділянки
@if $ParentObj=$P4 then @Dialog.Message Точка $NomerT знаходиться на сході ділянки
@if $ParentObj=$P5 then @Dialog.Message Точка $NomerT знаходиться на південному сході ділянки
@if $ParentObj=$P6 then @Dialog.Message Точка $NomerT знаходиться на півдні ділянки
@if $ParentObj=$P7 then @Dialog.Message Точка $NomerT знаходиться на південному заході ділянки
@if $ParentObj=$P8 then @Dialog.Message Точка $NomerT знаходиться на заході ділянки
@Map.DeselectAll
%Next
@if $N<$MC then @Goto %Pochatok


Вернуться к началу
 Профиль Отправить email  
 
 Заголовок сообщения: Re: Библиотека полезных скриптов
СообщениеДобавлено: 22 сен 2015 12:23 
Эксперт
Эксперт

Зарегистрирован:
11 сен 2012 09:11
Сообщения: 51
[quote="fendak"]Написав сприпт, який автоматично визначає в якій стороні світу знаходиться межовий знак

Подскажите пожалуйста, что сделать что б прописывало стороні света в параметр ну например "Опис місцезнаходження МежЗнака" (Спасибо)


Вернуться к началу
 Профиль Отправить email  
 
 Заголовок сообщения: Re: Библиотека полезных скриптов
СообщениеДобавлено: 23 сен 2015 20:22 
Гуру
Гуру

Зарегистрирован:
05 апр 2012 10:20
Сообщения: 469
замість
@if $ParentObj=$P1 then @Dialog.Message Точка $NomerT знаходиться на північному заході ділянки
...
напишіть
@if $ParentObj=$P1 then $S=північному заході
...(аналогічно для усіх інших сторін світу)
@Text.Add $S

і в кінці скрипта добавте
$S=@Text.Text
;створюємо параметр ID7000581
$S=@Map.Parameters.Get ID7000581
@if $S= then @Map.Parameters.Add 7000580 5 Список сторін світу
;добавляєм параметр ID7000581 в список доступних шару XML : Земельна ділянка
$S=@Map.Layers.GetValidParameters ID70005
@Map.Layers.SetValidParameters ID70005 $S ID7000581
@Map.SelectLayer ID70005
$obj=@Map.SelectedObject
@Map.Object[$obj].Parameter[ID7000580] $Res

В результаті в шарі ХМЛ Земельна ділянка добавиться новий параметр (ID7000581), куди буде записано список сторін світу для усіх точок ділянки. Номер строки в списку відповідатиме номеру точки.

_________________
додатково про скрипти Digitals на www.digitals.at.ua


Вернуться к началу
 Профиль Отправить email  
 
 Заголовок сообщения: Re: Библиотека полезных скриптов
СообщениеДобавлено: 23 сен 2015 22:30 
Эксперт
Эксперт

Зарегистрирован:
11 сен 2012 09:11
Сообщения: 51
fendak писал(а):
замість
@if $ParentObj=$P1 then @Dialog.Message Точка $NomerT знаходиться на північному заході ділянки
...
напишіть
@if $ParentObj=$P1 then $S=північному заході
...(аналогічно для усіх інших сторін світу)
@Text.Add $S

і в кінці скрипта добавте
$S=@Text.Text
;створюємо параметр ID7000581
$S=@Map.Parameters.Get ID7000581
@if $S= then @Map.Parameters.Add 7000580 5 Список сторін світу
;добавляєм параметр ID7000581 в список доступних шару XML : Земельна ділянка
$S=@Map.Layers.GetValidParameters ID70005
@Map.Layers.SetValidParameters ID70005 $S ID7000581
@Map.SelectLayer ID70005
$obj=@Map.SelectedObject
@Map.Object[$obj].Parameter[ID7000580] $Res

В результаті в шарі ХМЛ Земельна ділянка добавиться новий параметр (ID7000581), куди буде записано список сторін світу для усіх точок ділянки. Номер строки в списку відповідатиме номеру точки.



Параметр создает но список пуст пишет $Res

Подскажите гда ошибка

$ParentObj=@Map.ParentObject $N
@if $ParentObj=$P1 then $S знаходиться на північному заході ділянки
@if $ParentObj=$P1 then $S знаходиться на півночі ділянки
@if $ParentObj=$P1 then $S знаходиться на північному сході ділянки
@if $ParentObj=$P1 then $S знаходиться на сході ділянки
@if $ParentObj=$P1 then $S знаходиться на південному сході ділянки
@if $ParentObj=$P1 then $S знаходиться на півдні ділянки
@if $ParentObj=$P1 then $S знаходиться на південному заході ділянки
@if $ParentObj=$P1 then $S знаходиться на заході ділянки
@Map.DeselectAll
%Next
@if $N<$MC then @Goto %Pochatok
$S=@Text.Text
@Text.Add $S
;створюємо параметр ID2000081
$S=@Map.Parameters.Get ID2000081
@if $S= then @Map.Parameters.Add 2000080 5 Список сторін світу
;добавляєм параметр ID2000081 в список доступних шару IN4 : Земельна ділянка
$S=@Map.Layers.GetValidParameters ID20000
@Map.Layers.SetValidParameters ID20000 $S ID2000081
@Map.SelectLayer ID20000
$obj=@Map.SelectedObject
@Map.Object[$obj].Parameter[ID2000080] $Res


Вернуться к началу
 Профиль Отправить email  
 
 Заголовок сообщения: Re: Библиотека полезных скриптов
СообщениеДобавлено: 23 сен 2015 22:52 
Гуру
Гуру

Зарегистрирован:
18 апр 2007 11:55
Сообщения: 1865
Откуда: Vinnitsa
Этот код
@if $ParentObj=$P1 then $S знаходиться на північному заході ділянки
@if $ParentObj=$P1 then $S знаходиться на півночі ділянки
@if $ParentObj=$P1 then $S знаходиться на північному сході ділянки
@if $ParentObj=$P1 then $S знаходиться на сході ділянки
@if $ParentObj=$P1 then $S знаходиться на південному сході ділянки
@if $ParentObj=$P1 then $S знаходиться на півдні ділянки
@if $ParentObj=$P1 then $S знаходиться на південному заході ділянки
@if $ParentObj=$P1 then $S знаходиться на заході ділянки


равносилен последней строке
@if $ParentObj=$P1 then $S знаходиться на заході ділянки

Если в $Res ничего не вносилось, то и параметр будет пустой
@Map.Object[$obj].Parameter[ID2000080] $Res

_________________
Команда разработчиков Digitals
(наш e-mail и ICQ находятся в меню Помощь|О программе)
Новичкам сюда | Новые возможности программы | Купить Digitals


Вернуться к началу
 Профиль Отправить email  
 
 Заголовок сообщения: Re: Библиотека полезных скриптов
СообщениеДобавлено: 24 сен 2015 07:17 
Эксперт
Эксперт

Зарегистрирован:
11 сен 2012 09:11
Сообщения: 51
Dmitry_Zolotar писал(а):
Этот код
@if $ParentObj=$P1 then $S знаходиться на північному заході ділянки
@if $ParentObj=$P1 then $S знаходиться на півночі ділянки
@if $ParentObj=$P1 then $S знаходиться на північному сході ділянки
@if $ParentObj=$P1 then $S знаходиться на сході ділянки
@if $ParentObj=$P1 then $S знаходиться на південному сході ділянки
@if $ParentObj=$P1 then $S знаходиться на півдні ділянки
@if $ParentObj=$P1 then $S знаходиться на південному заході ділянки
@if $ParentObj=$P1 then $S знаходиться на заході ділянки


равносилен последней строке
@if $ParentObj=$P1 then $S знаходиться на заході ділянки

Если в $Res ничего не вносилось, то и параметр будет пустой
@Map.Object[$obj].Parameter[ID2000080] $Res


А как внести в $Res.
помогите пожалуйста разобраться. Очень много кроков на участке. (Спасибо)


Вложения:
Screenshot_1.jpg
Screenshot_1.jpg [ 8.29 Кб | Просмотров: 9377 ]
Вернуться к началу
 Профиль Отправить email  
 
 Заголовок сообщения: Re: Библиотека полезных скриптов
СообщениеДобавлено: 24 сен 2015 18:59 
Гуру
Гуру

Зарегистрирован:
05 апр 2012 10:20
Сообщения: 469
$ParentObj=@Map.ParentObject $N
@if $ParentObj=$P1 then $S=межовий знак $NomerT знаходиться на північному заході ділянки
@if $ParentObj=$P2 then $S=межовий знак $NomerT знаходиться на північному заході ділянки
@if $ParentObj=$P3 then $S=межовий знак $NomerT знаходиться на північному заході ділянки
@if $ParentObj=$P4 then $S=межовий знак $NomerT знаходиться на північному заході ділянки
@if $ParentObj=$P5 then $S=межовий знак $NomerT знаходиться на північному заході ділянки
@if $ParentObj=$P6 then $S=межовий знак $NomerT знаходиться на північному заході ділянки
@if $ParentObj=$P7 then $S=межовий знак $NomerT знаходиться на північному заході ділянки
@if $ParentObj=$P8 then $S=межовий знак $NomerT знаходиться на північному заході ділянки
@Map.DeselectAll
@Text.Add $S
%Next
@if $N<$MC then @Goto %Pochatok
@Text.Delete 1
$Res=@Text.Text
;створюємо параметр ID2000081
$P=@Map.Parameters.Get ID2000081
@if $P= then @Map.Parameters.Add 2000081 5 Список сторін світу
;добавляєм параметр ID2000081 в список доступних шару IN4 Ділянка
$P=@Map.Layers.GetValidParameters ID20000
@Map.Layers.SetValidParameters ID20000 $P ID2000081
@Map.SelectLayer ID20000
$obj=@Map.SelectedObject
@Map.Object[$obj].Parameter[ID2000081] $Res

_________________
додатково про скрипти Digitals на www.digitals.at.ua


Вернуться к началу
 Профиль Отправить email  
 
 Заголовок сообщения: Re: Библиотека полезных скриптов
СообщениеДобавлено: 04 ноя 2015 11:17 
Специалист
Специалист

Зарегистрирован:
04 ноя 2010 12:28
Сообщения: 42
Створив скрипт який виносить підписи обєктів, що лежать на ламаній і ровертає їх по ходу ламаної.
Можливо хтось підправить алгоритм.

====================================================
;порядковий номер параметру, підпис з якого буде винесено
$parampidpys=1
;
;---------------------точкові обєкти у список 1
$S=@Map.SelCount
@If $S<=0 @Break виділійть пікети що лежать на лінії
$list=@Map.Selected.List
@Text[1].Text $list
$n=@Text[1].Count
@Text[1].Save d:\\object.txt
@Map.DeselectAll
@Dialog.WaitBox Выделите полилинию
;
;-----------------------вибір полілінії
$line=@Map.SelectedObject
;@if $line<>1 then @Break почніть спочатку
$m=@Map.Object[$line].Count
@if $m<2 then @Break почніть спочатку і виділіть лінію $line $m
;-----------------------точки лінії у список 2
$j=1
%line
$XL=@Map.Object[$line].Point[$j].X
$XL=%Library.ReplaceComma $XL
$XL=@RoundTo $XL 3
$YL=@Map.Object[$line].Point[$j].Y
$YL=%Library.ReplaceComma $YL
$YL=@RoundTo $YL 3
$ZL=@Map.Object[$line].Point[$j].Z
$ZL=%Library.ReplaceComma $ZL
$ZL=@RoundTo $ZL 3
@Text[2].Add $XL $YL $ZL
$j=$j+1
@if $j>$m then @Goto %dali else @Goto %line
%dali
@Progress.Start $N ОБРОБЛЕНО
;@Text[2].Save d:\\text2.line.txt
;-----------------------перебір пікетів
$i=1
%Start
@map.DeselectAll
$O=@Text[1].Line[$i]
;@Map.Object[$O].Select
$XO=@Map.Object[$O].Point[1].X
$XO=%Library.ReplaceComma $XO
$XO=@RoundTo $XO 3
$YO=@Map.Object[$O].Point[1].Y
$YO=%Library.ReplaceComma $YO
$YO=@RoundTo $YO 3
$ZO=@Map.Object[$O].Point[1].Z
$ZO=%Library.ReplaceComma $ZO
$ZO=@RoundTo $ZO 3
;+++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++
$j1=1
%poshuk
$j2=$j1+1
@if $j2>$m then $j2=$j2-2
$p1=@Text[2].Line[$j1]
$p2=@Text[2].Line[$j2]
$x1=@StringPart 1 $p1
$y1=@StringPart 2 $p1
$x2=@StringPart 1 $p2
$y2=@StringPart 2 $p2
;@Dialog.Message $xo $yo||$x1 $y1
@if ($x1=$xo) and ($y1=$yo) then @goto %est else @goto %nextp
%est
$dx=$x2-$x1
$dy=$y2-$y1
$kut=$dy/$dx
$kut=@Calc ArcTg($kut)
$kut=abs($kut*180/3.1415)
@if ($dx>0) and ($dy>0) then $kut=$kut
@if ($dx>0) and ($dy<0) then $kut=360-$kut
@if ($dx<0) and ($dy>0) then $kut=180-$kut
@if ($dx<0) and ($dy<0) then $kut=180+$kut
$kut=3600+900-$kut*10
$kut2=$kut+1800
;@Dialog.Message i=$i j1=$j1 j2=$j2 m=$m kut=$kut z=$zo
@if $kut>=2700 then @goto %priamo else @goto %plus180
%priamo
@Map.Object[$I].Caption[$parampidpys] 0 0 0 $kut 0
;@Dialog.Message priamo
@goto %nextp
%plus180
;----беремо попередній відрізок а не наступний
@if $j1<>1 then $j1=$j1-1
$j2=$j1+1
$p1=@Text[2].Line[$j1]
$p2=@Text[2].Line[$j2]
$x1=@StringPart 1 $p1
$y1=@StringPart 2 $p1
$x2=@StringPart 1 $p2
$y2=@StringPart 2 $p2
$dx=$x2-$x1
$dy=$y2-$y1
$kut=$dy/$dx
$kut=@Calc ArcTg($kut)
$kut=abs($kut*180/3.1415)
@if ($dx>0) and ($dy>0) then $kut=$kut
@if ($dx>0) and ($dy<0) then $kut=360-$kut
@if ($dx<0) and ($dy>0) then $kut=180-$kut
@if ($dx<0) and ($dy<0) then $kut=180+$kut
$kut=3600+900-$kut*10
$kut2=$kut+1800
@Map.Object[$I].Caption[$parampidpys] 0 0 0 $kut2 512
$j1=$j1+1
;--------------------------------------------------
%nextp
$j1=$j1+1
@if $j1>$m then @Goto %nextobj else @Goto %poshuk
;+++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++
%nextobj
@Progress.StepBy
$i=$i+1
@if $i>$n then @Goto %end else @Goto %Start
%end
;--------------закінчено перебір пікетів
@Progress.Stop
@Window.Refresh
@Text[1].Clear
@Text[2].Clear
;
@Break DONE







===============================

В процесі помітив наступну помилку:
Якщо у прикріпленому файлі сворити підписи по існуючим точковим обєктам - то все ок.
Коли дозібрати пікети вручну на вузли лінії - то по них не виносяться підписи.

вирішення проблеми: всі пікети у чистий файл і перенумерація ID потім вставляємо лінію з наступним ID.

Можливо це тільки у мене така проблема з програмою.


Вложения:
test-pidpys.dmf [21.13 Кб]
Скачиваний: 97
Вернуться к началу
 Профиль Отправить email  
 
 Заголовок сообщения: Re: Библиотека полезных скриптов
СообщениеДобавлено: 11 ноя 2015 19:29 
Гуру
Гуру

Зарегистрирован:
05 апр 2012 10:20
Сообщения: 469
Пропоную скрипт, який миттєво знаходить потрібний обмінник в базі з десятки тисяч обмінників.

Скрипт складається із трьох кнопок. Перша перевіряє всі обмінники в папці з базою і складає їх список, записуючи в текствовий файл D:\Baza.txt

$WorkPapka=@Dialog.SelectFolder Виберіть папку з файлами для опрацювання
@if $WorkPapka= then @break
@Text[1].FolderListTree *.in4 $WorkPapka
$FC=@Text[1].Count
@Text[1].Save D:\Baza.txt
@Break Оброблено $FC обмінників


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

@Text[1].Load D:\Baza.txt
$FC=@Text[1].Count
$I=0
%Loop
$I=$I+1
$FN=@Text[1].Line[$I]
$FNShort=@ExtractFileName $FN
@Text[2].Add $FNShort
@if $I<$FC then @Goto %Loop
@Text[2].Save D:\BazaShort.txt
@Dialog.Message Виконано!


Ну і третя кнопка є, власне, для швидкого пошуку обмінників в базі і їх відкриття. При цьому шукаються як IN4 так і XML

@Text[1].Load D:\BazaShort.txt
@Text[2].Load D:\Baza.txt
$KN=@Dialog.Ask Кадастровый номер для пошуку в базі Default=4621283300020010000
$SeartIndex=@Text[1].IndexOf $KN.in4
@if $SeartIndex=0 @Dialog.Message Такого файла in4 в базі нема
@if $SeartIndex=0 then @Goto %Next
$Seart=@Text[2].Line[$SeartIndex]
@FileOpen $Seart
%Next
$SeartIndex2=@Text[1].IndexOf $KN.xml
@if $SeartIndex2=0 @break Такого файла xml в базі нема
$Seart2=@Text[2].Line[$SeartIndex2]
@FileOpen $Seart2


Тобто, першими двома кнопками ми індексуємо базу. Це робиться один раз, якщо база стабільна, без додавання нових обмінників чи час від часу, якщо нові обмінники додаються в базу. І в процесі роботи користуємося тільки третьою кнопкою.

Зручність, також, в тому, що можна відкрити публічну карту, клацнувши два рази на ділянці, отримати її кадастровий номер і, не закриваючи це вікно, запустити скрипт і переписати кадастровий номер у пошукове вікно.

_________________
додатково про скрипти Digitals на www.digitals.at.ua


Вернуться к началу
 Профиль Отправить email  
 
 Заголовок сообщения: Re: Библиотека полезных скриптов
СообщениеДобавлено: 12 ноя 2015 15:27 
Специалист
Специалист

Зарегистрирован:
04 янв 2015 17:12
Сообщения: 40
Пане fendak, це стосується обмінників в папці (ін4, хмл), чи обмінників в карті (дмф)...
Так може хто знає як мені зробити так щоб карта з обмінниками ін4 швидше відкривалась і не вибивало вікна аналіз карти???


Вернуться к началу
 Профиль Отправить email  
 
 Заголовок сообщения: Re: Библиотека полезных скриптов
СообщениеДобавлено: 12 ноя 2015 15:45 
Гуру
Гуру

Зарегистрирован:
05 апр 2012 10:20
Сообщения: 469
це стосується обмінників IN4 та XML у папці.
Аналіз карти відбувається на закладці Інфо та Сбір. На закладці Правка - ні.
Тому можна використати такий скрипт:

%Events.OnFileOpen
@SelectTab 2
%Events.OnAdd
Вигляд | Показати позначені


Добавити його треба в Карта - Скрипт обработки собитий
В результаті після кожного відкриття карти автоматично активуватиметься закладка Правка. Плюс, при вставці об'єктів на карту вони відразу будуть показані на екрані.

_________________
додатково про скрипти Digitals на www.digitals.at.ua


Вернуться к началу
 Профиль Отправить email  
 
 Заголовок сообщения: Re: Библиотека полезных скриптов
СообщениеДобавлено: 12 ноя 2015 19:09 
Гуру
Гуру

Зарегистрирован:
18 апр 2007 11:55
Сообщения: 1865
Откуда: Vinnitsa
GeKo писал(а):
Пане fendak, це стосується обмінників в папці (ін4, хмл), чи обмінників в карті (дмф)...
Так може хто знає як мені зробити так щоб карта з обмінниками ін4 швидше відкривалась і не вибивало вікна аналіз карти???

Аналіз карти відбувається довго коли в параметрах є функція PARENT. В стандартному Normal.dmf, який використовується для відкриття in4 є така функція в параметрі ID106

_________________
Команда разработчиков Digitals
(наш e-mail и ICQ находятся в меню Помощь|О программе)
Новичкам сюда | Новые возможности программы | Купить Digitals


Вернуться к началу
 Профиль Отправить email  
 
Показать сообщения за:  Поле сортировки  
Начать новую тему Ответить на тему  [ Сообщений: 161 ]  На страницу Пред.  1 ... 4, 5, 6, 7, 8, 9, 10, 11  След.

Часовой пояс: UTC + 2 часа


Кто сейчас на конференции

Сейчас этот форум просматривают: Google [Bot], Rostyslav и гости: 5


Вы не можете начинать темы
Вы не можете отвечать на сообщения
Вы не можете редактировать свои сообщения
Вы не можете удалять свои сообщения
Вы не можете добавлять вложения

Найти:
Перейти:  
Powered by phpBB © 2000, 2002, 2005, 2007 phpBB Group
Русская поддержка phpBB