Аналитика
http://geosystema.net/forum/

Библиотека полезных скриптов
http://geosystema.net/forum/viewtopic.php?f=7&t=2539
Страница 11 из 15

Автор:  Руслан Пархуць [ 26 окт 2017 18:00 ]
Заголовок сообщения:  Re: Библиотека полезных скриптов

quickvox писал(а):
Помогите пожалуйста. очень нужен скрипт для проверки несоответствия высот на пересечениях объектов. Нужно что бы точки разных объектов которые пересекаются между собой имели одинаковую высоту, но искать их в ручную нереально сложно. было бы не плохо их в отдельный список выводить для легкого нахождения на карте. Совмещение соседних тут не поможет. иногда одна высота имеет приоритет и нужно указывать ее как высоту для второго объекта пересекающий первый. а функция совместить с соседними делает это автоматом.

1. Можливо Вам допоможе кнопка "Показ центрiв" iз включеною опцiєю "Значення висот".
2. Скрипт робить пошук точок з рiзними висотами i формує в кiнцевому результатi масив з координатами точок перетину, висоти в яких рiзнi. Запис формується у форматi X Y Z ID. (Правда у скриптi застосована ф-цiя EditAlign, яка добавляє точки перетину мiж об'єктами. При потребi закоментуйте рядок з вказаною ф-цiєю )
Код:
$MapCount=@MapCount
@If $MapCount=0 Then @Break Не вiдкрито жодної карти
$SelCount=@Map.SelCount
@If $SelCount=0 Then @Break Не помiчено жодного об'єкту
$Count=$SelCount
$Buf=@Map.Selected.List
@ExecuteMenu EditAlign
@Map.DeselectAll
; масив помiчених об'єктiв
@Text.Text=$Buf
; масив точок перетину
@Text[1].Clear
; масив точок з рiзними висотами
@Text[2].Clear
; основний цикл
%CycleMain
$Obj=@Text.Line[$Count]
$PntCount=@Map.Object[$Obj].Count
$I=1
%CyclePoint
$Point=@Map.Object[$Obj].Point[$I]
@Text[1].Add $Point $Obj
$I=$I+1
@If $I<=$PntCount Then @Goto %CyclePoint
;
$Count=$Count-1
@If $Count>0 Then @Goto %CycleMain
; сортуємо список точок для перевiрки
@Text[1].Sort
$PntCount=@Text[1].Count
$I=1
%CycleList
$MPoint=@Text[1].Line[$I]
;$MPoint=%Library.ReplaceComma $MPoint
$MX=@StringPart 1 $MPoint
$MY=@StringPart 2 $MPoint
$MZ=@StringPart 3 $MPoint
$J=$I+1
%CycleIns
@If $J>$PntCount Then @Goto %NextPoint
$IPoint=@Text[1].Line[$J]
;$IPoint=%Library.ReplaceComma $IPoint
$IX=@StringPart 1 $IPoint
$IY=@StringPart 2 $IPoint
$IZ=@StringPart 3 $IPoint
@If ($MX=$IX) And ($MY=$IY) And ($MZ<>$IZ) Then @Goto %AddPoint
;
%NextPoint
$I=$I+1
@If $I<=$PntCount Then @Goto %CycleList
@Goto %PrintResult
%AddPoint
$EX=@Text[2].IndexOf $MPoint
@If $EX>0 Then @Goto %AddSecPoint
@Text[2].Add $MPoint
%AddSecPoint
$EX=@Text[2].IndexOf $IPoint
@If $EX>0 Then @Goto %ExitAddPoint
@Text[2].Add $IPoint
%ExitAddPoint
$J=$J+1
@Goto %CycleIns
;
%PrintResult
$Count=@Text[2].Count
$Buf=@Text[2].Text
@If $Count>0 Then @Dialog.Message $Buf
; очищення масиву
@Text[2].Clear
@Text[1].Clear
@Text.Clear
;
@Break

Автор:  thom yorke [ 06 ноя 2017 16:17 ]
Заголовок сообщения:  Re: Библиотека полезных скриптов

Dmitry_Zolotar писал(а):
thom yorke писал(а):
Написав тиждень тому, але ніхто ніяк не відповів.

Вибачьте, з ситуацією розібрались і я забув відповісти.

Для проблемних растрів створіть World-файли за допомогою Models.exe-Архив-Экспорт(попередньо обрати діректорію з растрами та виділіти файли в середньому стовпчику). Перевірьте наявність World-файлів для усіх растрів. Видаліть елементи орієнтування з заголовків tif-файлів (кнопка Удалить в середньому стовпчику Models.exe-Архив). Все, можна запускати скрипт.


Знову застряг уже на першому кроці. Models на етапі експорту елементів орієнтування в .txt видає помилку "export error".

Автор:  Dmitry_Zolotar [ 07 ноя 2017 11:33 ]
Заголовок сообщения:  Re: Библиотека полезных скриптов

thom yorke писал(а):
Знову застряг уже на першому кроці. Models на етапі експорту елементів орієнтування в .txt видає помилку "export error".

Відкрийте цей растр в Ged.exe та надішліть інформацію(меню Растр-Свойства) про растр на help@vingeo.com.

Автор:  Dix [ 15 ноя 2017 19:14 ]
Заголовок сообщения:  Re: Библиотека полезных скриптов

Здравствуйте!! Никто не подскажет каким образом средствами скрипта можно открыть определенный документ word и вставить туда переменные которые заранее определены в документе (DocVariable)???

Такая функция когда-то была в программке TCPScript, очень бы хотелось такого функционала и в наших родных скриптах.

Автор:  Dmitry_Zolotar [ 16 ноя 2017 11:00 ]
Заголовок сообщения:  Re: Библиотека полезных скриптов

Dix писал(а):
Здравствуйте!! Никто не подскажет каким образом средствами скрипта можно открыть определенный документ word и вставить туда переменные которые заранее определены в документе (DocVariable)???

Такая функция когда-то была в программке TCPScript, очень бы хотелось такого функционала и в наших родных скриптах.

Скрипт готовит некие данные и запускает Word с созданием документа на основе шаблона Digitals\Templates\TemplateName.dot
Код:
;путь к программе
$PP=@ProgramPath
;заполняем строками
@Text[1].Add DocVar1=Value1
@Text[1].Add DocVar2=Value2
@Text[1].Add DocVar3=Value3
@Text[1].Add DocVar4=Value4
;Копируем в буфер
@Text[1].Copy
;или сохраняем во временный файл
@Text[1].Save $PP\tempdata.txt
;запускаем Ворд с шаблоном
@Run "c:\Program Files (x86)\Microsoft Office\OFFICE11\WINWORD.EXE" /t"$PP\Templates\TemplateName.dot"

В шаблоне TemplateName.dot необходимо добавить обработчик события создания документа

Автор:  fendak [ 18 янв 2018 14:08 ]
Заголовок сообщения:  Re: Библиотека полезных скриптов

Скрипт формує таблицю, яка містить кадастровий номер, ПІБ чи назву землевласника, адресу ділянки, цільове призначення та площу по кожному файлу XML у вибраній папці

Код:
$Tab=@Calc char(9)
$Tab=@DequoteText $Tab
$WorkPapka=@Dialog.SelectFolder Виберіть папку з файлами xml для звіту
@if $WorkPapka= then @break
@Text[1].FolderListTree *.xml $WorkPapka
$TC=@Text[1].Count
@if $TC=0 then @break В папці не виявлено жодного обмінного файла xml
$Len=@Calc Length("$TC")
$L=@Calc Copy("$TC","$Len","1")
@if $L=1 then $TCText="$TC файл"
@if $L>1 then $TCText="$TC файли"
@if $L>4 then $TCText="$TC файлів"
@if $L=0 then $TCText="$TC файлів"
$Len=$Len-1
$L2=@Calc Copy("$TC3","$Len","1")
@if $L2=1 then $TCText="$TC файлів"
$TCText=@DequoteText $TCText
@Progress.Start $TC Обробляю... (всього $TCText)
@Text[2].Add Кадастровий номер$TabПІБ (назва) землевласника$TabАдреса ділянки$TabЦП$TabПлоща
$XML=0
$XMLYes=0
%LoopXML
$XML=$XML+1
@Progress.StepBy 1
$FN=@Text[1].Line[$XML]
$Valid=@XML.Valid $FN
@if $Valid<>1 then @Text[3].Add $FN
@if $Valid<>1 then @Goto %LoopXML
@FileOpen $FN
;кадастровий номер
$KN=@Map.XMLCadastralNumber
@if $KN= then $KN=@Map.ClearShortFilename
;виділяємо ділянку
@Map.DeselectAll
@Map.SelectLayer ID70005
$SC=@Map.SelCount
@if $SC<1 then @Text[3].Add $FN
@if $SC<1 then @Goto %LoopXML
;рахуємо кількість успішно відкритих
$XMLYes=$XMLYes+1
$N=@Map.SelectedObject
;дістаємо адресу ділянки
$ADVse=@Map.Object[$N].Parameter[ID7000500]
$AD=@XML.XPath Settlement $ADVse
$ADTup=@XML.XPath ParcelAddress/StreetType $ADVse
$AD4=@XML.XPath ParcelAddress/StreetName $ADVse
@if $AD4=- then $AD4=
@if $AD4<> then $AD=$AD, $ADTup $AD4
$AD5=@XML.XPath ParcelAddress/Building $ADVse
@if $AD5=- then $AD5=
@if $AD5<> then $AD=$AD, $AD5
$AD6=@XML.XPath ParcelAddress/Block $ADVse
@if $AD6=- then $AD6=
@if $AD6<> then $AD=$AD, $AD6
;цільове використання
$CV=@Map.Object[$N].Parameter[ID7000510]
$CV=@StringPart 1 $CV
;площа
$Area=@Map.Object[$N].Parameter[ID7000516]
;ПІБ чи назва землевласника
$Prop=@Map.Object[$N].Parameter[ID7000520]
$PrCount=@XML.NodeCount /Proprietors ProprietorInfo $Prop
$Res=
@if $PrCount<1 then @Goto %IgnoreProp
$I=0
%StartProp
$I=$I+1
@if $I>1 then $Res=$Res,
$UrCount=@XML.NodeCount /Proprietors/ProprietorInfo[$I]/Authentication LegalEntity $Prop
@if $UrCount=1 then @Goto %Uryd
$LN=@XML.XPath /Proprietors/ProprietorInfo[$I]/Authentication/NaturalPerson/FullName/LastName $Prop
$FN=@XML.XPath /Proprietors/ProprietorInfo[$I]/Authentication/NaturalPerson/FullName/FirstName $Prop
$MN=@XML.XPath /Proprietors/ProprietorInfo[$I]/Authentication/NaturalPerson/FullName/MiddleName $Prop
$Res=$Res$LN $FN $MN
@Goto %NeUryd
%Uryd
$UrydName=@XML.XPath /Proprietors/ProprietorInfo[$I]/Authentication/LegalEntity/Name $Prop
$Res=$Res$UrydName
%NeUryd
@if $I<$PrCount then @Goto %StartProp
%IgnoreProp
;формуємо рядок та додаємо в таблицю
@Text[2].Add $KN$Tab$Res$Tab$AD$Tab $CV$Tab $Area
@CloseMap $FN
$Cancel=@Progress.Canceled
@if $Cancel=1 then @Goto %EndXML
@if $XML<$TC then @Goto %LoopXML
%EndXML
@Progress.Stop
@Text[2].Copy
;рахуємо файли, які не вдалося обробити
$TC3=@Text[3].Count
$Text=
@if $TC3=0 then @Goto %AllGood
$Len=@Calc Length("$TC3")
$L=@Calc Copy("$TC3","$Len","1")
@if $L=1 then $TCText="$TC3 файл"
@if $L>1 then $TCText="$TC3 файли"
@if $L>4 then $TCText="$TC3 файлів"
@if $L=0 then $TCText="$TC3 файлів"
$Len=$Len-1
$L2=@Calc Copy("$TC3","$Len","1")
@if $L2=1 then $TCText="$TC3 файлів"
$TCText=@DequoteText $TCText
$Text=@Text[3].Text
$Text=Не вдалося відкрити чи обробити $TCText:|$Text
%AllGood
@Dialog.Message Оброблено $XMLYes файлів XML. Звіт скопійовано в буфер обміну. Відкрийте таблицю Ексель чи простий блокнот та виконайте команду Вставити. ||$Text


Вложения:
2018-01-18_130624.png
2018-01-18_130624.png [ 22.01 Кб | Просмотров: 49135 ]

Автор:  Vova_u2 [ 14 фев 2018 15:22 ]
Заголовок сообщения:  Re: Библиотека полезных скриптов

не підсткажите скрипт копіювання всіх значень XML в інший, тобто є в діджиталі вікриті 2 XML-ля, потрібно з одного (активного чи як) вставити дані/значення всіх слоїв (XML земельна ділянка, кадастрова зона, квартал, угіддя) в інший. Дуже дякую.

Автор:  fendak [ 14 фев 2018 15:41 ]
Заголовок сообщения:  Re: Библиотека полезных скриптов

на закладці Інфо є кнопка Параметри.
Відкривши перший xml, створіть шаблон.
Відкривши другий, заповніть по шаблону.

Вложения:
2018-02-14_153938.png
2018-02-14_153938.png [ 8.23 Кб | Просмотров: 48564 ]

Автор:  VictorR [ 14 фев 2018 16:55 ]
Заголовок сообщения:  Re: Библиотека полезных скриптов

Або використайте цей скрипт (першою повина бути відкрита карта параметри якої треба скопіювати):

%1
@ActivateMap 1
@Map.DeselectAll
@Map.SelectLayer ID70000
Правка | Копировать
@Map.DeselectAll
@ActivateMap 2
@Map.DeselectAll
@Map.SelectLayer ID70000
Специальная вставка | Только параметры
@Map.DeselectAll
@ActivateMap 1
@Map.DeselectAll
@Map.SelectLayer ID70001
Правка | Копировать
@Map.DeselectAll
@ActivateMap 2
@Map.DeselectAll
@Map.SelectLayer ID70001
Специальная вставка | Только параметры
@Map.DeselectAll
@ActivateMap 1
@Map.DeselectAll
@Map.SelectLayer ID70003
Правка | Копировать
@Map.DeselectAll
@ActivateMap 2
@Map.DeselectAll
@Map.SelectLayer ID70003
Специальная вставка | Только параметры
@Map.DeselectAll
@ActivateMap 1
@Map.DeselectAll
@Map.SelectLayer ID70004
Правка | Копировать
@Map.DeselectAll
@ActivateMap 2
@Map.DeselectAll
@Map.SelectLayer ID70004
Специальная вставка | Только параметры
@Map.DeselectAll
@ActivateMap 1
@Map.DeselectAll
@Map.SelectLayer ID70005
Правка | Копировать
@Map.DeselectAll
@ActivateMap 2
@Map.DeselectAll
@Map.SelectLayer ID70005
Специальная вставка | Только параметры
@Map.DeselectAll
@FileClose
@goto %1


Можна одразу відкрити n-ну кількість XML параметри яких буде змінено як у першого файла. Скрипт недороблений але користуватися можна.

Автор:  -Ivan- [ 17 мар 2018 12:12 ]
Заголовок сообщения:  Re: Библиотека полезных скриптов

Питання: що буде, якщо папку Digitals тимати на Dropbox (чи вплине це якось на програму і як)?

Автор:  Ryvol [ 17 мар 2018 20:13 ]
Заголовок сообщения:  Re: Библиотека полезных скриптов

-Ivan- писал(а):
Питання: що буде, якщо папку Digitals тимати на Dropbox (чи вплине це якось на програму і як)?

Це думки вголос?!!!

Якщо є така цікавість, то перевірте і напишіть про результат.
Або запитайте чи робив хтось таке?
А так, я повівся на лист про новий коментар у темі і тепер повинен перевіряти це?

Оскільки незнайшов як повністю видалити ЦЕЙ свій коментар, - пропоную пана "П.Вечеров (paul)" на посаду "бібліотекаря".

Автор:  paul [ 19 мар 2018 08:17 ]
Заголовок сообщения:  Re: Библиотека полезных скриптов

Уважаемые форумчане, неужели другого места нет для размещения подобных постов? Создайте тему в конце концов! Читайте внимательно название и не флудите нормальные темы пожалуйста. Считаю, что нам нужен библиотекарь.

Автор:  Руслан Пархуць [ 24 мар 2018 02:07 ]
Заголовок сообщения:  Re: Библиотека полезных скриптов

Цитата:
Re: Запрос на функцию
Артем Сорокін писал(а):
Можно ли добавить пару кнопок (сохранить как все), по принципу проги DipEdit.

1. Скрипт для збереження вiдкритих карт в заданому форматi
Код:
$MapCnt=@MapCount
@If $MapCnt=0 then @Break
; масив повiдомлень
@Text[10].Clear
@Text[10].Add Select the target folder*Выберите целевую папку*Seleccione la carpeta de destino*Виберiть цiльову папку
@Text[10].Add Select the final file format*Выберите конечный формат файла*Seleccione el formato de archivo final*Виберiть кiнцевий формат файлу
; мова програми
$PPath=@ProgramPath
@Text.Load $PPath\Ged.ini
$Pos=@Text.IndexOf [FormOptions.cbxLanguage]
@If $Pos=0 Then $LngId=4
@If $Pos=0 Then @Goto %NextStep
$Pos=$Pos+1
$Line=@Text.Line[$Pos]
$SPart=@StringPart 1=$Line
@If $SPart<>ItemIndex Then $LngId=4
@If $SPart<>ItemIndex Then @Goto %NextStep
$LngId=@StringPart 2=$Line
@If $LngId=0 Then $LngId=4
;
%NextStep
$Msg=@Text[10].Line[1]
$Msg=@StringPart $LngId*$Msg
$DestPath=@Dialog.SelectFolder $Msg
@If $DestPath= Then @Goto %End
$Msg=@Text[10].Line[2]
$Msg=@StringPart $LngId*$Msg
;$Ext=@Dialog.Select $Msg|dmf|dxf|in4|xml
$Ext=@Dialog.ListSelect $Msg|dmf|dxf|in4|xml
%Cycle
@ActivateMap $MapCnt
$FName=@Map.ClearShortFilename
@Map.SaveToFile $DestPath\$FName.$Ext
;
$MapCnt=$MapCnt-1
@If $MapCnt>0 Then @Goto %Cycle
;
%End

2. Скрипт для закриття вiдкритих карт без збереження
Код:
; закрити всi карти без збереження
$MapCnt=@MapCount
@If $MapCnt=0 then @Break
; масив повiдомлень
@Text[10].Clear
@Text[10].Add Attention!|All open maps will be closed without saving!*Внимание!|Все открытые карты будут закрыты без сохранения!*?Atencion!|Todas las tarjetas abiertas se cerraran sin guardar!*Увага!|Всi вiдкритi карти будуть закритi без збереження!
; мова програми
$PPath=@ProgramPath
@Text.Load $PPath\Ged.ini
$Pos=@Text.IndexOf [FormOptions.cbxLanguage]
@If $Pos=0 Then $LngId=4
@If $Pos=0 Then @Goto %NextStep
$Pos=$Pos+1
$Line=@Text.Line[$Pos]
$SPart=@StringPart 1=$Line
@If $SPart<>ItemIndex Then $LngId=4
@If $SPart<>ItemIndex Then @Goto %NextStep
$LngId=@StringPart 2=$Line
@If $LngId=0 Then $LngId=4
;
%NextStep
;
$Count=@MapCount
@If $Count=0 @Break
$Msg=@Text[10].Line[1]
$Msg=@StringPart $LngId*$Msg
$DRes=@Dialog.Confirm $Msg
@If $DRes=0 @Break
$I=1
%Start
@CloseMap [1]
$I=$I+1
@if $I<=$Count Goto %Start
;

Автор:  Виталий [ 07 май 2018 15:13 ]
Заголовок сообщения:  Re: Библиотека полезных скриптов

Dmitry_Zolotar писал(а):
Dix писал(а):
Здравствуйте!! Никто не подскажет каким образом средствами скрипта можно открыть определенный документ word и вставить туда переменные которые заранее определены в документе (DocVariable)???

Такая функция когда-то была в программке TCPScript, очень бы хотелось такого функционала и в наших родных скриптах.

Скрипт готовит некие данные и запускает Word с созданием документа на основе шаблона Digitals\Templates\TemplateName.dot
Код:
;путь к программе
$PP=@ProgramPath
;заполняем строками
@Text[1].Add DocVar1=Value1
@Text[1].Add DocVar2=Value2
@Text[1].Add DocVar3=Value3
@Text[1].Add DocVar4=Value4
;Копируем в буфер
@Text[1].Copy
;или сохраняем во временный файл
@Text[1].Save $PP\tempdata.txt
;запускаем Ворд с шаблоном
@Run "c:\Program Files (x86)\Microsoft Office\OFFICE11\WINWORD.EXE" /t"$PP\Templates\TemplateName.dot"

В шаблоне TemplateName.dot необходимо добавить обработчик события создания документа


Подскажите пожалуйста. Как В шаблоне TemplateName.dot добавить обработчик. Спасибо

Автор:  Dmitry_Zolotar [ 08 май 2018 11:01 ]
Заголовок сообщения:  Re: Библиотека полезных скриптов

Виталий писал(а):
Подскажите пожалуйста. Как В шаблоне TemplateName.dot добавить обработчик. Спасибо

Откройте редактор Visual Basic (в главном меню Word или Ribbon-интерфейсе выбрать Сервис-Макрос-Редактор Visual Basic)
В окне редактора выберите свой шаблон, затем в выпадающем списке Document, редактор сгенерирует заготовку обработчика события.
Вложение:
2018-05-08 11.40.46.png [58.6 Кб]
Скачиваний: 0

Страница 11 из 15 Часовой пояс: UTC + 2 часа
Powered by phpBB © 2000, 2002, 2005, 2007 phpBB Group
http://www.phpbb.com/