明经CAD社区

 找回密码
 注册

QQ登录

只需一步,快速开始

搜索
楼主: 啵浪鼓

[基础] 圆生成特定4处小缺圆

  [复制链接]
发表于 2009-10-29 10:08 | 显示全部楼层

看看我编写的这个如何?

本帖子中包含更多资源

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

x
发表于 2009-10-30 13:35 | 显示全部楼层

看到这样的程序,感觉挺好的

就是如果数量是一个就无法了,是否改一下?

 楼主| 发表于 2009-11-14 00:02 | 显示全部楼层

想在龙斑主的程序里加上更人性化的东西,比如每次程序运行时都要提示A和B和C和D值,一共要按4次回车,太繁琐了,我在程序里追加记忆上一次的输入值,却又遇到了死循环如下面.

程序的目的想要达到如果输入A即改变A值,然后重复提示A/B/C/D值,输入C再改C变值,然后重复提示A/B/C/D值,一直如此下去,直到用户给出空即执行后面的主程序开始选择圆(程序如果能达到用户输入的不是ABCD而是直接选择物体是最好的了,还能再省一次回车键)! 弄了这些天也没弄明白,请知道的帮忙,谢谢!

(附件为原程序)

   (while t
   (initget " A a B b C c D d ")
   (setq ok(getkword (strcat "\nA:凸出量" (rtos A 2 2) " / B:小缺口半徑" (rtos B 2 2) " / C:小缺口數量" (rtos C 2 2) " / D:角度" (rtos D 2 02) "\n")))
   (cond ((or(= "A" ok)(= "a" ok))(setq A (getdist "凸出量 ")))
         ((or(= "B" ok)(= "b" ok))(setq B (getdist "小缺口半徑 ")))
         ((or(= "C" ok)(= "c" ok))(setq C (getdist "小缺口數量 ")))
         ((or(= "D" ok)(= "d" ok))(setq D (getdist "角度 ")))
   )
   )

本帖子中包含更多资源

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

x
发表于 2009-11-14 15:14 | 显示全部楼层
龙龙仔的程序很好,顶一下!!
发表于 2009-11-16 07:52 | 显示全部楼层
啵浪鼓发表于2009-11-14 0:02:00想在龙斑主的程序里加上更人性化的东西,比如每次程序运行时都要提示A和B和C和D值,一共要按4次回车,太繁琐了,我在程序里追加记忆上一次的输入值,却又遇到了死循环如下面.程序的目的想要达到如果

19樓才是我寫的,有時輸入方式&除錯 比程序本身還難....但你說的應可實現,好好努力吧!

发表于 2009-11-18 08:08 | 显示全部楼层
(if (null AA)
    (setq AA 0.02
   BB 0.2
   CC 4
   DD 45
    )
    (setq A AA
   B BB
   C CC
   D DD
    )
  )
  (setq FLAG t)
  (while FLAG
    (initget "A B C D ")
    (setq OK (getkword (strcat "\nA-凸出量<"
          (rtos AA 2 2)
          ">/B-小缺口半徑<"
          (rtos BB 2 2)
          ">/C-小缺口數量<"
          (rtos CC)
          ">/D-起始角度<"
          (rtos DD 2 2)
          ">: "
         )
      )
    )
    (cond
      ((= "A" OK)
       (if
  (= (setq A (getdist (strcat "\n凸出量<" (rtos AA 2 2) ">: ")))
     NIL
  )
   (setq A AA)
   (setq AA A)
       )
      )
      ((= "B" OK)
       (if
  (= (setq
       B (getdist (strcat "\n小缺口半徑<" (rtos BB 2 2) ">: "))
     )
     NIL
  )
   (setq B BB)
   (setq BB B)
       )
      )
      ((= "C" OK)
       (if
  (= (setq C (getint (strcat "\n小缺口數量<" (rtos CC) ">: ")))
     NIL
  )
   (setq C CC)
   (setq CC C)
       )
      )
      ((= "D" OK)
       (if (= (setq D (getdist (strcat "\n起始角度<"
           (rtos DD 2 2)
           ">: "
          )
        )
       )
       NIL
    )
  (setq D DD)
  (setq DD D)
       )
      )
      (t
       (setq FLAG NIL)
      )
    )
  )
 楼主| 发表于 2009-11-19 23:42 | 显示全部楼层

按照25楼的程序复制到程序里,得出的结果与真实输入的角度有好大的偏差,比如输45度,结果可能是57.79度,后来发现(getdist (strcat "\n起始角度<"应该用getangle这个函数,可是用getangle输入100度显示的却是1.75,怎么不是显示也是50度啊,虽然程序结果最终是正确!

试着按着下面的方式改一下,结果程序出错了

程序输入前setq D (getdist (strcat "\n起始角度<"  ......

程序后段加入: (setq D (getangle D)

结果:

命令:  QI
A-凸出量<1.00>/B-小缺口半徑<2.00>/C-小缺口數量<4.0000>/D-起始角度<0.87>: d
起始角度<0.87>: 100
A-凸出量<1.00>/B-小缺口半徑<2.00>/C-小缺口數量<4.0000>/D-起始角度<100.00>:
选择对象: 指定对角点: 找到 1 个

选择对象:  ; 错误: 参数类型错误: point: 100.0

发表于 2009-11-20 00:36 | 显示全部楼层
100是角度,1.75是弧度
发表于 2009-11-20 07:57 | 显示全部楼层
啵浪鼓发表于2009-11-19 23:42:00按照25楼的程序复制到程序里,得出的结果与真实输入的角度有好大的偏差,比如输45度,结果可能是57.79度,后来发现(getdist (strcat \"\n起始角度&lt;\"应该用getangle这个函数,可是用getangle输入

這個只是弧度轉換,後段程序處理...對你來說應可以....
 楼主| 发表于 2009-11-20 12:40 | 显示全部楼层
如何轉換還是不懂,我試著在程序後段寫 (setq D (getangle D)這個也不行呀,結果 ; 错误: 参数类型错误: point: 100.0
您需要登录后才可以回帖 登录 | 注册

本版积分规则

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

GMT+8, 2024-5-17 19:00 , Processed in 0.197963 second(s), 19 queries , Gzip On.

Powered by Discuz! X3.4

Copyright © 2001-2021, Tencent Cloud.

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