Помогите со скриптом!

0 голосов
спросил 09 Окт, 11 от Virpul (380 баллов) в категории Программные продукты Esri
Здравствуйте, мне нужна помощь помочь разобраться с уже написанным скриптом:


'do_h_lin.ave строит сложные линии. Создайте в виде кнопку и подсоедините к ней
' эту программку. Выбирете значок и его размер, который будет наноситься на линию
'с заданным шагом. Выбирите графику и нажмите на созданную кнопку, программа задаст
'вопроссы и начнет работать.

theView = av.GetActiveDoc
TheDisplay=theView.GetDisplay
Theinter=List.Make
w=MsgBox.Input ("w=","Введите число шагов", "1").asNumber
if (w = Nil) then
exit
end
THi=0
While (THi<w)
n=MsgBox.Input ("n=","Введите Шаг", "40000").asNumber
if (n = Nil) then
exit
end
Theinter.Add(n)
THi=THi+1
end
THj=THi-1

d=MsgBox.Input ("d=","Введите сдвиг", "1050").asNumber
if (d = Nil) then
exit
end


qw=MsgBox.ChoiceAsString({"Направить наружу","Направить внутрь"},"Выбмрети направление : " , "")
if (qw = Nil) then
exit
end



for each recnum in av.GetActiveDoc.GetGraphics.getSelected
   Shpart=recnum.GetShape.AsMultiPoint.AsList
      E0=0
   X0=Shpart.get(0).GetX
   Y0=Shpart.get(0).getY
' Shpart.Remove (0)

THj=0
          for each Shpoint in Shpart
           
            Xi=Shpoint.GetX
            Yi=Shpoint.GetY
            TheX=((Xi.abs)-(X0.abs)).abs
            TheY=((Yi.abs)-(Y0.abs)).abs
            Ez=(TheX^2)+(TheY^2)
            E=Ez.sqrt
            if(THj=THi) then
            THj=0
            end
            n=Theinter.get(THj)
            Thj=Thj+1       
             En=n-E0
            if (En>=0) then
            While (E>=En)
       
              
            THEcos=TheX/E
            THEsin=TheY/E
              
            Thea=Thesin.Asin.AsDegrees
             if (qw="Направить внутрь") then
              Thea=180+Thea
              d=-(d.abs)
               end

           dx=d*Thesin
           dy=d*Thecos
            
            if (Xi<X0) Then
            THEcos=-Thecos
            nx=0
            else
            nx=1
            end
              if (Yi<Y0) Then
            THEsin=-Thesin
            ny=0
            else
            ny=1
            end
            if ((nx=1)and(ny=1)) then
             dx=-dx
            end
             
            if ((nx=0)and(ny=1)) then
            Thea=180-Thea
            dx=-dx
            dy=-dy
            end

            if ((nx=1)and(ny=0)) then
            Thea=-Thea
            end
             
                     
           if ((nx=0)and(ny=0)) then
            Thea=180+Thea
            dy=-dy
            end

            Xn=X0+(En*Thecos)+dx
            Yn=Y0+(En*Thesin)+dy            
           ThePoint=Xn@Yn
            

TheGraphicPoint=GraphicShape.Make(Thepoint)
TheGraphicPoint.Getsymbol.SetAngle(Thea)
TheGraphicList=TheView.GetGraphics
TheGraphicList.Add(TheGraphicPoint)

if(THj=THi) then
            THj=0
            end
            n=Theinter.get(THj)
            THj=THj+1     &nb

11 Ответы

0 голосов
ответил 10 Окт, 11 от Virpul (380 баллов)
получилось, спасибо)

Добро пожаловать на сайт Вопросов и Ответов, где вы можете задавать вопросы по GIS тематике и получать ответы от других членов сообщества.
...