bzhyong 发表于 2017-12-8 15:54:56

repeat错在了哪里?(已解决 nn必须为整数)

本帖最后由 bzhyong 于 2017-12-9 09:24 编辑

如下,while可以实现这个功能,但是repeat命令就显示数据类型错误?
这是为什么呢?虽然我现在已经用while实现了同样的功能,仍然想求高手指导为何repeat不行
代码功能是选择两个圆弧。把两个圆弧都均分n分,然后用n个直线相连。

(defun c:chul1()
    (setvar "osmode" 0)
    (setvar "cmdecho" 0)

(setvar "blipmode" 0)
(setq en1 (entsel "选择第一个圆弧:"))
(setq en2 (entsel "选择第二个圆弧:"))
(setq en1_data (entget (car en1)));获得第一个圆弧串行
(setq en2_data (entget (car en2)));获得第二个圆弧串行
(setq rr (getint "\n输入等分数量<150>"))
(if (null rr) (setq rr 150.0))
(setq rr1 (cdr (assoc 40 en1_data)));获得第一个圆弧半径
(setq rr2 (cdr (assoc 40 en2_data)));获得第二个圆弧半径
(setq ang1 (cdr (assoc 50 en1_data)));获得第一个圆弧起始角度
(setq ang2 (cdr (assoc 50 en2_data)));获得第二个圆弧起始角度
(setq ang3 (cdr (assoc 51 en1_data)));获得第一个圆弧终止角度
(setq ang4 (cdr (assoc 51 en2_data)));获得第二个圆弧终止角度
(setq ang5 (/ (- ang3 ang1) rr))
(setq ang6 (/ (- ang4 ang2) rr))
(setq l1 (* 2 (* rr1 (sin (/ 2 (* 180 (/ ang5 pi)))))))
(setq l2 (* 2 (* rr2 (sin (/ 2 (* 180 (/ ang6 pi)))))))
(setq pto1 (cdr (assoc 10 en1_data)));获得第一个圆弧圆心坐标
(setq pto2 (cdr (assoc 10 en2_data)));获得第二个圆弧圆心坐标
(setq en1_1 (polar pto1 ang1 rr1));获得第一个圆弧起点坐标
(setq en2_1 (polar pto2 ang2 rr2));获得第二个圆弧起点坐标
(command "line" en1_1 en2_1 "")

;;;(setq en1_2 (polar pto1 (+ ang1 ang5) rr1));测试
;;;(setq en2_2 (polar pto2 (+ ang2 ang6) rr2))
;;;(command "line" en1_2 en2_2 "")
(setq ang1_x ang1)
(setq ang2_x ang2)
(setq en1_x en1_1)
(setq en2_x en2_1)
(setq snum -1)
    (while (< snum rr)
    (setq en1_x (polar pto1 ang1_x rr1))
    (setq en2_x (polar pto2 ang2_x rr2))
    (command "line" en1_x en2_x "")
    (setq ang1_x (+ ang1_x ang5))
    (setq ang2_x (+ ang2_x ang6))
    (setq snum (1+ snum)
    )
    )

   
    ;(repeat rr
   ; (setq en1_x (polar pto1 ang1_x rr1))
    ;(setq en2_x (polar pto2 ang2_x rr2))
    ;(command "line" en1_x en2_x "")
    ;(setq ang1_x (+ ang1_x ang5))
    ;(setq ang2_x (+ ang2_x ang6))


   ; )





(princ)
)
(prompt "\n <<chul1>>")
(prin1)



wen1235 发表于 2017-12-8 16:26:26

repeat 变量要的是正整数

骑着蜗牛旅行666 发表于 2017-12-8 18:45:47

你要的好像是这个功能吧???

evayleung 发表于 2017-12-9 00:42:57

(setq rr 150)

bzhyong 发表于 2017-12-9 09:14:40

骑着蜗牛旅行666 发表于 2017-12-8 18:45
你要的好像是这个功能吧???

就是这个功能

bzhyong 发表于 2017-12-9 09:21:54

wen1235 发表于 2017-12-8 16:26
repeat 变量要的是正整数

多谢!测试了一下,的确是如此

bzhyong 发表于 2017-12-9 09:22:27

evayleung 发表于 2017-12-9 00:42
(setq rr 150)

多谢高手!多了一个0就没办法运行了。的确是他的问题

bzhyong 发表于 2017-12-9 09:27:12

骑着蜗牛旅行666 发表于 2017-12-8 18:45
你要的好像是这个功能吧???

你是用的什么工具呢
页: [1]
查看完整版本: repeat错在了哪里?(已解决 nn必须为整数)