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

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

Автор:  Sergey45 [ 21 май 2017 20:35 ]
Заголовок сообщения:  Re: Библиотека полезных скриптов

Дякую. Вийшло.

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

BAM писал(а):
Построение по дир. углам или румбам

1. Нужно пометить первую точку и запустить скрипт
2. Выбераем дир. углы или румбы
3. Для румбов вводим четверть (1 2 3 4) и угол через "," (град,мин,сек)
4. Вводим дистанцию
На экране появится точка. Она атоматом становится первой. Повторяем действие 3,4 скольк нужно.

$V=@Dialog.Select Выбери|Дир. углы|Румб
%next
$n=@Map.NextSelected
@If $n=0 then @Break Пометь первую точку
$nn=@Map.Object[$n].Parameter[4]
$x=@Map.Object[$n].Parameter[-4]
$x=@Calc Replace("$x",",",".")
$x=@DequoteText $x
$x=@DequoteText $x
$y=@Map.Object[$n].Parameter[-3]
$y=@Calc Replace("$y",",",".")
$y=@DequoteText $y
$y=@DequoteText $y
@Map.DeselectAll
@If $V=Румб then @Goto %end1
$a=@Dialog.Ask Угол 90,30,30
@If $a= then @Goto %end
$d=@Dialog.Ask дистанция
@If $d= then @Goto %end
$a=@Calc Replace("$a",".",",")
$a=@DequoteText $a
$a=@DequoteText $a
$d=@Calc Replace("$d",".",",")
$d=@DequoteText $d
$d=@DequoteText $d
$a1=@StringPart 1,$a
$a2=@StringPart 2,$a
@If $a2= then $a2=0
$a3=@StringPart 3,$a
@If $a3= then $a3=0
$a=(($a3/60+$a2)/60+$a1)*3.1415926535897932384626433832795028841971/180
%next1
$ac=@Calc Cos($a)
;@Break $ac
$dx=$x+$ac*$d
$dx=@Calc Replace("$dx",".",",")
$dx=@DequoteText $dx
$dx=@DequoteText $dx
$as=@Calc sin($a)
$dy=$y+$as*$d
$dy=@Calc Replace("$dy",".",",")
$dy=@DequoteText $dy
$dy=@DequoteText $dy
$nn=$nn+1
$N=@Map.AddObject 0|1|ID11340000|1|0 $dx $dy 0|1|ID11340000|1|4 $nn
;
@Map.SelectByParameters 1|4>=$nn
@Map.Selected.CreateCaptions ID93 0 0 1 0 0,1 1
Вид | Показать все
@Map.SelectLayer $nn
@Goto %next
@Goto %end
%end1
$a=@Dialog.Ask Четверть (3,90,30,30)
$a=@Calc Replace("$a",".",",")
$a=@DequoteText $a
$a=@DequoteText $a
$a1=@StringPart 1,$a
$a2=@StringPart 2,$a
$a3=@StringPart 3,$a
@If $a3= then $a3=0
$a4=@StringPart 4,$a
@If $a4= then $a4=0
$a=($a4/60+$a3)/60+$a2
@If $a1=2 then $a=180-$a
@If $a1=3 then $a=180+$a
@If $a1=4 then $a=360-$a
$a=$a*3.1415926535897932384626433832795028841971/180
$d=@Dialog.Ask дистанция
@If $d= then @Goto %end
$d=@Calc Replace("$d",".",",")
$d=@DequoteText $d
$d=@DequoteText $d
@Goto %next1
%end


:!: :!: :!: Допоможіть знайти помилку, можливо у мене - при введенні довжини любого не цілого числа (наприклад: 22,33) видає помилку
Вложение:
.jpg
.jpg [ 23.56 Кб | Просмотров: 51217 ]

Автор:  Dmitry_Zolotar [ 31 май 2017 21:45 ]
Заголовок сообщения:  Re: Библиотека полезных скриптов

Змініть системний розділник з коми на точку.

Автор:  Ryvol [ 31 май 2017 22:31 ]
Заголовок сообщения:  Re: Библиотека полезных скриптов

Dmitry_Zolotar писал(а):
Змініть системний розділник з коми на точку.

Поясніть, будь ласка, докладніше про необхідні налаштування.
Якщо змінюю системні коми на крапки, - вилітає помилка навіть при введенні цілих чисел...
Помилка виникає тільки при введенні довжини не цілого числа, хоч через кому, хоч через крапку.
Кути з минутами та секундами введені через кому обраховуються без помилок...

