autocad lisp, Cad AutoLISP

background image

AutoLISP

AutoLISP

Problemowo Zorientowany

Problemowo Zorientowany

Dialekt języka LISP

Dialekt języka LISP

Komputerowe Wspomaganie

Komputerowe Wspomaganie

Projektowania

Projektowania

background image

AutoLISP

AutoLISP

Zmienne, Stałe

Zmienne, Stałe

typ

INT

:

liczba całkowita

typ

REAL

:

liczba rzeczywista

typ

STR

:

łańcuch alfanumeryczny

typ

LIST

:

lista dynamiczna

typ

FILE

:

deskryptor pliku dyskowego

typ SYM:

identyfikator zmiennej, funkcji

typ SUBR:

deskryptor funkcji predefiniowanej

typ PICKSET:

zbiór selekcji

typ ENAME:

symboliczna nazwa obiektu

stała

T

:

prawda

stała

NIL

:

fałsz lub wskazanie puste

stała

PI

:

3.1415926

Instrukcja

(

type

x)

określa typ zmiennej

lub stałej x

background image

Średnik:

znacznik komentarza

Średnik:

znacznik komentarza

Cudzysłów:

konstruktor łańcucha

Cudzysłów:

konstruktor łańcucha

Apostrof:

skrót funkcji

quote

quote

Apostrof:

skrót funkcji quote

quote

AutoLISP

AutoLISP

Znaki

Znaki

zastrzeżone

zastrzeżone

(

(

)

)

.

.

’’

’’

;

;

!

!

\

\

(

(

)

)

.

.

’’

’’

;

;

!

!

\

\

Nawiasy okrągłe:

konstruktor listy

Nawiasy okrągłe:

konstruktor listy

Kropka: kropka dziesiętna

lub znacznik pary kropkowej

Kropka: kropka dziesiętna

lub znacznik pary kropkowej

Wykrzyknik:

skrót funkcji

eval

eval

Wykrzyknik:

skrót funkcji eval

eval

Backslash:
znaki sterujące (031) np.

\n - przejście do nowej linii
\\ - właściwy backslash

Backslash:
znaki sterujące (031) np.

\n - przejście do nowej linii
\\ - właściwy backslash

background image

AutoLISP

AutoLISP

Operatory

Operatory

Relacji

Relacji

Badanie równości:

Badanie równości:

(

=

arg1 arg2)  (

equal

arg1 arg2)

Badanie listy:

Badanie listy:

(

atom

arg)

(

listp

arg)

Badanie liczb:

Badanie liczb:

(

numberp

arg)

(

minusp

arg)

(

zerop

arg)

Badanie wskazania:

Badanie wskazania:

(

null

arg)

Badanie nierówności:

Badanie nierówności:

(

>

arg1 arg2) (

>=

arg1 arg2)

(

/=

arg1 arg2)  (

not

(

=

arg1 arg2))

(

<

arg1 arg2) (

<=

arg1 arg2)

background image

AutoLISP

AutoLISP

Funkcje Matematyczne

Funkcje Matematyczne

Funkcje Trygonometryczne:

Funkcje Trygonometryczne:

(

sin

x) (

cos

x) -

x w radianach

(

atan

x [y] )

Inne Funkcje:

Inne Funkcje:

(

max

x y z ...) (

min

x y z ..)

(

abs

x)

- wartość bezwzględna

(

rem

x y)

Funkcje Wykładnicze:

Funkcje Wykładnicze:

(

exp

x)

- e

x

(

expt

x y)

- x

y

(

sqrt

x)

- pierwiastek kwadratowy

(

log

x)

- logarytm naturalny

Reszta z dzielenia
argumentów typu
całkowitego

Reszta z dzielenia
argumentów typu
całkowitego

Maksymalna lub
minimalna
wartość z listy
argumentów

Maksymalna lub
minimalna
wartość z listy
argumentów

Arcus tangens argumentu
x
Jeżeli występuje
opcjonalny
argument y to funkcja
oblicza
arcus ilorazu x / y.
Wynik w radianach

Arcus tangens argumentu
x
Jeżeli występuje
opcjonalny
argument y to funkcja
oblicza
arcus ilorazu x / y.
Wynik w radianach

background image

