明经CAD社区

 找回密码
 注册

QQ登录

只需一步,快速开始

搜索
查看: 1357|回复: 7

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

[复制链接]
发表于 2017-12-8 15:54:56 | 显示全部楼层 |阅读模式
本帖最后由 bzhyong 于 2017-12-9 09:24 编辑

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

  1. (defun c:chul1()
  2.     (setvar "osmode" 0)
  3.     (setvar "cmdecho" 0)

  4.   (setvar "blipmode" 0)
  5.   (setq en1 (entsel "选择第一个圆弧:"))
  6.   (setq en2 (entsel "选择第二个圆弧:"))
  7.   (setq en1_data (entget (car en1)));获得第一个圆弧串行
  8.   (setq en2_data (entget (car en2)));获得第二个圆弧串行
  9.   (setq rr (getint "\n输入等分数量<150>"))
  10.   (if (null rr) (setq rr 150.0))
  11.   (setq rr1 (cdr (assoc 40 en1_data)));获得第一个圆弧半径
  12.   (setq rr2 (cdr (assoc 40 en2_data)));获得第二个圆弧半径
  13.   (setq ang1 (cdr (assoc 50 en1_data)));获得第一个圆弧起始角度
  14.   (setq ang2 (cdr (assoc 50 en2_data)));获得第二个圆弧起始角度
  15.   (setq ang3 (cdr (assoc 51 en1_data)));获得第一个圆弧终止角度
  16.   (setq ang4 (cdr (assoc 51 en2_data)));获得第二个圆弧终止角度
  17.   (setq ang5 (/ (- ang3 ang1) rr))
  18.   (setq ang6 (/ (- ang4 ang2) rr))
  19.   (setq l1 (* 2 (* rr1 (sin (/ 2 (* 180 (/ ang5 pi)))))))
  20.   (setq l2 (* 2 (* rr2 (sin (/ 2 (* 180 (/ ang6 pi)))))))
  21.   (setq pto1 (cdr (assoc 10 en1_data)));获得第一个圆弧圆心坐标
  22.   (setq pto2 (cdr (assoc 10 en2_data)));获得第二个圆弧圆心坐标
  23.   (setq en1_1 (polar pto1 ang1 rr1));获得第一个圆弧起点坐标
  24.   (setq en2_1 (polar pto2 ang2 rr2));获得第二个圆弧起点坐标
  25.   (command "line" en1_1 en2_1 "")

  26.   ;;;(setq en1_2 (polar pto1 (+ ang1 ang5) rr1));测试
  27.   ;;;(setq en2_2 (polar pto2 (+ ang2 ang6) rr2))
  28.   ;;;(command "line" en1_2 en2_2 "")
  29.   (setq ang1_x ang1)
  30.   (setq ang2_x ang2)
  31.   (setq en1_x en1_1)
  32.   (setq en2_x en2_1)
  33.   (setq snum -1)
  34.     (while (< snum rr)
  35.     (setq en1_x (polar pto1 ang1_x rr1))
  36.     (setq en2_x (polar pto2 ang2_x rr2))
  37.     (command "line" en1_x en2_x "")
  38.     (setq ang1_x (+ ang1_x ang5))
  39.     (setq ang2_x (+ ang2_x ang6))
  40.     (setq snum (1+ snum)
  41.     )
  42.     )

  43.    
  44.     ;(repeat rr
  45.    ; (setq en1_x (polar pto1 ang1_x rr1))
  46.     ;(setq en2_x (polar pto2 ang2_x rr2))
  47.     ;(command "line" en1_x en2_x "")
  48.     ;(setq ang1_x (+ ang1_x ang5))
  49.     ;(setq ang2_x (+ ang2_x ang6))


  50.    ; )




  51.   
  52.   (princ)  
  53.   )
  54. (prompt "\n <<chul1>>")
  55. (prin1)



发表于 2017-12-8 16:26:26 | 显示全部楼层
repeat 变量要的是正整数
发表于 2017-12-8 18:45:47 | 显示全部楼层
你要的好像是这个功能吧???

本帖子中包含更多资源

您需要 登录 才可以下载或查看,没有账号?注册

x
发表于 2017-12-9 00:42:57 | 显示全部楼层
(setq rr 150)
 楼主| 发表于 2017-12-9 09:14:40 | 显示全部楼层
骑着蜗牛旅行666 发表于 2017-12-8 18:45
你要的好像是这个功能吧???

就是这个功能
 楼主| 发表于 2017-12-9 09:21:54 | 显示全部楼层
wen1235 发表于 2017-12-8 16:26
repeat 变量要的是正整数

多谢!测试了一下,的确是如此
 楼主| 发表于 2017-12-9 09:22:27 | 显示全部楼层

多谢高手!多了一个0就没办法运行了。的确是他的问题
 楼主| 发表于 2017-12-9 09:27:12 | 显示全部楼层
骑着蜗牛旅行666 发表于 2017-12-8 18:45
你要的好像是这个功能吧???

你是用的什么工具呢
您需要登录后才可以回帖 登录 | 注册

本版积分规则

小黑屋|手机版|CAD论坛|CAD教程|CAD下载|联系我们|关于明经|明经通道 ( 粤ICP备05003914号 )  
©2000-2023 明经通道 版权所有 本站代码,在未取得本站及作者授权的情况下,不得用于商业用途

GMT+8, 2025-5-19 19:13 , Processed in 0.192586 second(s), 26 queries , Gzip On.

Powered by Discuz! X3.4

Copyright © 2001-2021, Tencent Cloud.

快速回复 返回顶部 返回列表