Аналитика http://geosystema.net/forum/ |
|
Библиотека полезных скриптов http://geosystema.net/forum/viewtopic.php?f=12&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
|
Автор: | Vova_u2 [ 14 фев 2018 15:22 ] |
Заголовок сообщения: | Re: Библиотека полезных скриптов |
не підсткажите скрипт копіювання всіх значень XML в інший, тобто є в діджиталі вікриті 2 XML-ля, потрібно з одного (активного чи як) вставити дані/значення всіх слоїв (XML земельна ділянка, кадастрова зона, квартал, угіддя) в інший. Дуже дякую. |
Автор: | fendak [ 14 фев 2018 15:41 ] | ||
Заголовок сообщения: | Re: Библиотека полезных скриптов | ||
на закладці Інфо є кнопка Параметри. Відкривши перший xml, створіть шаблон. Відкривши другий, заповніть по шаблону.
|
Автор: | 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, редактор сгенерирует заготовку обработчика события. Вложение:
|
Страница 11 из 15 | Часовой пояс: UTC + 2 часа |
Powered by phpBB © 2000, 2002, 2005, 2007 phpBB Group http://www.phpbb.com/ |