Дякую за допомогу. Натиснути Ctrl-D під час збору, якраз Те що Потрібно!
Написане було за 10 хвилин до спроби Натиснути Ctrl-D під час збору:
Потрібно із таблиці (списку) із Дирекційними кутами та промірами внести точки на карту та зібрать полігон.
У себе змінив об’єкт шару ID11340000 на шар ID10 і накидав точки теодолітного ходу на карту, але потрібно проміри внести ті що у списку, а вони не цілі числа…
Інших способів не знайшов, тому і прошу допомоги.
Зараз почитаю про варіанти у книжці.
Переглянув, але для себе нічого не знайшов з Дирекційними кутами…
системний розділювач змінюється в меню Пуск > Панель керування > Мова та регіональні стандарти на вкладці Регіональні параметри кнопка Налаштування вкладка Числа поле Десятковий розділювач;
системний розділювач визначає: кома чи крапка буде повернуто у скрипт в десяткових числах командами скрипта $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”,“,”,“.”). Тоді при системному розділювачі “кома” має працювати.
Дякую, замінив на $d=@Calc Replace(“$d”,“,”,“.”) - ПРАЦЮЄ!
Побудова по дир. кутах або румбах
Скрипт, звичайно “специфічний”, - нормально працює тільки на новій карті запущений перший раз.
На новій карті сворюю (ставлю) ТТХ ІD10 і “погнав” автоматом вводить дані…
Повторно запускать на цій же карті можна, але кути відкладаються вже не так (не туди)… залежність не досліджував…
Мої зміни:
Українська локалізація
В скрипту прописано шар для створення нових точок ID11 “Проектні лінії”
фунція “Вигляд | Показати всі” після створення точки
Скрипт трансформування растрів в УСК/МСК чомусь не трансформує всі растри. З декотрих - тільки невелику ділянку на краю растру. Підкажіть, в чому може бути справа?
Печалька…
Я двічі звертався електронкою 24 та 31 липня, - до цього дня поки немає повідомлення від розробників.
Можливо у віпустці
А можливо у них немає можливості переглянути пошту… Печалька…
Тоді потрібно іншими способами виходити на зв’язок.
Особисто мені вже не потрібно відповідати, питання вирішене але, як про це повідомить роробників ще не зняю.
Гадаю Вони поставляться з розумінням до моїх питань.
Вибачьте, з ситуацією розібрались і я забув відповісти.
Для проблемних растрів створіть World-файли за допомогою Models.exe-Архив-Экспорт(попередньо обрати діректорію з растрами та виділіти файли в середньому стовпчику). Перевірьте наявність World-файлів для усіх растрів. Видаліть елементи орієнтування з заголовків tif-файлів (кнопка Удалить в середньому стовпчику Models.exe-Архив). Все, можна запускати скрипт.
Помогите пожалуйста. очень нужен скрипт для проверки несоответствия высот на пересечениях объектов. Нужно что бы точки разных объектов которые пересекаются между собой имели одинаковую высоту, но искать их в ручную нереально сложно. было бы не плохо их в отдельный список выводить для легкого нахождения на карте. Совмещение соседних тут не поможет. иногда одна высота имеет приоритет и нужно указывать ее как высоту для второго объекта пересекающий первый. а функция совместить с соседними делает это автоматом.
Скрипт робить пошук точок з р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
Здравствуйте!! Никто не подскажет каким образом средствами скрипта можно открыть определенный документ 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 необходимо добавить обработчик события создания документа
Скрипт формує таблицю, яка містить кадастровий номер, ПІБ чи назву землевласника, адресу ділянки, цільове призначення та площу по кожному файлу 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
не підсткажите скрипт копіювання всіх значень XML в інший, тобто є в діджиталі вікриті 2 XML-ля, потрібно з одного (активного чи як) вставити дані/значення всіх слоїв (XML земельна ділянка, кадастрова зона, квартал, угіддя) в інший. Дуже дякую.