Доброго времени суток!
Пытаюсь написать скрипт:
Код:
; Получаем исходные данные
$SourceObject=@Map.NextSelected
$PointsCount=@Map.Object[$SourceObject].Count
; Стандартные значения
$BorderLayerID=100001
$BorderHeigth=100,0
$BorderWidth=100,0
$CurrentPoint=1
; Создаем слой для рамки
@Map.Layers.Add $BorderLayerID 1 Секущая рамка
; Цикл по всем точкам объекта
%PointCycle
; Получаем координаты исходной точки
$CurrX=@Map.Object[$SourceObject].Point[$CurrentPoint].X
$CurrY=@Map.Object[$SourceObject].Point[$CurrentPoint].Y
; Прибавляем нужные значения
$x1=$CurrX+$BorderHeigth
$y1=$CurrY
$x2=$CurrX
$y2=$CurrY+$BorderWidth
$x3=$CurrX-$BorderHeigth
$y3=$CurrY
$x4=$CurrX
$y4=$CurrY-$BorderWidth
; Создаем рамку вокруг точки
$CutBorder=@Map.AddObject 0|0|ID$BorderLayerID|5|0 x1 y1 0|0 x2 y2 0|0 x3 y3 0|0 x4 y4 0|0 x1 y1 0
; Выделяем и разворачиваем
@Map.SelectObject $CutBorder
@Map.Selected.Rotate 45
; Превращаем в рамку карты
@Map.FrameSelected
; Сохраняем в графический файл
@Map.SaveToTIF 300 24 МЗ_$CurrentPoint.jpg
; Удалить рамку
@Map.DeleteObject $CutBorder
$CurrentPoint=$CurrentPoint+1
@If $CurrentPoint<$PointsCount then @Goto %PointCycle
Что он должен делать (пример): есть полигон, содержит 4 точки. Выделяю его, нажимаю кнопку скрипта > Вокруг каждой точки полигона, по очереди создается рамка (тоже полигон из 4 точек), разворачивается на 45 гр. > рамка превращается в рамку карты (желтую) > сохраняется в виде картинки с задаными параметрами.
Проблема в том, что выражение
Код:
$x1=$CurrX+$BorderHeigth
не складывает координаты (например,
$x1=100,0+100,0=>$x1=200,0), а превращается в строку (
$x1=100,0+100,0=>$x1=100,0+100,0). Естественно, потом при создании объекта ошибка:
Пожалуйста, помогите, кто знает!