Автор:  Dmitry_Zolotar [ 31 май 2017 23:10 ]
Заголовок сообщения:  Re: Библиотека полезных скриптов

Спробуйте натиснути Ctrl-D під час збору, можливо це те що Вам потрібно. Ще є варіанти.

Чи Вам потрібні саме румби? І саме для об'єктів шару ID11340000? Зі створенням підписів параметра ID93? І лише для тих об'єктів, значення параметра 4 якого більше або дорівнюю значенню аналогічного параметра об'єкта, який був помічений перед запуском скрипта?

Даний скрипт - хороший приклад автоматизації, але він вирішує досить специфічне завдання на нестандартних шаблонах.

Автор:  Ryvol [ 31 май 2017 23:19 ]
Заголовок сообщения:  Re: Библиотека полезных скриптов

Dmitry_Zolotar писал(а):
Спробуйте натиснути Ctrl-D під час збору, можливо це те що Вам потрібно. Ще є варіанти.

Чи Вам потрібні саме румби? І саме для об'єктів шару ID11340000? Зі створенням підписів параметра ID93? І лише для тих об'єктів, значення параметра 4 якого більше або дорівнюю значенню аналогічного параметра об'єкта, який був помічений перед запуском скрипта?

Даний скрипт - хороший приклад автоматизації, але він вирішує досить специфічне завдання на нестандартних шаблонах.


Дякую за допомогу.
:idea: :D Натиснути Ctrl-D під час збору, якраз Те що Потрібно!

Написане було за 10 хвилин до спроби Натиснути Ctrl-D під час збору:
Потрібно із таблиці (списку) із Дирекційними кутами та промірами внести точки на карту та зібрать полігон.
У себе змінив об'єкт шару ID11340000 на шар ID10 і накидав точки теодолітного ходу на карту, але потрібно проміри внести ті що у списку, а вони не цілі числа...
Інших способів не знайшов, тому і прошу допомоги.
Зараз почитаю про варіанти у книжці.
Переглянув, але для себе нічого не знайшов з Дирекційними кутами...

Автор:  voha [ 01 июн 2017 05:36 ]
Заголовок сообщения:  Re: Библиотека полезных скриптов

Dmitry_Zolotar писал(а):
Змініть системний розділник з коми на точку.
Скажемо так:
- системний розділювач змінюється в меню Пуск > Панель керування > Мова та регіональні стандарти на вкладці Регіональні параметри кнопка Налаштування вкладка Числа поле Десятковий розділювач;
- системний розділювач визначає: кома чи крапка буде повернуто у скрипт в десяткових числах командами скрипта $x=@Map.Object[$n].Parameter[-4] та $y=@Map.Object[$n].Parameter[-3];
- арифметичні дії виконуються у скрипті лише з десятковими числами у яких розділювач - крапка.

При системному розділювачі - кома:
- $x та $y міститимуть коми, тому $x=@Calc Replace("$x",",",".") заміняє кому на крапку, однак $d=@Dialog.Ask дистанция уводиться з комою, $d=@Calc Replace("$d",".",",") заміняє крапку на кому і $dx=$x+$ac*$d приймає $d з комою (множення на число з комою не виконується скриптом).

