分享带捕捉的grread示例
;cursor osnap
;hanhphuc #12
;13/08/14
;argument:
;_pt = points , Y,X,Z
;_os = osnap std command 'STR
;_sz = size of pickbox , 'REAL
;_rb = rubber band, t / nil
(defun hp:cursnap (_pt _os _sz rb / c a b l i _tp var pbox snap) ; "_end,_mid""_nea"
(setqvar(mapcar 'getvar '("pickbox" "cursorsize"))
pbox '((_pt sz c / ls n)
(setq
ls
(foreach
m
'((0.25 0.75 1.25 1.75 0.25) (0.75 1.25 1.75 0.25 0.75))
(setq
n
(cons
(mapcar
''((x) (polar _pt (* pi x) (* sz (/ (getvar "viewsize") (cadr (getvar "screensize"))))))
m
) ;_ end of mapcar
n
) ;_ end of cons
) ;_ end of setq
) ;_ end of foreach
) ;_ end of setq
(mapcar
''((a b) (grdraw (list (car a) (cadr a)) (list (car b) (cadr b)) c 0))
(car ls)
(cadr ls)
) ;_ end of mapcar
) ;_ end of defun
snap '((_pt)
(grvecs
(apply
'append
(mapcar
''((x)
(list 2 _pt (polar _pt (* pi x) (car (getvar "screensize"))))
;;; (*(cadr var) 5. (/ (getvar "viewsize") (cadr (getvar "screensize")))))) <------- not perfect yet
)
'(0.0 0.5 1.0 1.5)
) ;_ end of mapcar
) ;_ end of apply
) ;_ end of grvecs
(pbox _pt (* _sz 1.25) 2)
(mapcar 'setvar '("pickbox" "cursorsize") '(0 1)); <---- to restore
)
_tp_pt
i 5
a '(not (setq ip (osnap _tp _os)))
b '(osnap _tp _os) ;"_end,_int"
c a
) ;_ end of setq
(while (= 5 (car (setq l (grread nil 15 0))))
(eval c)
(setq i (car l)
_tp (cadr l)
) ;_ end of setq
(redraw)
(if_pt
(progn (if ip
(progn (snap ip)
(if rb
(grdraw _pt ip 8 1)
) ;_ end of grdraw <----------- rubber band
) ;_ end of progn
(progn
(pbox _tp _sz 7) ;<----------optional: normal box
(if rb
(grdraw _pt _tp 8 1)
) ;_ end of grdraw <----------- rubber band
(mapcar 'setvar '("pickbox" "cursorsize") var)
) ;_ end of progn
) ;_ end of if
) ;_ end of progn
) ;_ end of if
) ;_ end of while
(if ip
(setq c b)
(setq c a)
) ;_ end of if
(mapcar 'setvar '("pickbox" "cursorsize") var)
(redraw)
(setq *ret* (apply 'append (vl-remove nil (list ip _tp))))
) ;_ end of defun
(defun c:test1 (/ o )
(setvar "osmode" 0); <------ off the osmode to test
(hp:cursnap (getvar "viewctr") "_end" 10. nil)
(princ *ret*)
(princ)
)
(defun c:test2 (/ o )
(setvar "osmode" 0)
(hp:cursnap (getvar "viewctr") "_near" 10. t)
(princ *ret*)
(princ)
)
赞一个 学习一下哦
页:
[1]