明经CAD社区

 找回密码
 注册

QQ登录

只需一步,快速开始

搜索
查看: 5419|回复: 2

[源码] 分享带捕捉的grread示例

[复制链接]
发表于 2014-8-13 17:32 | 显示全部楼层 |阅读模式
  1. ;cursor osnap  
  2. ;hanhphuc #12  
  3. ;13/08/14  
  4. ;argument:  
  5. ;_pt = points , Y,X,Z   
  6. ;_os = osnap std command 'STR  
  7. ;_sz = size of pickbox , 'REAL  
  8. ;_rb = rubber band, t / nil  
  9. (defun hp:cursnap (_pt _os _sz rb / c a b l i _tp var pbox snap) ; "_end,_mid""_nea"
  10.   (setq  var  (mapcar 'getvar '("pickbox" "cursorsize"))
  11.   pbox '((_pt sz c / ls n)
  12.          (setq
  13.     ls
  14.     (foreach
  15.      m
  16.      '((0.25 0.75 1.25 1.75 0.25) (0.75 1.25 1.75 0.25 0.75))
  17.      (setq
  18.       n
  19.       (cons
  20.        (mapcar
  21.         ''((x) (polar _pt (* pi x) (* sz (/ (getvar "viewsize") (cadr (getvar "screensize"))))))
  22.         m
  23.         ) ;_ end of mapcar
  24.        n
  25.        ) ;_ end of cons
  26.       ) ;_ end of setq
  27.      ) ;_ end of foreach
  28.     ) ;_ end of setq
  29.          (mapcar
  30.     ''((a b) (grdraw (list (car a) (cadr a)) (list (car b) (cadr b)) c 0))
  31.     (car ls)
  32.     (cadr ls)
  33.     ) ;_ end of mapcar
  34.          ) ;_ end of defun
  35.   snap '((_pt)
  36.          (grvecs
  37.     (apply
  38.      'append
  39.      (mapcar
  40.       ''((x)
  41.          (list 2 _pt (polar _pt (* pi x) (car (getvar "screensize"))))
  42. ;;;            (*  (cadr var) 5. (/ (getvar "viewsize") (cadr (getvar "screensize")))))) <------- not perfect yet
  43.          )
  44.       '(0.0 0.5 1.0 1.5)
  45.       ) ;_ end of mapcar
  46.      ) ;_ end of apply
  47.     ) ;_ end of grvecs
  48.          (pbox _pt (* _sz 1.25) 2)
  49.          (mapcar 'setvar '("pickbox" "cursorsize") '(0 1)); <---- to restore
  50.          )
  51.   _tp  _pt
  52.   i    5
  53.   a    '(not (setq ip (osnap _tp _os)))
  54.   b    '(osnap _tp _os) ;"_end,_int"
  55.   c    a
  56.   ) ;_ end of setq
  57.   (while (= 5 (car (setq l (grread nil 15 0))))
  58.     (eval c)
  59.     (setq i   (car l)
  60.     _tp (cadr l)
  61.     ) ;_ end of setq
  62.     (redraw)
  63.     (if  _pt
  64.       (progn (if ip
  65.          (progn (snap ip)
  66.           (if rb
  67.       (grdraw _pt ip 8 1)
  68.       ) ;_ end of grdraw <----------- rubber band
  69.           ) ;_ end of progn
  70.          (progn
  71.      
  72. (pbox _tp _sz 7) ;<----------  optional: normal box
  73.      
  74.           (if rb
  75.       (grdraw _pt _tp 8 1)
  76.       ) ;_ end of grdraw <----------- rubber band
  77.           (mapcar 'setvar '("pickbox" "cursorsize") var)
  78.           ) ;_ end of progn
  79.          ) ;_ end of if
  80.        ) ;_ end of progn
  81.       ) ;_ end of if
  82.     ) ;_ end of while
  83.   (if ip
  84.     (setq c b)
  85.     (setq c a)
  86.     ) ;_ end of if
  87.   (mapcar 'setvar '("pickbox" "cursorsize") var)
  88.   (redraw)
  89.   (setq *ret* (apply 'append (vl-remove nil (list ip _tp))))
  90.   ) ;_ end of defun

  91. (defun c:test1 (/ o )
  92. (setvar "osmode" 0)  ; <------ off the osmode to test
  93. (hp:cursnap (getvar "viewctr") "_end" 10. nil)
  94. (princ *ret*)
  95. (princ)
  96.   )

  97. (defun c:test2 (/ o )
  98. (setvar "osmode" 0)
  99. (hp:cursnap (getvar "viewctr") "_near" 10. t)
  100. (princ *ret*)
  101. (princ)
  102.   )

评分

参与人数 1明经币 +1 金钱 +20 收起 理由
iamwind + 1 + 20 很给力!

查看全部评分

"觉得好,就打赏"
还没有人打赏,支持一下

本帖被以下淘专辑推荐:

发表于 2014-8-14 01:19 | 显示全部楼层
赞一个
发表于 2020-2-17 11:37 | 显示全部楼层
学习一下哦
您需要登录后才可以回帖 登录 | 注册

本版积分规则

小黑屋|手机版|CAD论坛|CAD教程|CAD下载|联系我们|关于明经|明经通道 ( 粤ICP备05003914号 )  
©2000-2023 明经通道 版权所有 本站代码,在未取得本站及作者授权的情况下,不得用于商业用途

GMT+8, 2024-5-7 13:25 , Processed in 0.242132 second(s), 29 queries , Gzip On.

Powered by Discuz! X3.4

Copyright © 2001-2021, Tencent Cloud.

快速回复 返回顶部 返回列表