Dostosowanie lispu do ZWCAD+ (Bląd DXF)


Rekomendowane odpowiedzi

Witam serdecznie,

jestem nowym użytkownikiem forum i zaznacza, iż nie znam się na programowaniu lisp. Chciałbym prosić Was o pomoc w dostosowaniu poniższego kodu źródłowego do środowiska ZWCAD + (posiadam wersję 2015). Dotychczas używałem autcada 2004 na którym lisp działał bez problemu.

Po przesiadce na ZWCADa i wywołaniu komendy lispa wyskakuje błąd:

; błąd: no function definition:  DXF

Posiadam jeszcze kilka innych drobnych lispów , w których problem z błędem "DXF" się powtarza.

Bardzo proszę o pomoc w tej sprawie.

 

obraca blok lub tekst równolegle do wskazanej lini

(defun c:blr (/ linia blok pt1 pt2 kat kat_stary pkt_wst obiekt) 

  (setq linia nil)

  (while (= linia nil)

    (setq linia (car (entsel "\nWskaz linie: ")))

    (if       (and (/= linia nil) (/= (dxf 0 (entget linia)) "LINE"))

      (setq linia nil)

      );if

    );while

 

  (setq blok (car (entsel "\nWskaz blok lub tekst: ")))

  (if blok

    (progn

      (setq obiekt (dxf 0 (entget blok)))

      (if (or (= obiekt "TEXT") (= obiekt "INSERT"))

                (progn

                  (setq pt1 (reverse (cdr (reverse (cdr (assoc 10 (entget linia))))))

                               pt2 (reverse (cdr (reverse (cdr (assoc 11 (entget linia))))))

                               kat (angle pt1 pt2)

                               kat_stary (cdr (assoc 50 (entget blok)))

                               pkt_wst (reverse (cdr (reverse (cdr (assoc 10 (entget blok))))))

                               )

                  (if (AND (< (/ pi 2) kat)  (> (+ (/ pi 2) pi) kat ))

                    (setq kat (- kat pi))

                    )

                  (command "_rotate" blok "" pkt_wst "_r" (angtos kat_stary 0 4) (angtos kat 0 4))

                  ));if

      ));if blok

 

 

  );defun blr

Odnośnik do komentarza
Udostępnij na innych stronach

Witam serdecznie,

jestem nowym użytkownikiem forum i zaznacza, iż nie znam się na programowaniu lisp. Chciałbym prosić Was o pomoc w dostosowaniu poniższego kodu źródłowego do środowiska ZWCAD + (posiadam wersję 2015). Dotychczas używałem autcada 2004 na którym lisp działał bez problemu.

Po przesiadce na ZWCADa i wywołaniu komendy lispa wyskakuje błąd:

; błąd: no function definition:  DXF

Posiadam jeszcze kilka innych drobnych lispów , w których problem z błędem "DXF" się powtarza.

Bardzo proszę o pomoc w tej sprawie.

 

obraca blok lub tekst równolegle do wskazanej lini

(defun c:blr (/ linia blok pt1 pt2 kat kat_stary pkt_wst obiekt) 

  (setq linia nil)

  (while (= linia nil)

    (setq linia (car (entsel "\nWskaz linie: ")))

    (if       (and (/= linia nil) (/= (dxf 0 (entget linia)) "LINE"))

      (setq linia nil)

      );if

    );while

 

  (setq blok (car (entsel "\nWskaz blok lub tekst: ")))

  (if blok

    (progn

      (setq obiekt (dxf 0 (entget blok)))

      (if (or (= obiekt "TEXT") (= obiekt "INSERT"))

                (progn

                  (setq pt1 (reverse (cdr (reverse (cdr (assoc 10 (entget linia))))))

                               pt2 (reverse (cdr (reverse (cdr (assoc 11 (entget linia))))))

                               kat (angle pt1 pt2)

                               kat_stary (cdr (assoc 50 (entget blok)))

                               pkt_wst (reverse (cdr (reverse (cdr (assoc 10 (entget blok))))))

                               )

                  (if (AND (< (/ pi 2) kat)  (> (+ (/ pi 2) pi) kat ))

                    (setq kat (- kat pi))

                    )

                  (command "_rotate" blok "" pkt_wst "_r" (angtos kat_stary 0 4) (angtos kat 0 4))

                  ));if

      ));if blok

 

 

  );defun blr

Dodaj do pliku definicję funkcji DXF, której to właśnie brakuje:

(defun DXF (code elist)(cdr (assoc code elist)))

Na marginesie. Fajna jest zabawa kodami DXF obiektów, by na końcu użyć... command, A i dopiero teraz zauważyłem. Te reversy to po co są? Kto to pisał?

Edytowane przez kojacek
Odnośnik do komentarza
Udostępnij na innych stronach

Dodaj do pliku definicję funkcji DXF, której to właśnie brakuje:

(defun DXF (code elist)(cdr (assoc code elist)))

Na marginesie. Fajna jest zabawa kodami DXF obiektów, by na końcu użyć... command, A i dopiero teraz zauważyłem. Te reversy to po co są? Kto to pisał?

Dziękuję bardzo! Lispa dostałem od kolegi, ale on z pewnością tego nie napisał ;) 

Odnośnik do komentarza
Udostępnij na innych stronach

Dołącz do dyskusji

Możesz dodać zawartość już teraz a zarejestrować się później. Jeśli posiadasz już konto, zaloguj się aby dodać zawartość za jego pomocą.

Gość
Dodaj odpowiedź do tematu...

×   Wklejono zawartość z formatowaniem.   Usuń formatowanie

  Dozwolonych jest tylko 75 emoji.

×   Odnośnik został automatycznie osadzony.   Przywróć wyświetlanie jako odnośnik

×   Przywrócono poprzednią zawartość.   Wyczyść edytor

×   Nie możesz bezpośrednio wkleić grafiki. Dodaj lub załącz grafiki z adresu URL.

Ładowanie