display18 发表于 2011-2-15 09:38:37

鼓励发原创,楼主好样的

songbf 发表于 2011-2-15 10:42:29

看看,学习中

lincctw_ccl 发表于 2011-2-15 16:53:32

找了很久終於找到了
很棒的程式!!
感謝樓主!

edsion24 发表于 2011-2-18 09:24:57

神贴必顶。。。。。

cj52000 发表于 2011-2-18 19:47:34

回复 luyu9635 的帖子

楼主你好,我用的是CAD2010,加载之后CAD提示”错误: 函数错误: 959“
是怎么回事啊,该怎么修改,谢谢!

cj52000 发表于 2011-2-19 14:43:56

回复 luyu9635 的帖子

楼主你好,我用的是CAD2010,加载之后CAD提示”错误: 函数错误: 959“
是怎么回事啊,该怎么修改,谢谢!

czb203 发表于 2011-2-20 13:30:13

楼主我爱死你了

wen1235 发表于 2011-2-20 17:24:07

不错不错,,我把你接受捕捉部分改进了一下,,这样好多了,,
还有一些没有加上,,要的就自己加上了,,\
就是不能捕捉到垂直,,谁能再改一下啊..
(defun c:tt ()
(setq z T)
(while z
    (initget 128)
    (setq grr (grread t)) ;请求输入
    (setq gr (car grr)
          po (cadr grr)
    )
    (cond ((equal grr '(2 15)) ;F8切换正交开关
           (if (= f8 0)
             (progn (setq f8 1) (prompt "\n<正交 开>"))
             (progn (setq f8 0) (prompt "\n<正交 关>"))
           )
           (setvar 'orthomode f8)
          )
          ((= gr 5) ;移动时
           (setq po (grreadosnap po)) ;更新
          )
          ((= gr 3) ;左击
           (setq z nil)
          )
          ((or (equal grr '(2 32)) ;空格
             (equal grr '(2 13)) ;回车
             (equal grr '(11 0)) ;右击
           )
           (setq z nil)
          )
    )
)
)
(defun grbox (pt str1 / h p1 p2 p3 p4)
(setq        h      (* (/ (getvar "viewsize") (cadr (getvar "screensize"))) (getvar "pickbox"))
        p1   (mapcar '- pt (list h h 0.))
        p2   (mapcar '+ pt (list h (- h) 0.))
        p3   (mapcar '+ pt (list h h 0.))
        p4   (mapcar '+ pt (list (- h) h 0.))
        p5   (mapcar '- pt (list h 0 0.))
        p6   (mapcar '- pt (list 0 h 0.))
        p7   (mapcar '+ pt (list 0 h 0.))
        p8   (mapcar '+ pt (list h 0. 0.))
        p8a    (mapcar '+ pt (list (1- h) 0. 0.))
        $angis 0.20944
        i      0
)
(cond        ((= str1 1) (grvecs (list 1 p1 p2 1 p2 p3 1 p3 p4 1 p4 p1)))
        ((= str1 2) (grvecs (list 1 p7 p1 1 p7 p2 1 p1 p2)))
        ((= str1 4)
          (repeat 30
          (setq p9 (polar pt $angis h))
          (grvecs (list 1 p8 p9))
          (setq p8       p9
                  $angis (+ $angis 0.20944)
          )
          )
        )
        ((= str1 8)   (grvecs (list 1 p1 p2 1 p2 p3 1 p3 p4 1 p4 p1)))
        ((= str1 16)(grvecs (list 1 p5 p6 1 p6 p8 1 p8 p7 1 p7 p5)))
        ((= str1 32)(grvecs (list 1 p1 p3 1 p2 p4)))
        ((= str1 64)(grvecs (list 1 p1 p2 1 p2 p3 1 p3 p4 1 p4 p1)))
        ((= str1 128) (grvecs (list 1 p1 p2 1 p1 p4 1 pt p5 1 pt p6)))
        ((= str1 256)
          (repeat 30
          (setq p9 (polar pt $angis (1- h)))
          (grdrawp8a p9 1)
          (setq p8a       p9
                  $angis (+ $angis 0.20944)
          )
          )
       (grdraw p3 p4 1)
        )
        ((= str1 512)(grvecs (list 1 p1 p2 1 p2 p4 1 p3 p4 1 p3 p1)))
        ((= str1 2048) (grvecs (list 1 p1 p2 1 p2 p3 1 p3 p4 1 p4 p1)))
        ((= str1 4096) (grvecs (list 1 p1 p2 1 p2 p3 1 p3 p4 1 p4 p1)))
        ((= str1 8192) (grvecs (list 1 p1 p2 1 p2 p3 1 p3 p4 1 p4 p1)))
)
)
(defun grreadosnap (p / osp osmode str)
;;grreadosnap ---fsxm 2006.10.06
(setq osmode (getvar "osmode"))
(cond        ((= osmode 0))
        ((< osmode 16384)
       (setq str "")
       (foreach x '((1 "_end,")
                      (2 "_mid,")
                      (4 "_cen,")
                      (8 "_nod,")
                      (16 "_qua,")
                      (32 "_int,")
                      (64 "_ins,")
                      (128 "_per,")
                      (256 "_tan,")
                      (512 "_nea,")
                      (2048 "_app,")
                      (4096 "_ext,")
                      (8192 "_par,")
                     )
           (if (/= 0 (logand osmode (car x)))
             (setq str (strcat str (cadr x)))
           )
       )
       (setq osp (osnap p str))
       (setq str1 nil)
       (cond ((and (/= 0 (logand osmode 1)) (equal osp (osnap p "_end,"))) (setq str1 1))
             ((and (/= 0 (logand osmode 2)) (equal osp (osnap p "_mid,"))) (setq str1 2))
             ((and (/= 0 (logand osmode 4)) (equal osp (osnap p "_cen,"))) (setq str1 4))
             ((and (/= 0 (logand osmode 8)) (equal osp (osnap p "_nod,"))) (setq str1 8))
             ((and (/= 0 (logand osmode 16)) (equal osp (osnap p "_qua,"))) (setq str1 16))
             ((and (/= 0 (logand osmode 32)) (equal osp (osnap p "_int,"))) (setq str1 32))
             ((and (/= 0 (logand osmode 64)) (equal osp (osnap p "_ins,"))) (setq str1 64))
             ((and (/= 0 (logand osmode 128)) (equal osp (osnap p "_per,"))) (setq str1 128))
             ((and (/= 0 (logand osmode 256)) (equal osp (osnap p "_tan,"))) (setq str1 256))
             ((and (/= 0 (logand osmode 512)) (equal osp (osnap p "_nea,"))) (setq str1 512))
             ((and (/= 0 (logand osmode 2048)) (equal osp (osnap p "_app,"))) (setq str1 2048))
             ((and (/= 0 (logand osmode 4096)) (equal osp (osnap p "_app,"))) (setq str1 4096))
             ((and (/= 0 (logand osmode 8192)) (equal osp (osnap p "_par,"))) (setq str1 8192))             
       )
       (redraw)
       (cond (osp str1(setq p osp) (grbox osp str1)))
        )
)
p
)

cj52000 发表于 2011-3-21 12:55:09

回复 luyu9635 的帖子

楼主你好,我用的是CAD2010,加载之后CAD提示”错误: 函数错误: 959“
是怎么回事啊,该怎么修改,谢谢!

daiguafan 发表于 2011-4-12 11:42:45

话说非常不错,谢谢
页: 1 2 3 [4] 5 6
查看完整版本: [原创]动态拉伸接受输入和捕捉