乐筑天下

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

[编程交流] 计算打印问题!!

[复制链接]

107

主题

615

帖子

575

银币

中流砥柱

Rank: 25

铜币
521
发表于 2022-7-6 00:02:42 | 显示全部楼层 |阅读模式
你好,我的朋友,我需要一点帮助。
我有下面的lisp,可以进行相同的计算
  1. (vl-load-com)
  2. (defun c:cal(/ A E I L S K)
  3. (if
  4.    (and (setq
  5.           s (ssget '((0 . "ARC,CIRCLE,ELLIPSE,LINE,*POLYLINE,SPLINE")
  6.                      (-4 . "<AND")
  7.                      (0 . "LWPOLYLINE")
  8.                      (70 . 1)
  9.                      (-4 . "AND>")
  10.                     )
  11.             )
  12.         )
  13.         (progn
  14.           (initget "A B")
  15.           (setq
  16.             k (cond
  17.                 ((getkword "\n For calculation select [Type 1 (Α) / Type 2 (Β)] < A > :"))
  18.                 ("A")
  19.               )
  20.           )
  21.         )
  22.    )
  23.     (progn
  24.       (setq l 0.0
  25.             a 0.0
  26.             i 0
  27.       )
  28.       (while (< i (sslength s))
  29.         (progn
  30.           (setq e (ssname s i)
  31.                 l (+ l
  32.                      (vlax-curve-getdistatparam e (vlax-curve-getendparam e))
  33.                   )
  34.                 a (+ a (vlax-curve-getarea e))
  35.           )
  36.         )
  37.         (setq i (1+ i))
  38.       )
  39.       (textscr)
  40.       (princ "\n")
  41.       (princ "\n        Calculations Results ")
  42.       (princ "\n")
  43.       (if (eq k "A")
  44.         (progn
  45.           (princ "\n Type 1: ")
  46.           (princ
  47.             (strcat
  48.               (rtos (/ (* (- (expt (+ (sqrt a) 1) 2) a) l 0.25) (sqrt a))
  49.                     2
  50.                     2
  51.               )
  52.               "sq.m"
  53.             )
  54.           )
  55.         )
  56.         (progn
  57.           (princ "\nType 2: ")
  58.           (princ
  59.             (strcat
  60.               (rtos (/ (* (- (expt (+ (sqrt a) 4) 2) a) l 0.25) (sqrt a))
  61.                     2
  62.                     2
  63.               )
  64.               " sq.m"
  65.             )
  66.           )
  67.         )
  68.       )
  69.       (princ "\n Type 3: ")
  70.       (princ (strcat (rtos (* a 0.1) 2 2) " sq.m"))
  71.     )
  72. )
  73. (princ)
  74. )

 
如果我选择[A]类型1(例如)print toy me
类型1=。。。。平方米
类型3=。。。。平方米
 
以同样的方式
如果我选择类型2(例如),请打印toy me
类型2=。。。。平方米
类型3=。。。。平方米
 
我只需要打印这个
 
对于[A]
 
如果类型1>类型3,则仅打印类型3
如果类型1
 
如果我选择
 
如果类型2>类型3,则仅打印类型3
如果类型2
 
有人能帮我吗?
回复

使用道具 举报

35

主题

2471

帖子

2447

银币

初露锋芒

Rank: 3Rank: 3Rank: 3

铜币
174
发表于 2022-7-6 00:08:37 | 显示全部楼层
您应该将计算从PRINC调用中移出,并将其存储在专用变量(即t1、t2和t3)下;使用IF比较结果并相应打印。可能还想检查STRCAT功能,以优化代码的人机工程学。
回复

使用道具 举报

107

主题

615

帖子

575

银币

中流砥柱

Rank: 25

铜币
521
发表于 2022-7-6 00:15:00 | 显示全部楼层
这对我来说有点复杂。你能修好吗?
回复

使用道具 举报

107

主题

615

帖子

575

银币

中流砥柱

Rank: 25

铜币
521
发表于 2022-7-6 00:19:41 | 显示全部楼层
谢谢,我会试试的,如果我有其他问题,我会告诉你。。。。。。。。。。。。。。
回复

使用道具 举报

35

主题

2471

帖子

2447

银币

初露锋芒

Rank: 3Rank: 3Rank: 3