(setq x 5)

Głowa listy:

funkcja

predefiniowana

Ogon listy:

para argumentów:

identyfikator -

wartość

Pary: Identyfikator Zmiennej - Wartość

Instrukcja Przypisania:

(

setq

x 5 y 1.2 z ’’tekst”)

AutoLISP

AutoLISP

Instrukcja

Instrukcja

przypisania

przypisania

background image

AutoLISP

AutoLISP

Konwersja

Konwersja

Typ całkowityTyp rzeczywisty:

Typ całkowityTyp rzeczywisty:

(

float

arg)

: (

float

12)  12.00

(

fix

arg)

: (

fix

12.45)  12

Typ łańcuchowyTyp numeryczny:

Typ łańcuchowyTyp numeryczny:

(

atoi

tekst)

: (

atoi

’’12.4”)  12

(

atof

tekst)

: (

atof

’’12.4”)  12.40

Typ łańcuchowyTyp dowolny:

Typ łańcuchowyTyp dowolny:

(

read

tekst)

(read ’’12.5”)  12.5

(read ’’(1.5 2)”)  (1.5

2) (read ’’Jan Nowak”) 

JAN

(read ’’12.5”)  12.5

(read ’’(1.5 2)”)  (1.5

2) (read ’’Jan Nowak”) 

JAN

(

rtos

liczba [format [dokładność]]

[format [dokładność]]

)

(

itoa

liczba) : (

itoa

12)  ’’12’’

Typ numerycznyTyp łańcuchowy:

Typ numerycznyTyp łańcuchowy:

format (opcjonalny):
1 - wykładniczy
2 - dziesiętny
3, 4 - calowy
dokładność (opcjonalna)

format (opcjonalny):
1 - wykładniczy
2 - dziesiętny
3, 4 - calowy
dokładność (opcjonalna)

background image

AutoLISP

AutoLISP

Typ Łańcuchowy

Typ Łańcuchowy

(

strcase

tekst [war] )

(

strlen

tekst)

- długość tekstu

(

substr

tekst start [ile] )

(

strcat

tekst1 tekst2 ..)

Zamienia małe litery na duże
lub odwrotnie. Jeżeli
opcjonalny argument war nie
występuje lub war=Nil
następuje zamiana liter
małych na duże. Jeżeli war=T
następuje zamiana liter
dużych na małe

Zamienia małe litery na duże
lub odwrotnie. Jeżeli
opcjonalny argument war nie
występuje lub war=Nil
następuje zamiana liter
małych na duże. Jeżeli war=T
następuje zamiana liter
dużych na małe

Tworzy złożenie argumentów
tekstowych zawartych w
liście argumentów (suma).
(strcat „Auto” „LISP”)
„AutoLISP”

Tworzy złożenie argumentów
tekstowych zawartych w
liście argumentów (suma).
(strcat „Auto” „LISP”)
„AutoLISP”

Tworzy łańcuch wycinając z argumentu
tekst poczynając od znaku start, określoną
przez opcjonalny argument ile, liczbę
znaków.
Jeżeli ile nie występuje wycina do końca
tekstu.

Tworzy łańcuch wycinając z argumentu
tekst poczynając od znaku start, określoną
przez opcjonalny argument ile, liczbę
znaków.
Jeżeli ile nie występuje wycina do końca
tekstu.

background image

(if warunek (instrukcja1)
(instrukcja2))

AutoLISP

AutoLISP

Instrukcja

Instrukcja

Warunkowa

Warunkowa

(

if

warunek (

Grupa Instrukcji 1

Grupa Instrukcji 1

)(

Grupa

Grupa

Instrukcji 2

Instrukcji 2

))

?

?

?

?

(

progn

(instrukcja1)

(instrukcja2)...)

(if (/= x 0)
(progn
(setq a (/ a x))
(setq lista (append lista (list a)))
)
(setq lista (append lista (list x)))
)

(if (/= x 0)
(progn
(setq a (/ a x))
(setq lista (append lista (list a)))
)
(setq lista (append lista (list x)))
)

Grupa Instrukcji

Grupa Instrukcji

Grupa Instrukcji

Grupa Instrukcji

background image

(while warunek (

Blok Instrukcji

Blok Instrukcji

))

