马上注册,结交更多好友,享用更多功能,让你轻松玩转社区。
您需要 登录 才可以下载或查看,没有账号?立即注册
×
本帖最后由 newer 于 2017-8-10 10:44 编辑
 - (defun XD::Doc:Getcorner (p msg clr xdir / con dynpt p1 p2 p4 pt ret v ydir)
- (defun callback (dynpt /)
- (setq pt (trans p 1 0)
- v (mapcar
- '-
- (setq p1 dynpt)
- pt
- )
- p2 (car (xd::pnts:orthoproject (list dynpt) pt (mapcar
- '+
- pt
- xdir
- )
- )
- )
- p4 (car (xd::pnts:orthoproject (list dynpt) pt (mapcar
- '+
- pt
- ydir
- )
- )
- )
- )
- (if (< (xdrx_point_dist2line dynpt pt p4) 0.0)
- (setq con 1)
- (setq con 0)
- )
- (redraw)
- (xdrx_grdraw clr con pt p2 dynpt p4 pt)
- )
- (if (not clr)
- (setq clr 1)
- )
- (setq clr (abs clr))
- (XD::Begin)
- (if (not xdir)
- (setq xdir (getvar "ucsxdir")
- ydir (getvar "ucsydir")
- )
- (progn
- (setq ydir (xdrx_vector_crossproduct (getvar "viewdir") xdir))
- (if (equal ydir '(0 0 0) 1e-3)
- (setq ydir (xdrx_vector_perpvector xdir))
- )
- )
- )
- (xdrx_pointmonitor "Callback" (xdrx_object_get "layer" "0"))
- (if (setq ret (getpoint msg))
- (setq ret (list (if (= con 0)
- "WP"
- "CP"
- ) (xd::pnts:wcs2ucs (list pt p2 p1 p4))
- )
- )
- )
- (xdrx_pointmonitor)
- (redraw)
- (XD::End)
- ret
- )
|