Andrzej Borowiecki. Wybrane zagadnienia z programowania dla geodetów.



Podobne dokumenty
D Archiwum Prac Dyplomowych - Instrukcja dla studentów

APLIKACJA W J ZYKU VISUAL BASIC S U CA DO POZYSKIWANIA WSPÓ RZ DNYCH PUNKTÓW Z PROJEKTU W MICROSTATION

D Archiwum Prac Dyplomowych - Instrukcja dla opiekunów/promotorów/recenzentów

WikiWS For Business Sharks

Zapis informacji, systemy pozycyjne 1. Literatura Jerzy Grębosz, Symfonia C++ standard. Harvey M. Deitl, Paul J. Deitl, Arkana C++. Programowanie.

KRZYWA BÉZIERA TWORZENIE I WIZUALIZACJA KRZYWYCH PARAMETRYCZNYCH NA PRZYKŁADZIE KRZYWEJ BÉZIERA

Andrzej Borowiecki. Open Office. Calc arkusz kalkulacyjny. Przykłady zadań dla geodetów

Laboratorium ochrony danych

Projekt 6 6. ROZWIĄZYWANIE RÓWNAŃ NIELINIOWYCH CAŁKOWANIE NUMERYCZNE

Wprowadzenie do programowania w języku Visual Basic. Podstawowe instrukcje języka

ZESTAW ZADAŃ Z INFORMATYKI

Uwagi dotyczące notacji kodu! Moduły. Struktura modułu. Procedury. Opcje modułu (niektóre)

KURS STATYSTYKA. Lekcja 6 Regresja i linie regresji ZADANIE DOMOWE. Strona 1

Ile wynosi suma miar kątów wewnętrznych w pięciokącie?

Praca w programie Power Draft

D Archiwum Prac Dyplomowych - kontrola antyplagiatowa

Układ scalony UL 1111

Andrzej Borowiecki. Podstawy programowania w języku Visual Basic dla geodetów

Zadanie na wykonanie Projektu Zespołowego

Obliczenie ciągów poligonowych otwartych, obustronnie nawiązanych

TWORZENIE OBIEKTÓW GRAFICZNYCH

Baltie 3. Podręcznik do nauki programowania dla klas I III gimnazjum. Tadeusz Sołtys, Bohumír Soukup

PROGRAM GEO Folder ten naleŝy wkleić do folderu osobistego: D:\inf1\nazwisko\GEO89

Obsługa grafiki w Delphi, rysowanie na płótnie, obsługa myszki, zapisywanie obrazków do plików, bitmapy pozaekranowe.

Treść zadań 1 8 odnosi się do poniższego diagramu przestrzenno-czasowego.

Zaawansowane metody numeryczne Komputerowa analiza zagadnień różniczkowych 1. Układy równań liniowych

Podstawy programowania, Poniedziałek , 8-10 Projekt, część 1

Badanie współzależności dwóch cech ilościowych X i Y. Analiza korelacji prostej

LibreOffice Calc VBA

Obliczenie azymutów ze współrzędnych punktów tablica struktur punktów, tablica struktur azymutów

(M2) Dynamika 1. ŚRODEK MASY. T. Środek ciężkości i środek masy

Visual Basic dla AutoCAD

Praca w programie Power Draft

Centralna Izba Pomiarów Telekomunikacyjnych (P-12) Komputerowe stanowisko do wzorcowania generatorów podstawy czasu w częstościomierzach cyfrowych

Obsługa blędów i zewnętrznych plików

Instrukcje cykliczne (pętle) WHILE...END WHILE

STATECZNOŚĆ SKARP. α - kąt nachylenia skarpy [ o ], φ - kąt tarcia wewnętrznego gruntu [ o ],

narzędzie Linia. 2. W polu koloru kliknij kolor, którego chcesz użyć. 3. Aby coś narysować, przeciągnij wskaźnikiem w obszarze rysowania.

Pascal - grafika. Uruchomienie trybu graficznego. Moduł graph. Domyślny tryb graficzny

Symbole graficzne. 1. Rezystor Rysujemy symbol graficzny rezystora

Systemy Ochrony Powietrza Ćwiczenia Laboratoryjne

Wydział Zarządzania AGH. Katedra Informatyki Stosowanej. Pętle. Programowanie komputerowe

Podstawy programowania. Wykład: 9. Łańcuchy znaków. dr Artur Bartoszewski -Podstawy programowania, sem 1 - WYKŁAD

Wprowadzenie do rysowania w 3D. Praca w środowisku 3D