铜币
174
发表于 2022-7-6 00:23:30 | 显示全部楼层
对不起,我不会这么做;相反,我会给你一个开始的例子:
 
  1. (setq t1 (/ (* (- (expt (+ (sqrt a) 1) 2) a) l 0.25) (sqrt a))
  2. ...
  3. (if (eq k "A")
  4. (if (> t1 t3)
  5. (princ (strcat "\n Type 3: " (rtos t3 2 2) " sq.m"))
  6. (princ (strcat "\n Type 1: " (rtos t1 2 2) " sq.m"))
  7. )
  8. ...
回复

使用道具 举报

107

主题

615

帖子

575

银币

中流砥柱

Rank: 25

铜币
521
发表于 2022-7-6 00:24:28 | 显示全部楼层
  1. (vl-load-com)
  2. (defun c:cal(/ A E I L S K)
  3. (if
  4.    (and (setq
  5.           s (ssget '((0 . "ARC,CIRCLE,ELLIPSE,LINE,*POLYLINE,SPLINE")
  6.                      (-4 . "<AND")
  7.                      (0 . "LWPOLYLINE")
  8.                      (70 . 1)
  9.                      (-4 . "AND>")
  10.                     )
  11.             )
  12.         )
  13.         (progn
  14.           (initget "A B")
  15.           (setq
  16.             k (cond
  17.                 ((getkword "\n For calculation select [Type 1 (Α) / Type 2 (Β)] < A > :"))
  18.                 ("A")
  19.               )
  20.           )
  21.         )
  22.    )
  23.     (progn
  24.       (setq l 0.0
  25.             a 0.0
  26.             i 0
  27.       )
  28.       (while (< i (sslength s))
  29.         (progn
  30.           (setq e (ssname s i)
  31.                 l (+ l
  32.                      (vlax-curve-getdistatparam e (vlax-curve-getendparam e))
  33.                   )
  34.                 a (+ a (vlax-curve-getarea e))
  35.           )
  36.         )
  37.         (setq i (1+ i))
  38.       )
  39.       (textscr)
  40. (setq t1 (/ (* (- (expt (+ (sqrt a) 1) 2) a) l 0.25) (sqrt a))
  41. (setq t2 (/ (* (- (expt (+ (sqrt a) 4) 2) a) l 0.25) (sqrt a))
  42. (setq t3 (* a 0.1) (sqrt a))
  43. (if (eq k "A")
  44. (if (> t1 t3)
  45. (princ (strcat "\n Type 3: " (rtos t3 2 2) " sq.m"))
  46. (princ (strcat "\n Type 1: " (rtos t1 2 2) " sq.m"))
  47. )
  48. (if (eq k "B")
  49. (if (> t2 t3)
  50. (princ (strcat "\n Type 3: " (rtos t3 2 2) " sq.m"))
  51. (princ (strcat "\n Type 1: " (rtos t1 2 2) " sq.m"))
  52. )
  53. (princ)
  54. )

 
现在根本不起作用
回复

使用道具 举报

35

主题

2471

帖子

2447

银币

初露锋芒

Rank: 3Rank: 3Rank: 3

铜币
174
发表于 2022-7-6 00:32:30 | 显示全部楼层
你需要检查括号的平衡,有很多括号没有闭合对。
回复

使用道具 举报

107

主题

615

帖子

575

银币

中流砥柱

Rank: 25

铜币
521
发表于 2022-7-6 00:32:55 | 显示全部楼层
我什么都不想做。
回复

使用道具 举报

35

主题

2471

帖子

2447

银币

初露锋芒

Rank: 3Rank: 3Rank: 3

铜币
174
发表于 2022-7-6 00:38:56 | 显示全部楼层
请检查这篇关于括号匹配的文章。
回复

使用道具 举报

107

主题

615

帖子

575

银币

中流砥柱

Rank: 25

铜币
521
发表于 2022-7-6 00:41:25 | 显示全部楼层
我做不到。这很难
回复

使用道具 举报

发表回复

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

本版积分规则

  • 微信公众平台

  • 扫描访问手机版

  • 点击图片下载手机App

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

GMT+8, 2025-7-1 10:53 , Processed in 0.351353 second(s), 73 queries .

© 2020-2025 乐筑天下

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