Forum użytkowników programów ZWCAD, KOMPAS-3D, Scan2CAD, PDF2CAD Strona Główna Forum użytkowników programów ZWCAD, KOMPAS-3D, Scan2CAD, PDF2CAD
Forum CAD.

FAQFAQ  SzukajSzukaj  UżytkownicyUżytkownicy  GrupyGrupy
RejestracjaRejestracja  ZalogujZaloguj

Poprzedni temat «» Następny temat
Lisp - getpoint - dziwne zachowanie
Autor Wiadomość
gruzin 
sanitarnik

Pomógł: 5 razy
Dołączył: 16 Lip 2009
Posty: 232
Skąd: Białystok
  Wysłany: Czw Sty 20, 11 12:32   Lisp - getpoint - dziwne zachowanie

mam taki kod:
Kod:

(defun c:rzut2prof ( / Punkt0 Punkt1 PunktT0 PunktT1 RzednaT0 RzednaT1 OpisT1 ZmianaSkalipoz ZmianaSkalipio)



;===========================================================================
; wybieramy styl tekstu IS_SIMPLEX jako aktualny lub gdy go nie ma tworzymy go i ustawiamy jako aktualny
(if (tblsearch "Style" "IS_SIMPLEX")
  (command "_textstyle" "IS_SIMPLEX")
 (progn
    (command "_-style"
        "TEMP-STYLE" "simplex.shx" "" "0.7" "" "" "" "")
    (command "_rename" "_S" "TEMP-STYLE" "IS_SIMPLEX")
    (command "_textstyle" "IS_SIMPLEX")
 );progn
);if
;===========================================================================

;===========================================================================
; wybieramy warstwe IS_tabela jako aktualną lub gdy jej nie ma tworzymy ją
(if (tblsearch "Layer" "IS_tabela")
  (command "_clayer" "IS_tabela")
 (progn
    (command "_layer"
        "_N" "TEMP-LAYER"
        "_C" "11" "TEMP-LAYER"
        "_L" "Continuous" "TEMP-LAYER"
        "_LW" "0.13" "TEMP-LAYER" "")
    (command "_rename" "_LA" "TEMP-LAYER" "IS_tabela")
 );progn
);if

; wybieramy warstwe IS_tabela jako aktualną lub gdy jej nie ma tworzymy ją
(if (tblsearch "Layer" "IS_teren")
  (command "_clayer" "IS_teren")
 (progn
    (command "_layer"
        "_N" "TEMP-LAYER"
        "_C" "61" "TEMP-LAYER"
        "_L" "Continuous" "TEMP-LAYER"
        "_LW" "0.13" "TEMP-LAYER" "")
    (command "_rename" "_LA" "TEMP-LAYER" "IS_teren")
 );progn
);if

; wybieramy warstwe IS_opisy jako aktualną lub gdy jej nie ma tworzymy ją
(if (tblsearch "Layer" "IS_opisy")
  (command "_clayer" "IS_opisy")
 (progn
    (command "_layer"
        "_N" "TEMP-LAYER"
        "_C" "41" "TEMP-LAYER"
        "_L" "Continuous" "TEMP-LAYER"
        "_LW" "0.13" "TEMP-LAYER" "")
    (command "_rename" "_LA" "TEMP-LAYER" "IS_opisy")
    (command "_clayer" "IS_opisy")
 );progn
);if
;=========================================================================

;===========================================================
(setvar "dimzin" 0) ;ustawienie dokładności cyfr "pełnychg" na dokładność z przecinkami - bez tego poziom 0,0 bedzie bez przecinków podawany
(setvar "osnapcoord" 1) ;zmienia sposób przyciągania do punktów, aby nie dociągało wstawianych skryptem elementów do elementów istniejących
;=============================================================

;===========================================================================
(if (null RzednaT1) (setq RzednaT1 112))
(if (null ZmianaSkalipoz) (setq ZmianaSkalipoz 1))
(if (null ZmianaSkalipio) (setq ZmianaSkalipio 1))
;===========================================================================


(setq    Punkt1 (getpoint "\nKliknij pierwszy punkt \"terenu\" od którego rysowany będzie profil (na profilu): ")
        ZmianaSkalipoz (UIGetDist "\nWpisz o ile razy zmienić skalę POZIOMĄ profilu w stosunku do rzutu (1 - brak zmiany, 0.2 - zmniejszenie 5x długości profilu): " ZmianaSkalipoz)
        ZmianaSkalipio (UIGetDist "\nWpisz o ile razy zmienić skalę PIONOWĄ profilu w stosunku do skali 1:100 (1 - brak zmiany, 2 - skala 1:50, itp): " ZmianaSkalipio)
        PunktT1 (getpoint "\nKliknij pierwszy punkt na rzucie.")
        RzednaT1 (UIGetDist "\nWpisz wartość poziomu terenu w tym punkcje: " RzednaT1)
        OpisT1 (getstring T "\nWpisz opis na profilu do tego punktu: ")
);setq
(setvar "clayer" "IS_opisy")
(command "_.text" (polar (polar Punkt1 pi 5) (/ pi 2) 30) "18" "90" OpisT1)
(setvar "clayer" "IS_tabela")
(command "_line" Punkt1 (polar Punkt1 (/ pi 2) 500) "")
(setvar "clayer" "IS_opisy")


(command "_.text" (polar (polar Punkt1 (* 1.5 pi) (- (* (+ (rem RzednaT1 5) 5) 100) 5)) 0 10) "18" "0" (rtos (- RzednaT1 (/ (+ (rem RzednaT1 5) 5) ZmianaSkalipio)) 2 2))
(command "_circle" (polar Punkt1 (* 1.5 pi) (* (+ (rem RzednaT1 5) 5) 100)) "_d" "10")


(setq    PunktT0 PunktT1
        PunktT1 (getpoint PunktT0 "\nKliknij kolejny punkt na rzucie.")
);setq --------------------------------------------


(while PunktT1

    (setq    Punkt0 Punkt1
            RzednaT0 RzednaT1
            RzednaT1 (UIGetDist "\nWpisz wartość poziomu terenu w tym punkcje: " RzednaT1)
            OpisT1 (getstring T "\nWpisz opis na profilu do tego punktu: ")
            Punkt1 (polar (polar Punkt0 0 (* ZmianaSkalipoz (distance PunktT0 PunktT1))) (/ pi 2) (* ZmianaSkalipio (* (- RzednaT1 RzednaT0) 100)))
    );setq
    (setvar "clayer" "IS_opisy")
    (command "_.text" (polar (polar Punkt1 pi 5) (/ pi 2) 50) "18" "90" OpisT1)
    (setvar "clayer" "IS_tabela")
    (command "_line" Punkt1 (polar Punkt1 (/ pi 2) 500) "")

    (setvar "clayer" "IS_teren")
    (command "_line" Punkt0 Punkt1 "")
        (setq    PunktT0 PunktT1)
        (setq    PunktT1 (getpoint PunktT0 "\nKliknij kolejny punkt na rzucie."))
       
);while



);defun rzut2prof


