Є дорога. Ширина дороги в різних місцях є різною. Потрібно намалювати вісь дороги.
В кого які ідеї, як це можна реалізувати? (Може в АвтоКаді є якась функція?)
Цей скрипт, поправить координати точок осьової лінії.$CountSelObg=@Map.SelCount
@If $CountSelObg<>2 then @Break Позначте полігон (дорогу) і осьову лінію
$SpysokSel=@Map.Selected.List
@Text.Text=$SpysokSel
$Obg1=@Text.Line[1]
$Obg2=@Text.Line[2]
@Map.DeselectAll
$CountToch1=@Map.Object[$Obg1].Count
$CountToch2=@Map.Object[$Obg2].Count
@If $CountToch2>$CountToch1 then $NomPolig=$Obg2 else $NomPolig=$Obg1
@If $NomPolig=$Obg2 then $NomOsi=$Obg1 else $NomOsi=$Obg2
$CountTochPolig=@Map.Object[$NomPolig].Count
$CountTochOsi=@Map.Object[$NomOsi].Count
@Map.SelectObject $NomPolig
Вибрати | Усередині позначеного
$CountSelObg=@Map.SelCount
@If $CountSelObg<2 then @Break В межах полігону (дороги) відсутня осьова лінія, або|осьова лінія виходить за межі полігону (дороги)
@If $CountSelObg<>2 then @Break В межах полігону (дороги) присутні інші об'єкти
$Vis=@Map.NextSelected $NomPolig
@If $Vis<>$NomOsi then @Break Серед позначених немає осьової лінії
$KstTochPolig=@calc $CountTochPolig-1
$Para=@calc $KstTochPolig/2
$Ostach=@calc Trunc($Para)
$Rizn=$Para-$Ostach
@if $Rizn<>0 then @Break Кількість точок полігону (дороги) не дозволяє провести осьову лінію
@If $Para<>$CountTochOsi then @Break Кількість точок полігону (дороги) та осі не відповідають умові трилінії
$StarSharZboru=@Map.GetCollectionLayer
$Numer=1
%Obrobka
$StartToch=$Numer+1
$KoordStartToch=@Map.Object[$NomPolig].Point[$StartToch]
$StopToch=@calc ($CountTochPolig+1)-$Numer
$KoordStopToch=@Map.Object[$NomPolig].Point[$StopToch]
@Text.Line[1]=0 $KoordStartToch
@Text.Line[2]=0 $KoordStopToch
$Koord=@Text.Text
$Linija=@Map.AddObject 0|1|1|2|$Koord
$XNov=@Map.Object[$Linija].Parameter[-4]
$YNov=@Map.Object[$Linija].Parameter[-3]
$ZNov=@Map.Object[$Linija].Parameter[-2]
$KoordNov=$XNov $YNov $ZNov
@Map.Object[$NomOsi].Point[$Numer]=$KoordNov
@Map.DeleteObject $Linija
$Numer=$Numer+1
@If $Numer<=$CountTochOsi then @Goto %Obrobka1. Заведіть дорогу з осьовою лінією при шаблоні трилінія по одній з обочин дороги.
2. Поправте полігон дороги по іншій обочині дороги (осьова лінія має лишитись в кінцевому результаті всередині полігона дороги).
3. Позначте полігон дороги і осьову лінію та виконайте скрипт.
Для коректної роботи скрипта, необхідно дотриматись умов:
-дорога (зібрана в полігональному шарі при шаблоні збору трилінія) не має містити в середині полігона інших об’єктів, окрім як осьову лінію;
-осьова лінія, перед запуском скрипта, не повинна виходити за межі полігону дороги;
-правити можна як осьову лінію, так і полігон дороги, але кількість точок як полігона так і осьової має бути не змінною (вставка чи видалення точок при правці після заведення як трилінія не дасть результату роботи скрипта)
Всі можливі недотримання цих умов виловлюються скриптом. Пробуйте, в мене получилось на ура ![]()
Шаблон трилінія передбачає що, до кожної точки на одній лінії полігона є відповідна точка на іншій лінії полігона і точка на осьовій лінії. Таким чином, полігон дороги умовно розбивається на трапеції, серединна лінія яких є осьовою.
Дякую.