找回密码
 立即注册

QQ登录

只需一步,快速开始

扫一扫,访问微社区

查看: 476|回复: 0

[求助] [求助]:麻烦各位分析一下程序错在哪,谢谢!!!

  [复制链接]
发表于 2003-9-22 16:58:38 | 显示全部楼层 |阅读模式

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

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

×
;;消除直线间重线的程序,先比较第一条与后面所有的直线是否重线

  1. ;;
  2. (defun c:xc1(/ ss n1 n2 s1 s2 d1 d2 d11 d12 d21 d22 l1 l2)
  3.                 (setq ocmde (getvar "cmdecho"))
  4.                 (setq oblip (getvar "blipmode"))
  5.                 (setq oosmode (getvar "osmode"))
  6.                 (setvar "cmdecho" 0)
  7.                 (setvar "blipmode" 0)
  8.                 (setvar "osmode" 0)
  9.                 (setq ss (ssget '((0 . "LINE"))))
  10.                 (setq n1 0)
  11.                 (setq s1 (sslength ss))
  12.        (repeat s1
  13.                 (setq l1 (ssname ss n1))
  14.                 (setq l1_data (entget l1))
  15.                 (setq pts1 (assoc 10 l1_data))
  16.                 (setq p1 (cdr pts1))
  17.                 (setq pte1 (assoc 11 l1_data))
  18.                 (setq p2 (cdr pte1))
  19.                 (setq d1 (distance p1 p2))
  20.                 (setq n2 (+ n1 1))
  21.                 (setq s2 (- s1 n2))
  22.            (repeat s2
  23.                 (setq l2 (ssname ss n2))
  24.                 (setq l2_data (entget l2))
  25.                 (setq pts2 (assoc 10 l2_data))
  26.                 (setq q1 (cdr pts2))
  27.                 (setq pte2 (assoc 11 l1_data))
  28.                 (setq q2 (cdr pte2))
  29.                 (setq d2 (distance q1 q2))
  30.                 (setq d11 (distance p1 q1))
  31.                 (setq d12 (distance p1 q2))
  32.                 (setq d21 (distance p2 q1))
  33.                 (setq d22 (distance p2 q2))
  34.                 (cond ((> d1 d2) (a1));;首先判断哪条直线长,在判断短直线两个端点是否在长直线上
  35.                       ((< d1 d2) (a2))
  36.                       ((= d1 d2) (a3))
  37.                       (t         (princ))
  38.                 )
  39.                       (setq n2 (+ 1 n2))
  40.             )
  41.                       (setq n1 (+ 1 n1))
  42.         )
  43.                 (setq ss nil)
  44.                 (setvar "blipmode" oblip)
  45.                 (setvar "cmdecho" ocmde)
  46.                 (setvar "osmode" oosmode)
  47.                 (princ)
  48. )      
  49. (defun a1()
  50.     (cond
  51.          ((and (= d1 (+ d11 d21)) (= d1 (+ d12 d22)));;两端点在长直线上
  52.                (if (< d11 d12) ;;判断短直线的方向
  53.                    (progn
  54.                        (command "line" p1 q1 "")
  55.                        (command "line" q2 p2 "")
  56.                        (command "erase" l1 "")
  57.                     )
  58.                     (progn
  59.                         (command "line" p2 q1 "")
  60.                         (command "line" q2 p1 "")
  61.                         (command "erase" l1 "")
  62.                      )
  63.                 )
  64.           )
  65.           ((and (/= d1 (+ d11 d21)) (= d1 (+ d12 d22)));; 起点不在长直线上
  66.                 (if (< d11 d21) ;;判断短直线的方向
  67.                     (progn
  68.                           (command "line" q2 p2 "")
  69.                           (command "erase" l1 "")
  70.                     )
  71.                     (progn
  72.                           (command "line" q2 p1 "")
  73.                           (command "erase" l1 "")
  74.                     )
  75.                  )
  76.           )
  77.           ((and (= d1 (+ d11 d21)) (/= d1 (+ d12 d22)));; 终点不在长直线上
  78.                 (if (< d12 d22) ;;判断短直线的方向
  79.                     (progn
  80.                           (command "line" p2 q1 "")
  81.                           (command "erase" l1 "")
  82.                     )
  83.                     (progn
  84.                           (command "line" p1 q1 "")
  85.                           (command "erase" l1 "")
  86.                     )
  87.                 )
  88.           )
  89.           (t         (princ))
  90.        )
  91. )
  92. (defun a2()
  93.       (cond
  94.            ((and (= d2 (+ d11 d12)) (= d2 (+ d21 d22)));;两端点在长直线上
  95.                           (command "erase" l1 "")
  96.            )
  97.            ((and (/= d2 (+ d11 d12)) (= d2 (+ d21 d22)));;起点在长直线上
  98.                  (if (< d11 d12) ;;判断短直线的方向
  99.                       (progn
  100.                           (command "line" p1 q1 "")
  101.                           (command "erase" l1 "")
  102.                        )
  103.                        (progn
  104.                           (command "line" q2 p1 "")
  105.                           (command "erase" l1 "")
  106.                        )
  107.                   )
  108.             )
  109.             ((and (= d2 (+ d11 d12)) (/= d2 (+ d21 d22));; 终点不在长直线上
  110.                   (if (< d21 d22) ;;判断短直线的方向
  111.                       (progn
  112.                            (command "line" p2 q1 "")
  113.                            (command "erase" l1 "")
  114.                        )
  115.                        (progn
  116.                            (command "line" q2 p2 "")
  117.                            (command "erase" l1 "")
  118.                        )
  119.                   )
  120.              )
  121.              (t         (princ))
  122.        )         
  123. )
  124. (defun a3() ;;判断两点是否同一点     
  125.               (cond
  126.                     ((and (= d11 0 ) (= t22 0))
  127.                          (command "erase" l1 "")
  128.                     )
  129.                     ((and (= d12 0) (= d21 0))  
  130.                            (command "erase" l1 "")
  131.                     )
  132.                     (t         (princ))
  133.                )
  134. )

版主提示:在不同论坛发同一主题帖子 By eachy
论坛插件加载方法
发帖求助前要善用【论坛搜索】功能,那里可能会有你要找的答案;
如果你在论坛求助问题,并且已经从坛友或者管理的回复中解决了问题,请把帖子标题加上【已解决】;
如何回报帮助你解决问题的坛友,一个好办法就是给对方加【D豆】,加分不会扣除自己的积分,做一个热心并受欢迎的人!
您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

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

GMT+8, 2025-9-26 22:15 , Processed in 0.165098 second(s), 32 queries , Gzip On.

Powered by Discuz! X3.5

© 2001-2025 Discuz! Team.

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