звiт в Geodesy.exe ![]()
[size=85]10.12.2016 дописав роботу з замкненими контурами[/size]
; www.vinmap.net/forum/viewtopic.php?f=1&t=2539&start=120#38388
; 09.12.2016
$Count=@MapCount
@if $Count=0 @Break
$Sel=@Map.SelCount
@if $Sel=0 then @break Виберiть елементи
$Obj=0
;Parameters
$Dist=100
$Param=4
%Cycle
$Obj=@Map.NextSelected $Obj
$PntCnt=@Map.Object[$Obj].Count
@if $PntCnt<3 then goto %SkipElem
; якщо контур замкнений
$Closed=@Map.Object[$Obj].Closed
@if $Closed=1 then @goto %CloseElem
$PntCnt=$PntCnt-1
%DrawBS
@if $PntCnt=1 then @goto %SkipElem
$PrvCnt=$PntCnt-1
$LnAng1=@Map.Object[$Obj].LineAngle[$PntCnt]
$LnAng2=@Map.Object[$Obj].LineAngle[$PrvCnt]
@goto %Next
%CloseElem
$EndPnt=@Map.Object[$Obj].Count
$EndPnt=$EndPnt-1
$LnAng1=@Map.Object[$Obj].LineAngle[$EndPnt]
$LnAng2=@Map.Object[$Obj].LineAngle[1]
%Next
$PntCur=@Map.Object[$Obj].Point[$PntCnt]
$LnAng1=@Calc Replace("$LnAng1",",",".")
$LnAng1=@DequoteText $LnAng1
$LnAng2=@Calc Replace("$LnAng2",",",".")
$LnAng2=@DequoteText $LnAng2
$LnAng2=$LnAng2+180
@if $LnAng2>360 then $LnAng2=$LnAng2-360
$Angle=$LnAng1-180+($LnAng2-$LnAng1)/2
@if $LnAng2<$LnAng1 then $Angle=$Angle+180
$Rad=$Angle*3.1415926535897932384626433832795028841971/180
$ACos=@Calc Cos($Rad)
$PntX=@StringPart 1 $PntCur
$PntY=@StringPart 2 $PntCur
$PntX=@Calc Replace("$PntX",",",".")
$PntY=@Calc Replace("$PntY",",",".")
$PntX=@DequoteText $PntX
$PntY=@DequoteText $PntY
$DX=$PntX+$ACos*$Dist
$DX=@Calc Replace("$DX",".",",")
$DX=@DequoteText $DX
$ASin=@Calc Sin($Rad)
$DY=$PntY+$ASin*$Dist
$DY=@Calc Replace("$DY",".",",")
$DY=@DequoteText $DY
$PntX=@Calc Replace("$PntX",".",",")
$PntY=@Calc Replace("$PntY",".",",")
$PntX=@DequoteText $PntX
$PntY=@DequoteText $PntY
$Layer=@Map.Object[$Obj].Layer
$N=@Map.AddObject 0|1|$Layer|2|0 $PntX $PntY 0|0 $DX $DY 0|1|$Layer|1|$Param $Angle
$PntCnt=$PntCnt-1
@if $PntCnt>0 then @goto %DrawBS
%SkipElem
$Sel=$Sel-1
@if $Sel>0 then @goto %Cycle
%End