kojacek napisał(a):O w tym kierunku bym poszedł. Bez sprawdzenia
msg jednak czy jest i czy STR - ma być i już. Ewentualnie (ale czy to nie przerost?) dodać dodatkowy argument (jakiś mode) co ma funkcja zwracać: punkt / dwa punkty / cztery

i do Pack'a w najbliższej przyszłości....
kojacek napisał(a):Bez sprawdzenia msg jednak czy jest i czy STR - ma być i już.
Ok.
kojacek napisał(a):Ewentualnie (ale czy to nie przerost?) dodać dodatkowy argument (jakiś mode) co ma funkcja zwracać: punkt / dwa punkty / cztery

Tutaj bym zrobił tak, że zwracać będzie drugi narożnik, albo listę wszystkich czterech. Dwóch narożników moim zdaniem nie ma sensu, ponieważ pierwszy narożnik użytkownik definiuje wykonując getcorner.
- Kod: Zaznacz cały
; =========================================================================================== ;
; Pobranie drugiego narożnika prostokąta / Get second corner of rectangle ;
; Pt [LIST] - punkt bazowy / base point ;
; Msg [STR] - komunikat do wyswietlenia / message to display ;
; Mode [T/nil] - typ zwracanych danych / type of returned data ;
; nil = drugi narożnik / second corner ;
; T = lista wsołrzędnych w kolejności: DL DP GP GL ;
; list of coordinates in order: LL LR UR UL ;
; ------------------------------------------------------------------------------------------- ;
; (cd:USR_GetCorner (getpoint) "\nWskaż drugi narożnik: " T) ;
; =========================================================================================== ;
(defun cd:USR_GetCorner ( Pt Msg Mode / loop p2 )
(setq loop T)
(while loop
(and
(setq p2 (getcorner Pt Msg))
(not (equal (car Pt) (car p2)))
(not (equal (cadr Pt) (cadr p2)))
(setq loop nil)
)
)
(if Mode
(mapcar '(lambda ( a ) (mapcar '(lambda ( b ) ((eval b) (list Pt p2))) a))
'(
(caar cadar)
(caadr cadar)
(caadr cadadr)
(caar cadadr)
)
)
p2
)
)
Pytania:
1) co z WCS/UCS, czy też się jakoś bawić?
2) czy dawać bit sterujący do initget jak w przypadku
cd:USR_GetPoint