Sring 发表于 2014-7-20 15:37:32

grread 函数可以捕捉,还有极轴的函数有吗?

grread 函数可以捕捉,还有极轴的函数有吗?有的话给我分享个!找了好久都没找到!


http://bbs.mjtd.com/xwb/images/bgimg/icon_logo.png 该贴已经同步到 Sring的微博

Sring 发表于 2014-7-20 19:45:56

ysq101 发表于 2014-7-20 19:25 static/image/common/back.gif
能告诉我极轴和对象追踪由哪两个系统变量控制吗?

别的网站找的,grread 函数可以捕捉,感觉没【Gu_xl】的好用,极轴的没找到

http://fushouyin.blog.163.com/blog/static/18898719200942105834598/
;;;=================================================================*
;;;功能:计算在当前对象捕捉设置情况下,指定点的对象捕捉点位         *
;;;思路:获取当前的对象捕捉模式;                                 *
;;;      逐个使用osnap来尝试获取点位;                              *
;;;      比较点位距离指定点的距离,最近的即为结果。               *
;;;返回:(捕捉到的点位   捕捉模式)                                  *
;;;      捕捉模式为0表示,不捕捉。                                  *
(defun GET-OSPOINT (PT / LST_JG OS N PT_NEW)
(setq        LST_JG '()
        OS   (getvar "osmode")
)
(if (< 0 OS 16384)
    (foreach N (reverse *LST*)
      (if (and (= (logand OS (car N)) (car N))
             (setq PT_NEW (osnap PT (cadr N)))
          )
        (setq LST_JG (cons (list (distance PT_NEW PT) PT_NEW (car N))
                           LST_JG
                     )
        )
      )
    )
    (setq LST_JG (list (list 0 PT 0)))
)
;;根据距离大小排序
(if (> (length LST_JG) 1)
    (setq LST_JG
           (vl-sort LST_JG
                  (function (lambda (E1 E2) (< (car E1) (car E2))))
           )
    )
)
;;返回 ;;;
(print LST_JG)
(cdr (car LST_JG))
)
;;;=================================================================*
;;;功能:在指定点绘制指定的靶标                                 *
;;;参数:PT -----要绘制的位置                                       *
;;;      I-----捕捉模式单项值。例如:1 or 2 or 4 ...            *
(defun DRAW-ATPOINT (PT I / SIZE COLOR MATRIX LST)
(foreach REAL        '(-0.5 0 0.5)
    (setq SIZE        (* (+ (read (getenv "AutoSnapSize")) REAL)
                   (/ (getvar "VIEWSIZE") (cadr (getvar "SCREENSIZE")))
                )
          COLOR        (read (getenv "AutoSnapColor"))
    )
    (setq MATRIX (list (list SIZE 0.0 0.0 (car PT))
                     (list 0.0 SIZE 0.0 (cadr PT))
                     (list 0.0 0.0 1.0 0.0)
                     (list 0.0 0.0 0.0 1.0)
               )
    )
    (and (setq LST (cddr (assoc I *LST*)))
       (setq LST (mapcar (function (lambda (X) (cons COLOR X))) LST))
       (setq LST (apply 'append LST))
       (grvecs LST MATRIX)
    )
)
)
;;;=================================================================*
(defun C:TT ()
;;;支持对象捕捉的grread ;;;代码源自fools ;;;zml84 修改于 2009-05-20
(setq *LST* '((1
             "_end"
             ((-1 1) (-1 -1))
             ((-1 -1) (1 -1))
             ((1 -1) (1 1))
             ((1 1) (-1 1))
              )
              (2
             "_mid"
             ((0 1.414) (-1.225 -0.707))
             ((-1.225 -0.707) (1.225 -0.707))
             ((1.225 -0.707) (0 1.414))
              )
              (4
             "_cen"
             ((0 1) (-0.707 0.707))
             ((-0.707 0.707) (-1 0))
             ((-1 0) (-0.707 -0.707))
             ((-0.707 -0.707) (0 -1))
             ((0 -1) (0.707 -0.707))
             ((0.707 -0.707) (1 0))
             ((1 0) (0.707 0.707))
             ((0.707 0.707) (0 1))
              )
              (8
             "_nod"
             ((0 1) (-0.707 0.707))
             ((-0.707 0.707) (-1 0))
             ((-1 0) (-0.707 -0.707))
             ((-0.707 -0.707) (0 -1))
             ((0 -1) (0.707 -0.707))
             ((0.707 -0.707) (1 0))
             ((1 0) (0.707 0.707))
             ((0.707 0.707) (0 1))
             ((-1 1) (1 -1))
             ((-1 -1) (1 1))
              )
              (16
             "_qua"
             ((0 1.414) (-1.414 0))
             ((-1.414 0) (0 -1.414))
             ((0 -1.414) (1.414 0))
             ((1.414 0) (0 1.414))
              )
              (32
             "_int"
             ((-1 1) (1 -1))
             ((-1 -1) (1 1))
             ((1 0.859) (-0.859 -1))
             ((-1 0.859) (0.859 -1))
             ((0.859 1) (-1 -0.859))
             ((-0.859 1) (1 -0.859))
              )
              (64
             "_ins"
             ((-1 1) (-1 -0.1))
             ((-1 -0.1) (0 -0.1))
             ((0 -0.1) (0 -1.0))
             ((0 -1.0) (1 -1))
             ((1 -1) (1 0.1))
             ((1 0.1) (0 0.1))
             ((0 0.1) (0 1.0))
             ((0 1.0) (-1 1))
              )
              (128
             "_per"
             ((-1 1) (-1 -1))
             ((-1 -1) (1 -1))
             ((0 -1) (0 0))
             ((0 0) (-1 0))
              )
              (256
             "_tan"
             ((0 1) (-0.707 0.707))
             ((-0.707 0.707) (-1 0))
             ((-1 0) (-0.707 -0.707))
             ((-0.707 -0.707) (0 -1))
             ((0 -1) (0.707 -0.707))
             ((0.707 -0.707) (1 0))
             ((1 0) (0.707 0.707))
             ((0.707 0.707) (0 1))
             ((1 1) (-1 1))
              )
              (512
             "_nea"
             ((-1 1) (1 -1))
             ((1 -1) (-1 -1))
             ((-1 -1) (1 1))
             ((1 1) (-1 1))
              )
              (1024 "_qui")
              (2048
             "_app"
             ((-1 1) (-1 -1))
             ((-1 -1) (1 -1))
             ((1 -1) (1 1))
             ((1 1) (-1 1))
             ((-1 1) (1 -1))
             ((-1 -1) (1 1))
              )
              (4096
             "_ext"
             ((0.1 0) (0.13 0))
             ((0.2 0) (0.23 0))
             ((0.3 0) (0.33 0))
              )
              (8192 "_par" ((0 1) (-1 -1)) ((1 1) (0 -1)))
             )
)
(setq TEST t)
(while TEST
;;;
    (setq TMP (grread t 1 1))
    (setq TMP (grread t))
;;;
    (print TMP)
    (setq MODE (car TMP)
          PT   (cadr TMP)
    )
    (cond
      ;;按下了F3
      ((equal TMP '(2 6))
       (if (< (getvar "OSMODE") 16384)
       (setvar "OSMODE" (+ (getvar "OSMODE") 16384))
       (setvar "OSMODE" (- (getvar "OSMODE") 16384))
       )
      )
      ;;按下了F8
      ((equal TMP '(2 15))
       (if (= (getvar "ORTHOMODE") 0)
       (setvar "ORTHOMODE" 1)
       (setvar "ORTHOMODE" 0)
       )
      )
      ((= MODE 3)
       (if (setq TMP (GET-OSPOINT PT))
       (print TMP)
       )
       (redraw)
       (setq TEST NIL)
      )
      ((= MODE 5)
       (if (setq TMP (GET-OSPOINT PT))
       (progn
;;;
           (print TMP)
           (redraw)
           (apply 'DRAW-ATPOINT TMP)
           t
       )
       (redraw)
       )
      )
    )
)
)

自贡黄明儒 发表于 2014-7-20 17:50:46

没有,只有你自已写了

langjs 发表于 2014-7-20 17:52:06

G版有个帖子可参考

Sring 发表于 2014-7-20 17:55:28

自贡黄明儒 发表于 2014-7-20 17:50 static/image/common/back.gif
没有,只有你自已写了

grread 函数可以捕捉,这个好像有,要发10个贴才能下载,我不想发水贴,能帮我下个分享个吗!
发我邮件里也可以csyqh3@sina.com

ysq101 发表于 2014-7-20 19:25:44

自贡黄明儒 发表于 2014-7-20 17:50 static/image/common/back.gif
没有,只有你自已写了

能告诉我极轴和对象追踪由哪两个系统变量控制吗?

GILES.LEI 发表于 2016-10-22 17:33:42

想看看正交或者极轴的
页: [1]
查看完整版本: grread 函数可以捕捉,还有极轴的函数有吗?