panyunkai 发表于 2015-11-21 14:41:56

一个打缺口小程序有点问题,圆弧上不能定义个数,帮忙修改一下

(defun c:qw ()
;;;(setq os "osmode")
(setvar "osmode" 0)
(setvar "cmdecho" 0)
(command "layer" "S" "0" "")
(command "pickbox" 3)
(setqp (/ pi 2.0)
g (+ pi p)
)
(if (= qbl nil)
    (setq qbl 5)
    (setq qbl qbl)
)
(setq ai qbl)
(setq aai (rtos ai 2 2))
(setq abi "<")
(setq aci ">")
(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 请输入在直线上桥位的个数:<1>"))
      (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 qcc)
       (cond ((>= 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 请输入在圆上桥位的个数 :<3>"))
      (if (= cb nil)
      (setq cb 3)
      (setq cb cb)
      )
   )
   )
   (setq
       xa(/ (/ qbl aeed) 2.0)
   )
   (setq j 1)
   (setq xb 0)
   (while (<= j cb)
       (cond ((>= 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((<= 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))
)
(command "pickbox" 3)
(setvar "cmdecho" 1)
(setvar "osmode" 1)
(princ)
)
页: [1]
查看完整版本: 一个打缺口小程序有点问题,圆弧上不能定义个数,帮忙修改一下