乐筑天下

搜索
欢迎各位开发者和用户入驻本平台 尊重版权,从我做起,拒绝盗版,拒绝倒卖 签到、发布资源、邀请好友注册,可以获得银币 请注意保管好自己的密码,避免账户资金被盗
查看: 92|回复: 19

[编程交流] “如果”

[复制链接]

26

主题

81

帖子

55

银币

初露锋芒

Rank: 3Rank: 3Rank: 3

铜币
130
发表于 2022-7-5 15:09:44 | 显示全部楼层 |阅读模式
  1. (defun c:www (/ P1 P2 Dist1 Dist2 Ang1 hole1a hole1b)
  2.    (savevartoold)
  3.      (setq P1 (getpoint "\n Select a Point  : "))
  4.      (setq P2 (getpoint P1 "\n Select a Point  : "))
  5.      (setq Dist1 (distance P1 P2))
  6.      (setq Dist2 (- Dist1 40.0))
  7.      (setq Ang1 (angle P1 P2))
  8.      (setvar "osmode" 0)
  9.    (command "_.circle" (polar P1 (+ ang1 (dtr 0)) 20.0) "D" 3.2 "" )
  10.      (setq hole1a (entlast))
  11.    (command "_.circle" (polar P1 (+ ang1 (dtr 0)) (- Dist1 20.0)) "D" 3.2 "" )
  12.      (setq hole1b (entlast))
  13. (if
  14.      (and (> (- Dist1 40) 200) (/> (- Dist1 40) 400))
  15.      (setq NewDist (/ (- Dist1 40) 2)))
  16.      (command "_.copy" hole1a "" (polar P1 (+ ang1 (dtr 0)) 20)  NewDist) "")
  17.    (resetoldvar)
  18. (princ)   
  19. )

 
在我找到“如果”之前,一切都很完美
 
我想说的是,如果Dist1-40大于200或者Dist1-40不大于400,那么将NewDist设置为Dist1-40除以2。
我希望我已经解释得足够清楚了
 
当做
回复

使用道具 举报

76

主题

312

帖子

254

银币

后起之秀

Rank: 20Rank: 20Rank: 20Rank: 20

铜币
390
发表于 2022-7-5 15:13:56 | 显示全部楼层
/>不起作用。
 
其一:
>大于。。。
=>大于或等于
=
 
所以…/>400必须是'
回复

使用道具 举报

24

主题

1265

帖子

1028

银币

后起之秀

Rank: 20Rank: 20Rank: 20Rank: 20

铜币
362
发表于 2022-7-5 15:18:35 | 显示全部楼层
没有“不大于”功能[/>]
 
使用小于或小于或等于
 
裁判:http://help.autodesk.com/view/ACD/2016/ENU/?guid=GUID-EBDC1072-48BF-4204-80B1-73430DBF58E1
回复

使用道具 举报

26

主题

81

帖子

55

银币

初露锋芒

Rank: 3Rank: 3Rank: 3

铜币
130
发表于 2022-7-5 15:20:05 | 显示全部楼层
谢谢你的建议
 
我需要写一系列条件,例如
>200但不大于400
>200但不大于600
>200但不大于800
以此类推,最多3400个
回复

使用道具 举报

76

主题

312

帖子

254

银币

后起之秀

Rank: 20Rank: 20Rank: 20Rank: 20

铜币
390
发表于 2022-7-5 15:23:06 | 显示全部楼层
我建议使用“COND”函数而不是“IF”函数。
 
  1. (cond
  2. ((and (> 200 dist1) (< 400 dist1))
  3.         (princ "i am more than 200 and less then 400.")
  4. )
  5. ((and (> 200 dist1) (< 600 dist1))
  6.         (princ "i am more than 200 and less then 600.")
  7. )
  8. ((and (> 200 dist1) (< 800 dist1))
  9.         (princ "i am more than 200 and less then 800.")
  10. )
  11. ((and (> 200 dist1) (< 1000 dist1))
  12.         (princ "i am more than 200 and less then 1000.")
  13. )
  14. (t
  15.         (princ "i am not any of the above..")
  16. )
  17. )