Politechnika Warszawska Wydział Mechatroniki Instytut Automatyki i Robotyki

Symulator układu regulacji automatycznej z samonastrajającym regulatorem PID

Program APEK Użytkownik Instrukcja użytkownika

MATEMATYKA POZIOM ROZSZERZONY Kryteria oceniania odpowiedzi. Arkusz A II. Strona 1 z 5

Twierdzenie Bezouta i liczby zespolone Javier de Lucas. Rozwi azanie 2. Z twierdzenia dzielenia wielomianów, mamy, że

Program szkolenia VBA (VISUAL BASIC FOR APPLICATIONS) W EXCELU PRZEKROJOWY.

Projekt współfinansowany ze środków Unii Europejskiej w ramach Europejskiego Funduszu Społecznego

METODY I JĘZYKI PROGRAMOWANIA PROGRAMOWANIE STRUKTURALNE. Wykład 02

Portfele zawierające walor pozbawiony ryzyka. Elementy teorii rynku kapitałowego

Pewnie wkrocz w świat baz danych z programem Access 2010! Bonus! Odpowiedzi do zadań na FTP

Podstawy programowania w języku Visual Basic dla Aplikacji (VBA)

Rozwiązywanie zadań optymalizacji w środowisku programu MATLAB

KGGiBM GRAFIKA INŻYNIERSKA Rok III, sem. VI, sem IV SN WILiŚ Rok akademicki 2011/2012

Zadanie 1. Udowodnij, że CAUS PRAM. Załóżmy przetwarzanie przyczynowo spójne. Dla każdego obrazu historii hv i zachodzi zatem:

Tworzenie stron WWW. Kurs. Wydanie III

GRAFIKA INŻYNIERSKA INSTRUKCJA PODSTAWOWE KOMENDY AUTOCADA - TRÓJKĄTY

XXX OLIMPIADA FIZYCZNA ETAP III Zadanie doświadczalne

Program szkolenia PODSTAWY VBA (VISUAL BASIC FOR APPLICATIONS) I FORMULARZE.

Program szkolenia VBA (VISUAL BASIC FOR APPLICATIONS) W EXCELU PODSTAWOWY.

Kiedy i czy konieczne?

W praktyce często zdarza się, że wyniki obu prób możemy traktować jako. wyniki pomiarów na tym samym elemencie populacji np.

INSTYTUT INFORMATYKI STOSOWANEJ MODELOWANIE CZĘŚCI Z WYKORZYSTANIEM PROGRAMU SOLID EDGE

Zadanie: Napisać program, który odgadnie liczbę naturalną z przedziału [1, 50] wylosowaną przez komputer. Można zastosować różne algorytmy.

PRÓBNA MATURA ZADANIA PRZYKŁADOWE

Bonus! Odpowiedzi do zadań na FTP. Pewnie wkrocz w świat baz danych z programem Access 2010!

Praca w programie Power Draft

Rysowanie precyzyjne. Polecenie:

PAŃSTWOWA WYŻSZA SZKOŁA ZAWODOWA W PILE INSTYTUT POLITECHNICZNY. Zakład Budowy i Eksploatacji Maszyn PRACOWNIA TERMODYNAMIKI TECHNICZNEJ INSTRUKCJA

Kwantowa natura promieniowania elektromagnetycznego

Języki i metody programowania Java Lab1 Zofia Kruczkiewicz

PRÓBNA MATURA ZADANIA PRZYKŁADOWE

Zasady programowania Dokumentacja

Opis programu Konwersja MPF Spis treści

Ćwiczenie 10. Metody eksploracji danych

System operacyjny Linux

INFORMATYKA KLASA IV

Teraz bajty. Informatyka dla szkoły podstawowej. Klasa 4 Wymagania edukacyjne na poszczególne oceny szkolne dla klasy 4

Teraz bajty. Informatyka dla szkoły podstawowej. Klasa IV

Podstawy Programowania Podstawowa składnia języka C++

a[1] a[2] a[3] a[4] a[5] a[6] a[7] a[8] a[9] a[10]

Materiały do laboratorium MS ACCESS BASIC

Tablice, DataGridView

Elementy języka C. ACprogramislikeafastdanceonanewlywaxeddancefloorbypeople carrying razors.


Wprowadzenie do Sieci Neuronowych Sieci rekurencyjne

Ćwiczenie 1: Pierwsze kroki

Aplikacje geodezyjne

do instrukcja while (wyrażenie);

