Politechnika Krakowska
Wydział Inżynierii Lądowej
Instytut Inżynierii Drogowej i Kolejowej
PROJEKT Z PRZEDMIOTU
METODY KOMPUTEROWE
„AutoLISP”
Sprawdzający: Wykonali:
mgr inż. Radosław Bąk Bartłomiej Bul
Anna Lipiec
Damian Serwin
OPIS PROGRAMU „PODKŁAD”
Program „podkład” rysuje podkład dla planu sygnalizacji dostosowany do wydruku
Charakterystyka elementu:
Dla celów koordynacji sygnalizacji świetlnej wykonuje się podkład, na którym umieszcza się:
-schemat skrzyżowań z zachowaniem proporcji odległości między nimi
-pionową oś czasu
Następnie na podkład nanoszone są wiązki sygnałów zielonych i czerwonych na kolejnych skrzyżowaniach z dobraniem ofsetów( różnic czasu między początkami sygnałów zielonych na kolejnych skrzyżowaniach.
Uruchamianie programu:
Po załadowaniu programu do AutoCAD-a: Tools - AutoLISP - load; wybieramy plik o nazwie „podklad”, a następnie wciskamy load, a potem close (wersja AutoCAD 2004 ANG).
Instrukcja programu:
Działanie programu zostaje zainicjowanie wpisaniem w wierszu poleceń „p1”.
Na początku program pyta długość osi y (oś czasu w [s]) oraz gęstość podziałki na tej osi. Następnie w linii komend pojawi się komunikat: „Podaj nazwę arterii: ". Po wykonaniu tej czynności na ekranie pojawi się podana przez użytkownika nazwa. Kolejnym krokiem w programie jest podanie ilości skrzyżowań, na ekranie pojawia się komunikat: „Podaj ilość skrzyżowań <3> <4> <5> <6>”.Później należy wprowadzić odległości między skrzyżowaniami( w zależności od podanej ich ilości). Następnie program rysuje schematy dla zadanej ilości skrzyżowań i linie do lokalizacji wiązek sygnałów, a także umieszcza na podkładzie podane przez użytkownika odległości między skrzyżowaniami. Wszystkie podane przez użytkownika wielkości liczbowe są przez program przeskalowywane tak aby dostosować podkład do wydruku w formacie A4.
Dane wejściowe do programu:
- lokalizacja podkładu( punkt wstawiania)
-długość osi y
-gęstość podziałki na osi y
- nazwa arterii
-ilość skrzyżowań
-odległości między skrzyżowaniami
Opis kodu programu:
Program korzysta z podstawowych funkcji AutoLisp: setq, getpoint, getstring, command, text. Na początku program przy użyciu getpoint (zwraca współrzędne wybranego punktu), ustala współrzędne punktu, który jest punktem wstawienia prostokątu wybranym przez użytkownika. Następnie rysowany jest prostokąt o wymiarach formatu A4. Następnie przy pomocy funkcji „getreal” program pobiera wartość długości osi y i skali podziałki. Przy pomocy kalkulatora matematycznego obliczane są współrzędne kolejnych punktów(w odniesieniu do punktu zadeklarowanego przez użytkownika jako punkt wstawiania. Kolejana operacja wykonywana przez program to rysowanie osi czasu i odległości. Funkcja „getstring” pozwala na pobranie od użytkownika nazwy arterii. Następnie przy pomocy funkcji: „getkword” i „cond” pobierana jest użytkownika ilość skrzyżowań. Na tym etapie w programie zostały zdefiniowane 4 funkcje, każda dla innej liczby skrzyżowań. W każdej z nich ponownie przy użyciu funkcji: „getreal” wprowadzane są odległości między skrzyżowaniami. Kolejnym etapem programu jest obliczenie współrzędnych kolejnych punktów do rysowania schematów skrzyżowań z uwzględnieniem wielkości podanych przez użytkownika. Ostatnią czynnością wykonywaną przez program jest wyrysowanie na podstawie obliczonych punktów podkładu.
Po tej operacji funkcją „setq” i „getvar” przypisujemy stan funkcji „osnap” zmiennej os, po czym ustalamy osmode na wartość 0. Oznacza to, funkcja „osnap” zostaje całkowicie wyłączona. Jest to niezbędne przy następnej procedurze rysowania gdyż rysunek mógłby być zniekształcony przez przyciąganie punktów. Następnie po tych operacjach program przywraca zmienne systemowe, które były ustawione przed wykonaniem programu: powraca do poprzedniego układu współrzędnych oraz włącza wcześniejsze funkcje osnap.
Kod programu:
(defun c:p1 ( / p0 p1 p2 p3 )
(arxload "geomcal")
(setq os (getvar "osmode"))
(setvar "osmode" 0)
(setq p0 (getpoint "\n Wskaz punkt wstawienia:"))
(setq p1 (cal "p0+[2100,0]"))
(setq p2 (cal "p0+[2100,2970]"))
(setq p3 (cal "p0+[0,2970]"))
(command "_pline" p0 p1 p2 p3 "_c")
(setq y (getreal "\n Podaj dlugosc osi y"))
(setq y1 (cal "y*(2500/y)"))
(setq yp (cal "p0+[40,260]"))
(setq yk (cal "yp+[0,0+y1]"))
(setq ykk (cal "yk+[0,140]"))
(command "_pline" yp ykk "_c")
(setq ys1 (cal "ykk+[-20,-40]"))
(setq ys2 (cal "ykk+[20,-40]"))
(command "_pline" ys1 ykk "_c")
(command "_pline" ys2 ykk "_c")
(setq k (getreal "\n Podaj krok skali:"))
(setq lk (cal "y/k"))
(setq kr1 (cal "yp+[-20,0]"))
(setq kr2 (cal "yp+[20,0]"))
(command "_pline" kr1 kr2 "_c")
(setq kk (cal "k*(2500/y)"))
(setq lk2 (fix lk))
(setq lk3 (cal "lk2+1"))
(command "_array" kr1 "" "_R" lk3 "1" kk "")
(command "_text" "_J" "_BC" ( cal "yk+[55,0]") "30" "0" (rtos y 2 2))
(command "_text" "_J" "_BC" (cal "yp+[50,0]") "40" "0" "0" )
(command "_text" "_J" "_BC" (cal "ykk+[60,-20]") "40" "0" "[s]" )
(setq p4 (cal "p0+[40,40]"))
(setq p5 (cal "p4+[2020,0]"))
(command "_pline" p4 p5 "_c")
(setq p6 (cal "p5+[-40,-20]"))
(command "_pline" p5 p6 "_c")
(setq p7 (cal "p5+[-40,20]"))
(command "_pline" p5 p7 "_c")
(command "_text" "_J" "_BC" (cal "p4+[0,0]") "40" "0" "0" )
(command "_text" "_J" "_BC" (cal "p7+[0,0]") "40" "0" "[m]" )
(command "_text" "_J" "_BC" (cal "ykk+[1010,0]") "40" "0" "Podkład dla planu sygnalizacji" )
(setq tekst (getstring "\n Podaj nazwe arterii: "))
(command "_text" "_J" "_BC" (cal "p0+[910,130]") "35" "0" tekst )
(defun sk3 ()
(setq pkt0 (cal "p0+[80,140]"))
(setq pkt2 (cal "pkt0+[80,0]"))
(setq pkt3 (cal "pkt0+[80,-80]"))
(command "_pline" pkt0 pkt2 "_c" )
(command "_pline" pkt2 pkt3 "_c" )
(setq pkt4 (cal "pkt0+[0,40]"))
(setq pkt5 (cal "pkt4+[80,0]"))
(setq pkt6 (cal "pkt4+[80,80]"))
(command "_pline" pkt4 pkt5 "_c")
(command "_pline" pkt5 pkt6 "_c")
(setq pkt7 (cal "pkt0+[200,0]"))
(setq pkt8 (cal "pkt7+[-80,0]"))
(setq pkt9 (cal "pkt7+[-80,-80]"))
(command "_pline" pkt7 pkt8 "_c" )
(command "_pline" pkt8 pkt9 "_c")
(setq pkt10 (cal "pkt7+[0,40]"))
(setq pkt11 (cal "pkt10+[-80,0]"))
(setq pkt12 (cal "pkt10+[-80,80]"))
(command "_pline" pkt10 pkt11 "_c" )
(command "_pline" pkt11 pkt12 "_c")
(setq yp (cal "pkt0+[100,120]"))
(setq yk (cal "yp+[0,0+y1]"))
(command "_pline" yp yk "_c")
(setq o1(getreal "\n Podaj odleglosci od pierwszego do drugiego skrzyzowania:"))
(setq o2(getreal "\n Podaj odleglosci od drugiego do trzeciego skrzyzowania:"))
(setq d1 (cal "o1*(1740/(o1+o2))"))
(setq d2 (cal "o2*(1740/(o1+o2))"))
(setq d11 (cal "(140+d1/2)"))
(command "_text" "_J" "_BC" (cal "p4+[d11,30]") "30" "0" (rtos o1 2 2) )
(setq d22 (cal "(140+d1+d2/2)"))
(command "_text" "_J" "_BC" (cal "p4+[d22,30]") "30" "0" (rtos o2 2 2) )
(setq pkt0 (cal "pkt0+[0+d1,0]"))
(command "_pline" pkt7 pkt0 "_c")
(setq pkt4 (cal "pkt0+[0,40]"))
(command "_pline" pkt10 pkt4 "_c")
(setq pkt2 (cal "pkt0+[80,0]"))
(setq pkt3 (cal "pkt0+[80,-80]"))
(command "_pline" pkt0 pkt2 "_c" )
(command "_pline" pkt2 pkt3 "_c" )
(setq pkt4 (cal "pkt0+[0,40]"))
(setq pkt5 (cal "pkt4+[80,0]"))
(setq pkt6 (cal "pkt4+[80,80]"))
(command "_pline" pkt4 pkt5 "_c")
(command "_pline" pkt5 pkt6 "_c")
(setq pkt7 (cal "pkt0+[200,0]"))
(setq pkt8 (cal "pkt7+[-80,0]"))
(setq pkt9 (cal "pkt7+[-80,-80]"))
(command "_pline" pkt7 pkt8 "_c" )
(command "_pline" pkt8 pkt9 "_c")
(setq pkt10 (cal "pkt7+[0,40]"))
(setq pkt11 (cal "pkt10+[-80,0]"))
(setq pkt12 (cal "pkt10+[-80,80]"))
(command "_pline" pkt10 pkt11 "_c" )
(command "_pline" pkt11 pkt12 "_c")
(setq yp (cal "pkt0+[100,120]"))
(setq yk (cal "yp+[0,0+y1]"))
(command "_pline" yp yk "_c")
(setq pkt0 (cal "pkt0+[0+d2,0]"))
(command "_pline" pkt7 pkt0 "_c")
(setq pkt4 (cal "pkt0+[0,40]"))
(command "_pline" pkt10 pkt4 "_c")
(setq pkt2 (cal "pkt0+[80,0]"))
(setq pkt3 (cal "pkt0+[80,-80]"))
(command "_pline" pkt0 pkt2 "_c" )
(command "_pline" pkt2 pkt3 "_c" )
(setq pkt4 (cal "pkt0+[0,40]"))
(setq pkt5 (cal "pkt4+[80,0]"))
(setq pkt6 (cal "pkt4+[80,80]"))
(command "_pline" pkt4 pkt5 "_c")
(command "_pline" pkt5 pkt6 "_c")
(setq pkt7 (cal "pkt0+[200,0]"))
(setq pkt8 (cal "pkt7+[-80,0]"))
(setq pkt9 (cal "pkt7+[-80,-80]"))
(command "_pline" pkt7 pkt8 "_c" )
(command "_pline" pkt8 pkt9 "_c")
(setq pkt10 (cal "pkt7+[0,40]"))
(setq pkt11 (cal "pkt10+[-80,0]"))
(setq pkt12 (cal "pkt10+[-80,80]"))
(command "_pline" pkt10 pkt11 "_c" )
(command "_pline" pkt11 pkt12 "_c")
(setq yp (cal "pkt0+[100,120]"))
(setq yk (cal "yp+[0,0+y1]"))
(command "_pline" yp yk "_c")
)
(defun sk4 ()
(setq pkt0 (cal "p0+[80,140]"))
(setq pkt2 (cal "pkt0+[80,0]"))
(setq pkt3 (cal "pkt0+[80,-80]"))
(command "_pline" pkt0 pkt2 "_c" )
(command "_pline" pkt2 pkt3 "_c" )
(setq pkt4 (cal "pkt0+[0,40]"))
(setq pkt5 (cal "pkt4+[80,0]"))
(setq pkt6 (cal "pkt4+[80,80]"))
(command "_pline" pkt4 pkt5 "_c")
(command "_pline" pkt5 pkt6 "_c")
(setq pkt7 (cal "pkt0+[200,0]"))
(setq pkt8 (cal "pkt7+[-80,0]"))
(setq pkt9 (cal "pkt7+[-80,-80]"))
(command "_pline" pkt7 pkt8 "_c" )
(command "_pline" pkt8 pkt9 "_c")
(setq pkt10 (cal "pkt7+[0,40]"))
(setq pkt11 (cal "pkt10+[-80,0]"))
(setq pkt12 (cal "pkt10+[-80,80]"))
(command "_pline" pkt10 pkt11 "_c" )
(command "_pline" pkt11 pkt12 "_c")
(setq yp (cal "pkt0+[100,120]"))
(setq yk (cal "yp+[0,0+y1]"))
(command "_pline" yp yk "_c")
(setq o1(getreal "\n Podaj odleglosci od pierwszego do drugiego skrzyzowania:"))
(setq o2(getreal "\n Podaj odleglosci od drugiego do trzeciego skrzyzowania:"))
(setq o3(getreal "\n Podaj odleglosci od trzeciego do czwartego skrzyzowania:"))
(setq d1 (cal "o1*(1740/(o1+o2+o3))"))
(setq d2 (cal "o2*(1740/(o1+o2+o3))"))
(setq d3 (cal "o3*(1740/(o1+o2+o3))"))
(setq d11 (cal "(140+d1/2)"))
(command "_text" "_J" "_BC" (cal "p4+[d11,30]") "30" "0" (rtos o1 2 2) )
(setq d22 (cal "(140+d1+d2/2)"))
(command "_text" "_J" "_BC" (cal "p4+[d22,30]") "30" "0" (rtos o2 2 2) )
(setq d33 (cal "(140+d1+d2+d3/2)"))
(command "_text" "_J" "_BC" (cal "p4+[d33,30]") "30" "0" (rtos o3 2 2) )
(setq pkt0 (cal "pkt0+[0+d1,0]"))
(command "_pline" pkt7 pkt0 "_c")
(setq pkt4 (cal "pkt0+[0,40]"))
(command "_pline" pkt10 pkt4 "_c")
(setq pkt2 (cal "pkt0+[80,0]"))
(setq pkt3 (cal "pkt0+[80,-80]"))
(command "_pline" pkt0 pkt2 "_c" )
(command "_pline" pkt2 pkt3 "_c" )
(setq pkt4 (cal "pkt0+[0,40]"))
(setq pkt5 (cal "pkt4+[80,0]"))
(setq pkt6 (cal "pkt4+[80,80]"))
(command "_pline" pkt4 pkt5 "_c")
(command "_pline" pkt5 pkt6 "_c")
(setq pkt7 (cal "pkt0+[200,0]"))
(setq pkt8 (cal "pkt7+[-80,0]"))
(setq pkt9 (cal "pkt7+[-80,-80]"))
(command "_pline" pkt7 pkt8 "_c" )
(command "_pline" pkt8 pkt9 "_c")
(setq pkt10 (cal "pkt7+[0,40]"))
(setq pkt11 (cal "pkt10+[-80,0]"))
(setq pkt12 (cal "pkt10+[-80,80]"))
(command "_pline" pkt10 pkt11 "_c" )
(command "_pline" pkt11 pkt12 "_c")
(setq yp (cal "pkt0+[100,120]"))
(setq yk (cal "yp+[0,0+y1]"))
(command "_pline" yp yk "_c")
(setq pkt0 (cal "pkt0+[0+d2,0]"))
(command "_pline" pkt7 pkt0 "_c")
(setq pkt4 (cal "pkt0+[0,40]"))
(command "_pline" pkt10 pkt4 "_c")
(setq pkt2 (cal "pkt0+[80,0]"))
(setq pkt3 (cal "pkt0+[80,-80]"))
(command "_pline" pkt0 pkt2 "_c" )
(command "_pline" pkt2 pkt3 "_c" )
(setq pkt4 (cal "pkt0+[0,40]"))
(setq pkt5 (cal "pkt4+[80,0]"))
(setq pkt6 (cal "pkt4+[80,80]"))
(command "_pline" pkt4 pkt5 "_c")
(command "_pline" pkt5 pkt6 "_c")
(setq pkt7 (cal "pkt0+[200,0]"))
(setq pkt8 (cal "pkt7+[-80,0]"))
(setq pkt9 (cal "pkt7+[-80,-80]"))
(command "_pline" pkt7 pkt8 "_c" )
(command "_pline" pkt8 pkt9 "_c")
(setq pkt10 (cal "pkt7+[0,40]"))
(setq pkt11 (cal "pkt10+[-80,0]"))
(setq pkt12 (cal "pkt10+[-80,80]"))
(command "_pline" pkt10 pkt11 "_c" )
(command "_pline" pkt11 pkt12 "_c")
(setq yp (cal "pkt0+[100,120]"))
(setq yk (cal "yp+[0,0+y1]"))
(command "_pline" yp yk "_c")
(setq pkt0 (cal "pkt0+[0+d3,0]"))
(command "_pline" pkt7 pkt0 "_c")
(setq pkt4 (cal "pkt0+[0,40]"))
(command "_pline" pkt10 pkt4 "_c")
(setq pkt2 (cal "pkt0+[80,0]"))
(setq pkt3 (cal "pkt0+[80,-80]"))
(command "_pline" pkt0 pkt2 "_c" )
(command "_pline" pkt2 pkt3 "_c" )
(setq pkt4 (cal "pkt0+[0,40]"))
(setq pkt5 (cal "pkt4+[80,0]"))
(setq pkt6 (cal "pkt4+[80,80]"))
(command "_pline" pkt4 pkt5 "_c")
(command "_pline" pkt5 pkt6 "_c")
(setq pkt7 (cal "pkt0+[200,0]"))
(setq pkt8 (cal "pkt7+[-80,0]"))
(setq pkt9 (cal "pkt7+[-80,-80]"))
(command "_pline" pkt7 pkt8 "_c" )
(command "_pline" pkt8 pkt9 "_c")
(setq pkt10 (cal "pkt7+[0,40]"))
(setq pkt11 (cal "pkt10+[-80,0]"))
(setq pkt12 (cal "pkt10+[-80,80]"))
(command "_pline" pkt10 pkt11 "_c" )
(command "_pline" pkt11 pkt12 "_c")
(setq yp (cal "pkt0+[100,120]"))
(setq yk (cal "yp+[0,0+y1]"))
(command "_pline" yp yk "_c")
)
(defun sk5 ()
(setq pkt0 (cal "p0+[80,140]"))
(setq pkt2 (cal "pkt0+[80,0]"))
(setq pkt3 (cal "pkt0+[80,-80]"))
(command "_pline" pkt0 pkt2 "_c" )
(command "_pline" pkt2 pkt3 "_c" )
(setq pkt4 (cal "pkt0+[0,40]"))
(setq pkt5 (cal "pkt4+[80,0]"))
(setq pkt6 (cal "pkt4+[80,80]"))
(command "_pline" pkt4 pkt5 "_c")
(command "_pline" pkt5 pkt6 "_c")
(setq pkt7 (cal "pkt0+[200,0]"))
(setq pkt8 (cal "pkt7+[-80,0]"))
(setq pkt9 (cal "pkt7+[-80,-80]"))
(command "_pline" pkt7 pkt8 "_c" )
(command "_pline" pkt8 pkt9 "_c")
(setq pkt10 (cal "pkt7+[0,40]"))
(setq pkt11 (cal "pkt10+[-80,0]"))
(setq pkt12 (cal "pkt10+[-80,80]"))
(command "_pline" pkt10 pkt11 "_c" )
(command "_pline" pkt11 pkt12 "_c")
(setq yp (cal "pkt0+[100,120]"))
(setq yk (cal "yp+[0,0+y1]"))
(command "_pline" yp yk "_c")
(setq o1(getreal "\n Podaj odleglosci od pierwszego do drugiego skrzyzowania:"))
(setq o2(getreal "\n Podaj odleglosci od drugiego do trzeciego skrzyzowania:"))
(setq o3(getreal "\n Podaj odleglosci od trzeciego do czwartego skrzyzowania:"))
(setq o4(getreal "\n Podaj odleglosci od czwartego do piatego skrzyzowania:"))
(setq d1 (cal "o1*(1740/(o1+o2+o3+o4))"))
(setq d2 (cal "o2*(1740/(o1+o2+o3+o4))"))
(setq d3 (cal "o3*(1740/(o1+o2+o3+o4))"))
(setq d4 (cal "o4*(1740/(o1+o2+o3+o4))"))
(setq d11 (cal "(140+d1/2)"))
(command "_text" "_J" "_BC" (cal "p4+[d11,30]") "30" "0" (rtos o1 2 2) )
(setq d22 (cal "(140+d1+d2/2)"))
(command "_text" "_J" "_BC" (cal "p4+[d22,30]") "30" "0" (rtos o2 2 2) )
(setq d33 (cal "(140+d1+d2+d3/2)"))
(command "_text" "_J" "_BC" (cal "p4+[d33,30]") "30" "0" (rtos o3 2 2) )
(setq d44 (cal "(140+d1+d2+d3+d4/2)"))
(command "_text" "_J" "_BC" (cal "p4+[d44,30]") "30" "0" (rtos o4 2 2) )
(setq pkt0 (cal "pkt0+[0+d1,0]"))
(command "_pline" pkt7 pkt0 "_c")
(setq pkt4 (cal "pkt0+[0,40]"))
(command "_pline" pkt10 pkt4 "_c")
(setq pkt2 (cal "pkt0+[80,0]"))
(setq pkt3 (cal "pkt0+[80,-80]"))
(command "_pline" pkt0 pkt2 "_c" )
(command "_pline" pkt2 pkt3 "_c" )
(setq pkt4 (cal "pkt0+[0,40]"))
(setq pkt5 (cal "pkt4+[80,0]"))
(setq pkt6 (cal "pkt4+[80,80]"))
(command "_pline" pkt4 pkt5 "_c")
(command "_pline" pkt5 pkt6 "_c")
(setq pkt7 (cal "pkt0+[200,0]"))
(setq pkt8 (cal "pkt7+[-80,0]"))
(setq pkt9 (cal "pkt7+[-80,-80]"))
(command "_pline" pkt7 pkt8 "_c" )
(command "_pline" pkt8 pkt9 "_c")
(setq pkt10 (cal "pkt7+[0,40]"))
(setq pkt11 (cal "pkt10+[-80,0]"))
(setq pkt12 (cal "pkt10+[-80,80]"))
(command "_pline" pkt10 pkt11 "_c" )
(command "_pline" pkt11 pkt12 "_c")
(setq yp (cal "pkt0+[100,120]"))
(setq yk (cal "yp+[0,0+y1]"))
(command "_pline" yp yk "_c")
(setq pkt0 (cal "pkt0+[0+d2,0]"))
(command "_pline" pkt7 pkt0 "_c")
(setq pkt4 (cal "pkt0+[0,40]"))
(command "_pline" pkt10 pkt4 "_c")
(setq pkt2 (cal "pkt0+[80,0]"))
(setq pkt3 (cal "pkt0+[80,-80]"))
(command "_pline" pkt0 pkt2 "_c" )
(command "_pline" pkt2 pkt3 "_c" )
(setq pkt4 (cal "pkt0+[0,40]"))
(setq pkt5 (cal "pkt4+[80,0]"))
(setq pkt6 (cal "pkt4+[80,80]"))
(command "_pline" pkt4 pkt5 "_c")
(command "_pline" pkt5 pkt6 "_c")
(setq pkt7 (cal "pkt0+[200,0]"))
(setq pkt8 (cal "pkt7+[-80,0]"))
(setq pkt9 (cal "pkt7+[-80,-80]"))
(command "_pline" pkt7 pkt8 "_c" )
(command "_pline" pkt8 pkt9 "_c")
(setq pkt10 (cal "pkt7+[0,40]"))
(setq pkt11 (cal "pkt10+[-80,0]"))
(setq pkt12 (cal "pkt10+[-80,80]"))
(command "_pline" pkt10 pkt11 "_c" )
(command "_pline" pkt11 pkt12 "_c")
(setq yp (cal "pkt0+[100,120]"))
(setq yk (cal "yp+[0,0+y1]"))
(command "_pline" yp yk "_c")
(setq pkt0 (cal "pkt0+[0+d3,0]"))
(command "_pline" pkt7 pkt0 "_c")
(setq pkt4 (cal "pkt0+[0,40]"))
(command "_pline" pkt10 pkt4 "_c")
(setq pkt2 (cal "pkt0+[80,0]"))
(setq pkt3 (cal "pkt0+[80,-80]"))
(command "_pline" pkt0 pkt2 "_c" )
(command "_pline" pkt2 pkt3 "_c" )
(setq pkt4 (cal "pkt0+[0,40]"))
(setq pkt5 (cal "pkt4+[80,0]"))
(setq pkt6 (cal "pkt4+[80,80]"))
(command "_pline" pkt4 pkt5 "_c")
(command "_pline" pkt5 pkt6 "_c")
(setq pkt7 (cal "pkt0+[200,0]"))
(setq pkt8 (cal "pkt7+[-80,0]"))
(setq pkt9 (cal "pkt7+[-80,-80]"))
(command "_pline" pkt7 pkt8 "_c" )
(command "_pline" pkt8 pkt9 "_c")
(setq pkt10 (cal "pkt7+[0,40]"))
(setq pkt11 (cal "pkt10+[-80,0]"))
(setq pkt12 (cal "pkt10+[-80,80]"))
(command "_pline" pkt10 pkt11 "_c" )
(command "_pline" pkt11 pkt12 "_c")
(setq yp (cal "pkt0+[100,120]"))
(setq yk (cal "yp+[0,0+y1]"))
(command "_pline" yp yk "_c")
(setq pkt0 (cal "pkt0+[0+d4,0]"))
(command "_pline" pkt7 pkt0 "_c")
(setq pkt4 (cal "pkt0+[0,40]"))
(command "_pline" pkt10 pkt4 "_c")
(setq pkt2 (cal "pkt0+[80,0]"))
(setq pkt3 (cal "pkt0+[80,-80]"))
(command "_pline" pkt0 pkt2 "_c" )
(command "_pline" pkt2 pkt3 "_c" )
(setq pkt4 (cal "pkt0+[0,40]"))
(setq pkt5 (cal "pkt4+[80,0]"))
(setq pkt6 (cal "pkt4+[80,80]"))
(command "_pline" pkt4 pkt5 "_c")
(command "_pline" pkt5 pkt6 "_c")
(setq pkt7 (cal "pkt0+[200,0]"))
(setq pkt8 (cal "pkt7+[-80,0]"))
(setq pkt9 (cal "pkt7+[-80,-80]"))
(command "_pline" pkt7 pkt8 "_c" )
(command "_pline" pkt8 pkt9 "_c")
(setq pkt10 (cal "pkt7+[0,40]"))
(setq pkt11 (cal "pkt10+[-80,0]"))
(setq pkt12 (cal "pkt10+[-80,80]"))
(command "_pline" pkt10 pkt11 "_c" )
(command "_pline" pkt11 pkt12 "_c")
(setq yp (cal "pkt0+[100,120]"))
(setq yk (cal "yp+[0,0+y1]"))
(command "_pline" yp yk "_c")
)
(defun sk6 ()
(setq pkt0 (cal "p0+[80,140]"))
(setq pkt2 (cal "pkt0+[80,0]"))
(setq pkt3 (cal "pkt0+[80,-80]"))
(command "_pline" pkt0 pkt2 "_c" )
(command "_pline" pkt2 pkt3 "_c" )
(setq pkt4 (cal "pkt0+[0,40]"))
(setq pkt5 (cal "pkt4+[80,0]"))
(setq pkt6 (cal "pkt4+[80,80]"))
(command "_pline" pkt4 pkt5 "_c")
(command "_pline" pkt5 pkt6 "_c")
(setq pkt7 (cal "pkt0+[200,0]"))
(setq pkt8 (cal "pkt7+[-80,0]"))
(setq pkt9 (cal "pkt7+[-80,-80]"))
(command "_pline" pkt7 pkt8 "_c" )
(command "_pline" pkt8 pkt9 "_c")
(setq pkt10 (cal "pkt7+[0,40]"))
(setq pkt11 (cal "pkt10+[-80,0]"))
(setq pkt12 (cal "pkt10+[-80,80]"))
(command "_pline" pkt10 pkt11 "_c" )
(command "_pline" pkt11 pkt12 "_c")
(setq yp (cal "pkt0+[100,120]"))
(setq yk (cal "yp+[0,0+y1]"))
(command "_pline" yp yk "_c")
(setq o1(getreal "\n Podaj odleglosci od pierwszego do drugiego skrzyzowania:"))
(setq o2(getreal "\n Podaj odleglosci od drugiego do trzeciego skrzyzowania:"))
(setq o3(getreal "\n Podaj odleglosci od trzeciego do czwartego skrzyzowania:"))
(setq o4(getreal "\n Podaj odleglosci od czwartego do piatego skrzyzowania:"))
(setq o5(getreal "\n Podaj odleglosci od piatego do szostego skrzyzowania:"))
(setq d1 (cal "o1*(1740/(o1+o2+o3+o4+o5))"))
(setq d2 (cal "o2*(1740/(o1+o2+o3+o4+o5))"))
(setq d3 (cal "o3*(1740/(o1+o2+o3+o4+o5))"))
(setq d4 (cal "o4*(1740/(o1+o2+o3+o4+o5))"))
(setq d5 (cal "o5*(1740/(o1+o2+o3+o4+o5))"))
(setq d11 (cal "(140+d1/2)"))
(command "_text" "_J" "_BC" (cal "p4+[d11,30]") "30" "0" (rtos o1 2 2) )
(setq d22 (cal "(140+d1+d2/2)"))
(command "_text" "_J" "_BC" (cal "p4+[d22,30]") "30" "0" (rtos o2 2 2) )
(setq d33 (cal "(140+d1+d2+d3/2)"))
(command "_text" "_J" "_BC" (cal "p4+[d33,30]") "30" "0" (rtos o3 2 2) )
(setq d44 (cal "(140+d1+d2+d3+d4/2)"))
(command "_text" "_J" "_BC" (cal "p4+[d44,30]") "30" "0" (rtos o4 2 2) )
(setq d55 (cal "(140+d1+d2+d3+d4+d5/2)"))
(command "_text" "_J" "_BC" (cal "p4+[d55,30]") "30" "0" (rtos o5 2 2) )
(setq pkt0 (cal "pkt0+[0+d1,0]"))
(command "_pline" pkt7 pkt0 "_c")
(setq pkt4 (cal "pkt0+[0,40]"))
(command "_pline" pkt10 pkt4 "_c")
(setq pkt2 (cal "pkt0+[80,0]"))
(setq pkt3 (cal "pkt0+[80,-80]"))
(command "_pline" pkt0 pkt2 "_c" )
(command "_pline" pkt2 pkt3 "_c" )
(setq pkt4 (cal "pkt0+[0,40]"))
(setq pkt5 (cal "pkt4+[80,0]"))
(setq pkt6 (cal "pkt4+[80,80]"))
(command "_pline" pkt4 pkt5 "_c")
(command "_pline" pkt5 pkt6 "_c")
(setq pkt7 (cal "pkt0+[200,0]"))
(setq pkt8 (cal "pkt7+[-80,0]"))
(setq pkt9 (cal "pkt7+[-80,-80]"))
(command "_pline" pkt7 pkt8 "_c" )
(command "_pline" pkt8 pkt9 "_c")
(setq pkt10 (cal "pkt7+[0,40]"))
(setq pkt11 (cal "pkt10+[-80,0]"))
(setq pkt12 (cal "pkt10+[-80,80]"))
(command "_pline" pkt10 pkt11 "_c" )
(command "_pline" pkt11 pkt12 "_c")
(setq yp (cal "pkt0+[100,120]"))
(setq yk (cal "yp+[0,0+y1]"))
(command "_pline" yp yk "_c")
(setq pkt0 (cal "pkt0+[0+d2,0]"))
(command "_pline" pkt7 pkt0 "_c")
(setq pkt4 (cal "pkt0+[0,40]"))
(command "_pline" pkt10 pkt4 "_c")
(setq pkt2 (cal "pkt0+[80,0]"))
(setq pkt3 (cal "pkt0+[80,-80]"))
(command "_pline" pkt0 pkt2 "_c" )
(command "_pline" pkt2 pkt3 "_c" )
(setq pkt4 (cal "pkt0+[0,40]"))
(setq pkt5 (cal "pkt4+[80,0]"))
(setq pkt6 (cal "pkt4+[80,80]"))
(command "_pline" pkt4 pkt5 "_c")
(command "_pline" pkt5 pkt6 "_c")
(setq pkt7 (cal "pkt0+[200,0]"))
(setq pkt8 (cal "pkt7+[-80,0]"))
(setq pkt9 (cal "pkt7+[-80,-80]"))
(command "_pline" pkt7 pkt8 "_c" )
(command "_pline" pkt8 pkt9 "_c")
(setq pkt10 (cal "pkt7+[0,40]"))
(setq pkt11 (cal "pkt10+[-80,0]"))
(setq pkt12 (cal "pkt10+[-80,80]"))
(command "_pline" pkt10 pkt11 "_c" )
(command "_pline" pkt11 pkt12 "_c")
(setq yp (cal "pkt0+[100,120]"))
(setq yk (cal "yp+[0,0+y1]"))
(command "_pline" yp yk "_c")
(setq pkt0 (cal "pkt0+[0+d3,0]"))
(command "_pline" pkt7 pkt0 "_c")
(setq pkt4 (cal "pkt0+[0,40]"))
(command "_pline" pkt10 pkt4 "_c")
(setq pkt2 (cal "pkt0+[80,0]"))
(setq pkt3 (cal "pkt0+[80,-80]"))
(command "_pline" pkt0 pkt2 "_c" )
(command "_pline" pkt2 pkt3 "_c" )
(setq pkt4 (cal "pkt0+[0,40]"))
(setq pkt5 (cal "pkt4+[80,0]"))
(setq pkt6 (cal "pkt4+[80,80]"))
(command "_pline" pkt4 pkt5 "_c")
(command "_pline" pkt5 pkt6 "_c")
(setq pkt7 (cal "pkt0+[200,0]"))
(setq pkt8 (cal "pkt7+[-80,0]"))
(setq pkt9 (cal "pkt7+[-80,-80]"))
(command "_pline" pkt7 pkt8 "_c" )
(command "_pline" pkt8 pkt9 "_c")
(setq pkt10 (cal "pkt7+[0,40]"))
(setq pkt11 (cal "pkt10+[-80,0]"))
(setq pkt12 (cal "pkt10+[-80,80]"))
(command "_pline" pkt10 pkt11 "_c" )
(command "_pline" pkt11 pkt12 "_c")
(setq yp (cal "pkt0+[100,120]"))
(setq yk (cal "yp+[0,0+y1]"))
(command "_pline" yp yk "_c")
(setq pkt0 (cal "pkt0+[0+d4,0]"))
(command "_pline" pkt7 pkt0 "_c")
(setq pkt4 (cal "pkt0+[0,40]"))
(command "_pline" pkt10 pkt4 "_c")
(setq pkt2 (cal "pkt0+[80,0]"))
(setq pkt3 (cal "pkt0+[80,-80]"))
(command "_pline" pkt0 pkt2 "_c" )
(command "_pline" pkt2 pkt3 "_c" )
(setq pkt4 (cal "pkt0+[0,40]"))
(setq pkt5 (cal "pkt4+[80,0]"))
(setq pkt6 (cal "pkt4+[80,80]"))
(command "_pline" pkt4 pkt5 "_c")
(command "_pline" pkt5 pkt6 "_c")
(setq pkt7 (cal "pkt0+[200,0]"))
(setq pkt8 (cal "pkt7+[-80,0]"))
(setq pkt9 (cal "pkt7+[-80,-80]"))
(command "_pline" pkt7 pkt8 "_c" )
(command "_pline" pkt8 pkt9 "_c")
(setq pkt10 (cal "pkt7+[0,40]"))
(setq pkt11 (cal "pkt10+[-80,0]"))
(setq pkt12 (cal "pkt10+[-80,80]"))
(command "_pline" pkt10 pkt11 "_c" )
(command "_pline" pkt11 pkt12 "_c")
(setq yp (cal "pkt0+[100,120]"))
(setq yk (cal "yp+[0,0+y1]"))
(command "_pline" yp yk "_c")
(setq pkt0 (cal "pkt0+[0+d5,0]"))
(command "_pline" pkt7 pkt0 "_c")
(setq pkt4 (cal "pkt0+[0,40]"))
(command "_pline" pkt10 pkt4 "_c")
(setq pkt2 (cal "pkt0+[80,0]"))
(setq pkt3 (cal "pkt0+[80,-80]"))
(command "_pline" pkt0 pkt2 "_c" )
(command "_pline" pkt2 pkt3 "_c" )
(setq pkt4 (cal "pkt0+[0,40]"))
(setq pkt5 (cal "pkt4+[80,0]"))
(setq pkt6 (cal "pkt4+[80,80]"))
(command "_pline" pkt4 pkt5 "_c")
(command "_pline" pkt5 pkt6 "_c")
(setq pkt7 (cal "pkt0+[200,0]"))
(setq pkt8 (cal "pkt7+[-80,0]"))
(setq pkt9 (cal "pkt7+[-80,-80]"))
(command "_pline" pkt7 pkt8 "_c" )
(command "_pline" pkt8 pkt9 "_c")
(setq pkt10 (cal "pkt7+[0,40]"))
(setq pkt11 (cal "pkt10+[-80,0]"))
(setq pkt12 (cal "pkt10+[-80,80]"))
(command "_pline" pkt10 pkt11 "_c" )
(command "_pline" pkt11 pkt12 "_c")
(setq yp (cal "pkt0+[100,120]"))
(setq yk (cal "yp+[0,0+y1]"))
(command "_pline" yp yk "_c")
)
(initget 1 " 3 4 5 6 ")
(setq n (getkword "\nPodaj ilosc skrzyzowan <3> <4> <5> <6> "))
(cond
((= n "3") (sk3))
((= n "4") (sk4))
((= n "5") (sk5))
((= n "6") (sk6))
)
(setvar "osmode" os)
)