Vaho писал(а):
Ахаха, а я знаю об этой функции, но работать с ней, просто ужас.
1. Для того чтобы изменить координаты рамки, их нужно считать.
2. Считать можно функцией GetProp....., но считывает таблицу с данными которую на строки разложить ну никак не получается (1-я строка: масштаб и координата Х первой точки рамки соответственно 2-я строка У 1-й точки и Х второй точки), свойство рамки (-P[22]) которое считывает функция, вообще не приложу ума что это.
3. Даже если считать каким-то образом координаты, их нужно обработать, а обработать их можно только если перевести тип данных, а перевести тип данных функцией @Calc Numeric или просто @Calc не выходит.
4. Если каким-то образом выложенные пункты осилить, то все это безобразие нужно сложить в одну кучу и постараться запихнуть через функцию @SetProp.... обратно туда откуда вытягивали.
Так "страшно" функції ще не описували. пропоную фактичне вирішення: написав один раз і забув про всі страшні "образи"
Код:
@ExecuteMenu MapFrameSelected
$TextRamka=@Map.GetProperties
@Text[1].Text=$TextRamka
$X1Y1=@Text[1].Line[2]
$X2Y2=@Text[1].Line[3]
$X3Y3=@Text[1].Line[4]
$X1=@StringPart 1 $X1Y1
$X2=@StringPart 1 $X2Y2
$X11=@Calc Numeric("$X1")
$X22=@Calc Numeric("$X2")
$DX=$X22-$X11
$Y2=@StringPart 2 $X2Y2
$Y3=@StringPart 2 $X3Y3
$Y22=@Calc Numeric("$Y2")
$Y33=@Calc Numeric("$Y3")
$DY=$Y22-$Y33
@If ($DX<1500) and ($DY<1500) then @Goto %10000
$Result=25000
@Text[1].Line[1]=25000 1
$X1N=($X11+$X22)/2-1875
$Y1N=($Y22+$Y33)/2-1875
$X2N=($X11+$X22)/2+1875
$Y3N=($Y22+$Y33)/2+1875
@Goto %Dali
%10000
$Result=10000
@Text[1].Line[1]=10000 1
$X1N=($X11+$X22)/2-750
$Y1N=($Y22+$Y33)/2-750
$X2N=($X11+$X22)/2+750
$Y3N=($Y22+$Y33)/2+750
%Dali
$Rjad1=@Text[1].Line[1]
@Text[1].Line[2]=$X1N $Y1N
@Text[1].Line[3]=$X2N $Y1N
@Text[1].Line[4]=$X2N $Y3N
@Text[1].Line[5]=$X1N $Y3N
$TextRamkaN=$Rjad1|$X1N $Y1N|$X2N $Y1N|$X2N $Y3N|$X1N $Y3N
@Map.SetProperties $TextRamkaN