AutoCAD, AutoLISP

Kalkulator…

Już wiele lat temu chciałem napisać parę słów o autocadowskim kalkulatorze geometrycznym… Zwłoka w tym poskutkowała tym, że przez ten czas z prostego działającego tylko w linii poleceń kalkulatora geometrycznego, ów przemienił się w pełnowartościowy graficzny kalkulator:

calc01

Na szczęście, przy okazji nie stracił swoich mechanizmów do obliczeń geometrycznych w przestrzeni rysunkowej AutoCAD-a, z których to przez wiele lat korzystałem. Oczywiście nie ze wszystkich, ale jest kilka z nich które z pamięci wklepuję podczas rysowania „z ręki”… I właśnie o nich będzie dzisiejszy wpis.

  1.  Znajdowanie punktu przecięcia dwóch linii, czyli użycie zmiennej o nazwie ille (funkcji kalkulatora – ill). Poniższy obraz jasno ilustruje działanie: cal_ille Wywołanie w trybie nakładkowym (z apostrofem) w trakcie działania polecenia LINIA, kalkulatora i następnie wyrażenia ille. Wymaga ona wskazania par końców linii (właściwe lokalizacji END) – tutaj są to punkty o numerach 1 – 2 i 3 – 4. Kalkulator wyliczył punkt 5 i przekazał je do polecenia LINIA. Oczywiście działa to w przestrzeni 3D – wskazywanie nie muszą być na jednej płaszczyźnie.
  2. Znajdowanie w szybki sposób wartości promienia narysowanych łuków, okręgów, czy łukowych segmentów polilinii, czyli funkcja radcal_rad Nic nie trzeba mierzyć, wymiarować tylko wywołać kalkulator, funkcję rad, i wskazać interesujący nas element. Bardzo ważna i cenna cecha – element może być częścią bloku – kalkulator nie ma z tym problemu.
  3. Szybkie obliczenia w linii poleceń (jak też jako wywołania AutoLISP). Kalkulator dokonuje obliczeń podanych w linii poleceń zgodnie z zasadami – nie musimy się tutaj martwić o kolejność działań. Chyba że chcemy inaczej, wtedy możemy użyć nawiasów. cal_calc
  4. Ponownie obliczenie punktów przecięcia. Tym razem przecięcia linii wyznaczonej punktami 1 – 2 z płaszczyzną określoną przez punkty 3 – 4 – 5. Przydatne do precyzyjnego rysowania modeli 3D. Służy do tego funkcja ilp. Na poniższym obrazie przykład rysowania okręgu na płaszczyźnie w miejscu teoretycznego przecięcia z linią w przestrzeni 3D: cal_ilp Oczywiście jak wszędzie w wywołaniach kalkulatora można wywoływać inne (niż end w przykładach) tryby lokalizacji.

Bardzo cennymi cechami kalkulatora geometrycznego AutoCAD-a, to możliwość wykorzystania jego wyrażeń w języku AutoLISP, jak też w drugim kierunku, możliwość korzystania przez kalkulator ze zmiennych (punkty, wartości liczbowe) AutoLISP.  Ze względu na dość obszerną materię, przydałby się tutaj osobny wpis na ten temat (pomyślę o tym w przyszłości).

Na koniec, zestawienie wszystkich (mam nadzieję) funkcji kalkulatora geometrycznego, z krótkim opisem:

Funkcje numeryczne:
sin(ang) – Sinus kąta
cos(ang) – Cosinus kąta
tang(ang) – Tangens kąta
asin(real) – Arcus sinus liczby – liczba z przedziału od -1 do 1
acos(real) – Arcus cosinus liczby – liczba z przedziału od -1 do 1
atan(real) – Arcus tangens liczby
ln(real) – Logarytm naturalny liczby
log(real) – Logarytm dziesiętny liczby
exp(real) – Potęga liczby e
exp10(real) – Potęga liczby 10
sqr(real) – Kwadrat liczby
sqrt(real) – Pierwiastek kwadratowy z liczby nieujemnej
abs(real) – Wartość bezwzględna liczby
round(real) – Zaokrąglenie liczby do najbliższej liczby całkowitej
trunc(real) – Część całkowita liczby
r2d(ang) – Zamiana kąta w radianach na stopnie
d2r(ang) – Zamiana kąta w stopniach na radiany
pi – Stała pi