Pętla while zachowuje się jakoś dziwnie pod zwcadem 2011. Polecenie getpoint nie pozwala na wciśnięcie Prawego Przycisku Myszy i wyjście z pętli.

Wyświetla się komunikat: "A numeric value is needed. Please try again:" i jedynym wyjściem jest wciśnięcie ESC co niestety całkowicie przerywa funkcję.

Może ktoś wie czemu getpoint nie chce przyjąć ENTERA, czy to błąd w ZWCAD2011 czy coś nie tak jest w moim lispie?

Pod Academ działa prawidłowo.
_________________
www.instalacjesanitarne.com
www.profilek.net
 
     
kruszynski

Pomógł: 17 razy
Dołączył: 02 Sty 2009
Posty: 312
Wysłany: Czw Sty 20, 11 13:30   

Jak na mój pierwszy rzut oka, to wygląda, jakby jakieś śmieci zostały z poprzedniego użycia initget. Proszę spróbować przed getpoit, użyć initget.
 
     
gruzin 
sanitarnik

Pomógł: 5 razy
Dołączył: 16 Lip 2009
Posty: 232
Skąd: Białystok
Wysłany: Czw Sty 20, 11 18:30   

(initget 128) pomogło, wstawiłem je dwukrotnie.

Kod:
(defun c:rzut2prof ( / Punkt0 Punkt1 PunktT0 PunktT1 RzednaT0 RzednaT1 OpisT1 ZmianaSkalipoz ZmianaSkalipio)



;===========================================================================
; wybieramy styl tekstu IS_SIMPLEX jako aktualny lub gdy go nie ma tworzymy go i ustawiamy jako aktualny
(if (tblsearch "Style" "IS_SIMPLEX")
  (command "_textstyle" "IS_SIMPLEX")
 (progn
    (command "_-style"
        "TEMP-STYLE" "simplex.shx" "" "0.7" "" "" "" "")
    (command "_rename" "_S" "TEMP-STYLE" "IS_SIMPLEX")
    (command "_textstyle" "IS_SIMPLEX")
 );progn
);if
;===========================================================================

;===========================================================================
; wybieramy warstwe IS_tabela jako aktualną lub gdy jej nie ma tworzymy ją
(if (tblsearch "Layer" "IS_tabela")
  (command "_clayer" "IS_tabela")
 (progn
    (command "_layer"
        "_N" "TEMP-LAYER"
        "_C" "11" "TEMP-LAYER"
        "_L" "Continuous" "TEMP-LAYER"
        "_LW" "0.13" "TEMP-LAYER" "")
    (command "_rename" "_LA" "TEMP-LAYER" "IS_tabela")
 );progn
);if

; wybieramy warstwe IS_tabela jako aktualną lub gdy jej nie ma tworzymy ją
(if (tblsearch "Layer" "IS_teren")
  (command "_clayer" "IS_teren")
 (progn
    (command "_layer"
        "_N" "TEMP-LAYER"
        "_C" "61" "TEMP-LAYER"
        "_L" "Continuous" "TEMP-LAYER"
        "_LW" "0.13" "TEMP-LAYER" "")
    (command "_rename" "_LA" "TEMP-LAYER" "IS_teren")
 );progn
);if

; wybieramy warstwe IS_opisy jako aktualną lub gdy jej nie ma tworzymy ją
(if (tblsearch "Layer" "IS_opisy")
  (command "_clayer" "IS_opisy")
 (progn
    (command "_layer"
        "_N" "TEMP-LAYER"
        "_C" "41" "TEMP-LAYER"
        "_L" "Continuous" "TEMP-LAYER"
        "_LW" "0.13" "TEMP-LAYER" "")
    (command "_rename" "_LA" "TEMP-LAYER" "IS_opisy")
    (command "_clayer" "IS_opisy")
 );progn
);if
;=========================================================================

;===========================================================
(setvar "dimzin" 0) ;ustawienie dokładności cyfr "pełnychg" na dokładność z przecinkami - bez tego poziom 0,0 bedzie bez przecinków podawany
(setvar "osnapcoord" 1) ;zmienia sposób przyciągania do punktów, aby nie dociągało wstawianych skryptem elementów do elementów istniejących
;=============================================================

;===========================================================================
(if (null RzednaT1) (setq RzednaT1 112))
(if (null ZmianaSkalipoz) (setq ZmianaSkalipoz 1))
(if (null ZmianaSkalipio) (setq ZmianaSkalipio 1))
;===========================================================================


(setq    Punkt1 (getpoint "\nKliknij pierwszy punkt \"terenu\" od którego rysowany będzie profil (na profilu): ")
        ZmianaSkalipoz (UIGetDist "\nWpisz o ile razy zmienić skalę POZIOMĄ profilu w stosunku do rzutu (1 - brak zmiany, 0.2 - zmniejszenie 5x długości profilu): " ZmianaSkalipoz)
        ZmianaSkalipio (UIGetDist "\nWpisz o ile razy zmienić skalę PIONOWĄ profilu w stosunku do skali 1:100 (1 - brak zmiany, 2 - skala 1:50, itp): " ZmianaSkalipio)
        PunktT1 (getpoint "\nKliknij pierwszy punkt na rzucie.")
        RzednaT1 (UIGetDist "\nWpisz wartość poziomu terenu w tym punkcje: " RzednaT1)
        OpisT1 (getstring T "\nWpisz opis na profilu do tego punktu: ")
);setq
(setvar "clayer" "IS_opisy")
(command "_.text" (polar (polar Punkt1 pi 5) (/ pi 2) 30) "18" "90" OpisT1)
(setvar "clayer" "IS_tabela")
(command "_line" Punkt1 (polar Punkt1 (/ pi 2) 500) "")
(setvar "clayer" "IS_opisy")


(command "_.text" (polar (polar Punkt1 (* 1.5 pi) (- (* (+ (rem RzednaT1 5) 5) 100) 5)) 0 10) "18" "0" (rtos (- RzednaT1 (/ (+ (rem RzednaT1 5) 5) ZmianaSkalipio)) 2 2))
(command "_circle" (polar Punkt1 (* 1.5 pi) (* (+ (rem RzednaT1 5) 5) 100)) "_d" "10")

(initget 128)
(setq    PunktT0 PunktT1
        PunktT1 (getpoint PunktT0 "\nKliknij kolejny punkt na rzucie.")
);setq --------------------------------------------


(while PunktT1

    (setq    Punkt0 Punkt1
            RzednaT0 RzednaT1
            RzednaT1 (UIGetDist "\nWpisz wartość poziomu terenu w tym punkcje: " RzednaT1)
            OpisT1 (getstring T "\nWpisz opis na profilu do tego punktu: ")
            Punkt1 (polar (polar Punkt0 0 (* ZmianaSkalipoz (distance PunktT0 PunktT1))) (/ pi 2) (* ZmianaSkalipio (* (- RzednaT1 RzednaT0) 100)))
    );setq
    (setvar "clayer" "IS_opisy")
    (command "_.text" (polar (polar Punkt1 pi 5) (/ pi 2) 50) "18" "90" OpisT1)
    (setvar "clayer" "IS_tabela")
    (command "_line" Punkt1 (polar Punkt1 (/ pi 2) 500) "")

    (setvar "clayer" "IS_teren")
    (command "_line" Punkt0 Punkt1 "")

(initget 128)
        (setq    PunktT0 PunktT1)
        (setq    PunktT1 (getpoint PunktT0 "\nKliknij kolejny punkt na rzucie."))
       
);while



);defun rzut2prof


