voha писал(а):
13vp писал(а):
Порекомендуйте як знайти об’єкт, який сам себе пересікає (ламана яка себе пересікає, або полігон що себе пересікає)
Дивіться документ Control.doc у теці Digitals\Control. В сценарії контролю, наприклад для лінії:
[Intersect] Помилка перетину
L:S ; Лінія перетинає сама себе (без вузлової точки)
Дякую за оперативну відповідь - допомогло.
Для перетину полігона з вузловою точкою скрипт написав (можливо комусь пригодиться):
===================================
$n=@Map.SelCount
@if $n=0 then @Break Виділіть обєкти для генералізації
$list=@Map.Selected.List
@Text[1].Text $list
$n=@Text[1].Count
@Map.Selected.AddToGroup Проблемні-вузли-полігонів
@Map.DeleteGroup Проблемні-вузли-полігонів
@Map.DeselectAll
$i=0
@Progress.Start $n Пошук
%start
@Progress.StepBy
$i=$i+1
;@Dialog.WaitBox $i $n
@if $i>$n then @goto %end
$O=@Text[1].Line[$I]
;
$npoint=@Map.Object[$O].Count
$np=1
;викинули першу точку (для полігонів),для поліліній $np=0
@Text[2].Clear
%object
$np=$np+1
$X=@Map.Object[$O].Point[$np].X
$Y=@Map.Object[$O].Point[$np].Y
$Z=@Map.Object[$O].Point[$np].Z
@Text[2].Add $X $Y
@if $np>=$npoint then @goto %dali else @goto %object
%dali
@Text[2].Sort [+]
;$vse=@Text[1].text
;@break $vse
$m=@Text[2].Count
$j=0
$k=0
;-------------------------
%poshuk
$j=$j+1
$k=$j+1
@if $j>$m then @goto %start
$strokaj=@Text[2].Line[$j]
%poshuk2
;@Dialog.WaitBox $j $k
@if $k>$m then @goto %poshuk
$strokak=@Text[2].Line[$k]
$k=$k+1
;@Dialog.WaitBox $strokaj | $strokak
@if $strokaj<>$strokak then @goto %poshuk2 else @goto %est
%est
;@break $strokaj|$strokak
$xer=@StringPart 1 $strokak
$yer=@StringPart 2 $strokak
$zer=0
$IDnew=@Map.NewObject ID0
@Map.Object[$IDnew].Count 0
@Map.Object[$IDnew].AddPoint $xer $yer $zer
@Map.SelectObject $IDnew
Вид | Показать помеченные
@Map.Selected.AddToGroup Проблемні-вузли-полігонів
@Map.DeselectAll
@goto %poshuk
;-----------------------------
@Map.DeselectAll
%end
@Window.Refresh
@Progress.Stop
@break створено групу Проблемні-вузли-полігонів||Якщо група не містить обєктів, то помилки відсутні
==================================================