Wyznaczanie długości fali światła metodą pierścieni Newtona

Funkcje zawarte w bibliotece < io.h >

Umieszczanie kodu. kod skryptu

SZTUCZNA INTELIGENCJA

Rozmowy VoIP bez komputera

Transkrypt:

Andrzej Boroweck Wybrane zagadnena z programowana dla geodetów. Kraków 2009 1

1. Programowane w Vsual Bascu Programy w Vsual Basc dla McroStaton można tworzyć na różne sposoby: zarejestrować wykonywane ręczne czynnośc lub napsać program według własnego pomysłu. Rejestracja czynnośc wykonywanych ręczne tak utworzony program powtarza jeden dentyczny cąg czynnośc, ale dla początkujących programstów jest podstawą do napsana bardzej zaawansowanej procedury. Po wybranu opcj Utwórz makro Basc podaje sę nazwę ops: 2

Na ekrane pojawa sę paleta przycsków znanych z welu urządzeń (Play Pauza Stop). Kedy wcśnęty jest przycsk Play każda czynność, którą wykonujemy w McroStaton jest rejestrowana zapsywana w postac cągu poleceń w języku Vsual Basc. Tu narysowano lnę. Po zakończenu rysunku nacska sę przycsk STOP. Tak program można następne modyfkować. Program psany samodzelne ma zwykle nną strukturę występują w nm funkcje procedury. 3

PRZYKŁAD PROGRAMU ZAREJESTROWANEGO AUTOMATYCZNIE I NASTĘPNIE MODYFIKOWANEGO. Wybrano narzędze do rysowana ln połączono dwa dowolne wybrane punkty. W wynku rejestracj tych czynnośc powstał następujący program: ' program łączy lną 2 punkty Sub man Dm startpont As MbePont Dm pont As MbePont, pont2 As MbePont ' Wyślj polecene MbeSendCommand "PLACE SMARTLINE " ' Współrzędne w jednostkach głównych startpont.x = 0.626387# startpont.y = 1.851924# startpont.z = 0.000000# ' Wyślj punkt danych do beŝącego polecena pont.x = startpont.x pont.y = startpont.y pont.z = startpont.z MbeSendDataPont pont, 1% pont.x = startpont.x + 0.965968# pont.y = startpont.y + 0.657395# pont.z = startpont.z MbeSendDataPont pont, 1% ' Wyślj przywrócene do beŝącego polecena MbeSendReset End Sub Ważną rolę odgrywają tu zmenne typu MbePont: startpont, pont pont2. Pozwalają one określć lokalzację punktu ze współrzędnych. W welu zadanach wystarczy tylko jedna z nch np. pont. Zmenna typu MbePont określa 3 współrzędne x, y z. Jeżel rysujemy mapę wystarczają tylko dwe x y. W uproszczonej wersj program łączący 2 punkty o współrzędnych np. (0,0) (100,200) można napsać tak: ' program łączy lną 2 punkty Sub man Dm pont As MbePont ' Wyślj polecene MbeSendCommand "PLACE SMARTLINE " ' Wyślj punkt danych do beŝącego polecena pont.x = 0 pont.y = 0 MbeSendDataPont pont, 1% pont.x = 200 pont.y = 100 MbeSendDataPont pont, 1% ' Wyślj przywrócene do beŝącego polecena MbeSendReset End Sub Kończące program polecene MbeSendReset oznacza zakończene pracy z narzędzem tu narzędzem jest Place Smartlne służące do rysowana ln. 4

WPROWADZANIE DANYCH Z KLAWIATURY Tak program wykonuje tylko jedną czynność łączy lną punkty o współrzędnych (0,0) (100,200), jednak mmo swej prostoty może być bardzo przydatny pod warunkem, że będze w nm możlwość zmany współrzędnych łączonych punktów. Współrzędne można wprowadzać ręczne z klawatury wykorzystując polecene MbeInputBox: x1s = MbeInputBox("Podaj x1", "0.00", "Podaj X dla perwszego punktu ") y1s= MbeInputBox("Podaj y1", "0.00", "Podaj Y dla perwszego punktu ") x2s = MbeInputBox("Podaj x2", "0.00", "Podaj X dla drugego punktu ") y2s = MbeInputBox("Podaj y2", "0.00", "Podaj Y dla drugego punktu ") x1=val(x1s) y1=val(y1s) x2=val(x2s) y2=val(y2s) Funkcja val zamena wczytany cąg znaków na lczbę. 5