Dziwi mnie tylko trochę fakt, że w ZwCadzie 2010 (oraz AutoCadzie 2010) działa bez problemu a w najnowszym ZwCad2011 nie chce działać bez (initget 128). Może to jakiś błąd w ZwCadzie?

Cały plik lisp (jeszcze nie poprawiony) można sobie ściągnąć tutaj: http://instalacjesanitarn...ILEK.zip[/code]
_________________
www.instalacjesanitarne.com
www.profilek.net
 
     
gruzin 
sanitarnik

Pomógł: 5 razy
Dołączył: 16 Lip 2009
Posty: 232
Skąd: Białystok
Wysłany: Czw Sty 20, 11 19:07   

Załączam plik do testu. Są w nim dwie funkcje TKS (działa OK) oraz RRR, która nie działa bo getpoint nie chce przyjąć entera. W Zwcadzie 2010 działa OK, w 2011 nie działa.

Obie funkcje mają pętlę while którą można (teoretycznie) zakończyć poprzez "niekliknięcie" punktu w funkcji getpoint, ale w RRR nie chce to działać i nie wiem czemu tak jest.

pozdrawiam

Kod:
; funkcja: RRR  nie działa
; getpoint nie przyjmuje entera lub prawego przycisku myszy więc nie chce lisp wyjść z pętli while

