 |
Forum użytkowników programów ZWCAD, KOMPAS-3D, Scan2CAD, PDF2CAD
Forum CAD.
|
|
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
|
|
|
|
 |
gruzin
sanitarnik
Pomógł: 5 razy Dołączył: 16 Lip 2009 Posty: 232 Skąd: Białystok
|
|
|
|
 |
|
|
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
|
| | Strona wygenerowana w 0,23 sekundy. Zapytań do SQL: 11 |
|
|