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

Неправильно працює функція "Петля в складний полігон"
http://www.geosystema.net/forum/viewtopic.php?f=1&t=19508
Страница 1 из 1

Автор:  fendak [ 23 дек 2014 22:15 ]
Заголовок сообщения:  Неправильно працює функція "Петля в складний полігон"

Зіткнувся з проблемою, що в деяких випадках команда "Петля в складний полігон" просто не працює. А саме, коли петля створювалася спочатку по внутнішніх точках (довкола будівлі), а вже потім по зовнішніх (як на зображенні).

Бачив по форумі, раніше була проблема, що якщо петля починалася з першої точки, то дублювалися суміжники. І там sergeypetrovi4 піднімав питання, як за допомогою скрипту дізнатися, що об'єкт має форму петлі? Чи реалізована така можливість? Якщо не вдастся виправити цю проблему, то тоді можна ось такі петлі, які починаються всередину просто перерисовувати заново командою "Петля" і вже тоді перетворювати у складний полігон. Але для цього потрібна скриптова функція, яка перевіряє об'єкт на те, має він петлю чи ні.

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

Вложения:
2014-12-23_215629.jpg
2014-12-23_215629.jpg [ 25.84 Кб | Просмотров: 5372 ]

Автор:  sergykydr [ 26 дек 2014 19:59 ]
Заголовок сообщения:  Re: Неправильно працює функція "Петля в складний полігон"

fendak писал(а):
як за допомогою скрипту дізнатися, що об'єкт має форму петлі?


Також приєднуюсь до запитання.

Автор:  fendak [ 27 дек 2014 15:38 ]
Заголовок сообщения:  Re: Неправильно працює функція "Петля в складний полігон"

sergykydr писал(а):
fendak писал(а):
як за допомогою скрипту дізнатися, що об'єкт має форму петлі?


Також приєднуюсь до запитання.


Якщо Вам потрібно, то функцію, яка визначає, чи є об'єкт у формі петлі чи ні, я вже придумав, але вона знаходить тільки ті петлі, які починаються з першої точки об'єкту (для мого випадку підходять ідеально, бо якщо петля починається не з першої точки, то вона не може бути неправильною, тобто починатися не назовні, а всередину):

Перевірка | Очистить удаленные объекты
$MC=@Map.Count
$N=0
%Pochatok
$R=0
$N=$N+1
$KoordP1=@Map.Object[$N].Point[1]
@Map.SelectObject $N
@Map.Selected.MarkPoints ALL
$PC=@Map.Object[$N].GetMarkedPointsCount
@Map.Selected.MarkPoints CLEAR
$NP=0
%StartPoint
$NP=$NP+1
$KoordP=@Map.Object[$N].Point[$NP]
@If $KoordP<>$KoordP1 then @Goto %Next
$R=$R+1
%Next
@if $NP<$PC then @Goto %StartPoint
@if $R=3 then @Dialog.Message Виділений об'єкт має форму петлі
@Map.DeselectAll
@if $N<$MC then @Goto %Pochatok


Але, як тепер перерисувати цей об'єкт заново уже з правильною формою ще не знаю.

До речі, питання до розробників, чому немає у скриптах функції @Map.Object[N].Points.Count?

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