При системному розділювачі - крапка:
- $x та $y міститимуть крапки, тому $x=@Calc Replace("$x",",",".") залишить в числах крапки, однак $dx=@Calc Replace("$dx",".",",") замінить крапку на кому і @Map.AddObject 0|1|ID11340000|1|0 $dx $dy 0|1|ID11340000|1|4 $nn подаватиме в карту координати з комою (не створить Digitals об'єкт за координатами з комою, бо системний розділювач - крапка).

Одним словом, попробуйте замінити у скрипті $d=@Calc Replace("$d",".",",") на $d=@Calc Replace("$d",",","."). Тоді при системному розділювачі "кома" має працювати.

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

:D :idea: Дякую, замінив на $d=@Calc Replace("$d",",",".") - ПРАЦЮЄ!

Побудова по дир. кутах або румбах
Скрипт, звичайно "специфічний", - нормально працює тільки на новій карті запущений перший раз.
На новій карті сворюю (ставлю) ТТХ ІD10 і "погнав" автоматом вводить дані...
Повторно запускать на цій же карті можна, але кути відкладаються вже не так (не туди)... залежність не досліджував...

Мої зміни:
- Українська локалізація
- В скрипту прописано шар для створення нових точок ID11 "Проектні лінії"
- фунція "Вигляд | Показати всі" після створення точки
- добавлена іконка

Вложения:
дир. кутах або румбах.tlb [6.35 Кб]
Скачиваний: 468

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

Скрипт трансформування растрів в УСК/МСК чомусь не трансформує всі растри. З декотрих - тільки невелику ділянку на краю растру. Підкажіть, в чому може бути справа?

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

Надішліть посилання на один з проблемних растрів нам на help@vingeo.com

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

Написав тиждень тому, але ніхто ніяк не відповів.

Автор:  Ryvol [ 12 авг 2017 02:05 ]
Заголовок сообщения:  Re: Библиотека полезных скриптов

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

Печалька... :(
Я двічі звертався електронкою 24 та 31 липня, - до цього дня поки немає повідомлення від розробників.
Можливо у віпустці :D
А можливо у них немає можливості переглянути пошту... Печалька... :(
Тоді потрібно іншими способами виходити на зв'язок.
Особисто мені вже не потрібно відповідати, питання вирішене але, як про це повідомить роробників ще не зняю.
Гадаю Вони поставляться з розумінням до моїх питань.

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

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

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

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

Автор:  Rutar [ 24 сен 2017 21:18 ]
Заголовок сообщения:  Re: Библиотека полезных скриптов

Скрипт для повороту усіх підписів виділених об'єктів вздовж виділеної лінії.
Можливо комусь знадобиться :)

Цитата:
$mapCount=@MapCount
@if ($mapCount=0) then @break Немає відкритих карт
;
; Set variables
;/////////////////////////////////////////////////////////////////////
;
$nextSelect=0
$cycleIndex=0
$directionObject=0
$selectCount=@Map.SelCount
;
@if ($selectCount<1) @break Необхідно виділити один або декілька об'єктів
;
; Run cycle 1
;/////////////////////////////////////////////////////////////////////
;
%RunCycle1
;
$cycleIndex=$cycleIndex+1
$nextSelect=@Map.NextSelected $nextSelect
$markedPoints=@Map.Object[$nextSelect].GetMarkedPointsCount
@if ($markedPoints>0) and ($directionObject>0) then @break Необхідно виділити лише одну лінію
@if ($markedPoints>0) and ($directionObject=0) then $directionObject=$nextSelect
@if ($cycleIndex<$selectCount) then @goto %RunCycle1
;
; Get direction object ot break
;/////////////////////////////////////////////////////////////////////
@if ($directionObject=0) then @break Необхідно виділити лінію, яка слугуватиме напрямком повороту підписів
;
; Get direction angle from object
;/////////////////////////////////////////////////////////////////////
;
$marked=0
$lineIndex=0
$cycleIndex=0
$pointCount=@Map.Object[$directionObject].Count
$pointCount=$pointCount-1
;
; Run cycle 2
;/////////////////////////////////////////////////////////////////////
%RunCycle2
;
$cycleIndex=$cycleIndex+1
$cycleIndexNext=$cycleIndex+1
;
$isMarked=@Map.Object[$directionObject].GetPointMarked $cycleIndex
$isNextMarked=@Map.Object[$directionObject].GetPointMarked $cycleIndexNext
;
@if ($isMarked=1) and ($isNextMarked=1) then $marked=$marked+1
@if ($isMarked=1) and ($isNextMarked=1) and ($lineIndex=0) then $lineIndex=$cycleIndex
;
@if ($cycleIndex<$pointCount) @goto %RunCycle2
;
; Check direction line for errors
;/////////////////////////////////////////////////////////////////////
;
@if ($marked<>1) then @break Необхідно виділити лише одну лінію
;
; Get direction angle
;/////////////////////////////////////////////////////////////////////
;
$angle=@Map.Object[$directionObject].LineAngle[$lineIndex]
$angle=@Calc Replace($angle,",",".")
$angle=-$angle*10+900
;
; Rotate labels
;/////////////////////////////////////////////////////////////////////
;
$nextSelect=0
$paramsCount=@Map.Parameters.Count
;
@if ($paramsCount=0) then @break
;
%Start:
;
$nextSelect=@Map.NextSelected $nextSelect
@If $nextSelect<=0 @Goto %Finish
;
$loopIndex=1
;
%NextParam
;
$caption=@Map.Object[$nextSelect].Caption[$loopIndex]
@if $caption= @Goto %NextCap
;
@Map.Object[$nextSelect].Caption[$loopIndex] * * * $angle
;
%NextCap:
;
$loopIndex=$loopIndex+1
@If $loopIndex<=$paramsCount @Goto %NextParam
@Goto %Start
;
%Finish:
@Window.Refresh

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

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

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