Program w tej postac pozwala łączyć lną dowolne dwa punkty, których współrzędne podajemy z klawatury: Zadane 1. Wykorzystując powyższy program narysować kwadrat, prostokąt trójkąt. Przed przystąpenem do rysowana należy przygotować na kartce współrzędne narożnków. 6

RYSOWANIE OKRĘGU: MbeSendCommand "PLACE CIRCLE ICON " Okrąg można narysować klkoma metodam: 1a. względem środka - wskazując na środek okręgu na punkt na obwodze jeżel ne jest zaznaczona średnca: MbeSendCommand "PLACE CIRCLE ICON " MbeSendCommand "IGEN CONSTRAIN RADIUS UNLOCK " MbeSetAppVarable "IGEN", "tcb->mstoolsettngs.gen.placecrclemode", 0& MbeSendCommand "PLACE CIRCLE ICON " pont.x = ys pont.y = xs MbeSendDataPont pont, 1% pont.x = y1 pont.y = x1 MbeSendDataPont pont, 1% 7

1b. względem środka - wskazując tylko na środek okręgu, jeżel wpsana jest średnca MbeSendCommand "PLACE CIRCLE ICON " MbeSetAppVarable "IGEN", "tcb->mstoolsettngs.gen.placecrclemode", 0& MbeSendCommand "IGEN CONSTRAIN RADIUS LOCK " MbeSendCommand "IGEN CONSTRAIN RADIUS 1.0000" ' Wyślj punkt danych do beżącego polecena pont.x = ys pont.y = xs MbeSendDataPont pont, 1% 2. względem krawędz wskazując 3 punkty na obwodze, przez które mus przejść okrąg MbeSendCommand "PLACE CIRCLE ICON " MbeSetAppVarable "IGEN", "tcb->mstoolsettngs.gen.placecrclemode", 1& MbeSendCommand "PLACE CIRCLE ICON " pont.x = y1 pont.y = x1 MbeSendDataPont pont, 1% pont.x = y2 pont.y = x2 MbeSendDataPont pont, 1% pont.x = y3 pont.y = x3 MbeSendDataPont pont, 1% 3. względem średncy wskazując dwa punkty wyznaczające średncę MbeSendCommand "PLACE CIRCLE ICON " MbeSetAppVarable "IGEN", "tcb->mstoolsettngs.gen.placecrclemode", 2& MbeSendCommand "PLACE CIRCLE ICON " pont.x = y1 pont.y = x1 MbeSendDataPont pont, 1% pont.x = y2 pont.y = x2 MbeSendDataPont pont, 1% Wyboru metody dokonuje sę za pomocą polecena: - względem środka: MbeSetAppVarable "IGEN", "tcb->mstoolsettngs.gen.placecrclemode", 0& - względem krawędz MbeSetAppVarable "IGEN", "tcb->mstoolsettngs.gen.placecrclemode", 1& - względem średncy MbeSetAppVarable "IGEN", "tcb->mstoolsettngs.gen.placecrclemode", 2& 8

Przykład: Program rysuje trójkąt w oparcu o współrzędne wprowadzone z klawatury, a następne rysuje okrąg opsany na tym trójkące: Struktura programu: Program składa sę z klku procedur: czytanexy - procedura pozwala wprowadzć z klawatury współrzędne werzchołków trójkąta rysunek3 - procedura wykonująca rysunek trójkąta; okrąg procedura wykonująca rysunek okręgu opsanego na trójkące sr - środek okręgu promeń 9

Główna część programu (znajduje sę zawsze na końcu): '*********************************** MAIN ********************************* sub man czytanexy rysunek3 okrag sr end sub 10

Na początku programu zadeklarowane są zmenne typu Publc, które są dostępne w całym programe w każdej procedurze. W procedurach czytanexy sr zadeklarowane są zmenne lokalne tekstowe typu strng rzeczywste podwójnej precyzj double. Zmenne lokalne dostępne są tylko w tej procedurze, w której zostały zadeklarowane. Zadane 3. Uzupełnć program o procedurę, która oblczy wyśwetl na ekrane pole trójkąta pole koła o promenu r. 11

