乐筑天下

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

[编程交流] 关于输入值的快速问题

[复制链接]

1

主题

2

帖子

1

银币

初来乍到

Rank: 1

铜币
5
发表于 2022-7-6 12:24:07 | 显示全部楼层 |阅读模式
大家好。
 
我正在为大学制作一个程序,从指定的dims创建灌木部分拳头角度drg。稍后我将使用DCL,但现在我只是想了解一下错误处理和输入验证。
 
  1. (defun jm_dims () ;; Sets all of the user defined variables. Preset for testing!
  2. (setq jm_p0 (getpoint "\nPick a Point of Origin: "))
  3. (command "vslide" "BUSH3.sld")
  4. (initget 7)
  5. (setq jm_dima (getint "\nEnter Dimension A: "))
  6. (initget 7)
  7. (setq jm_dimb (getint "\nEnter Dimension B: "))
  8. (initget 7)
  9. (setq jm_dimc (getint "\nEnter Dimension C: "))
  10. (initget 7)
  11. [b](setq jm_dimd (getint "\nEnter Dimension D: "))[/b]
  12. (initget 7)
  13. [b](setq jm_dime (getint "\nEnter Dimension E: "))[/b]
  14. (initget 7)
  15. (setq jm_dimf (getint "\nEnter Dimension F: "))
  16. (initget 7)
  17. (setq jm_dimg (getint "\nEnter Dimension G: "))
  18. )

 
以上是从用户那里获取所有所需信息的函数。(无sh*t)
 
令我担忧的是,我不知道如何确保维度E
 
一、 e.如果dimd=1000,用户输入1500作为dime,它会显示“woa’ang on,dime必须小于dimd…请重试chap”。
 
没有问题,我知道,但开发者指南一直没有帮助我,我找不到任何我可以适应这个论坛。
 
提前欢呼。
 