回复

使用道具 举报

5

主题

956

帖子

963

银币

初来乍到

Rank: 1

铜币
35
发表于 2022-7-5 15:26:52 | 显示全部楼层
嗨,我只是想知道负值-40怎么会大于正定值+400?
  1. (< 200 ([color="blue"]abs[/color] dist1) 400))

还是没有?
回复

使用道具 举报

76

主题

312

帖子

254

银币

后起之秀

Rank: 20Rank: 20Rank: 20Rank: 20

铜币
390
发表于 2022-7-5 15:30:08 | 显示全部楼层
 
他不想要负40(-40)。
他想要他的dist1,降低到40
回复

使用道具 举报

58

主题

3353

帖子

33

银币

顶梁支柱

Rank: 50Rank: 50

铜币
1761
发表于 2022-7-5 15:34:19 | 显示全部楼层
 
不管好坏您可以将代码简化为:
  1. (setq dist (- dist1 40))
  2. (cond ((< 200 dist1 400) (princ "i am more than 200 and less then 400."))
  3.      ((< 200 dist1 600) (princ "i am more than 200 and less then 600."))
  4.      ((< 200 dist1 800) (princ "i am more than 200 and less then 800."))
  5.      ((< 200 dist1 1000) (princ "i am more than 200 and less then 1000."))
  6.      ((princ "i am not any of the above.."))
  7. )
回复

使用道具 举报

66

主题

1552

帖子

1514

银币

后起之秀

Rank: 20Rank: 20Rank: 20Rank: 20

铜币
325
发表于 2022-7-5 15:36:55 | 显示全部楼层
我记得写过一些芬德兰奇的Subfo,觉得很酷
 
  1. ;| Example
  2. (setq val 63)
  3. (findrange val
  4. '(
  5.    ( (0 51) "01")
  6.    ( (52 76) "02")
  7.    ( (77 121) "03")
  8.    ( (122 176) "04")
  9.    ( (177 nil) "05")
  10. )
  11. )
  12. >> "02"
  13. |;
  14. (setq findrange
  15. (lambda (v L)
  16.    (if (and (numberp v) (listp L))
  17.      (vl-some
  18.        '(lambda (x / mn mx)
  19.          (setq mn (caar x))
  20.          (setq mx (cadar x))
  21.          (if (apply '<= (append (if mn (list mn)) (list v) (if mx (list mx)) ))
  22.            (cadr x)
  23.          ); if
  24.        ); lambda
  25.        L
  26.      ); vl-some
  27.    ); if
  28. ); lambda (v L)
  29. ); setq findrange
回复

使用道具 举报

58

主题

3353

帖子

33

银币

顶梁支柱

Rank: 50Rank: 50

铜币
1761
发表于 2022-7-5 15:39:31 | 显示全部楼层
另一个
  1. (setq dist (- dist1 40))
  2. (cond ((<= dist1  200) (princ "\nI am less than 200."))
  3.      ((<  dist1  400) (princ "\nI am more than 200 and less than 400."))
  4.      ((<  dist1  600) (princ "\nI am more than 200 and less than 600."))
  5.      ((<  dist1  800) (princ "\nI am more than 200 and less than 800."))
  6.      ((<  dist1 1000) (princ "\nI am more than 200 and less than 1000."))
  7.      ((princ "\nI am more than 1000."))
  8. )
回复

使用道具 举报

发表回复

您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

  • 微信公众平台

  • 扫描访问手机版

  • 点击图片下载手机App

QQ|关于我们|小黑屋|乐筑天下 繁体中文

GMT+8, 2025-3-14 21:04 , Processed in 1.741424 second(s), 72 queries .

© 2020-2025 乐筑天下

联系客服 关注微信 帮助中心 下载APP 返回顶部 返回列表