CZYTANIE DANYCH Z PLIKU I ZAPISYWANIE WYNIKÓW DO PLIKU RAPORTU Nazwa plku jest zmenną typu strng, może zawerać równeż śceżkę dostępu, np. D:\młocn\dane.txt Program pownen umożlwć każdorazowo podane nazwy plku: plk_dane = MbeInputBox("Podaj nazwę plku z danym ", "D:\dane.txt", "WCZYTYWANIE DANYCH ") Otwarce plku wykonuje sę za pomocą nstrukcj OPEN: OPEN plk_dane for Input as #1 OPEN plk_dane for Output as #1 OPEN plk_dane for Append as #1 Input czytane danych Output zapsywane danych do plku Append dopsywane do plku Po zakończenu pracy z plkem należy go zamknąć nstrukcją: Close #1 Czytane danych z plku umożlwa nstrukcja Input: Input #1, nr, x, y 12

Otwarce plku tekstowego Jeżel chcemy czytać dane z plku tekstowego, na przykład o nazwe plkd otweramy go do czytana (Input) nstrukcją: OpenplkdFor InputAs #1 Jeżel chcemy zapsywać wynk do plku tekstowego, na przykład o nazwe plkw otweramy go do psana (Output) nstrukcją: Open plkwfor Output As #2 Czytane danych z plku tekstowego W dalszym cągu programu każdy otwarty plk jest dentyfkowany przez swój numer. Na przykład nstrukcja czytana danych z plku o numerze 1 ma następującą postać: Input #1, Nr, x, y Zamykane plku tekstowego Każdy plk tekstowy po wykorzystanu należy zamknąć nstrukcją Close zawerającą numer tego plku. Na przykład: Close #1 13

