(getpoint [Punkt] [Wiadomość])
(getcorner [Punkt] [Wiadomość])
Funkcja getpoint pozwala użytkownikowi na wskazanie punktu. Może on być podany klikając myszką w punkt, lub wpisując na klawiaturze współrzędne.
Istnieje też możliwość, że wyświetlona będzie dodatkowo pomocnicza linia łącząca inny punkt z aktualnym położeniem myszki.
Ostatni parametr to podpowiedź. Jest ona wyświetlana w linii poleceń i pod wskaźnikiem myszki jeśli włączona jest opcja [DYN]
Przykłady:
getcorner Jest to funkcja podobna do getpoint z tą różnicą, że jako linię pomocniczą nie rysuje linii od punktu początkowego do wskaźnika myszki, a prostokąt, gdzie punkty początkowy i wskaźnik myszki są narożnikami tymczasowego prostokąta.
(getreal [Wiadomość])
(getint [Wiadomość])
(getdist [Wiadomość])
Wszystkie te funkcje są do siebie bardzo podobne. Proszą użytkownika o podanie liczby.
getint - Użytkownik podać musi liczbę naturalną z zakresu -32768 do 32767
getreal - Użytkownik może podać dowolną liczbę rzeczywistą
getdist - Użytkownik może podać dowolną liczbę rzeczywistą, ale w odróżnieniu do getreal może ją podać nie tylko wpisując z klawiatury, ale również klikając dwa punkty, zwrócona zostanie odległość pomiędzy tymi punktami.
Jako ciekawy przykład możemy posłużyć się funkcją której zadaniem jest poproszenie użytkownika o podanie odległości. Jeśli użytkownik wciśnie [ENTER] zwrócona zostanie wartość domyślna podana jako parametr. Gdyby to jakoś ładnie opakować w funkcję można mieć całkiem przydatną funkcję, która zapamiętuje poprzednie wpisaną odległość i traktuje ją jako podopowiedź (wartość domyślną) w kolejnym wywołaniu funkcji. Ambitni czytelnicy mogą to potraktować jako zadanie domowe.
(getstring [Wiadomość])
Prosi użytkownika o wpisanie tekstu. Np. może to być nazwa warstwy, bloku, wartość atrybutu, jakikolwiek tekst. Nawet jeśli użytkownik wciśnie [ENTER], funkcja zwróci tekst. co prawda pusty = "" ale tekst nie jak np. (getint), ten jeśli wciśniemy [ENTER] zwróci nil.
(getangle [punkt][Wiadomość])
Funkcja prosi użytkownika o podanie kąta nachylenia przez wskazanie dwu punktów. Jest to kąt względem osi OX z uwzględnieniem zmiennych ANGDIR i ANGBASE
Zwraca wartość podaną w radianach
Opcjonalnie można podać parametr punkt początkowy z którego kąt ma być odmierzany. Punkt musi być podany jako lista współrzędnych
(getorient [punkt][Wiadomość])
W zasadzie getorient działa zupełnie podobnie jak getangle. Z jedną tylko różnicą. getorient nie uwzględnia zmiennych systemowych ANGDIR i ANGBASE.
(initget [Ustawienia ] [Wiadomość])
(getkword [Wiadomość])
Jak wiadomo Użytkownicy programów mają wyjątkową fantazję. Zwłaszcza kiedy nam, twórcom programów zależy na tym, żeby Użytkownik wpisał coś sensownego. Nawet więcej, są tacy, którzy po prostu lubią wpisywać niewłaściwe dane tylko dlatego, żeby sprawdzić co zrobi program, "jeśli np. wpiszemy skalę 0 albo -12 albo jakiś tekst wpiszemy (tam gdzie ma być liczba). A może się wywali i zobaczymy coś więcej niż powinniśmy?" Takie zapędy możemy w pewnym stopniu ograniczyć właśnie przez funkcję initget
Inne zastosowanie tej funkcji to podanie opcji do wyboru.
Pozwala Użyszkodnikowi na wybranie opcji. Jednej z dostępnych i ograniczonych Przez nas np.: Tak/Nie. Można to zrobić w sposób następujący.
Niby nic, możnaby pomyśleć że tu nic się nie dzieje. Ale teraz Użytkownik będzie mógł wpisać jedynie Tak/Nie wystarczy T/N. Jeśli wpisze jakąś inną wartość, to wyświetli się komunikat "Nie mogę rozpoznać wpisu. Spróbuj ponownie." Jeśli wpisze "T", getkword i tak zwróci "Tak". Możemy posunąć się dalej. Możemy zakazać wpisania pustego tekstu czyli tylko [ENTER] bez podania opcji, lub w przypadku getreal ograniczyć do wartości dodatnich.
initget ma dwa parametry Ustawienia i podpowiedź.
Ustawienia mają ograniczone dostępne wartości. Ich zestawienie poniżej
Uwaga.
Ustawienia te można sumować. Jeśli 2 nie pozwala wpisane 0 a 4 ujemnej wartości, to 6 ogranicza oba te przypadki.
Nie wszystkie z ustawień mają zastosowanie w każdej z funkcji. Łatwo to rozumieć, bo jeśli chcemy wskazać punkt, to nie ma sensu ograniczać wartości do dodatnich, i tak samo, jeśli chcemy liczbę, to nie jest istotne czy linia pomocnicza będzie ciągła czy przerywana - i tak się nie wyświetli, bo wyświetla się przy innych funkcjach.
| Bit | Znaczenie | Zastosowanie |
|---|---|---|
| 1 | Nie pozwala na zakończenie przez [ENTER] Użytkownik musi wybrać jedną z opcji | getnt getreal getdist getangle getorient getpoint getcorner getkword |
| 2 | Nie pozwala na wpisanie 0 (Przydatne np. jeśli pozwalamy Użytkownikowi wpisać skalę) | getint getreal getdist getangle getorient getpoint |
| 4 | Nie pozwala na wpisanie ujemnej wartości | getint getreal getdist |
| 8 | Nie sprawdza granic rysunku | getcorner |
| 16 | Nie używane (zarezerwowane na przyszłe zastosowania) | |
| 32 | Linia pomocnicza jest wyświetlana jako przerywana | getdist getangle getorient getpoint getcorner |
| 64 | Nie pozwala na wpisanie współrzędnej wysokości | getpoint getdist |
| 128 | Ignoruje powyższe ustawienia. pozwala na dowolną wartość | getint getreal getdist getangle getorient getpoint getcorner getkword |
| Funkcje ignorujące initget | getstring entsel nentsel nentselp |
(entsel [Wiadomość])
Prosi Użytkownika o wskazanie pojedynczego elementu i zwraca dwuelementową listę, gdzie pierwszym elementem jest wskazany obiekt, drugim punkt w którym użytkownik kliknął aby wskazać ten element.
Np. (<Entity name: 8838d90> (6.93850 12.9275 0.000000)) czyli pobierając pierwszy element z tej listy przez car, mamy nazwę obiektu, na którym możemy przeprowadzać modyfikacje.
(entget NazwaObiektu [aplikacja])
Jako parametr funkcji używamy nazwę obiektu. Może to być nazwa zwrócone np. przez entsel, entlast lub ssname.
Zwraca listę definicję obiektu. Z niego w łatwy sposób możemy odczytać wszystkie informacje o wybranym obiekcie.
Np.
Zwróci nam:
((-1 . <Entity name: 7f5f840>) (0 . "INSERT") (5 . "1DF") (67 . 0) (8 . "0") (410 . "Model") (62 . 256) (6 . "ByLayer") (370 . -1) (48 . 1.00000) (60 . 0) (2 . "qwe") (210 0.000000 0.000000 1.00000) (10 0.000000 0.000000 0.000000) (41 . 1.00000) (42 . 1.00000) (43 . 1.00000) (50 . 0.000000) (70 . 1) (71 . 1) (44 . 0.000000) (45 . 0.000000))
(ssget [tryb] [punkt1 [punkt2]] [lista_punktów] [lista filtrów]))
Pozwala na wybranie wielu elementów. Funkcja ta jest bardzo rozbudowana i pozwala na wybór na wiele różnych sposobów. Sposobem wybierania sterują tryby i filtry.
ssget zwraca grupę obiektów. Grupa ta nazywana jest zbiorem wskazań, jest to oddzielny typ obiektu i do jego obsługi używane są inne funkcje, jednak wyobrazić to sobie można jako coś podobnego do listy.
Tryby.
- Jeśl zostawimy puste pole tryb, program pozwoli Użytkownikowi na wybór dowolnego obiektu
"X" - Automatycznie (bez akcji Użytkownika) wybiera wszystkie elementy z rysunku
":S" - Pozwala na wybranie tylko jednego obiektu
"L" - Automatycznie wybiera ostatnio utworzony obiekt
"P" - Automatycznie powtarza poprzedni zbiór wskazań
"C" - Automatycznie wybiera obiekty przecinające okno zdefiniowane przez dwa punkty
"CP" - Automatycznie wybiera obiekty przecinające obrys, Jako kolejny parametr podajemy listę punktów,
"W" - Wybiera wszystkie elementy wewnątrz okna zdefiniowanego przez dwa punkty
"WP" - Wybiera wszystkie elementy będące wewnątrz obrysu zdefiniowanego przez listę punktów
(sslength ZbiórWskazan )
Zwraca nam ilość wybranych elementów
Dla zobrazowania proszę narysować kilka różnych elementów: kółek, kresek, punktów, linii itp. A następnie sprawdzić działanie następujących funkcji.
Filtry
Filtry służą do nakładania ograniczeń na to, co będzie w zaznaczone. Jeśli chcemy wybrać np. Wszystkie elementy leżące na określonej warstwie lub wszystko określonego koloru, typu itp. Można to zrobić właśnie przez fltry, co więcej filtry takie można sumować odejmować itp. Więc w łatwy sposób możemy znaleźć wszystkie elementy danego typu będące na określonej warstwie, ale mające kolor inny niż np. JakWarstwa.
Proszę dostosować wartości, do testowanego rysunku.
Tworzenia zbioru wskazań, nie powoduje zaznaczenia obiektów w rysunku. Mamy zbiór elementów i dostęp do wszystkich z nich, ale w rysunku nie są one podświetlone. Aby obiekty były podświetlone proszę zapoznać się z funkcją: sssetfirst
(ssname Wskazanie Indeks)
Funkcja ssname zwraca nazwę obiektu o określonym indeksie ze zbioru wskazań. Jeśli w poprzednim punkcie utworzyliśmy jakiś zbiór wskazań i zmienne, do której jest przypisany nazwana została ss, możemy pobrać określony element z tego zbioru. np.:
(ssadd [[NazwaObiektu] Wskazanie ] )
Funkcja ssadd występuje w trzech przypadkach
(ssadd) bez argumentów - tworzy nowy zbiór wskazań
(ssadd Element) - Jeśli jako adgument wywołamy Nazwę obiektu np.<Entity name: 808dce0> Zostanie utworzony nowy zbiór wskazań zawierający ten obiekt
(ssname Element Wskazanie) - Element to Nazwa obiektu. Wskazanie - Zbiór wskazań, do którego ma być dodany element.
(ssgetfirst elementy [uchwyty])
Jest to ciekawa funkcja pozwalająca na sprawdzenie czy jakieś obiekty są wybrane. Czyli w momencie wywołania naszej funkcji nie musimy prosić użytkownika o wskazanie elementów, ale sprawdzić czy wcześniej zostało coś wybrane. Porównywalnym przykładem może tu być możliwość, którą daje ZWCAD. Jeśli chcemy np. przesunąć dowolny obiekt, to możemy najpierw uruchomić funkcję, a później zaznaczyć obiekt, a możemy też najpierw zaznaczyć obiekty, a później uruchomić funkcję. To samo można zrobić w naszych funkcjach. Wewnątrz funkcji sprawdzając czy jest aktywna selekcja i wykonując operacje na tych obiektach.
ssgetfirst zawsze zwraca listę dwuelementową. np.:
(nil <Selection set: 123821600>)
(sssetfirst elementy [uchwyty])
Funkcja ta zaznacza elementy w rysunku. czyli zbiór staje się aktywną selekcją. Obiekty są w rysunku stają podświetlone, tak, jakby Użytkownik zaznaczył je myszką.
Parametrami wywołania funkcji mogą być jedynie zbiory wskazań, lub nil
Copyright © 2000—2010 by
Usługi Informatyczne SZANSA - Gabriela Ciszyńska-Matuszek.
Autoryzowany Dystrybutor programu ZWCAD w Polsce od 2005 roku.
Wszelkie prawa zastrzeżone.