jarekw90
-
Postów
10 -
Dołączył
-
Ostatnia wizyta
Odpowiedzi opublikowane przez jarekw90
-
-
Witam,
Poniżej fragment kodu. Próbuję wykonać pętlę repeat do momentu wskazania przez użytkownika przerwanie przez N lub Esc, chciałbym aby enter było traktowane jako domyślnie T. Niestety w każdym przypadku przerywa wykonywanie programu. Proszę o pomoc.
(defun
......
(setq aaa "T")
(repeat(if (= aaa "T")
(progn
...
);end progn
);end if(progn
(initget "T N")
(setq aaa (getkword "Kontynuowac? [T/N] <T>:") )
(if (not aaa) (setq aaa "T"))
));end repeat
) ;end program
-
Dziękuję, działa.
-
Witam, napisałem lispa, którego zadaniem jest zliczenie statystyki punktów o określonych odchyleniach od wartości Z=0. Ilość punktów w poszczególnych zakresach jest poprawnie zliczona, nie wykonuje natomiast poprawnie liczenia % i wstawienia tekstu z dokładnością do 0.1%. Suma nie wychodzi 100%. Zawiesiłem się prawdopodobnie na jakimś prostym mankamencie. Proszę o pomoc. W załączeniu lisp oraz przykładowe dane.
-
Trochę inaczej poradziłem sobie z tym problemem, zamieniłem (command "point") na funkcję (entmake ...).
-
Dlaczego podczas używania polecenia (command "_point" ....), pomimo tego, że punkt posiada konkretne współrzędne program snapuje punkty do obiektów? Da się to jakoś ominąć w lispie, aby nie musieć wyłączać snapowania na czas działania funkcji?
-
Już wiem gdzie był błąd. Działa ;) Chyba zrozumiałem już mniej więcej o co chodzi.
(defun c:aaaaa()
(setq ss (ssget '((0 . "POINT"))))
(setq n (sslength ss))
(setq nss 0)
(princ "zaznaczonych:")
(princ n)
(setq pkt1 (list 0 0 0))
(while (< nss n);nss mniejsze poniewaz numeracja od zera
(setq ssnam (ssname ss nss)) ; ze zbioru wskazań ss pobiera element o indeksie nr, elementy liczone są od 0
(setq entgi (entget ssnam )); wybór opisu elementu jako listy dla podanej nazwy elementu
(setq pkt0 (cdr (assoc 10 entgi)));10 kod punktu wstawienia dla punktu dxf
(setq pkt1 (list (+(car pkt0) (car pkt1)) (+(cadr pkt0) (cadr pkt1)) (+(caddr pkt0) (caddr pkt1))))
(setq nss (+ nss 1))
);end while
(princ pkt1)
(setq pkt2 (list (/(car pkt1) n) (/(cadr pkt1) n) (/(caddr pkt1) n)))
(command "_erase" "_si" ss)
(command "_point" pkt2)
);end prog -
Dobrze kombinuję? Niestety zwraca mi wartość 0 0 0
(defun c:aaaaa()
(setq ss (ssget '((0 . "POINT"))))
(setq n (sslength ss))
(setq nss 0)
(princ "zaznaczonych:")
(princ n)
(setq pkt2 (list 0 0 0))
(while (< nss 1+n)
(setq ssnam (ssname ss nss))
(setq entgi (entget ssnam ))
(setq pkt0 (cdr (assoc 10 entgi)))
(setq pkt1 (list (car pkt0) (cadr pkt0) (caddr pkt0)))
(princ pkt1)
(setq pkt2 (list (+(car pkt2) (car pkt1)) (+(cadr pkt2) (cadr pkt1)) (+(caddr pkt2) (caddr pkt1))))
(princ pkt2)
(setq nss (1+ nss))
);end while
(princ pkt2)
); end func -
Jak zatem pobrać sumę np współrzędnych X ze zbioru wskazań punktów?
-
Witam,
Napisałem prostego lispa, który uśrednia wybrane punkty. Chciałbym jednak aby działał przy użyciu funkcji "ssget" na dowolnej liczbie zaznaczonych punktów. Nie bardzo rozumiem jeszcze działanie tej funkcji więc proszę o pomoc. Wiem, że ilość zaznaczonych punktów mogę wyznaczyć za pomocą sslenght, nie wiem natomiast jak z tego zbioru wydobyć współrzędne, stworzyć listę i uśrednić współrzędne.
problem repeat + getkword
w Wsparcie programistyczne LISP i VisualLISP
Opublikowano
Dziękuję, działa.