AutoLISP

AutoLISP

Pętle

Pętle

(

repeat

licznik
(

Blok Instrukcji

Blok Instrukcji

)

)

Licznik jest stałą lub zmienną
typu całkowitego określającą
liczbę powtórzeń Bloku
Instrukcji.
Podczas wykonywania pętli
repeat niejawna zmienna
sterująca jest inkrementowana
(powiększana o 1) i
porównywana z wartością
licznika

Licznik jest stałą lub zmienną
typu całkowitego określającą
liczbę powtórzeń Bloku
Instrukcji.
Podczas wykonywania pętli

repeat

niejawna zmienna

sterująca jest inkrementowana
(powiększana o 1) i
porównywana z wartością
licznika

(setq x 0)
(repeat 5
(setq x (+ x 1))
)
(repeat 0
(setq x (+ x 1))
)

(setq x 0)
(repeat 5
(setq x (+ x 1))
)
(repeat 0
(setq x (+ x 1))
)

X = 5

X = 5

X = 5

X = 5

background image

(car lista) (cdr
lista)

AutoLISP

AutoLISP

Dostęp do Listy

Dostęp do Listy

(

nth

nr

lista)

(

last

lista)

(

member

x

lista)

(

subst

new old

lista)

(nth 0 ‘(a b c))  A

(nth 0 ‘(a b c))  A

(

length

lista)

(last ‘(a b c))  C

(last ‘(a b c))  C

(member ‘b ‘(a b c))  (B

C)

(member ‘b ‘(a b c))  (B

C)

