Головна » 2016 » Січень » 1 » Скриптові функції - Геометрія полігонів
22:40
Скриптові функції - Геометрія полігонів

Всі скриптові функції Digitals для зручності можна поділити на категорії, в залежності від того, які операції та над якими об'єктами виконує та чи інша функція.


 

Створення

@Map.NewObject Layer [ID] - створює новий "пустий" об'єкт і задає його порядковий номер

@Map.AddObject 0|ID|Layer|Count|List|ID|Layer|Count|List - створює новий об'єкт із заданим списком координат і значенням параметрів.

@Map.AssemblePolygon Layer X Y Z [LayerIndex1 LayerIndex2 ...] - створює складний полігон по його внутрішній точці і повертає його номер

@Map.Object[N].MultiPolygon Layer [Layers List] - створення складного полігонального об'єкта у шарі з порядковим номером або ID Layer, межами якого є межі об'єктів у шарах з ID Layers List, при чому центроїд створюваного полігонe - точковий об'єкт з номером N. Є аналогом попередньої функції

@Map.Object[$I].MultiPolygon ID$New ID$A ID$B ID$C
;$I - номер точкового об'єкта, розміщеного всередині  полігону, що стврюється;
;$New - ID шару створюваного полігону;
;$A, $B, $C - ID шарів, межі об'єктів яких будуть слугувати межами створюваного полігону.

@Map.MakeDoor RefPolyline DoorKind(1..4) - створює об'єкт, що представляє відчинені двері на планах приміщень. RefPolyline - опорний об'єкт, що задає 3 точки дверного отвору. DoorKind - номер від 1 до 4, що задає вигляд дверей.

Відео-приклад    dmt-файл

 

Властивості об'єкта

@Map.Object[N].Closed - повертає 1 - якщо об'єкт замкнутий і 0 - якщо не замкнутий

@Map.Object[N].ClosedComplex - повертає 1 - якщо об'єкт складний полігон і 0 - якщо не складний полігон

@Map.Object[N].Scale - повертає/змінює масштаб об'єкта

@Map.GetObjectCoordinates Number - повертає ID об'єкта, номер шару і список координат точок

@Map.PutObjectCoordinates Number|ID|Layer|Count|List - змінює  ID об'єкта, номер шару і список координат точок. Цей список можна отримати попередньою функцією

@Map.GetObject Number - повертає список координат точок об'єкта і список значень його параметрів

@Map.PutObject Number|ID|Layer|Count|List|ID|Layer|Count|List - замінює список координат точок об'єкта і список значень його параметрів. Витягнути ці списки можна попередньою функцією.

@Map.Object[N].LineAngle[N] - повертає дирекційний кут об'єкта

@Map.Object[N].LineLength[N] - повертає довжину лінії об'єкта

@Map.Object[N].GetMinMax - повертає розмах об'єкту у вигляді строки "MinX MinY MinZ MaxX MaxY MaxZ"

@Map.Object[N].Center - повертає координати центру об'єкта

@Map.Object[N].Centroid - повертає координати центроїда об'єкта

@Map.Object[N].Path X Y / Distance - повертає довжину шляху вздовж об'єкта до точки ХУ, або точку ХУ по довжині шляху

@Map.Object[N].PointList Mask [Datum] - повертає форматований список координат об'єкта

Редагування геометрії об'єкта

@Map.Object[N].Reverse - змінює порядок точок об'єкта

@Map.ConvertComplexToLoop ObjIndex - перетворює складний полігон в полігон з петлями

@Map.ConvertLoopToComplex ObjIndex - перетворює полігон з петлями в складний полігон

@Map.Object[N].Transform X1 Y1|X2 Y2|X3 Y3|X4 Y4...- перетворює об'єкт по заданих точках. Точки утворюють пари: початкова і кінцева позиція.

@Map.PutObject Number|ID|Layer|Count|List|ID|Layer|Count|List - задає список координат точок і значення параметрів об'єкта

@Map.PutObjectCoordinates Number|ID|Layer|Count|List - змінює id об'єкта, номер шару і список координат точок

@Map.Selected.ExpandPolygon Value - виконує команду Розширити/стиснути на вказану відстань

@Map.Selected.ToStrip Width [0/1 - buffer] - перетворює виділені об'єкти в смуги заданої ширини (чи буферну зону - дод. параметр 1)

@Map.Selected.ClipImage BorderWidth - перетворює позначені об'єкти у збірні (через розрив) з побудовою внутрішніх полігонів / поліліній з розрахунку дотримання відстані BorderWidth від меж позначених об'єктів

