明经CAD社区

 找回密码
 注册

QQ登录

只需一步,快速开始

搜索
查看: 1168|回复: 5

[求助]请教高手,帮我看看这段程序错在哪里?(已解决)

[复制链接]
发表于 2009-7-15 07:48:00 | 显示全部楼层 |阅读模式
本帖最后由 作者 于 2009-7-16 9:08:52 编辑

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


;;连续尺寸对齐标注
;;--------------------------
(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
))
)

"觉得好,就打赏"
还没有人打赏,支持一下
 楼主| 发表于 2009-7-15 10:34:00 | 显示全部楼层
哪位高手帮忙看看,急用。
发表于 2009-7-15 11:14:00 | 显示全部楼层
你这个能用吗?osnappath是什么版本里面的?
发表于 2009-7-15 11:16:00 | 显示全部楼层
(setvar "OSNAPHATCH" 0)
把这句删除就行了
 楼主| 发表于 2009-7-15 12:08:00 | 显示全部楼层

这是2008的填充捕捉,跟(setvar "OSNAPHATCH" 0)没有关系。

删除了还是会出错问题。

 楼主| 发表于 2009-7-15 19:06:00 | 显示全部楼层

应该不难解决吧,但我就是不知哪出错了。

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

本版积分规则

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

GMT+8, 2024-10-1 07:42 , Processed in 0.169861 second(s), 27 queries , Gzip On.

Powered by Discuz! X3.4

Copyright © 2001-2021, Tencent Cloud.

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