tomswons

Użytkownik forum
  • Postów

    2
  • Dołączył

  • Ostatnia wizyta

Treść opublikowana przez tomswons

  1. Udało się A przynajmniej na razie nie znalazłem żadnego błędu Gdyby ktoś miał jakieś sugestie to chętnie się zapoznam 😉 (defun c:drawcircle() (setq selectionList (list)) (setq selection (entsel "Wybierz napis lub blok: ")) (while selection (setq entType (cdr (assoc 0 (entget (car selection))))) (setq entName (if (equal entType "TEXT") (cdr (assoc 1 (entget (car selection)))) (cdr (assoc 2 (entget (car selection)))))) (setq found nil) (foreach relation '(("bidet" . "svp_bidet") ("A$C70EE3DDA" . "svp_centrala")) (if (equal entName (car relation)) (setq found t) ) ) (if (not found) (while (not found) (setq entName (getstring "Podaj nazwę napisu/bloku: ")) (foreach relation '(("bidet" . "svp_bidet") ("A$C70EE3DDA" . "svp_centrala")) (if (equal entName (car relation)) (setq found t) ) ) (if (not found) (alert "Nie ma takiego napisu/bloku w relacjach, spróbuj ponownie.")) ) ) (setq selectionList (append selectionList (list (cons entName (car selection))))) (setq selection (entsel "Wybierz kolejny napis lub blok lub zakończ wybór: ")) ) (if selectionList (progn (setq p1 (getpoint "Wybierz punkt wstawienia: ")) (setq offset 0) (foreach selection selectionList (setq entName (car selection)) (foreach relation '(("bidet" . "svp_bidet") ("A$C70EE3DDA" . "svp_centrala")) (if (equal entName (car relation)) (progn (setvar "cmdecho" 0) (setvar "ATTDIA" 0) (setq insBlok (cdr relation)) (setq pt (polar p1 0 offset)) (command "_insert" insBlok pt "1" "1" "0") (setq offset (+ offset 1000)) (setvar "ATTDIA" 1) ) ) ) ) ) (alert "Nie wybrano żadnego napisu lub bloku.") ) (princ) ) (princ "Polecenie DRAWCIRCLE wczytane.")
  2. Cześć, Próbuje opracować skrypt który: 1. Rozpoznaje zaznaczone napisy/bloki i wstawia potem przypisane do nich bloki w odpowiedniej kolejności. -Jeśli blok/napis jest nie zdefiniowany w zestawieniu skryptu to prosi o podanie nazwy która sprawdzi z zestawieniem. Jesli jest poprawna to ją akceptuje jako rozpoznaną, jeśli nie jest prosi ponownie o wpisanie nazwy. 2. Bloki wstawiają się w wybranym punkcie, przy czym każdy kolejny zaznaczony obiekt jest odsunięty o pewną wartość od poprzedniego. Stworzyłem kilka wersji i w każdej jest pewien problem 😕 1. Działa rozpoznawanie obiektów, ale pyta o nazwę nie znanego bloku dopiero gdy zakończę wybór zamiast odrazu gdy trafi się jakiś nie znany obiekt (defun c:drawcircle() (setq selectionList (list)) (setq selection (entsel "Wybierz napis lub blok: ")) (while selection (setq selectionList (append selectionList (list (car selection)))) (setq selection (entsel "Wybierz kolejny napis lub blok lub zakończ wybór: ")) ) (if selectionList (progn (setq p1 (getpoint "Wybierz punkt wstawienia: ")) (setq offset 0) (foreach selection selectionList (setq entType (cdr (assoc 0 (entget selection)))) (setq entName (if (equal entType "TEXT") (cdr (assoc 1 (entget selection))) (cdr (assoc 2 (entget selection))))) (setq found nil) (foreach relation '(("bidet" . "svp_bidet") ("A$C70EE3DDA" . "svp_centrala")) (if (equal entName (car relation)) (progn (setq found t) (setvar "cmdecho" 0) (setvar "ATTDIA" 0) (setq insBlok (cdr relation)) (setq pt (polar p1 0 offset)) (command "_insert" insBlok pt "1" "1" "0") (setq offset (+ offset 2000)) (setvar "ATTDIA" 1) ) ) ) (if (not found) (while (not found) (setq insBlok (getstring "Podaj nazwę bloku dla napisu/bloku: ")) (foreach relation '(("bidet" . "svp_bidet") ("A$C70EE3DDA" . "svp_centrala")) (if (equal insBlok (car relation)) (progn (setq found t) (setvar "cmdecho" 0) (setvar "ATTDIA" 0) (setq insBlok (cdr relation)) (setq pt (polar p1 0 offset)) (command "_insert" insBlok pt "1" "1" "0") (setq offset (+ offset 2000)) (setvar "ATTDIA" 1) ) ) ) (if (not found) (alert "Nie ma takiego bloku w relacjach, spróbuj ponownie.")) ) ) ) ) (alert "Nie wybrano żadnego napisu lub bloku.") ) (princ) ) (princ "Polecenie DRAWCIRCLE wczytane.") 2. Nie rozpoznaje tekstu ani bloków zawsze pyta co to jest i wstawia je w odpowiedniej kolejności. (defun c:drawcircle() (setq selectionList (list)) (setq selection (entsel "Wybierz napis lub blok: ")) (while selection (setq entName (cdr (assoc 2 (entget (car selection))))) (setq found nil) (foreach relation '(("bidet" . "svp_bidet") ("centrala" . "svp_centrala")) (if (equal entName (car relation)) (setq found t) ) ) (if (not found) (while (not found) (setq entName (getstring "Podaj nazwę napisu/bloku: ")) (foreach relation '(("bidet" . "svp_bidet") ("centrala" . "svp_centrala")) (if (equal entName (car relation)) (setq found t) ) ) (if (not found) (alert "Nie ma takiego napisu/bloku w relacjach, spróbuj ponownie.")) ) ) (setq selectionList (append selectionList (list entName))) (setq selection (entsel "Wybierz kolejny napis lub blok lub zakończ wybór: ")) ) (if selectionList (progn (setq p1 (getpoint "Wybierz punkt wstawienia: ")) (setq offset 0) (foreach entName selectionList (foreach relation '(("bidet" . "svp_bidet") ("centrala" . "svp_centrala")) (if (equal entName (car relation)) (progn (setq insBlok (cdr relation)) (setq pt (polar p1 0 offset)) (command "_insert" insBlok pt "1" "1" "0") (setq offset (+ offset 1000)) ) ) ) ) ) (alert "Nie wybrano żadnego napisu lub bloku.") ) (princ) ) (princ "Polecenie DRAWCIRCLE wczytane.") 3. Rozpoznaje czy napis/blok jest zdefiniowany, prosi o podanie nazwy bloku jeśli nie jest. Niestety jednak niczego nie wstawia. (defun c:drawcircle() (setq selectionList (list)) (setq selection (entsel "Wybierz napis lub blok: ")) (while selection (setq entType (cdr (assoc 0 (entget (car selection))))) (setq currEntName (if (equal entType "TEXT") (cdr (assoc 1 (entget (car selection)))) (cdr (assoc 2 (entget (car selection)))))) (setq found nil) (foreach relation '(("bidet" . "svp_bidet") ("A$C70EE3DDA" . "svp_centrala")) (if (equal currEntName (car relation)) (setq found t) ) ) (if (not found) (while (not found) (setq currEntName (getstring "Podaj nazwę napisu/bloku: ")) (foreach relation '(("bidet" . "svp_bidet") ("A$C70EE3DDA" . "svp_centrala")) (if (equal currEntName (car relation)) (setq found t) ) ) (if (not found) (alert "Nie ma takiego napisu/bloku w relacjach, spróbuj ponownie.")) ) ) (setq selectionList (append selectionList (list (car selection)))) (setq selection (entsel "Wybierz kolejny napis lub blok lub zakończ wybór: ")) ) (if selectionList (progn (setq p1 (getpoint "Wybierz punkt wstawienia: ")) (setq offset 0) (foreach selection selectionList (setq entType (cdr (assoc 0 (entget selection)))) (setq entName (if (equal entType "TEXT") (cdr (assoc 1 (entget selection))) (cdr (assoc 2 (entget selection))))) (foreach relation '(("bidet" . "svp_bidet") ("A$C70EE3DDA" . "svp_centrala")) (if (equal entName (car relation)) (progn (setvar "cmdecho" 0) (setvar "ATTDIA" 0) (setq insBlok (cdr relation)) (setq pt (polar p1 0 offset)) (command "_insert" insBlok pt "1" "1" "0") (setq offset (+ offset 1000)) (setvar "ATTDIA" 1) ) ) ) ) ) (alert "Nie wybrano żadnego napisu lub bloku.") ) (princ) ) (princ "Polecenie DRAWCIRCLE wczytane.") 4 Wstawia wielokrotnie tylko ostatnio wprowadzony obiekt, ale rozpoznaje tekst, bloki i pyta o nie znane elementy (defun c:drawcircle() (setq selectionList (list)) (setq selection (entsel "Wybierz napis lub blok: ")) (while selection (setq entType (cdr (assoc 0 (entget (car selection))))) (setq entName (if (equal entType "TEXT") (cdr (assoc 1 (entget (car selection)))) (cdr (assoc 2 (entget (car selection)))))) (setq found nil) (foreach relation '(("bidet" . "svp_bidet") ("A$C70EE3DDA" . "svp_centrala")) (if (equal entName (car relation)) (setq found t) ) ) (if (not found) (while (not found) (setq entName (getstring "Podaj nazwę napisu/bloku: ")) (foreach relation '(("bidet" . "svp_bidet") ("A$C70EE3DDA" . "svp_centrala")) (if (equal entName (car relation)) (setq found t) ) ) (if (not found) (alert "Nie ma takiego napisu/bloku w relacjach, spróbuj ponownie.")) ) ) (setq selectionList (append selectionList (list (car selection)))) (setq selection (entsel "Wybierz kolejny napis lub blok lub zakończ wybór: ")) ) (if selectionList (progn (setq p1 (getpoint "Wybierz punkt wstawienia: ")) (setq offset 0) (foreach selection selectionList (foreach relation '(("bidet" . "svp_bidet") ("A$C70EE3DDA" . "svp_centrala")) (if (equal entName (car relation)) (progn (setvar "cmdecho" 0) (setvar "ATTDIA" 0) (setq insBlok (cdr relation)) (setq pt (polar p1 0 offset)) (command "_insert" insBlok pt "1" "1" "0") (setq offset (+ offset 1000)) (setvar "ATTDIA" 1) ) ) ) ) ) (alert "Nie wybrano żadnego napisu lub bloku.") ) (princ) ) (princ "Polecenie DRAWCIRCLE wczytane.") 5. Robi w sumie wszystko jak należy ale pozwala wybrać tylko 1 obiekt zamiast zapętlać funkcje wyboru. (defun c:drawcircle() (setq selection (entsel "Wybierz napis lub blok: ")) (if selection (progn (setq entType (cdr (assoc 0 (entget (car selection))))) (setq entName (if (equal entType "TEXT") (cdr (assoc 1 (entget (car selection)))) (cdr (assoc 2 (entget (car selection)))))) (setq found nil) (foreach relation '(("bidet" . "svp_bidet") ("A$C70EE3DDA" . "svp_centrala")) (if (equal entName (car relation)) (progn (setq found t) (setvar "cmdecho" 0) (setvar "ATTDIA" 0) (setq insBlok (cdr relation)) (setq p1 (getpoint "Wybierz punkt wstawienia: ")) (command "_insert" insBlok p1 "1" "1" "0") (setvar "ATTDIA" 1) ) ) ) (if (not found) (while (not found) (setq insBlok (getstring "Podaj nazwę bloku dla napisu/bloku: ")) (foreach relation '(("bidet" . "svp_bidet") ("A$C70EE3DDA" . "svp_centrala")) (if (equal insBlok (car relation)) (progn (setq found t) (setvar "cmdecho" 0) (setvar "ATTDIA" 0) (setq insBlok (cdr relation)) (setq p1 (getpoint "Wybierz punkt wstawienia: ")) (command "_insert" insBlok p1 "1" "1" "0") (setvar "ATTDIA" 1) ) ) ) (if (not found) (alert "Nie ma takiego bloku w relacjach, spróbuj ponownie.")) ) ) ) (alert "Nie wybrano żadnego napisu lub bloku.") ) (princ) ) (princ "Polecenie DRAWCIRCLE wczytane.")