笼兽天使 发表于 2012-4-13 15:59:11

高手来帮我修改下程序

这个修改圆半径的程序:(defun c:chr3()
(setq new_rad(getreal"请求输入圆的新半径:"))
(prompt"\n<<选择欲更新圆半径>>")
(setq ss(ssget))
(setq n 0 k 0)
(repeat(sslength ss)
(setq en(ssname ss n))
(setq endata(entget en))
(setq entype (cdr(assoc 0 endata)))
(if(=entype"CIRCLE")
(sub_upd_rad)
)
(setq n(1+n))
)
(princ(strcat"\n共有<"(itoa k)">个圆更新半径="(rtos new_rad)))
(prin1)
)
(defun sub_upd_rad()
(setq 40_list(assoc 40 endata))
(setq new_40_list(cons 40 new_rad))
(setq endata(subst new_40_list 40_list endata))
(entmod endata)
(setq k(1+k))
)
(prin1)
在CAD2008里面运行以后在选择完图形和输入半径以后出现:
; 错误: no function definition: /PI
这是怎么回事?哪里需要修改?

duotu007 发表于 2012-4-13 16:45:17

养成一个好的书写习惯
(defun c:chr3()
(setq new_rad (getreal "请求输入圆的新半径:"))
(prompt "\n<<选择欲更新圆半径>>")
(setq ss (ssget))
(setq n 0 k 0)
(repeat(sslength ss)
    (setq en (ssname ss n))
    (setq endata (entget en))
    (setq entype (cdr (assoc 0 endata)))
    (if (= entype "CIRCLE")
      (sub_upd_rad)
    )
    (setq n (1+ n))
)
(princ (strcat "\n共有<" (itoa k) ">个圆更新半径=" (rtos new_rad)))
(prin1)
)
(defun sub_upd_rad()
(setq 40_list (assoc 40 endata))
(setq new_40_list (cons 40 new_rad))
(setq endata (subst new_40_list 40_list endata))
(entmod endata)
(setq k (1+ k))
)
(prin1)

笼兽天使 发表于 2012-4-13 17:46:41

duotu007 发表于 2012-4-13 16:45 static/image/common/back.gif
养成一个好的书写习惯
(defun c:chr3()
(setq new_rad (getreal "请求输入圆的新半径:"))


谢谢啊,学习了

【KAIXIN】 发表于 2012-4-13 18:19:31


;改多圆、圆弧半径
(defun c:kk ()
(setq br (getreal "\n输入你想要的半径:"))
(prompt "\n请框选你要改变的圆: ")
(setq        ss (ssget '((0 . "CIRCLE,ARC")))
        i   -1
)
(while (setq s1 (ssname ss (setq i (1+ i))))
    (KX-SubUpd s1 40 br)
)
(princ)
)

(defun KX-SubUpd (ename code newvalue)

(entmod (subst (cons code newvalue)
   
(assoc code (entget ename))
   
(entget ename)
   )
)
(entget ename)
)
页: [1]
查看完整版本: 高手来帮我修改下程序