求助!
lisp吧
全部回复
仅看楼主
level 1
小辫子呐 楼主
为什么我选了圆之后只有第一次输入C或I是有效的,后面输入都是无效输入,而且第一次返回的结果并不会给圆内切或外切
2021年08月05日 06点08分 1
level 1
小辫子呐 楼主
(defun c:7test3a()
;以下 pa、ww、hh、n值
(setq n(getint"请求输入正多边形边数,N="))
(setq en(entsel"\n选取想作内切或外切正多边形的圆:"))
(initget "C c I i")
(setq side (strcase side))
(setq I 0)
(setq C 0)
(while en ;当en存在时,执行以下循环内容,直到en不存在为止
(setq en_data(entget(car en)))
(setq en_type(cdr(assoc 0 en_data)))
(if(= en_type"CIRCLE")
(progn
(setq cenpt(cdr(assoc 10 en_data)))
(setq rad (cdr(assoc 40 en_data)))
(setq side (getkword "内接I或外切C:"))
(cond ((= side I )(Command"polygon" n cenpt"I"rad)(setq I (1+ I)))
((= side C )(Command"polygon" n cenpt"C"rad)(setq C (1+ C)))
)
)
(alert"该对象并不是圆,请重新选取圆")
) ;end if
(setq en (entsel "\n选择下一个想作为内切正多边形的圆:"))
)
(princ(strcat"\n共绘制了"(itoa i)"圆内切和"(itoa c)"外切正多边形"))
(prin1)
)
(prompt"\n<<7TEST3a>>连续对多个圆绘制内切或外切正多边形")
(prin1)
2021年08月05日 06点08分 2
level 13
(1) initget 要移到 while 里面,每次 getkword 前都要设定一次才行。
(2) cond 里面的两个判断式里的 I 和 C 要用双引号括住,因为是字符不是变数。
(3) (setq side (strcase side)) 这一行不需要,可以删除。
2021年08月07日 13点08分 3
1