乐筑天下

搜索
欢迎各位开发者和用户入驻本平台 尊重版权,从我做起,拒绝盗版,拒绝倒卖 签到、发布资源、邀请好友注册,可以获得银币 请注意保管好自己的密码,避免账户资金被盗
查看: 41|回复: 2

我写的打缺口程序为什么有时会出错?

[复制链接]

6

主题

11

帖子

4

银币

初来乍到

Rank: 1

铜币
35
发表于 2003-4-11 17:28:00 | 显示全部楼层 |阅读模式
该程序是用来将线、圆、弧打上缺口,缺口大小与个数由用户输入,但是在使用过程中,当用户输入的个数太多时,经常会发生所生成的缺口不是用户输入的大小,并且位置也不正确,请大家帮我分析一下此程序,谢谢!
(defun c:bk ()
  (setvar "cmdecho" 0)
  (command "layer" "S" "0" "")
  (command "pickbox" 3)
  (setq        p (/ pi 2.0)
        g (+ pi p)
  )
  (if (= qbl nil)
    (setq qbl 6)
    (setq qbl qbl)
  )
  (setq ai qbl)
  (setq aai (rtos ai 2 2))
  (setq abi "")
  (setq adi "\n 请输入半断尺寸:")
  (setq qbl (getdist (strcat adi abi aai aci)))
  (if (= qbl nil)
    (setq qbl ai)
    (setq qbl qbl)
  )
  (setq aa (ssget))
  (setq qi 0)
  (setq ab (ssadd))
  (repeat (sslength aa)
    (setq aab (ssname aa qi))
    (setq bb (cdr (assoc 0 (entget aab))))
    (cond ((= bb "LINE")
           (setq st (cdr (assoc 11 (entget aab))))
           (setq qed (cdr (assoc 10 (entget aab))))
           (setq ad (distance st qed)
                 dd (angle st qed)
                 de (angle qed st)
           )
           (command "pickbox" 3)
           (cond ((= qi 0)
                  (setq qcc (getdist "\n 输入半断个数:"))
                  (if (= qcc nil)
                    (setq qcc 1)
                    (setq qcc qcc)
                  )
                 )
           )
           (cond ((= qcc 1)
                  (setq aj (/ (- ad qbl) 2.0))
                 )
           )
           (cond ((> qcc 1)
                  (setq ej (/(* (/ (- ad (* qbl qcc)) (+ qcc 1)) 2) 3))
                  (setq aj ej)
                 )
           )
           (setq xa (polar st dd aj))
           (setq j 1)
           (while (= j 2)
                    (setq
                      aj (/ (- (- ad (* ej 2)) (* qbl qcc)) (- qcc 1))
                    )
                    (setq
                      xa (polar z2 dd aj)
                    )
                   )
             )
             (setq j (+ j 1))
             (setq
               z1 (polar xa dd 0)
               z2 (polar xa dd qbl)
             )
             (command "break" z1 z2)
           )
          )
    )
    (cond ((= bb "CIRCLE")
           (command "pickbox" 1)
           (setq st (cdr (assoc 10 (entget aab))))
           (setq aeed (cdr (assoc 40 (entget aab))))
           (cond ((= qi 0)
                  (setq cb (getint "\n 输入圆上半断个数 :"))
                  (if (= cb nil)
                    (setq cb 3)
                    (setq cb cb)
                  )
                 )
           )
           (setq
             xa        (/ (/ qbl aeed) 2.0)
           )
           (setq j 1)
           (setq xb 0)
           (while (= j 2)
                    (setq xb (/ (* pi 2.0) cb))
                    (cond ((>= j 3)
                           (setq xb (* xb (- j 1)))
                          )
                    )
                   )
             )
             (setq
               z1 (polar st (- xb xa) aeed)
               z2 (polar st (+ xb xa) aeed)
             )
             (setq j (+ j 1))
             (command "break" z1 z2)
           )
          )
    )
    (cond ((= bb "ARC")
           (command "pickbox" 1)
           (setq st (cdr (assoc 10 (entget aab))))
           (setq ast (cdr (assoc 50 (entget aab))))
           (setq sst (cdr (assoc 51 (entget aab))))
           (setq beed (cdr (assoc 40 (entget aab))))
           (setq
             xa        (/ (/ qbl beed) 2.0)
           )
           (cond ((> ast sst)
                  (cond        ((")
  (setq adi "\n桥位宽度:")
  (setq qbl (getdist (strcat adi abi aai aci)))
  (if (= qbl nil)
    (setq qbl ai)
    (setq qbl qbl)
  )
  (setq aa (ssget))
  (setq qi 0)
  (setq ab (ssadd))
  (repeat (sslength aa)
    (setq aab (ssname aa qi))
    (setq bb (cdr (assoc 0 (entget aab))))
    (cond ((= bb "LINE")
           (setq st (cdr (assoc 11 (entget aab))))
           (setq qed (cdr (assoc 10 (entget aab))))
           (setq ad (distance st qed)
                 dd (angle st qed)
                 de (angle qed st)
           )
           (cond ((= qi 0)
                  (setq qcc (getdist "\n桥位个数:"))
                  (if (= qcc nil)
                    (setq qcc 1)
                    (setq qcc qcc)
                  )
                 )
           )
           (cond ((= qcc 1)
                  (setq aj (/ (- ad qbl) 2.0))
                 )
           )
           (cond ((> qcc 1)
                  (setq ej (/(* (/ (- ad (* qbl qcc)) (+ qcc 1)) 2) 3))
                  (setq aj ej)
                 )
           )
           (setq xa (polar st dd aj))
           (setq j 1)
           (while (= j 2)
                    (setq
                      aj (/ (- (- ad (* ej 2)) (* qbl qcc)) (- qcc 1))
                    )
                    (setq
                      xa (polar z2 dd aj)
                    )
                   )
             )
             (setq j (+ j 1))
             (setq
               z1 (polar xa dd 0)
               z2 (polar xa dd qbl)
             )
             (command "break" z1 z2)
           )
          )
    )
    (cond ((= bb "CIRCLE")
           (setq st (cdr (assoc 10 (entget aab))))
           (setq aeed (cdr (assoc 40 (entget aab))))
           (cond ((= qi 0)
                  (setq cb (getint "\n桥位个数:"))
                  (if (= cb nil)
                    (setq cb 3)
                    (setq cb cb)
                  )
                 )
           )
           (setq
             xa        (/ (/ qbl aeed) 2.0)
           )
           (setq j 1)
           (setq xb 0)
           (while (= j 2)
                    (setq xb (/ (* pi 2.0) cb))
                    (cond ((>= j 3)
                           (setq xb (* xb (- j 1)))
                          )
                    )
                   )
             )
             (setq
               z1 (polar st (- xb xa) aeed)
               z2 (polar st (+ xb xa) aeed)
             )
             (setq j (+ j 1))
             (command "break" z1 z2)
           )
          )
    )
    (cond ((= bb "ARC")
           (setq st (cdr (assoc 10 (entget aab))))
           (setq ast (cdr (assoc 50 (entget aab))))
           (setq sst (cdr (assoc 51 (entget aab))))
           (setq beed (cdr (assoc 40 (entget aab))))
           (setq
             xa        (/ (/ qbl beed) 2.0)
           )
           (cond ((> ast sst)
                  (cond        ((<= ast p)
                         (setq xb (+ (- p ast) g sst))
                         (setq xxb (/ xb 2.0))
                         (setq xb (+ ast xxb))
                        )
                  )
                  (cond        ((<= ast pi)
                         (setq xb (+ (- pi ast) pi sst))
                         (setq xxb (/ xb 2.0))
                         (setq xb (+ ast xxb))
                        )
                  )
                  (cond        ((<= ast g)
                         (setq xb (+ (- g ast) p sst))
                         (setq xxb (/ xb 2.0))
                         (setq xb (+ ast xxb))
                        )
                  )
                  (cond        ((<= ast (* pi 2.0))
                         (setq xb (+ (- (* pi 2.0) ast) sst))
                         (setq xxb (/ xb 2.0))
                         (setq xb (+ ast xxb))
                        )
                  )
                 )
           )
           (cond ((< ast sst)
                  (setq xb (- sst ast))
                  (setq xxb (/ xb 2.0))
                  (setq xb (+ ast xxb))
                 )
           )
           (setq
             z1        (polar st (- xb xa) beed)
             z2        (polar st (+ xb xa) beed)
           )
           (command "break" z1 z2)
          )
    )
    (setq qi (+ 1 qi))
  )
(setvar "CMDECHO" oldecho);恢复回显
(setvar "osmode" oldmode) ;恢复原捕捉
(princ)
)
回复

使用道具 举报

26

主题

3072

帖子

10

银币

社区元老

Rank: 75Rank: 75Rank: 75

铜币
3177
发表于 2003-4-11 17:30:00 | 显示全部楼层
如果有一键智能打桥位会更好,我不会]写
回复

使用道具 举报

6

主题

11

帖子

4

银币

初来乍到

Rank: 1

铜币
35
发表于 2003-4-11 17:37:00 | 显示全部楼层
这个贴子都有10年了,现在又出来了,乐筑天下真强大哟
回复

使用道具 举报

发表回复

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

本版积分规则

  • 微信公众平台

  • 扫描访问手机版

  • 点击图片下载手机App

QQ|关于我们|小黑屋|乐筑天下 繁体中文

GMT+8, 2025-7-1 15:31 , Processed in 0.966281 second(s), 58 queries .

© 2020-2025 乐筑天下

联系客服 关注微信 帮助中心 下载APP 返回顶部 返回列表