找回密码
 立即注册

QQ登录

只需一步,快速开始

扫一扫,访问微社区

查看: 858|回复: 1

[求助] [求助]:请教高手,帮我看看这段程序捕捉错在哪里?

[复制链接]
发表于 2009-7-15 09:04:04 | 显示全部楼层 |阅读模式

马上注册,结交更多好友,享用更多功能,让你轻松玩转社区。

您需要 登录 才可以下载或查看,没有账号?立即注册

×
请教高手,帮我看看这段程序错在哪里?捕捉经常出错:


;;连续尺寸对齐标注
;;--------------------------
(defun c:tt( / alf b c d1 d2 e1 e2 l1 l2 l3 l4 l5 p1 p2 p3 x3 x4 x5 y3 y4 y5);!!!连续对齐标注
(vl-catch-all-apply  '(lambda()
(setvar "OSNAPHATCH" 0)
(if (or (= (getvar "osmode") 0) (= (getvar "osmode") 4133))
(command "osmode"  183))
(setq l3 (getpoint "\n开始标注点:"))
(setq l4 (getpoint l3 "\n<U>ndo...下一个标注点:"))
(command "osmode"  0)
(setq l2 (getpoint "\n标注线位置:"))
(command "osmode"  183)
(setq l5 (inters l3 l4 l2 (polar l2 (+ (angle l3 l4) (/ pi 2)) 1) nil) )
(setq l1 (polar l2 (angle l2 l5) (* (getvar "dimscale") 6)))
;(command "line" l5 l2 "")
    (setq b (- (car l1)  (car l2)))
    (setq c (- (cadr l1) (cadr l2)))
    (if (= b 0.0)
        (progn
           (command "dim" "_horizontal" (list (car l3) (cadr l1))  (list (car l4) (cadr l1))  l2  "" );command
           (while
                 (setq l5 (getpoint l4 "\n<U>ndo...下一个标注点:"))
                 (command "_continue" (list (car l5) (cadr l1)) "" )
                 (setq l4 l5)
           );while
           (command "_horizontal"
                    (list (car l3) (cadr l1))
                    (list (car l4) (cadr l1))
                    (list (car l2)
                          (if (> (cadr l1) (cadr l2))
                              (- (cadr l2) (* (getvar "dimscale") 6))
                              (+ (cadr l2) (* (getvar "dimscale") 6))
                          );if

                    );list
                    ""
                    "e"
          );command
       );progn
    );if
    (if (= c 0.0)
        (progn
           (command "dim"
                    "_vertical"
                    (list (car l1) (cadr l3))
                    (list (car l1) (cadr l4))
                    l2
                    ""
           );command
           (while
                 (setq l5 (getpoint l4 "\n<U>ndo...下一个标注点:"))
                 (command "_continue"
                          (list (car l1) (cadr l5))
                          ""
                 );command

                 (setq l4 l5)
           );while
           (command "_vertical"
                    (list (car l1) (cadr l3))
                    (list (car l1) (cadr l4))
                    (list (if (> (car l1) (car l2))
                              (- (car l2) (* (getvar "dimscale") 6))
                              (+ (car l2) (* (getvar "dimscale") 6))
                          );if
                          (cadr l2)
                    );list
                    ""
                    "e"
          );command
       );progn
    );if
    (if (and (/= c 0.0) (/= b 0.0))
        (progn
          (setq d1 (- (car l1) (car l3)))
          (setq d2 (- (car l1) (car l4)))
          (setq e1 (- (cadr l1) (cadr l3)))
          (setq e2 (- (cadr l1) (cadr l4)))
          (setq x3 (/ (+ (* b b (car  l1)) (* c c (car  l3)) (* b c e1)) (+ (* b b) (* c c))))
          (setq y3 (/ (+ (* b b (cadr l3)) (* c c (cadr l1)) (* b c d1)) (+ (* b b) (* c c))))
          (setq x4 (/ (+ (* b b (car  l1)) (* c c (car  l4)) (* b c e2)) (+ (* b b) (* c c))))
          (setq y4 (/ (+ (* b b (cadr l4)) (* c c (cadr l1)) (* b c d2)) (+ (* b b) (* c c))))
          (command "dim"
                   "aligned"
                   (list x3 y3)
                   (list x4 y4)
                   l2
                   ""
          );command
          (while
               (setq l5 (getpoint l4 "\n<U>ndo...下一个标注点:"))
               (setq d2 (- (car l1) (car l5)))
               (setq e2 (- (cadr l1) (cadr l5)))
               (setq x5 (/ (+ (* b b (car  l1)) (* c c (car  l5)) (* b c e2)) (+ (* b b) (* c c))))
               (setq y5 (/ (+ (* b b (cadr l5)) (* c c (cadr l1)) (* b c d2)) (+ (* b b) (* c c))))
               (command "continue"
                        (list x5 y5)
                        ""
               );command
               (setq l4 l5)
           );while
(command "osmode"  0)
           (setq alf (atan (/ (- (cadr l2) (cadr l1)) (- (car l2) (car l1)))))
           (if (< (cadr l1) (cadr l2))
           (setq x4 (+ (car l2) (* 6 (getvar "dimscale") (sin alf))))
           (setq x4 (- (car l2) (* 6 (getvar "dimscale") (sin alf)))))
           (if (< (cadr l1) (cadr l2))
           (setq y4 (+ (cadr l2) (* 6 (getvar "dimscale") (cos alf))))
           (setq y4 (- (cadr l2) (* 6 (getvar "dimscale") (cos alf)))))
                    (command "aligned"
                    (list x3 y3)
                    (list x5 y5)
                    (list x4 y4)
                    ""
                    "e"
           );command
         );progn
     );if
))
)
论坛插件加载方法
发帖求助前要善用【论坛搜索】功能,那里可能会有你要找的答案;
如果你在论坛求助问题,并且已经从坛友或者管理的回复中解决了问题,请把帖子标题加上【已解决】;
如何回报帮助你解决问题的坛友,一个好办法就是给对方加【D豆】,加分不会扣除自己的积分,做一个热心并受欢迎的人!
发表于 2009-7-16 14:34:55 | 显示全部楼层
你这个要实现什么功能啊?跟本身cad自带的尺寸连续标注有什么区别?
另外:(command "osmode" 0)
改成 (setvar "osmode" 0) 速度应该会更快些。
你出错是什么地方出错?
论坛插件加载方法
发帖求助前要善用【论坛搜索】功能,那里可能会有你要找的答案;
如果你在论坛求助问题,并且已经从坛友或者管理的回复中解决了问题,请把帖子标题加上【已解决】;
如何回报帮助你解决问题的坛友,一个好办法就是给对方加【D豆】,加分不会扣除自己的积分,做一个热心并受欢迎的人!
回复 支持 反对

使用道具 举报

您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

QQ|申请友链|Archiver|手机版|小黑屋|辽公网安备|晓东CAD家园 ( 辽ICP备15016793号 )

GMT+8, 2024-6-26 07:20 , Processed in 0.180642 second(s), 33 queries , Gzip On.

Powered by Discuz! X3.5

© 2001-2024 Discuz! Team.

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