@Map.Selected.Prolong Length -  продовжу лінію у дві сторони на задану довжину

@Map.Selected.Smooth - згладжує виділені об'єкти (наприклад, горизонталі)

@Map.Object[N].Filter [MinDistance] - в об'єкті видаляє відрізки меньші ніж MinDistance

@Map.Selected.Rotate Angle - розвертає виділені об'єкти на вказаний кут

@Map.Generalization Accuracymm - виконує команду Карта/Генералізація із заданою точністю в міліметрах на карті (дана опція автоматично видаляє точки, які на рівній лінії)

@Map.SplitObject ObjectIndex PointIndex - розділяє об'єкт в указаній точці

@Map.SplitMultiPolygon N - розбиває складний полігон на окремі

@Map.AdjustObjectArea N Area [Delta] - злегка (в межах Delta) міняє координати точок, щоб вийшла потрібна площа.

@Map.CalculateForestArea Number [LayerIDs] - вираховує площу виділу за мінусом доріг, просік і т.д.

@Map.RescaleObjectToArea Index NewArea - масштабує об'єкт з порядковим номером Index для приведення його площі до нового значенням (NewArea). Функція добавлена 28.11.2014.

$I=@Map.NextSelected
@If $I<=0 @Break Виділіть об'єкт для масштабування
$A=@Map.Object[$I].Parameter[0]
$A=@Dialog.Ask Введіть нову площу Default=$A
@If $A= @Break
@Map.Undo.StartOperationGroup
@Map.Undo.SaveObject $I
@Map.RescaleObjectToArea $I $A
@Window.Refresh

Контроль та виправлення

@Map.Object[N].OverlayList [Layer] - повертає список об'єктів з площею 0, які перетинають даний об'єкт. Якщо заданий шар - то тільки в цьому шарі.

@Map.AlignToSelected ObjectNumber [Tolerance] - суміщає об'єкт з виділеним об'єктом

@Map.ClipOverlappedPolygons ObjIndex - обрізає полігони того ж шару для виправлення накладок

@Map.IntersectionWithLayer ObjectIndex LayerIndex - створює об'єкт-пересічення з об'єктами заданого шару

@Map.Object[N].StartFromPoint PointIndex - робить початковою PointIndex точку об'єкта

@Map.GeneralizeObject ObjectIndex [Accuracymm] - виконує генералізацію (видалення точок на рівних лініях) об'єкта з точністю Accuracymm

@Map.DeleteOverlays - видалає точки, що співпадають в об'єктах інших шарів

Переміщення та повертання

@Map.Object[N].Move X Y [Z] - переміщує об'єкт в указаний вектор

@Map.Object[1].Move 0 100 0
;перемістить об'єкт 1 вправо на 100 метрів

@Map.Object[N].MoveTo X Y [Z] - переміщує об'єкт в указану точку

@Map.Selected.Rotate Angle - повертає виділений об'єкт на вказаний кут

@Map.AlignToSelected ObjectNumber [Tolerance] - суміщає об'єкт із виділеним об'єктом

@Map.RescaleObject Index ScaleFactor - масштабує об'єкт відносно його центру

Між об'єктами