;=========================================================================
; autor funkcji "kruszynski" z forum.projektuje.net
(defun UIGetDist (msg DefVal / SelDist)
  (setq SelDist (vl-catch-all-apply 'getdist (list (strcat msg "<" (rtos DefVal ) ">:"))))
  (if (not (vl-catch-all-error-p SelDist))
    (progn
      (if SelDist
        (setq OutVal SelDist )
        (setq OutVal DefVal )
      )
  ))
  OutVal
);defun
;=========================================================================
;=========================================================================
(defun kreski (P1 P2 odsuniecie dlugosckreski / katalfa punkttemp punkttemp1 punkttemp2 styllinii grubosc) ;kreski- polecenie rysuje prostopadłe kreseczki na linii od P1 do P2
(setq    styllinii (getvar "celtype")
        grubosc (getvar "celweight")
);setq

            ; styl linii ustawic jako continuous
            (command "_celtype" "Continuous")
            ; grubość ustawić jako 0,15
            (command "_celweight" 015)
           
                (if (> (distance P1 P2) (* 2 odsuniecie))
                (progn
                (setq    katalfa (angle P1 P2)
                        punkttemp (polar P1 katalfa odsuniecie)
                        punkttemp1 (polar punkttemp (- katalfa (/ pi 2)) (/ dlugosckreski 2))
                        punkttemp2 (polar punkttemp (+ katalfa (/ pi 2)) (/ dlugosckreski 2))
                );setq
                (command "_line" punkttemp1 punkttemp2 "")

                (setq    katalfa (angle P2 P1)
                        punkttemp (polar P2 katalfa odsuniecie)
                        punkttemp1 (polar punkttemp (- katalfa (/ pi 2)) (/ dlugosckreski 2))
                        punkttemp2 (polar punkttemp (+ katalfa (/ pi 2)) (/ dlugosckreski 2))
                );setq
                (command "_line" punkttemp1 punkttemp2 "")
                );progn do długich kresek

                (progn
                (setq    katalfa (angle P1 P2)
                        punkttemp (polar P1 katalfa (/ (distance P1 P2) 2))
                        punkttemp1 (polar punkttemp (- katalfa (/ pi 2)) (/ dlugosckreski 2))
                        punkttemp2 (polar punkttemp (+ katalfa (/ pi 2)) (/ dlugosckreski 2))
                );setq
                (command "_line" punkttemp1 punkttemp2 "")
                );progn do krótkich kresek
                );if
               
            (command     "_celtype" styllinii
                        "_celweight" grubosc
            );command
);defun kreski
;=========================================================================


;=========================================================================
(defun c:RRR ( / Punkt0 Punkt1 PunktT0 PunktT1 RzednaT0 RzednaT1 OpisT1 ZmianaSkalipoz ZmianaSkalipio)




;===========================================================================
; wybieramy styl tekstu IS_SIMPLEX jako aktualny lub gdy go nie ma tworzymy go i ustawiamy jako aktualny
(if (tblsearch "Style" "IS_SIMPLEX")
  (command "_textstyle" "IS_SIMPLEX")
 (progn
    (command "_-style"
        "TEMP-STYLE" "simplex.shx" "" "0.7" "" "" "" "")
    (command "_rename" "_S" "TEMP-STYLE" "IS_SIMPLEX")
    (command "_textstyle" "IS_SIMPLEX")
 );progn
);if
;===========================================================================

;===========================================================================
; wybieramy warstwe IS_tabela jako aktualną lub gdy jej nie ma tworzymy ją
(if (tblsearch "Layer" "IS_tabela")
  (command "_clayer" "IS_tabela")
 (progn
    (command "_layer"
        "_N" "TEMP-LAYER"
        "_C" "11" "TEMP-LAYER"
        "_L" "Continuous" "TEMP-LAYER"
        "_LW" "0.13" "TEMP-LAYER" "")
    (command "_rename" "_LA" "TEMP-LAYER" "IS_tabela")
 );progn
);if

; wybieramy warstwe IS_tabela jako aktualną lub gdy jej nie ma tworzymy ją
(if (tblsearch "Layer" "IS_teren")
  (command "_clayer" "IS_teren")
 (progn
    (command "_layer"
        "_N" "TEMP-LAYER"
        "_C" "61" "TEMP-LAYER"
        "_L" "Continuous" "TEMP-LAYER"
        "_LW" "0.13" "TEMP-LAYER" "")
    (command "_rename" "_LA" "TEMP-LAYER" "IS_teren")
 );progn
);if

; wybieramy warstwe IS_opisy jako aktualną lub gdy jej nie ma tworzymy ją
(if (tblsearch "Layer" "IS_opisy")
  (command "_clayer" "IS_opisy")
 (progn
    (command "_layer"
        "_N" "TEMP-LAYER"
        "_C" "41" "TEMP-LAYER"
        "_L" "Continuous" "TEMP-LAYER"
        "_LW" "0.13" "TEMP-LAYER" "")
    (command "_rename" "_LA" "TEMP-LAYER" "IS_opisy")
    (command "_clayer" "IS_opisy")
 );progn
);if
;=========================================================================

;===========================================================
(setvar "dimzin" 0) ;ustawienie dokładności cyfr "pełnychg" na dokładność z przecinkami - bez tego poziom 0,0 bedzie bez przecinków podawany
(setvar "osnapcoord" 1) ;zmienia sposób przyciągania do punktów, aby nie dociągało wstawianych skryptem elementów do elementów istniejących
;=============================================================

;===========================================================================
(if (null RzednaT1) (setq RzednaT1 112))
(if (null ZmianaSkalipoz) (setq ZmianaSkalipoz 1))
(if (null ZmianaSkalipio) (setq ZmianaSkalipio 1))
;===========================================================================


(setq    Punkt1 (getpoint "\nKliknij pierwszy punkt \"terenu\" od którego rysowany będzie profil (na profilu): ")
        ZmianaSkalipoz (UIGetDist "\nWpisz o ile razy zmienić skalę POZIOMĄ profilu w stosunku do rzutu (1 - brak zmiany, 0.2 - zmniejszenie 5x długości profilu): " ZmianaSkalipoz)
        ZmianaSkalipio (UIGetDist "\nWpisz o ile razy zmienić skalę PIONOWĄ profilu w stosunku do skali 1:100 (1 - brak zmiany, 2 - skala 1:50, itp): " ZmianaSkalipio)
        PunktT1 (getpoint "\nKliknij pierwszy punkt na rzucie.")
        RzednaT1 (UIGetDist "\nWpisz wartość poziomu terenu w tym punkcje: " RzednaT1)
        OpisT1 (getstring T "\nWpisz opis na profilu do tego punktu: ")
);setq
(setvar "clayer" "IS_opisy")
(command "_.text" (polar (polar Punkt1 pi 5) (/ pi 2) 30) "18" "90" OpisT1)
(setvar "clayer" "IS_tabela")
(command "_line" Punkt1 (polar Punkt1 (/ pi 2) 500) "")
(setvar "clayer" "IS_opisy")


(command "_.text" (polar (polar Punkt1 (* 1.5 pi) (- (* (+ (rem RzednaT1 5) 5) 100) 5)) 0 10) "18" "0" (rtos (- RzednaT1 (/ (+ (rem RzednaT1 5) 5) ZmianaSkalipio)) 2 2))
(command "_circle" (polar Punkt1 (* 1.5 pi) (* (+ (rem RzednaT1 5) 5) 100)) "_d" "10")


(setq    PunktT0 PunktT1
        PunktT1 (getpoint PunktT0 "\nKliknij kolejny punkt na rzucie.")
);setq --------------------------------------------


(while PunktT1
    (setq    Punkt0 Punkt1
            RzednaT0 RzednaT1
            RzednaT1 (UIGetDist "\nWpisz wartość poziomu terenu w tym punkcje: " RzednaT1)
            OpisT1 (getstring T "\nWpisz opis na profilu do tego punktu: ")
            Punkt1 (polar (polar Punkt0 0 (* ZmianaSkalipoz (distance PunktT0 PunktT1))) (/ pi 2) (* ZmianaSkalipio (* (- RzednaT1 RzednaT0) 100)))
    );setq
    (setvar "clayer" "IS_opisy")
    (command "_.text" (polar (polar Punkt1 pi 5) (/ pi 2) 50) "18" "90" OpisT1)
    (setvar "clayer" "IS_tabela")
    (command "_line" Punkt1 (polar Punkt1 (/ pi 2) 500) "")

    (setvar "clayer" "IS_teren")
    (command "_line" Punkt0 Punkt1 "")
        (setq    PunktT0 PunktT1
                PunktT1 (getpoint PunktT0 "\nKliknij kolejny punkt na rzucie.")
        );setq
);while




);defun RRR
;=========================================================================


;=========================================================================
(defun c:TKS (/ P1 P12 P2 P3 CzyKonczyc)


;=========================================================================
(command "_dimzin" "0") ;ustawienie dokładności cyfr "pełnychg" na dokładność z przecinkami - bez tego poziom 0,0 bedzie bez przecinków podawany
(command "_osnapcoord" "1") ;zmienia sposób przyciągania do punktów, aby nie dociągało wstawianych skryptem elementów do elementów istniejących
;=========================================================================

;=========================================================================
(if (null odsuniecie) (setq odsuniecie 14.143))
(if (null dlugosckreski) (setq dlugosckreski 12.00))
;=========================================================================

;=========================================================================
(setq    odsuniecie (UIGetDist "\nPodaj odsunięcie od końca: " odsuniecie)
        dlugosckreski (UIGetDist "\nWpisz długość kreseczki: " dlugosckreski)
);setq
;=========================================================================

(setq    P1 (getpoint "\nKliknij pierwszy punkt trasy kanalizacji.")
        P2 (getpoint P1 "\nKliknij drugi punkt trasy kanalizacji.")
        P3 (getpoint P2 "\nKliknij kolejny punkt trasy kanalizacji.")
);setq


;=========================================================================
(while P3
(if
    (and (> (distance P1 P2) 35) (> (distance P2 P3) 35) (or (< (abs (rem (- (angle P2 P1) (angle P2 P3)) (/ pi 2))) 0.017) (> (abs (rem (- (angle P2 P1) (angle P2 P3)) (/ pi 2))) 1.553)))
   
    (progn
           
            (setq    P12 (polar P2 (angle P2 P1) 20)
                    P2 (polar P2 (angle P2 P3) 20))
            (command "_line" P1 P12 P2 "")
            (kreski P1 P12 odsuniecie dlugosckreski)
            (kreski P12 P2 odsuniecie dlugosckreski)
               
    );progn na tak

    (progn
            (command "_line" P1 P2 "")
            (kreski P1 P2 odsuniecie dlugosckreski)
    );progn na nie

);if


(setq    P1 P2
        P2 P3
        P3 (getpoint P2 "\nKliknij kolejny punkt trasy kanalizacji.")
);setq
);while
;=========================================================================


    (initget 7 "Tak Nie")
    (setq CzyKonczyc (getkword "\nDorysować kanał do końca? <Tak/Nie>:") )

    (if (= CzyKonczyc "Tak")
        (progn
            (command "_line" P1 P2 "")
            (kreski P1 P2 odsuniecie dlugosckreski)
        );progn
    );if





);defun TKS
;=========================================================================

_________________
www.instalacjesanitarne.com
www.profilek.net
 
     
kruszynski

Pomógł: 17 razy
Dołączył: 02 Sty 2009
Posty: 312
Wysłany: Pon Sty 24, 11 09:41   

Proszę spróbować wstawić initget w tym kodzie w liniach 155 i 175, w taki sposób:
Kod:
(setq PunktT0 PunktT1 )
(initget 0)
(setq PunktT1 (getpoint PunktT0 "\nKliknij kolejny punkt na rzucie.")

U mnie zadziałało na 2011
 
     
gruzin 
sanitarnik

Pomógł: 5 razy
Dołączył: 16 Lip 2009
Posty: 232
Skąd: Białystok
Wysłany: Wto Sty 25, 11 12:58   

Maksymalnie uproszczony plik lisp

Kod:
(defun c:rzut3prof ()


(setq    PunktT1 (getpoint "\nKliknij pierwszy punkt: ")
        PunktT0 PunktT1
);setq



(while PunktT1
    (setq    OpisT1 (getstring "\nWpisz opis do tego punktu: "))

    (setq    PunktT1 (getpoint PunktT0 "\nKliknij kolejny punkt na rzucie.")    )
);while


);defun rzut3prof


U mnie nie da się wyjść z takiej pętli prawym przyciskiem myszy.
Skasowanie linijki: (setq OpisT1 (getstring "\nWpisz opis do tego punktu: "))
naprawia błąd w Zwcadzie 2011 i pętla działa poprawnie. Czy tak powinno być? Autocad 2010 oraz Zwcad 2010 nie sprawiają takiego problemu.

Oczywiście ostatnia porada z (initget 0) rozwiązuje problem, ale wydaje mi się, że powinno działać bez tego. Getstring chyba coś psuje w ustawieniach.
_________________
www.instalacjesanitarne.com
www.profilek.net
 
     
kruszynski

Pomógł: 17 razy
Dołączył: 02 Sty 2009
Posty: 312
Wysłany: Wto Sty 25, 11 13:10   

OK, rzeczywiście nie powinno tak być. Zgłoszę to do supportu
 
     
gruzin 
sanitarnik

Pomógł: 5 razy
Dołączył: 16 Lip 2009
Posty: 232
Skąd: Białystok
Wysłany: Wto Sty 25, 11 13:12   

Wielkie dzięki.

pozdrawiam
_________________
www.instalacjesanitarne.com
www.profilek.net
 
     
gruzin 
sanitarnik

Pomógł: 5 razy
Dołączył: 16 Lip 2009
Posty: 232
Skąd: Białystok
Wysłany: Pon Mar 14, 11 20:37   

W wersji ZwCad 2011 z dnia 2011 02 28 błąd został naprawiony.
_________________
www.instalacjesanitarne.com
www.profilek.net
 
     
Wyświetl posty z ostatnich:   
Odpowiedz do tematu
Nie możesz pisać nowych tematów
Nie możesz odpowiadać w tematach
Nie możesz zmieniać swoich postów
Nie możesz usuwać swoich postów
Nie możesz głosować w ankietach
Nie możesz załączać plików na tym forum
Możesz ściągać załączniki na tym forum
Dodaj temat do Ulubionych
Wersja do druku

Skocz do:  

Powered by phpBB modified by Przemo © 2003 phpBB Group
Strona wygenerowana w 0,23 sekundy. Zapytań do SQL: 11