_

Pomoc w LISP-ie mile widziana - z góry bardzo dziękuje.

Forum ogólne, ale nie do zadawania "prostych pytań". Wszystko o CAD, czego nie da się bezpośrednio połączyć z tematyką jednego z poniższych forów tematycznych.

Pomoc w LISP-ie mile widziana - z góry bardzo dziękuje.

Postprzez rahwal » lut 08, 2006 03:09

Witam wszystkich LISP-owiczów.
Proszę o pomoc.
Chcialem napisac lispa który narysuje mi 3 linie i jedną plinie o zadanych wspolrzednych i cos zaczeło wyskakiwać ze zmienna nie taka itp.
Wysyłam kod lispu.
Jakby ktos miał czas i ochotę.

(defun c:krociec4 ( / h0 h1 h2 pz0 pz1 pz2 pxs1 px1 pxs2 px2 pxs3 px3 OldUchwyt)

(setq h0 94)
(setq h1 -9)
(setq h2 99)

(setq pz0 24)
(setq pz1 24)
(setq pz2 253)

(setq pxs1 485)
(setq px1 500)
(setq pxs2 57)
(setq px2 58)
(setq pxs3 9)
(setq px3 9)


(progn
(SetQ OldUchwyt (GetVar "OSMODE"))
(SetVar "OSMODE" 0)

(setq p ( getpoint "\n wskaz punt : " ))
(setq z0 (list (car h0) (cadr pz0)))
(setq z1 (list (car h1) (cadr pz1)))
(setq z2 (list (car h2) (cadr pz2)))

(setq xs1 (list (car h0) (cadr pxs1)))
(setq x1 (list (car h1) (cadr px1)))
(setq xs2 (list (car h1) (cadr pxs2)))
(setq x2 (list (car h2) (cadr px2)))
(setq xs3 (list (car h2) (cadr pxs3)))
(setq x3 (list (car h3) (cadr px3)))


(command "_pline" z0 z1 z2 "" )
(setq l1 (entlast))
(command "_line" xs1 x1 "") (setq l2 (entlast))
(command "_line" xs2 x2 "") (setq l3 (entlast))
(command "_line" xs3 x3 "") (setq l4 (entlast));command



(SetVar "OSMODE" OldUchwyt)
);progn

(princ)


);defun


dziekuje za pomoc
rahwal
 
Posty: 3
Dołączył(a): lut 08, 2006 03:00

Re: Pomoc w LISP-ie mile widziana - z góry bardzo dziękuje.

Postprzez sparrow » lut 08, 2006 07:49

Poczytaj sobie o funcjach CAR i CADR.

Pierwszy błąd w Twoim programie wystąpi przy próbie wykonania:
Kod: Zaznacz cały
(car h0)
gdy
Kod: Zaznacz cały
(setq h0 94)

Przy takiej strukturze danych jaką masz powinieneś używać:
Kod: Zaznacz cały
(setq z0 (list h0 pz0))
zamiast
Kod: Zaznacz cały
(setq z0 (list (car h0) (cadr pz0)))
(dotyczy to takze następnych wierszy programu !!!)

sparrow

PS. po co pytasz użytkownika o punkt p skoro nie wykorzystujesz tej informacji w swoim programie?
Avatar użytkownika
sparrow
 
Posty: 380
Dołączył(a): wrz 29, 2005 20:48
Lokalizacja: Gdańsk-Jasień

Re: Pomoc w LISP-ie mile widziana - z góry bardzo dziękuje.

Postprzez rahwal » lut 08, 2006 09:42

Dziekuje bardzo za pomoc.

Działa.

Odp.(do punktu p) : miał byc wykorzystywany w dodatkowej funkcji i zapomniałem do wymazać jak umieszczałem pytanie na stronie.

Korzystając z okazji czy w lispie jest jakaś komenda która pozwalała by umieścić tekst w konkretnym miejścu(x,y) (np. jako etykieta wykresie, czy opis wykresu)
rahwal
 
Posty: 3
Dołączył(a): lut 08, 2006 03:00

Re: Pomoc w LISP-ie mile widziana - z góry bardzo dziękuje.

Postprzez sparrow » lut 08, 2006 10:37

rahwal napisał(a):... czy w lispie jest jakaś komenda...


Nie, w lispie nie ma "komend".

Oczekiwany rezultat mozesz osiagnac za pomocą funkcji ENTMAKE:
Kod: Zaznacz cały
(setq  p0 (list 1.0 1.0 0.0)
       txt "przykładowy tekst"
);setq       

(entmake (list
           '(0 . "TEXT")
            (cons 10 p0)
            (cons 1 txt)
         );list
 );entmake
Avatar użytkownika
sparrow
 
Posty: 380
Dołączył(a): wrz 29, 2005 20:48
Lokalizacja: Gdańsk-Jasień


Powrót do Forum CAD

Kto przegląda forum

Użytkownicy przeglądający ten dział: Google [Bot]