(subst ‘x ‘a ‘(a (a b)) 

(X (X

B))

(subst ‘x ‘a ‘(a (a b)) 

(X (X

B))

(length ‘(a b c))  3

(length ‘(a b c))  3

Elementy listy numerowane są od 0. Kolejno: 0:A, 1:B, 2:C. Długość: 3

Elementy listy numerowane są od 0. Kolejno: 0:A, 1:B, 2:C. Długość: 3

background image

AutoLISP

AutoLISP

Operacje na Listach

Operacje na Listach

(

revers

lista)

(

apply

fun

lista)

(

foreach

x lista (

Blok

Blok

Instrukcji

Instrukcji

))

(revers ‘(a b c))  (C B A)

(revers ‘(a b c))  (C B A)

Stosuje operator lub
funkcję cytowaną przez
argument fun do
wszystkich elementów
listy podanej przez
argument lista.

Stosuje operator lub
funkcję cytowaną przez
argument fun do
wszystkich elementów
listy podanej przez
argument lista.

Swoista pętla, której krotność określa długość
listy. Kolejne elementy listy przypisywane są
w sposób niejawny zmiennej x przetwarzanej
następnie w bloku instrukcji.

Swoista pętla, której krotność określa długość
listy. Kolejne elementy listy przypisywane są
w sposób niejawny zmiennej x przetwarzanej
następnie w bloku instrukcji.

(apply ‘max ‘(1
5))  5

(apply ‘+ ‘(1 5
4))  10

(apply ‘max ‘(1
5))  5

(apply ‘+ ‘(1 5
4))  10

(foreach e ‘((1 1)(1 5)(2 4))
(setq xx (append xx (list (car
e))))
(setq yy (append yy (cdr e)))
)

(foreach e ‘((1 1)(1 5)(2 4))
(setq xx (append xx (list (car
e))))
(setq yy (append yy (cdr e)))
)

background image

AutoLISP

AutoLISP

Funkcje

Funkcje

Geometryczne

Geometryczne

(

angle

p1 p2)

Oblicza kąt pomiędzy wektorem p1-p2
a dodatnią półosią X układu
współrzędnych

Oblicza kąt pomiędzy wektorem p1-p2
a dodatnią półosią X układu
współrzędnych

(

distance

p1 p2)

(

inters

p1 p2 p3 p4

[tryb])

(

polar

p0 kąt

dystans)

Oblicza odległość pomiędzy punktami
p1 p2

Oblicza odległość pomiędzy punktami
p1 p2

Oblicza współrzędne punktu leżącego
w odległości dystans od punktu p0 pod
kątem kąt [rad] od półosi X.

Oblicza współrzędne punktu leżącego
w odległości dystans od punktu p0 pod
kątem kąt [rad] od półosi X.

Oblicza współrzędne punktu przecięcia odcinków wyznaczonych
parami punktów p1-p2 i p3-p4.
Jeżeli opcjonalny argument tryb występuje i ma wartość T odcinki
muszą się „fizycznie” przecinać. W przeciwnym razie punkty p1-p2
oraz p3-p4 definiują dwie linie, których punkt przecięcia jest
wynikiem funkcji.

Oblicza współrzędne punktu przecięcia odcinków wyznaczonych
parami punktów p1-p2 i p3-p4.
Jeżeli opcjonalny argument tryb występuje i ma wartość T odcinki
muszą się „fizycznie” przecinać. W przeciwnym razie punkty p1-p2
oraz p3-p4 definiują dwie linie, których punkt przecięcia jest
wynikiem funkcji.

Uwaga: punkt w przestrzeni
reprezentowany jest przez
listę zawierającą
współrzędne x,y,z:
(x y z)

Uwaga: punkt w przestrzeni
reprezentowany jest przez
listę zawierającą
współrzędne x,y,z:

(x y z)

background image

12.45
2350
’’Jan
Sebastian’’
(1 5 2.5)
x

12.45
2350
’’Jan
Sebastian’’
(1 5 2.5)
x

Plik:test.dta

Plik:test.dta

AutoLISP

AutoLISP

Plik Dyskowy

Plik Dyskowy

AutoLISP przetwarza jedynie „czyste” pliki tekstowe

tzn. pliki zawierające jedynie kody ASCII

(

open

plik

tryb

)

Argument plik : ścieżka dostępu do pliku. Tekst
zawierający napęd, katalogi, nazwę i
rozszerzenie.
„C:\\KAT\\test.dta” lub „C:/Kat/Test.dta”
Argument tryb : „r”: czytanie (read) „w”: zapis
(write) „a” : dopisanie (append)
Wynik: deskryptor pliku lub NIL.

Argument plik : ścieżka dostępu do pliku. Tekst
zawierający napęd, katalogi, nazwę i
rozszerzenie.
„C:\\KAT\\test.dta” lub „C:/Kat/Test.dta”
Argument tryb : „r”: czytanie (read) „w”: zapis
(write) „a” : dopisanie (append)
Wynik: deskryptor pliku lub NIL.

(

read-line

deskryptor

)

Argument deskryptor : wynik funkcji open
Odczytanie linii pliku w położeniu znacznika
pliku.
Wynik: tekst linii pliku oraz przesunięcie
znacznika pliku do kolejnej linii.

Argument deskryptor : wynik funkcji

open

Odczytanie linii pliku w położeniu znacznika
pliku.
Wynik: tekst linii pliku oraz przesunięcie
znacznika pliku do kolejnej linii.

(

close

deskryptor

)

koniec pliku - NIL

(setq zb (open „test.dta”
„r”))
(setq tx (read-line zb))
(while (not (null tx))
(setq xx (append xx (list
tx)))
(setq tx (read-line zb))
)
(close zb)

(setq zb (open „test.dta”
„r”))
(setq tx (read-line zb))
(while (not (null tx))
(setq xx (append xx (list
tx)))
(setq tx (read-line zb))
)
(close zb)

background image

AutoLISP

AutoLISP

Funkcje współpracy z

Funkcje współpracy z

AutoCAD

AutoCAD

(

command

polecenieAC

lista_argumentów

)

Funkcja realizuje każde polecenie dostępne w środowisku AutoCAD.

• Argument polecenieAC jest typu łańcuchowego i zawiera nazwę
polecenia w języku angielskim. Kompatybilność w wersjach
narodowych zapewnia użycie znaku podkreślenia np. ”_LINE”.

• Argument lista_argumentów jest sekwencją danych wymaganych
przez pole- cenie AC. Wymaga się poprawnej kolejności oraz typu
danych w liście. Deklaracja subopcji jest typu łańcuchowego.

Funkcja realizuje każde polecenie dostępne w środowisku AutoCAD.

• Argument polecenieAC jest typu łańcuchowego i zawiera nazwę
polecenia w języku angielskim. Kompatybilność w wersjach
narodowych zapewnia użycie znaku podkreślenia np. ”_LINE”.

• Argument lista_argumentów jest sekwencją danych wymaganych
przez pole- cenie AC. Wymaga się poprawnej kolejności oraz typu
danych w liście. Deklaracja subopcji jest typu łańcuchowego.

command: _line
command: From point
command: To point
command: To point
command:

Polecenia w AutoCAD:

Polecenie

Polecenie

Punkty

Punkty

Null Input

Null Input

(command „_line” p1 p2 p3
””)
(command „_circle” p1 ”_d”
20)

(command „_line” p1 p2 p3
””)
(command „_circle” p1 ”_d”
20)

Uwaga: punkt w przestrzeni
reprezentowany jest przez listę
zawierającą współrzędne x,y,z:
(x y z)

Uwaga: punkt w przestrzeni
reprezentowany jest przez listę
zawierającą współrzędne x,y,z:

(x y z)

background image

AutoLISP

AutoLISP

Funkcje współpracy z

Funkcje współpracy z

AutoCAD

AutoCAD

(

getvar

zmienna_systemowa

)

(

setvar

zmienna_systemowa

wartość

)

; ...
(setq old (getvar ”osmode”))
(setvar ”osmode” 0)
(command ”_circle” p1 20)
(setvar ”osmode” old)
; ...

; ...
(setq old (getvar ”osmode”))
(setvar ”osmode” 0)
(command ”_circle” p1 20)
(setvar ”osmode” old)
; ...

Funkcja podaje aktualną wartość zmiennej środowiska AutoCAD.

• Argument zmienna_systemowa jest typu łańcuchowego i zawiera
nazwę zmiennej przechowywanej w bazie danych AutoCAD.

Funkcja podaje aktualną wartość zmiennej środowiska AutoCAD.

• Argument zmienna_systemowa jest typu łańcuchowego i zawiera
nazwę zmiennej przechowywanej w bazie danych AutoCAD.

Funkcja zmienia aktualną wartość zmiennej środowiska AutoCAD.

• Argument zmienna_systemowa jest typu łańcuchowego

• Argument wartość musi być odpowiedniego typu
Uwaga: niektóre zmienne są tylko do odczytu (read only)

Funkcja zmienia aktualną wartość zmiennej środowiska AutoCAD.

• Argument zmienna_systemowa jest typu łańcuchowego

• Argument wartość musi być odpowiedniego typu
Uwaga: niektóre zmienne są tylko do odczytu (read only)

Zmienna ”osmode”
przechowuje ustawienia
chwytów obiektu zrealizowane
przez użytkownika polecaniem
OSNAP

Zmienna ”osmode”
przechowuje ustawienia
chwytów obiektu zrealizowane
przez użytkownika polecaniem
OSNAP

background image

AutoLISP

AutoLISP

Funkcje wprowadzania

Funkcje wprowadzania

danych

danych

(

getint

[komunikat]

)

(

getreal

[komunikat]

)

(

getpoint

[[pkt] komunikat]

)

(

getorient

[[pkt] komunikat])

- wprowadzenie kąta w lokalnym

układzie

(

getangle

[[pkt] komunikat])

- wprowadzenie

kąta

(

getcorner

pkt [komunikat])

- wprowadzenie punktu

(

getdist

[[pkt] komunikat])

- wprowadzenie

odległości

(

getstring

[[war] komunikat])

- wprowadzenie

łańcucha

(

getkword

[komunikat])

- wybór wg. listy

warunków

Liczba całkowita

Liczba całkowita

Liczba rzeczywista

Liczba rzeczywista

Punkt: lista (x y z)

Punkt: lista (x y z)

background image

AutoLISP

AutoLISP

Kontrola danych

Kontrola danych

(

initget

kod [tekst]

)

Kod

Ograniczenia

1

Nie pozwala na „Null Input”

2

Nie pozwala wprowadzić 0 (zero)

4

Nie pozwala wprowadzić wartości<0

8

Ignoruje granice rysunku

16

Punkt 3D

32

Linia wodzące kursora - przerywana

64

Ignoruje wsp. Z dla punktu 3D

Funkcja ogranicza zakres
danych wprowadzanych za
pomocą funkcji typu GET...
Zasięg funkcji: do pierwszego
wywołania funkcji typu GET...
Argument kod jest sumą kodów
poszczególnych ograniczeń.
Argument tekst stosuje się do
funkcji GetKWord.

Funkcja ogranicza zakres
danych wprowadzanych za
pomocą funkcji typu

GET...

Zasięg funkcji: do pierwszego
wywołania funkcji typu

GET...

Argument kod jest sumą kodów
poszczególnych ograniczeń.
Argument tekst stosuje się do
funkcji

GetKWord

.

;...
(initget 7)
(setq r (getreal ”Podaj
promień:”))
(initget 1)
(setq p1 (getpoint ”Podaj
punkt:”))
(command ”_circle” p1 r)
; ...

;...
(initget 7)
(setq r (getreal ”Podaj
promień:”))
(initget 1)
(setq p1 (getpoint ”Podaj
punkt:”))
(command ”_circle” p1 r)
; ...

Wartość wprowadzana przez
GET...
(/= r NIL), (/= r 0), (> r 0)

Wartość wprowadzana przez
GET...
(/= r NIL), (/= r 0), (> r 0)

Wartość wprowadzana przez
GET...
(/= p1 NIL)
Uwaga: p1(x y z)

Wartość wprowadzana przez
GET...
(/= p1 NIL)
Uwaga: p1(x y z)

background image

AutoLISP

AutoLISP

Kod źródłowy

Kod źródłowy

(

load

plik)

(defun XX ()
(blok instrukcj
)
(defun YY ()
(blok instruk

)

(defun ZZ ()
(setq p1 (getpoint ”Podaj
punkt:”))
(command ”_circle” p1 r)

; ...

(defun XX ()
(blok instrukcj
)
(defun YY ()
(blok instruk

)

(defun ZZ ()
(setq p1 (getpoint ”Podaj
punkt:”))
(command ”_circle” p1 r)

; ...

Kod źródłowy jest tekstowym plikiem
dyskowym. Domyślnym rozszerzeniem nazwy
jest *.lsp
Kod źródłowy zawiera dowolną liczbę definicji
funkcji użytkownika.
Kod źródłowy utworzyć można za pomocą
dowolnego edytora tekstu, pod warunkiem, że
jest to ”czysty tekst” tzn. zawiera jedynie kody
ASCII.

Kod źródłowy jest tekstowym plikiem
dyskowym. Domyślnym rozszerzeniem nazwy
jest *.lsp
Kod źródłowy zawiera dowolną liczbę definicji
funkcji użytkownika.
Kod źródłowy utworzyć można za pomocą
dowolnego edytora tekstu, pod warunkiem, że
jest to ”czysty tekst” tzn. zawiera jedynie kody
ASCII.

Funkcja ładuje kod źródłowy zawarty w pliku
dysko-wym dokonując kontroli składni
instrukcji zawartych w kodzie.
Argument plik typu łańcuchowego zawiera
pełną ścieżkę dostępu do pliku tzn. napęd,
katalog, nazwa.

Funkcja ładuje kod źródłowy zawarty w pliku
dysko-wym dokonując kontroli składni
instrukcji zawartych w kodzie.
Argument plik typu łańcuchowego zawiera
pełną ścieżkę dostępu do pliku tzn. napęd,
katalog, nazwa.

(load
”c:\\kat\\aplikacja”)
(load ”c:/kat/aplikacja”)
(load
”c:/kat/aplikacja.abc”)
(load ”aplikacja”)

(load
”c:\\kat\\aplikacja”)
(load ”c:/kat/aplikacja”)
(load
”c:/kat/aplikacja.abc”)
(load ”aplikacja”)


Document Outline


Wyszukiwarka

Podobne podstrony:
autocad lisp, Cad Algorytmy
autocad lisp, Cad 2D
autocad lisp, Cad ProjektLSP
autocad lisp, Cad Programowanie
AutoCAd, CAD 3 wydruk
AutoCAd, CAD 7 wydruk
AutoCAd, CAD 5 wydruk
AutoCAd, CAD 4 wydruk
AutoCAd, CAD 6 wydruk
Autodesk Inventor CAD
AutoCAD2007Tutorial6

więcej podobnych podstron