Pobierz prezentację
Pobieranie prezentacji. Proszę czekać
OpublikowałKinga Szumny Został zmieniony 11 lat temu
1
Kartowanie pikiet pomierzonych metodą biegunową
3
Dane zapisujemy do plików tekstowych: osnxy.txt 10011000.001000.00 10021040.001000.00 pombieg.txt (numer celu, kąt, odległość) 100230.0000 40.00 1 86.24369.23 2 69.97266.69 3 54.84999.20 4 33.04018.08 5 29.746211.17 6 368.372612.55 7344.744317.06 8840.763015.01
4
linie.txt (linie do narysowania od punktu do punktu): 1 2 2 3 3 4 4 5 itd.
5
'*********************** MAIN ******************* sub Main dane przetwarzanie wyniki end sub Program powinien mieć postać strukturalną – powinien składać się z wielu procedur – im krótsza procedura tym lepiej. Główna część programu MAIN może właściwie w każdym programie wyglądać tak jak niżej:
6
Public nro() as integer, xo() as double, yo() as double Public nrp() as integer, xp() as double, yp() as double Public beta() as double, bok() as double Public odp() as integer, dop() as integer Public ios as integer, ipik as integer, ilin as integer Public nu as integer, beta0 as double, bok0 as double Na początku programu umieszcza się zmienne Public, które są dostępne w całym programie – zmienne globalne. W procedurach definiuje się zmienne lokalne, które dostępne są wyłącznie w tych procedurach, w których zostały zdefiniowane.
7
Numery i współrzędne punktów osnowy: nro() as integer, xo() as double, yo() as double Numery i współrzędne pikiet: nrp() as integer, xp() as double, yp() as double Pomiary biegunowe: beta() as double, bok() as double Numery punktów do połączenia: odp() as integer, dop() as integer Liczba punktów osnowy, pikiet i linii do narysowania: ios as integer, ipik as integer, ilin as integer nu punkt nawiązania, beta0 kąt nawiązania, bok0 bok naw.
8
Procedury i funkcje w programie muszą być zapisane w takiej kolejności, aby każda procedura lub funkcja była zdefiniowana przed jej pierwszym wywołaniem.
9
'*********************** MAIN ******************* sub Main dane przetwarzanie wyniki end sub '*********************** DANE***************** sub dane osnowa pikiety linie end sub
10
'*********************** OSNOWA ************************* sub osnowa dim plik_osn as string dim i as integer plik_osn = MbeInputBox("Podaj nazwę pliku z danymi osnowy", "D:\osnxy.txt", "WCZYTYWANIE DANYCH OSNOWY ") open plik_osn for input as #1 ios=0 while not eof(1) ios=ios+1 redim preserve nro(ios) redim preserve xo(ios) redim preserve yo(ios) input #1, nro(ios), xo(ios), yo(ios) wend close #1 end sub
11
'*********************** PIKIETY ************************* sub pikiety dim plik_pik as string dim i as integer plik_pik = MbeInputBox("Podaj nazwę pliku z wynikami pomiarów", "D:\pombieg.txt", "WCZYTYWANIE WYNIKÓW POMIARÓW ") open plik_pik for input as #1 input #1, nu, beta0,bok0 ipik=0 while not eof(1) ipik=ipik+1 redim preserve nrp(ipik) redim preserve beta(ipik) redim preserve bok(ipik) input #1, nrp(ipik),beta(ipik),bok (ipik) wend close #1 end sub
12
'*********************** LINIE ************************* sub linie dim plik_lin as string dim i as integer plik_lin = MbeInputBox("Podaj nazwę pliku połączeń", "D:\linie.txt", "WCZYTYWANIE PLIKU POŁĄCZEŃ ") open plik_lin for input as #1 ilin=0 while not eof(1) ilin=ilin+1 redim preserve odp(ilin) redim preserve dop(ilin) input #1, odp(ilin),dop(ilin) wend close #1 end sub
13
'*********************** PRZETWARZANIE ********************* sub przetwarzanie xy_pikiet kartowanie linie end sub
14
A B P lili
15
'***************************AZYMUT ********************************************** Function Azymut(xa as double, ya as double, xb as double, yb as double) as double Dim dx as double, dy as double, az as double dx=xb-xa: dy=yb-ya if dx=0 then if dy<0 then az=300 if dy>0 then az=100 else az=atn(dy/dx)*200/pi end if if dx<0 then az=az+200 if az<0 then az=az+400 azymut=az end function
16
'***************************** XY_PIKIET **************************************** sub xy_pikiet Dim xa as double, ya as double, l as double,cs as double, sn as double Dim az as double,azi as double xa=xo(1):ya=yo(1) redim xp(ipik): redim yp(ipik) az= azymut(xo(1),yo(1),xo(2),yo(2)) for i=1 to ipik l=bok(i) azi=az-beta0+beta(i) sn=sin(azi/200*pi) cs=cos(azi/200*pi) xp(i)=xa+l*cs yp(i)=ya+l*sn next i end sub
17
'*********************** KARTOWANIE *********************** sub kartowanie kart_osnowy kart_pikiet end sub
18
'*********************** KARTOWANIE OSNOWY *********************************** sub kart_osnowy Dim point As MbePoint Dim i as integer for i= 1 to ios MbeSendCommand "PLACE CIRCLE ICON " MbeSendCommand "IGEN CONSTRAIN RADIUS 0.3" point.x = yo(i) point.y = xo(i) MbeSendDataPoint point, 1% MbeSendReset MbeSendCommand "PLACE TEXT" MbeSendCommand cstr(nro(i)) point.x = yo(i) point.y = xo(i) MbeSendDataPoint point, 1% MbeSendReset next i end sub
19
'*********************** KARTOWANIE PIKIET ************************************ sub kart_pikiet Dim point As MbePoint Dim i as integer for i= 1 to ipik MbeSendCommand "PLACE CIRCLE ICON " MbeSendCommand "IGEN CONSTRAIN RADIUS 0.1" point.x = yp(i) point.y = xp(i) MbeSendDataPoint point, 1% MbeSendReset MbeSendCommand "PLACE TEXT" MbeSendCommand cstr(nrp(i)) point.x = yp(i) point.y = xp(i) MbeSendDataPoint point, 1% MbeSendReset next i end sub
20
'********************************** RYSOWANIE LINII***************************** sub rys_linie Dim point As MbePoint Dim i1 as integer, i2 as integer for i= 1 to ilin i1=odp(i): i2=dop(i) MbeSendCommand "PLACE SMARTLINE point.x = yp(i1) point.y = xp(i1) MbeSendDataPoint point, 1% point.x = yp(i2) point.y = xp(i2) MbeSendDataPoint point, 1% MbeSendReset next i end sub
23
'************************ WYNIKI - RAPORT **************** sub wyniki raport_plik raport_osnowa raport_pomiary raport_xy close #1 end sub
24
'*************** RAPORT NAZWA PLIKU ****************************** sub raport_plik() Dim plikr as string ' Pytanie o nazwę pliku raportu plikr=MbeInputBox("Podaj nazwę pliku raportu","D:\raport1.txt","PLIK RAPORTU") Open plikr for Output as #1 end sub
25
'*************** RAPORT OSNOWA ****************************** sub raport_osnowa() Dim i as integer Print #1, "Dane punkty osnowy" Print #1, "Nr X Y" for i=1 to ios print #1,nro(i), format$(xo(i),"0.00"), format$(yo(i),"0.00") next i Print #1," " end sub
26
'*************** RAPORT POMIARY ****************************** sub raport_pomiary() Dim i as integer Print #1, "Nawiązanie do punktu ",nu," odczyt:",beta0 Print #1, " " Print #1, "Miary biegunowe" Print #1, "Nr Kąt Długość" for i=1 to ipik print #1,nrp(i), format$(beta(i),"0.0000"), format$(bok(i),"0.00") next i Print #1," " end sub
27
'*************** RAPORT WSPÓŁRZĘDNE PIKIET ************************* sub raport_xy() Dim i as integer Print #1, "Obliczone współrzędne pikiet" Print #1, "Nr X Y" for i=1 to ipik print #1,nrp(i), format$(xp(i),"0.00"), format$(yp(i),"0.00") next i Print #1," " end sub
28
Dane punkty osnowy Nr X Y 1001 1000.00 1000.00 1002 1028.30 1028.27 Nawiązanie do punktu 1002 odczyt: 200 Miary biegunowe Nr Kąt Długość 1 86.2436 9.23 2 69.9726 6.69 3 54.8499 9.20 4 33.0401 8.08 5 29.7462 11.17 6 368.3726 12.55 7 344.7443 17.06 8 40.7630 15.01 9 45.0262 18.39
29
Obliczone współrzędne pikiet Nr X Y 1 995.04 1007.76 2 997.91 1006.39 3 999.29 1009.19 4 1002.14 1007.79 5 1003.51 1010.59 6 1012.04 1003.56 7 1016.99 998.61 8 1002.15 1014.88 9 1001.40 1018.37 10 1014.13 1005.64 11 1016.96 1002.81 12 1002.84 1019.81 13 1019.07 1004.93 14 1021.19 1002.81 15 1014.16 1014.16 16 1015.52 1015.52 17 1011.33 1021.23 18 1016.95 1019.78
Podobne prezentacje
© 2024 SlidePlayer.pl Inc.
All rights reserved.