Аналитика http://www.geosystema.net/forum/ |
|
Все про скрипти http://www.geosystema.net/forum/viewtopic.php?f=1&t=2809 |
Страница 70 из 83 |
Автор: | Dmitry_Zolotar [ 09 янв 2020 10:26 ] |
Заголовок сообщения: | Re: Все про скрипти |
Ця функція перевіряє правильність синтаксису XML, ніяких перевірок по схемі(ам). Під час масового відкриття файлів є сенс ці файли перевірити щоб не натискати на кнопки в діалогах ("Похибка відкриття...") на кожному невалідному, яких раніше було багато. |
Автор: | Vaho [ 17 фев 2020 18:01 ] |
Заголовок сообщения: | Re: Все про скрипти |
Доброго дня. Допоможіть будь-ласка зі скриптом. Працював нормально, а сьогодні наче сказився - не працює. В 29 рядку пише помилку, я його пробував видаляти, скрипт виконується, але так криво, що краще б не виконувався. Код: $NumberParam=ID40042
$Tab=@Calc char(9) $Tab=@DequoteText $Tab $SC=@Map.SelCount @if $SC<1 then @Break @Text[1].Clear $I=0 $MC=@Map.Count %LoopObject $I=$I+1 $Sel=@Map.Object[$I].Selected @if $Sel=0 then @Goto %IgnoreObject $N=@Map.Object[$I].Parameter[$NumberParam] $X=@Map.Object[$I].Parameter[-4] $Y=@Map.Object[$I].Parameter[-3] ;$XYZ=@Map.Object[$I].Point[1] ;$X=@StringPart 1 $XYZ ;$Y=@StringPart 2 $XYZ $Line=$N$Tab$X $Line=$Line$Tab$Y @Text[1].Add $Line %IgnoreObject @if $I<$MC then @Goto %LoopObject $FN=@Map.ClearFilename $FN2=_ПольовийЖурнал.dmf $NFN=$FN$FN2 @FileNew $NFN=файл C:\Digitals\ПольовийЖурнал.dmt @Map.DeselectAll ;@Map.SelectObject $I $TL=@Map.Layers.Add 888777000 6 Text table $NO=@Map.NewObject $TL $NewText=@Text[1].Text @Map.Object[$NO].TableText $NewText @Map.RefreshObject $NO @Map.SelectAll @Map.FrameSelected 210 297 0 @ExecuteMenu ViewShowAllShowAll |
Автор: | Dmitry_Zolotar [ 17 фев 2020 18:33 ] |
Заголовок сообщения: | Re: Все про скрипти |
Vaho писал(а): Доброго дня. Допоможіть будь-ласка зі скриптом. Працював нормально, а сьогодні наче сказився - не працює. В 29 рядку пише помилку, я його пробував видаляти, скрипт виконується, але так криво, що краще б не виконувався. Код: $NumberParam=ID40042
$Tab=@Calc char(9) $Tab=@DequoteText $Tab $SC=@Map.SelCount @if $SC<1 then @Break @Text[1].Clear $I=0 $MC=@Map.Count %LoopObject $I=$I+1 $Sel=@Map.Object[$I].Selected @if $Sel=0 then @Goto %IgnoreObject $N=@Map.Object[$I].Parameter[$NumberParam] $X=@Map.Object[$I].Parameter[-4] $Y=@Map.Object[$I].Parameter[-3] $Line=$N$Tab$X $Line=$Line$Tab$Y @Text[1].Add $Line %IgnoreObject @if $I<$MC then @Goto %LoopObject $FN=@Map.ClearFilename $FN2=_ПольовийЖурнал.dmf $NFN=$FN$FN2 @FileNew $NFN @Map.DeselectAll $TL=@Map.Layers.Add 888777000 6 Text table $NO=@Map.NewObject $TL $NewText=@Text[1].Text @Map.Object[$NO].TableText $NewText @Map.RefreshObject $NO @Map.SelectAll @Map.FrameSelected 210 297 0 @ExecuteMenu ViewShowAll |
Автор: | Vaho [ 17 фев 2020 22:01 ] |
Заголовок сообщения: | Re: Все про скрипти |
Dmitry_Zolotar писал(а): Vaho писал(а): Доброго дня. Допоможіть будь-ласка зі скриптом. Працював нормально, а сьогодні наче сказився - не працює. В 29 рядку пише помилку, я його пробував видаляти, скрипт виконується, але так криво, що краще б не виконувався. Код: $NumberParam=ID40042 $Tab=@Calc char(9) $Tab=@DequoteText $Tab $SC=@Map.SelCount @if $SC<1 then @Break @Text[1].Clear $I=0 $MC=@Map.Count %LoopObject $I=$I+1 $Sel=@Map.Object[$I].Selected @if $Sel=0 then @Goto %IgnoreObject $N=@Map.Object[$I].Parameter[$NumberParam] $X=@Map.Object[$I].Parameter[-4] $Y=@Map.Object[$I].Parameter[-3] $Line=$N$Tab$X $Line=$Line$Tab$Y @Text[1].Add $Line %IgnoreObject @if $I<$MC then @Goto %LoopObject $FN=@Map.ClearFilename $FN2=_ПольовийЖурнал.dmf $NFN=$FN$FN2 @FileNew $NFN @Map.DeselectAll $TL=@Map.Layers.Add 888777000 6 Text table $NO=@Map.NewObject $TL $NewText=@Text[1].Text @Map.Object[$NO].TableText $NewText @Map.RefreshObject $NO @Map.SelectAll @Map.FrameSelected 210 297 0 @ExecuteMenu ViewShowAll Нажаль не працює. Просто створює пустий dmf і все |
Автор: | Dmitry_Zolotar [ 18 фев 2020 00:28 ] |
Заголовок сообщения: | Re: Все про скрипти |
Vaho писал(а): Dmitry_Zolotar писал(а): Vaho писал(а): Доброго дня. Допоможіть будь-ласка зі скриптом. Працював нормально, а сьогодні наче сказився - не працює. В 29 рядку пише помилку, я його пробував видаляти, скрипт виконується, але так криво, що краще б не виконувався. Код: $NumberParam=ID40042 $Tab=@Calc char(9) $Tab=@DequoteText $Tab $SC=@Map.SelCount @if $SC<1 then @Break @Text[1].Clear $I=0 $MC=@Map.Count %LoopObject $I=$I+1 $Sel=@Map.Object[$I].Selected @if $Sel=0 then @Goto %IgnoreObject $N=@Map.Object[$I].Parameter[$NumberParam] $X=@Map.Object[$I].Parameter[-4] $Y=@Map.Object[$I].Parameter[-3] $Line=$N$Tab$X $Line=$Line$Tab$Y @Text[1].Add $Line %IgnoreObject @if $I<$MC then @Goto %LoopObject $FN=@Map.ClearFilename $FN2=_ПольовийЖурнал.dmf $NFN=$FN$FN2 @FileNew $NFN @Map.DeselectAll $TL=@Map.Layers.Add 888777000 6 Text table $NO=@Map.NewObject $TL $NewText=@Text[1].Text @Map.Object[$NO].TableText $NewText @Map.RefreshObject $NO @Map.SelectAll @Map.FrameSelected 210 297 0 @ExecuteMenu ViewShowAll Нажаль не працює. Просто створює пустий dmf і все Поміняйте строку Код: @if $SC<1 then @Break на Код: @if $SC<1 then @Break Помітьте точкові об'єкти з номерами в параметрі $NumberParam
|
Автор: | Vaho [ 18 фев 2020 15:15 ] |
Заголовок сообщения: | Re: Все про скрипти |
Dmitry_Zolotar писал(а): Vaho писал(а): Dmitry_Zolotar писал(а): Vaho писал(а): Доброго дня. Допоможіть будь-ласка зі скриптом. Працював нормально, а сьогодні наче сказився - не працює. В 29 рядку пише помилку, я його пробував видаляти, скрипт виконується, але так криво, що краще б не виконувався. Код: $NumberParam=ID40042 $Tab=@Calc char(9) $Tab=@DequoteText $Tab $SC=@Map.SelCount @if $SC<1 then @Break @Text[1].Clear $I=0 $MC=@Map.Count %LoopObject $I=$I+1 $Sel=@Map.Object[$I].Selected @if $Sel=0 then @Goto %IgnoreObject $N=@Map.Object[$I].Parameter[$NumberParam] $X=@Map.Object[$I].Parameter[-4] $Y=@Map.Object[$I].Parameter[-3] $Line=$N$Tab$X $Line=$Line$Tab$Y @Text[1].Add $Line %IgnoreObject @if $I<$MC then @Goto %LoopObject $FN=@Map.ClearFilename $FN2=_ПольовийЖурнал.dmf $NFN=$FN$FN2 @FileNew $NFN @Map.DeselectAll $TL=@Map.Layers.Add 888777000 6 Text table $NO=@Map.NewObject $TL $NewText=@Text[1].Text @Map.Object[$NO].TableText $NewText @Map.RefreshObject $NO @Map.SelectAll @Map.FrameSelected 210 297 0 @ExecuteMenu ViewShowAll Нажаль не працює. Просто створює пустий dmf і все Поміняйте строку Код: @if $SC<1 then @Break на Код: @if $SC<1 then @Break Помітьте точкові об'єкти з номерами в параметрі $NumberParam Ну не працює і хоть ти трісни |
Автор: | Vaho [ 18 фев 2020 15:31 ] |
Заголовок сообщения: | Re: Все про скрипти |
Все, розібрався, там строки місцями поміняти потрібно було. Я тільки не розумію як вони самі по собі перемістилися. А сталося це після вчорашнього оновлення |
Автор: | VictorR [ 07 мар 2020 10:14 ] |
Заголовок сообщения: | Re: Все про скрипти |
Доброго дня! Може в когось є скрипт, який бы перетворював в XML суміжника з фізичної особи в юридичну. Наприклад: Петров|Петро|Петрович землі гр. Попова П.П. |
Автор: | Скрипник Дмитро [ 08 мар 2020 01:02 ] |
Заголовок сообщения: | Re: Все про скрипти |
Доброго вечора. Чи є можливість переміщати рамку пічаті за допомогою скрипту? До прикладу мені потрібно (пічать/перемістити вправо і знову пічать перемістити вправо....) Маю ось такий скрипт: $Obj=@Map.SelectedObject @if $Obj=0 then $Vec=1 210 @Map.Object[$Obj].Move $Vec @Window.Refresh но рамку пічаті не переміщає(((( |
Автор: | fendak [ 08 мар 2020 19:20 ] |
Заголовок сообщения: | Re: Все про скрипти |
VictorR писал(а): Доброго дня! Може в когось є скрипт, який бы перетворював в XML суміжника з фізичної особи в юридичну. Наприклад: Петров|Петро|Петрович землі гр. Попова П.П. $I=0 $R=0 $CN=@Map.Count @Map.DeselectAll %SLoop ;номер наступного об'єкта $I=$I+1 $LID=@Map.Object[$I].LayerID @if $LID<>70010 then @Goto %SContinue $Param=@Map.Object[$I].Parameter[ID7001003] $F=0 $PPIB=@XML.XPath Proprietor[1]/LegalEntity/Name <root>$Param</root> @if $PPIB<> then @Goto %SContinue %StartPFiz $F=$F+1 $P1PrFiz=@XML.XPath Proprietor[$F]/NaturalPerson/FullName/LastName <root>$Param</root> @if $P1PrFiz= then @Goto %Next $P1ImFiz=@XML.XPath Proprietor[$F]/NaturalPerson/FullName/FirstName <root>$Param</root> $P1PoFiz=@XML.XPath Proprietor[$F]/NaturalPerson/FullName/MiddleName <root>$Param</root> @if $P1PoFiz=- then $P1PoFiz= @if $P1ImFiz<> then $P1ImFiz=@Calc Copy("$P1ImFiz",1,1) $P1ImFiz=@DequoteText $P1ImFiz @if $P1ImFiz<> then $P1ImFiz=$P1ImFiz. @if $P1PoFiz<> then $P1PoFiz=@Calc Copy("$P1PoFiz",1,1) $P1PoFiz=@DequoteText $P1PoFiz @if $P1PoFiz<> then $P1PoFiz=$P1PoFiz. $P1PIB=$P1PrFiz $P1ImFiz $P1PoFiz @if $PPIB<> then $PPIB=$PPIB, землі гр.$P1PIB @if $PPIB= then $PPIB=землі гр.$P1PIB @if $F<6 then @Goto %StartPFiz %Next $Param=@Map.Object[$I].Parameter[ID7001003] <Proprietor><LegalEntity><Name>$PPIB</Name></LegalEntity></Proprietor> $R=$R+1 @Map.SelectObject $I %SContinue @if $I<$CN then @Goto %SLoop @Break Конвертовано $R суміжників |
Автор: | fendak [ 08 мар 2020 19:32 ] |
Заголовок сообщения: | Re: Все про скрипти |
Скрипник Дмитро писал(а): Доброго вечора. Чи є можливість переміщати рамку пічаті за допомогою скрипту? До прикладу мені потрібно (пічать/перемістити вправо і знову пічать перемістити вправо....) $Properties=@Map.GetProperties $Properties=@ReplaceChar ,.$Properties @Text.Text $Properties $Koor1=@Text.Line[2] $Koor3=@Text.Line[4] $Line1=@Text.Line[1] $Scal=@StringPart 1 $Line1 $XR1=@StringPart 1 $Koor1 $YR1=@StringPart 2 $Koor1 $YR1=$YR1+210*$Scal/1000 $XR2=@StringPart 1 $Koor3 $RozmirR=($XR2-$XR1)*($Scal/1000) $XR2=297*$Scal/1000 $XR2=$XR1+$XR2 $YR2=210*$Scal/1000 $YR2=$YR1+$YR2 @Text.Line[2] $XR1 $YR1 @Text.Line[3] $XR2 $YR1 @Text.Line[4] $XR2 $YR2 @Text.Line[5] $XR1 $YR2 $Properties=@Text.Text $Properties=@ReplaceChar .,$Properties @Map.SetProperties $Properties @Window.Refresh |
Автор: | petrogeo [ 10 мар 2020 17:25 ] | ||
Заголовок сообщения: | Re: Все про скрипти | ||
Доброго дня. Підкажіть будь-ласка, як можна скриптом порахувати площу обмеження по кожному угіддю окремо? Наприклад, на земельній ділянці два угіддя і через них проходить одне обмеження, як вирахувати площу обмеження по кожному угідді? Дякую.
|
Автор: | fendak [ 10 мар 2020 21:28 ] | ||
Заголовок сообщения: | Re: Все про скрипти | ||
petrogeo писал(а): як можна скриптом порахувати площу обмеження по кожному угіддю окремо? Якщо цікавить - це реалізовано в Скрипт-модуль "Документація" і виглядає ось так (див. зображення). Це доволі складний скрипт і він працює тільки в купі з відповідними шаблонами.
|
Автор: | Руслан Пархуць [ 11 мар 2020 01:26 ] |
Заголовок сообщения: | Re: Все про скрипти |
petrogeo писал(а): Доброго дня. Підкажіть будь-ласка, як можна скриптом порахувати площу обмеження по кожному угіддю окремо? Наприклад, на земельній ділянці два угіддя і через них проходить одне обмеження, як вирахувати площу обмеження по кожному угідді? Дякую. Доброго дня, це можете без проблем зробити за допомогою функцiї @Map.IntersectionWithLayer. Ось скрипт накидав, першим параметром $RestrictLayerID є ID шару обмеження (в даному випадку -500) Код: $RestrictLayerID=ID-500 @Map.DeselectAll @Dialog.WaitBox Виберiть контури для аналiзу $ObjectList=@Map.Selected.List @Map.DeselectAll @Text[1].Text=$ObjectList @Text[2].Clear $Count=@Text[1].Count @While $Count>0 %LoopObjectList ; $ObjectID=@Text[1].Line[$Count] $ObjArea=@Map.Object[$ObjectID].Parameter[0] ; $RestrictObj=@Map.IntersectionWithLayer $ObjectID $RestrictLayerID @If $RestrictObj=0 Then @Goto %SkipObjectList $ObjRestArea=@Map.Object[$RestrictObj].Parameter[0] @Map.DeleteObject $RestrictObj @Text[2].Add Об'єкт $ObjectID, площа $ObjArea (пересiчення з шаром $RestrictLayerID складає $ObjRestArea) %SkipObjectList $Count=$Count-1 %LoopObjectList ; $Count=@Text[2].Count @If $Count=0 Then @Break Спiвпадань з шаром $RestrictLayerID не знайдено $Buffer=@Text[2].Text @Dialog.Message $Buffer ... а в цьому скриптi є аналiз декiлькох обмежень Код: $RestrictLayerID=ID-500
; перемiщаємо всi об'єкти шару в шар схованих @Map.SelectLayer $RestrictLayerID $ObjectList=@Map.Selected.List @Text[3].Text=$ObjectList @Map.DeselectAll $RCount=@Text[3].Count @While $RCount>0 %LoopHide $ObjectID=@Text[3].Line[$RCount] @Map.Object[$ObjectID].Layer=-2 ; $RCount=$RCount-1 %LoopHide ; вибираємо об'єкти для аналiзу на перетин @Dialog.WaitBox Виберiть контури для аналiзу $ObjectList=@Map.Selected.List @Map.DeselectAll @Text[1].Text=$ObjectList @Text[2].Clear ; беремо по одному i перевiряємо на пересiчення $RCount=@Text[3].Count @While $RCount>0 %LoopMain $ObjectRest=@Text[3].Line[$RCount] @Map.Object[$ObjectRest].Layer=$RestrictLayerID ; $Count=@Text[1].Count @While $Count>0 %LoopObjectList ; $ObjectID=@Text[1].Line[$Count] $ObjArea=@Map.Object[$ObjectID].Parameter[0] ; $RestrictObj=@Map.IntersectionWithLayer $ObjectID $RestrictLayerID @If $RestrictObj=0 Then @Goto %SkipObjectList $ObjRestArea=@Map.Object[$RestrictObj].Parameter[0] @Map.DeleteObject $RestrictObj @Text[2].Add Об'єкт $ObjectID, площа $ObjArea (пересiчення з об'єктом $ObjectRest шару $RestrictLayerID складає $ObjRestArea) %SkipObjectList $Count=$Count-1 %LoopObjectList ; @Map.Object[$ObjectRest].Layer=-2 @Map.RefreshObject $ObjectRest ; $RCount=$RCount-1 %LoopMain ;------------------------------------------- ; вiдновлюємо видимiсть шару $RCount=@Text[3].Count @While $RCount>0 %LoopShow $ObjectID=@Text[3].Line[$RCount] @Map.Object[$ObjectID].Layer=$RestrictLayerID $RCount=$RCount-1 %LoopShow ;------------------------------------------- ; $Count=@Text[2].Count @If $Count=0 Then @Break Спiвпадань з шаром $RestrictLayerID не знайдено $Buffer=@Text[2].Text @Dialog.Message $Buffer |
Автор: | VictorR [ 21 мар 2020 11:29 ] |
Заголовок сообщения: | Re: Все про скрипти |
Підкажіть будь-ласка як привязати імпортований растр до певної точки.? Необхідно для того щоб привязувати ситуаційний план до правого верхнього кута рамки. |
Страница 70 из 83 | Часовой пояс: UTC + 2 часа |
Powered by phpBB © 2000, 2002, 2005, 2007 phpBB Group http://www.phpbb.com/ |