Lisp - getpoint - dziwne zachowanie


gruzin

Rekomendowane odpowiedzi

mam taki 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.

Odnośnik do komentarza
Udostępnij na innych stronach

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

(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://instalacjesanitarne.com/download/PROFILEK.zip[/code]

Odnośnik do komentarza
Udostępnij na innych stronach

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

; 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? :") )

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





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

Odnośnik do komentarza
Udostępnij na innych stronach

Maksymalnie uproszczony plik lisp

(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.

Odnośnik do komentarza
Udostępnij na innych stronach

  • 1 miesiąc temu...
Gość
Ten temat został zamknięty. Brak możliwości dodania odpowiedzi.