Przeglądane plku tekstowego o neokreślonej długośc: Instrukcja Whle Not EOF(n) Wend Perwsza jej część: Whle Not EOF(1) oznacza: Dopók Ne Konec plku (1). Jeżel program ne natraf na konec plku nr 1, wykonywane są dalsze nstrukcje aż do ln zawerającej Wend, po czym program wraca na początek pętl do ln Whle Not EOF(1). Ważne jest, żeby wewnątrz pętl Whle Not EOF(1)... Wend znajdowała sę nstrukcja czytana z plku (INPUT #1, lsta zmennych ) na przykład: Input#1, nr, x,y która czyta kolejne wersze plku tekstowego, co prowadz w efekce do natrafena na konec plku. Bez tej nstrukcj pętla WhleNot EOF(1)... Wendbędze dzałała w neskończoność. Whle Not EOF(1).. Input#1, nr, x,y Wend 14

Instrukcja powtarzana: For... To... Next Zaps For = 1 To pk oznacza: Dla zmenającego sę od 1 do pk. Dla kaŝdej, kolejnej wartośc wykonywane są wszystke nstrukcje programu zawarte mędzy lną For lną Next. Czyl zostaną one wykonane pk razy. Open PLIKD For Input As #1 For = 1 To pk.. Input #1, Nr, X, Y XP()=X YP()=Y.. Next Zmenną nazywamy zmenną sterującą. Mus ona być zmenną całkowtą typu nteger. Ta sama operacja wykonana za pomocą nstrukcj Whle Not EOF Open PLIKD For Input As #1 =0 Whle Not EOF(1) =+1 Input #1, nr, x, y XP()=X YP()=Y Wend 15

Struktura programu: Program może być bardzo dług. (na przykład program - stosowany w amerykańskch łodzach podwodnych - do rozpoznawana dochodzących z otoczena dźwęków - ma ponad 2 mlony werszy). Aby ogarnąć tak dług program nezbędne jest dzelene go na procedury funkcje. Informatycy uważają, że procedura pownna sę w całośc meścć na montorze komputera. Jeżel sę ne meśc trzeba ją podzelć na częśc. Główna część programu - procedura sub Man - mogłaby w każdym programe wyglądać tak samo: '*********************** MAIN ******************* sub Man dane przetwarzane wynk end sub Procedura dane będze zawerać odwołane do procedur zależne od rozwązywanego zadana. Na przykład w zadanu kedy oblczamy kartujemy pkety pomerzone metodą ortogonalną musmy wczytać współrzędne punktów osnowy, wynk pomarów, oraz schemat połączeń. Ważne jest żeby każda procedura lub funkcja była zdefnowana przed jej perwszym wywołanem. Dlatego z funkcjonowanem programu zapoznajemy sę czytając go od końca: 16

Kartowane pket pomerzonych metodą ortogonalną B α l h P A X Y P P = = X Y A A + l cosα + l snα AB AB h + h snα cosα AB AB 17

'*********************** DANE***************** sub dane osnowa pkety lne end sub '*********************** MAIN ******************* sub Man dane przetwarzane wynk end sub Dane dla programu są zapsane w plkach tekstowych, dlatego ch czytane zaczyna sę zawsze od pytana o nazwę plku. Welkość plku ne jest z góry narzucona dlatego zmenne tablcowe, w których zapsuje sę wartośc odczytane z plku, są na beżąco dopasowywane do lczby danych za pomocą nstrukcj Redm, opcja Preserve zabezpecza wczytane wcześnej dane przed skasowanem. redm preserve xo(os) Zmenne w programe można podzelć na globalne dostępne w całym programe deklarowane za pomocą nstrukcj Publc Publc nro() as nteger, xo() as double, yo() as double lokalne deklarowane dostępne tylko w określonej procedurze za pomocą nstrukcj Dm: sub lne Dm plk_ln as strng Dm as nteger 18

Przykładowa procedura czytająca numery współrzędne punktów osnowy: '*********************** OSNOWA ************************* sub osnowa dm plk_osn as strng dm as nteger plk_osn = MbeInputBox("Podaj nazwę plku z danym osnowy", "D:\osnxy.txt", "WCZYTYWANIE DANYCH OSNOWY ") open plk_osn for nput as #1 os=0 whle not eof(1) os=os+1 redm preserve nro(os) redm preserve xo(os) redm preserve yo(os) nput #1, nro(os), xo(os), yo(os) wend close #1 end sub Zmenna globalna os określa lczbę punktów osnowy, jej wartość jest zwększana o 1 po odczytanu kolejnego wersza z plku tekstowego, równocześne zwększany jest rozmar tabel nstrukcją redm. Plk tekstowy z danym osnxy.txt, zapsanym w formace ANSI może wyglądać na przykład tak: 1001 1000.00 1000.00 1002 1040.00 1000.00 19

Druga procedura czyta wynk pomarów, np. rzędne odcęte, z plku pomort.txt : 1 1.98 9.02 2 3.04 5.96 3 5.99 6.98 4 7.02 4.01 5 9.97 5.03 '*********************** PIKIETY ************************* sub pkety dm plk_pk as strng dm as nteger plk_pk = MbeInputBox("Podaj nazwę plku z wynkam pomarów", "D:\pomort.txt", "WCZYTYWANIE WYNIKÓW POMIARÓW ") open plk_pk for nput as #1 pk=0 whle not eof(1) pk=pk+1 redm preserve nrp(pk) redm preserve odc(pk) redm preserve rze(pk) nput #1, nrp(pk),odc(pk),rze(pk) wend close #1 end sub 20

Trzec plk z danym zawera numery punktów, które należy połączyć: lne.txt (lne do narysowana od punktu do punktu): 1 2 2 3 3 4 4 5 td. Procedura sub lne wczytuje dane dotyczące ln do narysowana: '*********************** LINIE ************************* sub lne dm plk_ln as strng dm as nteger plk_ln = MbeInputBox("Podaj nazwę plku połączeń", "D:\lne.txt", "WCZYTYWANIE PLIKU POŁĄCZEŃ ") open plk_ln for nput as #1 ln=0 whle not eof(1) ln=ln+1 redm preserve odp(ln) redm preserve dop(ln) nput #1, odp(ln),dop(ln) wend close #1 end sub 21

Kolejnym etapem dzałana programu jest przetwarzane danych: '*********************** PRZETWARZANIE ********************* sub przetwarzane xy_pket kartowane lne end sub Kolejne procedury wykonują następujące czynnośc: xy_pket - oblczene współrzędnych pket z metody ortogonalnej B α l h P A X Y P P = = X Y A A + l cosα + l snα AB AB h + h snα cosα AB AB kartowane punktów osnowy pket, łączne z ch opsanem lne połączene wskazanych punktów lną 22

'***************************** XY_PIKIET **************************************** sub xy_pket Dm xa as double, ya as double, l as double, s as double,cs as double, sn as double Dm az as double Redm xp(pk): Redm yp(pk) xa=xo(1):ya=yo(1) az= azymut(xo(1),yo(1),xo(2),yo(2)) for =1 to pk l=odc():h=rze() sn=sn(az/200*p) cs=cos(az/200*p) xp()=xa+l*cs-h*sn yp()=ya+l*sn+h*cs next end sub W procedurze sub xy_pket do oblczena azymutu boku osnowy pomarowej wykorzystana została funkcja azymut: Functon Azymut(xa as double, ya as double, xb as double, yb as double) as double Dm dx as double, dy as double, az as double dx=xb-xa: dy=yb-ya f dx=0 then f dy<0 then az=300 f dy>0 then az=100 else az=atn(dy/dx)*200/p end f f dx<0 then az=az+200 f az<0 then az=az+400 azymut=az end functon 23

Kartowane punktów osnowy pket składa sę z dwóch czynnośc: - narysowane kółka na punkce o określonych współrzędnych - wstawene napsu zaczeponego na tych samych współrzędnych MbeSendCommand "PLACE CIRCLE ICON " MbeSendCommand "IGEN CONSTRAIN RADIUS 0.3" pont.x = yo() pont.y = xo() MbeSendDataPont pont, 1% MbeSendReset MbeSendCommand "PLACE TEXT" MbeSendCommand cstr(nro()) pont.x = yo() pont.y = xo() MbeSendDataPont pont, 1% MbeSendReset 24

'*********************** KARTOWANIE OSNOWY *********************************** sub kart_osnowy Dm pont As MbePont Dm as nteger for = 1 to os MbeSendCommand "PLACE CIRCLE ICON " MbeSendCommand "IGEN CONSTRAIN RADIUS 0.3" pont.x = yo() pont.y = xo() MbeSendDataPont pont, 1% MbeSendReset MbeSendCommand "PLACE TEXT" MbeSendCommand cstr(nro()) pont.x = yo() pont.y = xo() MbeSendDataPont pont, 1% MbeSendReset next end sub '*********************** KARTOWANIE PIKIET ********************************* sub kart_pket Dm pont As MbePont Dm as nteger for = 1 to pk MbeSendCommand "PLACE CIRCLE ICON " MbeSendCommand "IGEN CONSTRAIN RADIUS 0.1" pont.x = yp() pont.y = xp() MbeSendDataPont pont, 1% MbeSendReset MbeSendCommand "PLACE TEXT" MbeSendCommand cstr(nrp()) pont.x = yp() pont.y = xp() MbeSendDataPont pont, 1% MbeSendReset next end sub 25

Rysunek powstaje przez połączene lną punktów wymenonych w plku połączeń: '************************* RYSOWANIE LINII************************** sub rys_lne Dm pont As MbePont Dm 1 as nteger, 2 as nteger for = 1 to ln 1=odp(): 2=dop() MbeSendCommand "PLACE SMARTLINE pont.x = yp(1) pont.y = xp(1) MbeSendDataPont pont, 1% pont.x = yp(2) pont.y = xp(2) MbeSendDataPont pont, 1% MbeSendReset next end sub 26

Wynkem dzałana programu jest - oprócz mapy plk tekstowy raportu zawerający nformacje o wykonanym zadanu: '************************ WYNIKI - RAPORT **************** sub wynk raport_plk raport_osnowa raport_pomary raport_xy close #1 end sub Plk raportu zawera nformacje o punktach osnowy pomarowej, wykonanych pomarach oblczonych współrzędnych pket. '*************** RAPORT NAZWA PLIKU ****************************** sub raport_plk() Dm plkr as strng ' Pytane o nazwę plku raportu plkr=mbeinputbox("podaj nazwę plku raportu","d:\raport1.txt","plik RAPORTU") Open plkr for Output as #1 end sub '*************** RAPORT OSNOWA ****************************** sub raport_osnowa() Dm as nteger Prnt #1, "Dane punkty osnowy" Prnt #1, "Nr X Y" for =1 to os prnt #1,nro(), format$(xo(),"0.00"), format$(yo(),"0.00") next Prnt #1," " end sub '*************** RAPORT POMIARY ****************************** sub raport_pomary() Dm as nteger Prnt #1, "Mary ortogonalne" Prnt #1, "Nr Odceta Rzedna" for =1 to pk prnt #1,nrp(), format$(odc(),"0.00"), format$(rze(),"0.00") next Prnt #1," " end sub 27

'*************** RAPORT WSPÓŁRZĘDNE PIKIET ************************* sub raport_xy() Dm as nteger Prnt #1, "Oblczone współrzędne pket" Prnt #1, "Nr X Y" for =1 to pk prnt #1,nrp(), format$(xp(),"0.00"), format$(yp(),"0.00") next Prnt #1," " end sub Raport: Dane punkty osnowy Nr X Y 1001 1000.00 1000.00 1002 1040.00 1040.00 Mary ortogonalne Nr Odceta Rzedna 1 1.98 9.02 2 3.04 5.96 3 5.99 6.98 4 7.02 4.01 5 9.97 5.03 6 11.03-5.98... Oblczone współrzędne pket 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... 28

Kartowane pket pomerzonych metodą begunową g 0 B β α 0 AB β P = α AB β0 α + β AP A l X Y P P = = X Y A A + l cosα + l snα AP AP Pomaram są kąty β oraz długośc l. Program jest bardzo podobny do programu dla pomaru metodą ortogonalną, mus jednak uwzględnać różnce w sposobe pomaru pket we wzorach na oblczene ch współrzędnych. 29

Oblczane mar ortogonalnych B α l h P A l h = y = AP y snα AP AB cosα + x AB AP x cosα AP AB snα AB 30

Oblczane mar begunowych B A α α AP AB β l β = α AP α P AB l = y 2 AP + x 2 AP 31

Czytane numerów puktów ch współrzędnych z mapy Program ten pozwala na odczytane z rysunku mapy współrzędnych zaprojektowanych punktów. Numery punktów ch współrzędne zapsywane są we wskazanym plku tekstowym. Znajduje to zastosowane w przygotowanu mar realzacyjnych dla wynesena w teren projektu. 32

Zapsane w plku tekstowym numery współrzędne punktów projektu posłużą następne do oblczena: -mar ortogonalnych lub -mar begunowych które pozwolą wytyczyć projektowane punkty w oparcu o snejącą osnowę realzacyjną. '******************************* MAIN ************************ Sub Man Dm plkxy as strng plkxy=mbeinputbox("podaj nazwę plku do zapsana współrzędnych", "D:\pketyxy.txt","WSPÓŁRZĘDNE PIKIET") Open plkxy For Output As #1 pkety close #1 MbeMessageBox "Dane w plku "+plkxy End Sub 33

34

W procedurze tej występuje zmenna o nazwe: pketa zadeklarowana na wstępe programu jako zmenna globalna, typu MbePont: Type MbePont x as double y as double z as double End Type Publc pketa as MbePont 35

36

'************************* WSKAŻ PUNKT ************************************ Sub Wskaz_Punkt (Nr as strng, Pkt as MbePont, ops as strng) Dm accepted As Integer Dm elem As New MbeElement 'defnes an object called elem n whch we 'wll keep our element Dm flepos As Long Dm status As Integer MbeSendCommand "NOECHO" MbeWrteCommand ops accepted = FALSE Whle NOT accepted MbeStartLocate MbeWrtePrompt "Select element..." MbeGetInput MBE_DataPontInput, _ MBE_ResetInput, _ MBE_CommandInput, _ MBE_KeyInInput Select Case MbeState.InputType Case MBE_CommandInput MbeSendLastInput Ext Sub Case MBE_KeynInput MbeSendLastInput Ext Sub End Select MbeSendLastInput flepos = elem.fromlocate() f elem.type<>17 then ext sub 'Whle we've found an element that we haven't yet accepted Whle MbeState.CmdResult = MBE_AcceptQuery AND _ NOT accepted MbeWrtePrompt "Accept/Reject" MbeGetInput MBE_DataPontInput, _ MBE_ResetInput, _ MBE_CommandInput, _ MBE_KeyInInput MbeSendLastInput 37

Select Case MbeState.InputType Case MBE_ResetInput flepos = elem.fromlocate() 'Because MbeStartLocate automatcally fnds another 'element f there s one at the same place. Case MBE_DataPontInput accepted = TRUE Case MBE_CommandInput MbeSendLastInput Ext Sub Case MBE_KeynInput MbeSendLastInput Ext Sub End Select Wend Wend f elem.type=17 then f elem.getstrng(nr)=mbe_success then If elem.getorgn (pkt) = MBE_Success Then 'prnt pont.x 'prnt pont.y 'prnt Ops end f end f end f MbeSendCommand "Null" MbeSendCommand "ECHO" MbeWrteCommand "" MbeWrtePrompt "" MbeWrteStatus "Fnshed MACRO " End Sub 38

Po uruchomenu procedury Wskaż_punkt - w lewym dolnym rogu ekranu wyśwetlane są komunkaty: Pketa>Select element Należy wtedy klknąć myszą na numer pkety. Pketa>Accept/Reject Jeżel akceptujemy zaznaczoną pketę należy klknąć po raz drug. Jeżel odrzucamy pketę klkamy prawym klawszem myszy. Aby zakończyć program wystarczy klknąć na element ne będący numerem pkety pojaw sę wtedy komunkat: 39

Na konec program wyśwetla nformację o mejscu zapsana plku: Fragment plku tekstowego z zapsanym danym odczytanym z rysunku: 40