ps这是到目前为止的完整程序。
 
  1. ;_______________________________
  2. ;
  3. ; James Morris
  4. ; Morgan Professional Services
  5. ; Programming Concepts Project
  6. ; Parametric Bush Program      
  7. ; JM_AUTOBUSH.LSP      
  8. ;
  9. ;¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯
  10. (prompt "loading JM_AUTOBUSH.lsp... ") ;; displays to the user that the program is loading.
  11. (defun jm_dims () ;; Sets all of the user defined variables. Preset for testing!
  12. (setq jm_p0 (getpoint "\nPick a Point of Origin: "))
  13. (command "vslide" "BUSH3.sld")
  14. (initget 7)
  15. (setq jm_dima (getint "\nEnter Dimension A: "))
  16. (initget 7)
  17. (setq jm_dimb (getint "\nEnter Dimension B: "))
  18. (initget 7)
  19. (setq jm_dimc (getint "\nEnter Dimension C: "))
  20. (initget 7)
  21. (setq jm_dimd (getint "\nEnter Dimension D: "))
  22. (initget 7)
  23. (setq jm_dime (getint "\nEnter Dimension E: "))
  24. (initget 7)
  25. (setq jm_dimf (getint "\nEnter Dimension F: "))
  26. (initget 7)
  27. (setq jm_dimg (getint "\nEnter Dimension G: "))
  28. ;  (setq ;; Picks point of origin and requests dimensions.
  29. ;
  30. ;    jm_dima 75
  31. ;    jm_dimb 100
  32. ;    jm_dimc 20
  33. ;    jm_dimd 200
  34. ;    jm_dime 50
  35. ;    jm_dimf 80
  36. ;    jm_dimg 100
  37. ;    jm_polywidth 0.25
  38. ;  )
  39. )
  40. (defun jm_loadlinetypes ()
  41. (setq jm_linelist '(("Center" . "acadiso.lin") ("Hidden" . "acadiso.lin")))
  42. (foreach lin jm_linelist
  43.    (if (tblsearch "LTYPE" (car lin))
  44.      (command ".-linetype" "_Load" (car lin) (cdr lin) "_Yes" "")
  45.      (command ".-linetype" "_Load" (car lin) (cdr lin) "")
  46.    )
  47. )
  48. )
  49. (defun jm_pointcalculations () ;; all of the refpoints are defined here.
  50. (setq  ;;
  51. ; Descided this wasnt what I was after. The plan was to draw half
  52. ; then mirror along the centerline. I didn't like how it was
  53. ; looking so I binned it.
  54. ;
  55. ;    jm_p1 (getpoint "\nPick Point of origin: ")
  56. ;    jm_p2 (list (car jm_p1) (- (cadr jm_p1) (/ jm_dimd 2)))
  57. ;    jm_p3 (list (+ (car jm_p2) jm_dima) (cadr jm_p2))
  58. ;    jm_p4 (list (car jm_p3) (cadr jm_p1))
  59. ;    jm_p5 (list (car jm_p3) (- (cadr jm_p1) (/ jm_dimg 2)))
  60. ;    jm_p6 (list (+ (car jm_p5) jm_dimb) (cadr jm_p5))
  61. ;    jm_p7 (list (car jm_p6) (cadr jm_p1))
  62. ;    jm_p8 (list (car jm_p7) (- (cadr jm_p1) (/ jm_dimf 2)))
  63. ;    jm_p9 (list (+ (car jm_p8) jm_dimc) (cadr jm_p8))
  64. ;    jm_p10 (list (car jm_p9) (cadr jm_p1))
  65. ;    jm_p11 (list (car jm_p1) (- (cadr jm_p1) (/ jm_dime 2)))
  66. ;    jm_p12 (list (car jm_p10) (- (cadr jm_p1) (/ jm_dime 2)))
  67. ;    jm_p13 (list (+ (car jm_p10) (/ jm_dimd 2)) (cadr jm_p10))
  68. ;    jm_p14 (list (- (car jm_p1) jm_dimd) (cadr jm_p1))
  69. ;    jm_p15 (list (- (car jm_p14) jm_dimd) (cadr jm_p1))
  70. ;    jm_p0 (getpoint "\nPick a Point of Origin: ")
  71.    jm_p1 (list (car jm_p0) (- (cadr jm_p0) (/ jm_dimd 2)))
  72.    jm_p2 (list (+ (car jm_p1) jm_dima) (cadr jm_p1))
  73.    jm_p3 (list (car jm_p2) (+ (cadr jm_p2) jm_dimd))
  74.    jm_p4 (list (car jm_p1) (cadr jm_p3))
  75.    jm_p5 (list (car jm_p2) (- (cadr jm_p0) (/ jm_dime 2)))
  76.    jm_p6 (list (+ (car jm_p5) jm_dimb) (cadr jm_p5))
  77.    jm_p7 (list (car jm_p6) (+ (cadr jm_p5) jm_dime))
  78.    jm_p8 (list (car jm_p5) (cadr jm_p7))
  79.    jm_p9 (list (car jm_p6) (- (cadr jm_p0) (/ jm_dimf 2)))
  80.    jm_p10 (list (+ (car jm_p9) jm_dimc) (cadr jm_p9))
  81.    jm_p11 (list (car jm_p10) (+ (cadr jm_p9) jm_dimf))
  82.    jm_p12 (list (car jm_p9) (cadr jm_p11))
  83.    jm_p13 (list (car jm_p1) (- (cadr jm_p0) (/ jm_dimg 2)))
  84.    jm_p14 (list (car jm_p10) (cadr jm_p13))
  85.    jm_p15 (list (car jm_p1) (+ (cadr jm_p0) (/ jm_dimg 2)))
  86.    jm_p16 (list (car jm_p10) (cadr jm_p15))
  87.    jm_p17 (list (- (car jm_p0) (* jm_dimd 2)) (cadr jm_p0))
  88.    jm_p18 (list (- (car jm_p0) jm_dimd) (cadr jm_p0))
  89.    jm_p19 (list (+ (car jm_p10) (/ jm_dimd 2)) (cadr jm_p0))
  90. )
  91. )
  92. (defun jm_drawthe****** ()
  93. ; I've binned these for the same reason as the points above
  94. ;
  95. ;  (command "pline" jm_p1 jm_p2 jm_p3 jm_p4)
  96. ;  (command)
  97. ;  (command "pline" jm_p5 jm_p6 jm_p7)
  98. ;  (command)
  99. ;  (command "pline" jm_p8 jm_p9 jm_p10)
  100. ;  (command)
  101. ;  (command "line" jm_p11 jm_p12)
  102. ;  (command)
  103. ;  (command "Circle" jm_p14 "d" jm_dimd)
  104. ;  (command)
  105. ;  (command "Circle" jm_p14 "d" jm_dime)
  106. ;  (command)
  107. ;  (command "Circle" jm_p14 "d" jm_dimf)
  108. ;  (command)
  109. ;  (command "Circle" jm_p14 "d" jm_dimg)
  110. ;  (command)
  111. ;  (command "line" jm_p15 jm_p13)
  112. ;  (command)
  113. (command "-layer" "Make" "PART" "Color" "Green" "" "") (command) ;; sets the layer prior to drawing the line.
  114. ;  (command "pline" jm_p1 "w" jm_polywidth "" jm_p2 jm_p3 jm_p4 "c") (command) ;; polylines look ****
  115. ;  (command "pline" jm_p5 "w" jm_polywidth "" jm_p6 jm_p7 jm_p8) (command)
  116. ;  (command "pline" jm_p9 "w" jm_polywidth "" jm_p10 jm_p11 jm_p12) (command)
  117. (command "line" jm_p1 jm_p2 jm_p3 jm_p4 "c") (command)
  118. (command "line" jm_p5 jm_p6 jm_p7 jm_p8) (command)
  119. (command "line" jm_p9 jm_p10 jm_p11 jm_p12) (command)
  120. (command "circle" jm_p18 "d" jm_dimd) (command)
  121. (command "circle" jm_p18 "d" jm_dime) (command)
  122. (command "circle" jm_p18 "d" jm_dimf) (command)
  123. (command "circle" jm_p18 "d" jm_dimg) (command)
  124. (command "-layer" "Make" "HIDDEN" "Color" "Blue" "" "Ltype" "Hidden" "" "") (command)
  125. (command "line" jm_p13 jm_p14) (command)
  126. (command "line" jm_p15 jm_p16) (command)
  127. (command "-layer" "Make" "CENTER" "Color" "Red" "" "Ltype" "Center" "" "") (command)
  128. (command "line" jm_p17 jm_p19) (command)
  129. (command "-layer" "Set" "0" "") (command)
  130. (command "regenall") (command)
  131. (command "Zoom" "Extents") (command)
  132. (princ)
  133. )
  134. (defun c:jm_start ()
  135. (setq ;;
  136.    jm_oldosmode (getvar "osmode")
  137.    jm_oldcmdecho (getvar "cmdecho")
  138. )
  139. (setvar "osmode" 0)
  140. (setvar "cmdecho" 0)
  141. (jm_dims)
  142. (jm_pointcalculations)
  143. (jm_loadlinetypes)
  144. (jm_drawthe******)
  145. (jm_debug) ;; activated when wanting to print all variables and quantities to commandline.
  146. (setvar "osmode" jm_oldosmode)
  147. (princ)
  148. (setvar "cmdecho" jm_oldcmdecho)
  149. (princ)
  150. )
  151. (defun jm_debug () ; Debugging mode. lists all variables and their current values
  152. (princ "\n") (princ "\nUser Defined Variables...")
  153. (princ "\njm_dima = ") (princ jm_dima) (princ "\njm_dimb = ") (princ jm_dimb)
  154. (princ "\njm_dimc = ") (princ jm_dimc) (princ "\njm_dimd = ") (princ jm_dimd)
  155. (princ "\njm_dime = ") (princ jm_dime) (princ "\njm_dimf = ") (princ jm_dimf)
  156. (princ "\njm_dimg = ") (princ jm_dimg) (princ "\njm_polywidth = ") (princ jm_polywidth)
  157. (princ "\n") (princ "\nCalculated Points...")
  158. (princ "\njm_p0 = ") (princ jm_p0) (princ "\njm_p1 = ") (princ jm_p1)
  159. (princ "\njm_p2 = ") (princ jm_p2) (princ "\njm_p3 = ") (princ jm_p3)
  160. (princ "\njm_p4 = ") (princ jm_p4) (princ "\njm_p5 = ") (princ jm_p5)
  161. (princ "\njm_p6 = ") (princ jm_p6) (princ "\njm_p7 = ") (princ jm_p7)
  162. (princ "\njm_p8 = ") (princ jm_p8) (princ "\njm_p9 = ") (princ jm_p9)
  163. (princ "\njm_p10 = ") (princ jm_p10) (princ "\njm_p11 = ") (princ jm_p11)
  164. (princ "\njm_p12 = ") (princ jm_p12) (princ "\njm_p13 = ") (princ jm_p13)
  165. (princ "\njm_p14 = ") (princ jm_p14) (princ "\njm_p15 = ") (princ jm_p15)
  166. (princ "\njm_p16 = ") (princ jm_p16) (princ "\njm_p17 = ") (princ jm_p17)
  167. (princ "\njm_p18 = ") (princ jm_p18) (princ "\njm_p19 = ") (princ jm_p19)
  168. (princ "\n")
  169. )
  170. (prompt "\n...loaded ")
  171. (terpri)
  172. (prin1)
回复

使用道具 举报

26

主题

1495

帖子

20

银币

初露锋芒

Rank: 3Rank: 3Rank: 3

铜币
118
发表于 2022-7-6 12:57:01 | 显示全部楼层
你需要这样的东西:
 
  1. [b][color=BLACK]([/color][/b]initget 7[b][color=BLACK])[/color][/b]
  2. [b][color=BLACK]([/color][/b]setq jm_dimd [b][color=FUCHSIA]([/color][/b]getint [color=#2f4f4f]"\nEnter Dimension D: "[/color][b][color=FUCHSIA])[/color][/b][b][color=BLACK])[/color][/b]
  3. [b][color=BLACK]([/color][/b]while [b][color=FUCHSIA]([/color][/b]or [b][color=NAVY]([/color][/b]not jm_dime[b][color=NAVY])[/color][/b]
  4.           [b][color=NAVY]([/color][/b]> jm_dime jm_dimd[b][color=NAVY])[/color][/b][b][color=FUCHSIA])[/color][/b]
  5.       [b][color=FUCHSIA]([/color][/b]initget 7[b][color=FUCHSIA])[/color][/b]
  6.       [b][color=FUCHSIA]([/color][/b]setq jm_dime [b][color=NAVY]([/color][/b]getint [color=#2f4f4f]"\nEnter Dimension E: "[/color][b][color=NAVY])[/color][/b][b][color=FUCHSIA])[/color][/b][b][color=BLACK])[/color][/b]

 
-大卫
回复

使用道具 举报

1

主题

2

帖子

1

银币

初来乍到

Rank: 1

铜币
5
发表于 2022-7-6 13:07:09 | 显示全部楼层
呵呵,我很欣赏这一章。虽然我试了一下,但没成功,但在里面加了一个“or”并没有出现在我的脑海里。
 
干杯
 
詹姆斯
回复

使用道具 举报

dhl

10

主题

36

帖子

26

银币

初露锋芒

Rank: 3Rank: 3Rank: 3

铜币
52
发表于 2022-7-6 13:35:56 | 显示全部楼层
我想我会在while语句中使用if或cond短语,即。
 
[code](而(dima
回复

使用道具 举报

发表回复

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

本版积分规则

  • 微信公众平台

  • 扫描访问手机版

  • 点击图片下载手机App

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

GMT+8, 2025-3-5 06:01 , Processed in 0.429058 second(s), 60 queries .

© 2020-2025 乐筑天下

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