Funkcje geometryczne wektorów:
vec(p1,p2) – Wektor od punktu p1 do punktu p2
vec1(p1,p2) – Wektor jednostkowy od punktu p1 do punktu p2.
abs(v) – Oblicza długość wektora v, jako nieujemną liczbę rzeczywistą.
nor – Określa jednostkowy normalny wektor 3D wybranego okręgu, łuku lub łukowego segmentu polilinii.
nor(v) – Określa wektor jednostkowy 2D normalny do wektora v. Obydwa wektory są traktowane jako rzut 2D na płaszczyznę XY aktualnego lokalnego układu współrzędnych.
nor(p1,p2) – Określa wektor jednostkowy 2D normalny do linii p1,p2 – linia jest skierowana od punktu p1 do p2.
nor(p1,p2,p3) – Określa wektor jednostkowy 3D normalny do płaszczyzny zdefiniowanej przez trzy punkty p1, p2, oraz p3.

Konwersja punktów między UCS a UCS (lokalnym a globalnym układem współrzędnych):
w2u(p1) – Przekształca punkt p1 wyrażony w GUW do aktualnego LUW.
u2w(p1) – Przekształca punkt p1 wyrażony w aktualnym LUW do GUW.

Wyznaczanie punktu na linii:
pld(p1,p2,dist) – Wyznacza punkt na linii przechodzącej przez punkty p1 oraz p2. Parametr dist definiuje odległość tego punktu od punktu p1.
plt(p1,p2,t) – Wyznacza punkt na linii przechodzącej przez punkty p1 oraz p2. Parametr t definiuje pozycję punktu na linii.

Obliczanie obrotu punktu:
rot(p1,origin,ang) – Obraca punkt p1 o kąt ang dookoła osi Z przechodzącej przez punkt origin
rot(p1,AxP1,AxP2,ang) – Obraca punkt p1 o kąt ang dookoła osi przechodzącej przez punkty AxP1 oraz AxP2

Punkty przecięcia obiektów:
ill(p1,p2,p3,p4) – Określa punkt przecięcia między dwoma liniami (p1,p2) oraz (p3,p4).
ilp(p1,p2,p3,p4,p5) – Określa punkt przecięcia między linią (p1,p2) i płaszczyzną przechodzącą przez trzy punkty (p3,p4,p5).

Obliczanie odległości:
dist(p1,p2) – Określa odległość pomiędzy dwoma punktami, p1 i p2. Taką samą wartość zwraca wyrażenie wektorowe abs(p1-p2).
dpl(p,p1,p2) – Określa najkrótszą odległość między punktem p oraz linią przechodzącą przez punkty p1 oraz p2.
rad – Funkcja rad określa promień wybranego obiektu.

Obliczenia kątów:
ang(v) – Określa kąt pomiędzy osią X i wektorem v. Wektor v jest traktowany jako rzut 2D na płaszczyznę XY aktualnego układu współrzędnych.
ang(p1,p2) – Kąt pomiędzy osią X i linią (p1,p2). Punkty traktowane są jako rzut 2D na płaszczyznę XY aktualnego UCS
ang(apex,p1,p2) – Określa kąt pomiędzy liniami (apex,p1) i (apex,p2). Punkty traktowane są jako rzut 2D na płaszczyznę XY aktualnego UCS
ang(apex,p1,p2,p) – Określa kąt pomiędzy liniami (apex,p1) i (apex,p2). Tym razem proste są traktowane jako trójwymiarowe. Ostatni parametr, punkt p, jest używany do zdefiniowania orientacji kąta.

 

Reklamy

Skomentuj

Wprowadź swoje dane lub kliknij jedną z tych ikon, aby się zalogować:

Logo WordPress.com

Komentujesz korzystając z konta WordPress.com. Wyloguj /  Zmień )

Zdjęcie na Google+

Komentujesz korzystając z konta Google+. Wyloguj /  Zmień )

Zdjęcie z Twittera

Komentujesz korzystając z konta Twitter. Wyloguj /  Zmień )

Zdjęcie na Facebooku

Komentujesz korzystając z konta Facebook. Wyloguj /  Zmień )

w

Connecting to %s

This site uses Akismet to reduce spam. Learn how your comment data is processed.