jarekw90

Użytkownik forum
  • Postów

    10
  • Dołączył

  • Ostatnia wizyta

Treść opublikowana przez jarekw90

  1. 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
  2. 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. test2.dwg test2.lsp
  3. Trochę inaczej poradziłem sobie z tym problemem, zamieniłem (command "point") na funkcję (entmake ...).
  4. 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?
  5. 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
  6. 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
  7. Jak zatem pobrać sumę np współrzędnych X ze zbioru wskazań punktów?
  8. 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. new1.lsp srednia.lsp