@Map.NearestObject Range IgnoreObj X Y Z - шукає найближчий (на відстані Range об'єкт до точки з заданими координатами. IgnoreObj - об'єкт, який ігнорується.

@Map.MinObjectDistance Object1 Object2 - розраховує мінімальну відстань між двома 2d об'єктами

@Map.ShortestSegmentBetweenObjects Object1 Object2 - повертає координати точок найкоротшого відрізка, що з'єднує 2 заданих об'єкта

@Map.NearestPoint ObjNumber Range X Y Z - знаходить найближчу до точки XYZ точку заданого об'єкта в межах відстані Range (Range = 0 - немає обмеження по відстані).

@Map.MakeInvisibleLine P1 P2 [SkipObject] - створює невидимий відрізок вздовж точок P1-P2 у всіх знайдених об'єктах карти. Точки P1-P2 повинні лежати в межах одного сегмента знайдених об'єктів. SkipObject - номер об'єкта, який не бере участі в пошуку і повинен бути пропущений.

 

@Map.CreateSharedBorder [LayerIndex] - створює об'єкт спільної межі між двома виділеними полігонами

@Map.PerpendicularToNearestLine FromPoint ToObj SegmObjLayer [Reverse] - створює об'єкт з 2-х точок. Перша точка From Point, стара точка, що лежить на найближчому сегменті об'єкта, ToObj.PerpendicularLayer - шар нового об'єкта. Reverse - якщо вказано змінює напрямок створеного об'єкта.

Не відомі

@Map.Object[N].AssignGeometry ObjectNumber - ...

Приклади

;розріджуємо об'єкти функцією @Map.NearestObject
$Range=@Dialog.Ask Введіть мінімальну відстань (в метрах) між об'єктами Default=10 Size=250
$id=@Dialog.Ask Введіть id об'єктів, які треба розрідити Default=71132400 Size=250
%Start0
$FrameObj=0
@Map.SelectLayer id$id
%Start
$FrameObj=@Map.NextSelected $FrameObj
@If $FrameObj=0 then @Goto %End
$X=@Map.Object[$FrameObj].Parameter[-4]
$Y=@Map.Object[$FrameObj].Parameter[-3]
$K=@Map.NearestObject $Range $FrameObj $X $Y 0
@If $K=0 then @Goto %Start
@Map.DeselectAll
@Map.SelectObject $K
@Map.Selected.Delete
Перевірка | Очистить удаленные объекты
@Goto %Start0
%End

 


Примітка: жирним шрифтом (напр.@ActivateMap) виділена назва функції, похилим шрифтом (напр.Number) перемінна функції, у квадратних скобках (напр.[MapNumber]) необов'язкова перемінна, яку можна не вказувати.

 

Переглядів: 5132 | Додав: Микола | Рейтинг: 0.0/0
Всього коментарів: 9
avatar
4 SerjN • 11:21, 06.05.2021 [Матеріал]
Доброго дня.
Підкажіть, як змінити відображення виділеного об'єкту з одного масштабу на інший.
Пробував за допомогою функції @Map.Object[N].Scale, але щось не виходе.
Наприклад масштаб карти 1:2000 потребується винести об'єкт в окреме зображення у збільшеному виді:
$Ms=500
$NObj=@Map.SelectedObject
@Map.Object[$NObj].Scale $Ms
@Map.Selected.Refresh
avatar
0
5 Микола • 16:29, 06.05.2021 [Матеріал]
Доброго дня!
$Ms=500
@Map.Cut
@SendChars $Ms<CR>
Спеціальна вставка | В іншому масштабі...
$NObj=@Map.SelectedObject
avatar
6 SerjN • 11:30, 08.07.2021 [Матеріал]
Дякую.
Ще одне питання по цій темі.
А якщо потрібно передати у вікно декілька параметрів і не тільки числові, а ше, наприклад, поставити або зняти помітки (галочки у чекбоксах), яким чином це можливо автоматизувати скриптом?
avatar
0
7 Микола • 13:00, 08.07.2021 [Матеріал]
Таке діалогове вікно у скриптах відсутнє, на жаль
avatar
8 SerjN • 16:07, 09.07.2021 [Матеріал]
Доброго дня.
У питанні йшла мова не про діалогові вікна у скриптах, а про те як із скрипта передати налаштування у стандартні діалогові вікна Діджиталса. Наприклад налаштування для діалогового вікна, яке викликається по команді: Вставка\ Розбивка на аркуші..., або Вставка\Номенклатурна рамка... чи таке інше. Там є як різні числові значення так і різні можливості вибору, або простановки "галочок".
avatar
0
9 Микола • 18:08, 09.07.2021 [Матеріал]
Доброго дня.
Можете подивитися на прикладі запуску вікна Вставка - Сітка:
$CMLine=@Assign 5000<TAB>5000<TAB><TAB><TAB><1><TAB><0><TAB><TAB><TAB><TAB><TAB><TAB><TAB><TAB><CR>
@SendChars $CMLine
Вставка | Сітка...

Тобто, тут знаками табуляції переходимо у потрібне поле і вводимо потрібне значення.
avatar
1 natali_kiss87 • 10:47, 23.04.2020 [Матеріал]
Доброго дня! Микола підкажіть чи є якийсь скрипт чи можливо спецкнопка щоб перевіряти чи немає перетину полігону? Або щоб точно вказало точку де відбувся цей перетин.
avatar
0
2 Микола • 21:23, 23.04.2020 [Матеріал]
Доброго дня!
Якщо полігон має перетин, то по ньому внизу на панелі інформації просто не відображатиметиься площа, бо це буде рахуватися не як полігон, а як полілінія.

Також на закладці Список відповідний об'єкт буде замість круга мати значок у вигляді зеленої букви С
avatar
3 natali_kiss87 • 09:21, 27.04.2020 [Матеріал]
Дякую.
avatar