乐筑天下

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

[编程交流] 用于舍入文本的Lisp例程

[复制链接]

7

主题

23

帖子

16

银币

初来乍到

Rank: 1

铜币
35
发表于 2022-7-5 23:30:27 | 显示全部楼层 |阅读模式
此lisp例程将任何整数中逗号后的十进制数字设置为2位,即使是在文本中,也可以设置为2位。如何避免出现0。。(例如:25.456~25.460、25.322~25.320)最后0不可取。。
 
回复

使用道具 举报

7

主题

23

帖子

16

银币

初来乍到

Rank: 1

铜币
35
发表于 2022-7-5 23:43:34 | 显示全部楼层
情感应该用情感代替
没有空间。
回复

使用道具 举报

26

主题

1495

帖子

20

银币

初露锋芒

Rank: 3Rank: 3Rank: 3

铜币
118
发表于 2022-7-5 23:50:04 | 显示全部楼层
调查DIMZIN sysvar-David
回复

使用道具 举报

8

主题

81

帖子

45

银币

初露锋芒

Rank: 3Rank: 3Rank: 3

铜币
76
发表于 2022-7-5 23:54:15 | 显示全部楼层
给你。。。我找到了一个旧代码。
似乎与我2011年Acad上的单一测试一起工作。
 
只需键入NP,输入精度并选择文字/多行文字。
 
  1. ;4-9-09
  2. ;Implements user specified precision on integers with or without text
  3. ;used getPrec by CAB
  4. (defun c:NP (/ RtosPrec ss x Number Prec charlist n snumber numlist char strippednumber nnumber NewString)
  5. (vl-load-com)
  6. (setq RtosPrec (getint "Enter Precision to force on all Text and MText Integers:"))
  7. (setq ss (ssget '((-4 . "<OR")(0 . "TEXT")(0 . "MTEXT")(-4 . "OR>"))))
  8. (setq x 0)
  9. (Repeat (sslength ss)
  10. (progn
  11.   (setq Number (ssname ss x))
  12. (defun getPrec (str)
  13.    (if (vl-string-search "/" str)
  14.      (setq str (vl-string-right-trim "0" (rtos (distof str) 2 ))
  15.    )
  16.    (if (vl-string-search "." str)
  17.      (- (strlen str)(vl-string-search "." str) 1)
  18.      0
  19.    )
  20. )
  21. (setq Prec (getprec (cdr (assoc 1 (entget Number)))))
  22. (setq charlist (vl-string->list (cdr (assoc 1 (entget Number)))))
  23. (setq n 0 snumber nil)
  24. (setq numlist (list "0" "1" "2" "3" "4" "5" "6" "7" "8" "9"))
  25. (repeat (length charlist)
  26. (setq char (chr (nth n charlist)))
  27. (if (member char numlist)
  28.   (setq snumber (append snumber (list char)))
  29. );if
  30. (setq n (1+ n))
  31. );repeat
  32. (if snumber
  33. (progn
  34. (setq StrippedNumber 0)
  35. (setq n (length snumber))
  36. (setq char 0)
  37. (repeat (- n prec)
  38. (setq StrippedNumber (+ StrippedNumber (* (atoi (nth char snumber))(expt 10 (1- (- n prec))))))
  39. (setq n (1- n)
  40.         char (1+ char)
  41. );setq
  42. );repeat
  43. (setq n prec)
  44. (setq char (length snumber))
  45. (repeat prec
  46. (setq StrippedNumber (+ StrippedNumber (* (atoi (nth (1- char) snumber))(expt 0.1 n))))
  47. (setq n (1- n)
  48.         char (1- char)
  49. );setq
  50. );repeat
  51. (setq snumber (rtos strippednumber 2 prec))
  52. (setq nnumber (rtos strippednumber 2 rtosprec))
  53. (setq NewString
  54. (strcat
  55. (substr (cdr (assoc 1 (entget Number))) 1 (- (length (vl-string->list (cdr (assoc 1 (entget Number)))))(length (vl-string->list snumber))))
  56. nnumber
  57. )
  58. )
  59. (entmod (subst (cons 1 NewString)(assoc 1 (entget Number)) (entget Number)))
  60. );progn
  61. );if
  62. );progn
  63. (setq x (1+ x))
  64. );repeat
  65. );defun
回复

使用道具 举报

35

主题

2471

帖子

2447

银币

初露锋芒

Rank: 3Rank: 3Rank: 3

铜币
174
发表于 2022-7-6 00:03:32 | 显示全部楼层
Salama,请注意,在高级编辑器中(在帖子输入字段底部的Go advanced按钮),您会发现一个复选框,允许您禁用帖子中的自动表情识别。
 
 
 
此外,在发布代码摘录时,请考虑使用代码标签,而不是引用标签;这将确保保留格式。
回复

使用道具 举报

4

主题

194

帖子

192

银币

初来乍到

Rank: 1

铜币
25
发表于 2022-7-6 00:07:24 | 显示全部楼层
萨拉马,
 
通过使用“cond”语句,可以节省大量的“setq”使用,见下面的示例;
 
修改后的代码;
  1. (setq fixn
  2.     (cond
  3.         ((= remval 0)  (+ fixedv 0))
  4.         ((= remval 1)  (- fixedv 1))
  5.         ((= remval 2)  (- fixedv 2))
  6.         ((= remval 3)  (- fixedv 3))
  7.         ((= remval 4)  (- fixedv 4))
  8.         ((= remval 5)  (+ fixedv 5))
  9.         ((= remval 6)  (+ fixedv 4))
  10.         ((= remval 7)  (+ fixedv 3))
  11.         ((= remval   (+ fixedv 2))
  12.         ((= remval 9)  (+ fixedv 1))
  13.         )
  14.     )

 
您现有的代码;
  1. (if (= remval 0) (setq fixn (+ fixedv 0)))
  2. (if (= remval 1) (setq fixn (- fixedv 1)))
  3. (if (= remval 2) (setq fixn (- fixedv 2)))
  4. (if (= remval 3) (setq fixn (- fixedv 3)))
  5. (if (= remval 4) (setq fixn (- fixedv 4)))
  6. (if (= remval 5) (setq fixn (+ fixedv 5)))
  7. (if (= remval 6) (setq fixn (+ fixedv 4)))
  8. (if (= remval 7) (setq fixn (+ fixedv 3)))
  9. (if (= remval 8 (setq fixn (+ fixedv 2)))
  10. (if (= remval 9) (setq fixn (+ fixedv 1)))
回复

使用道具 举报

pBe

32

主题

2722

帖子

2666

银币

后起之秀

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

铜币
211
发表于 2022-7-6 00:14:13 | 显示全部楼层

  1. (setq fixn (eval
  2.            (nth        remval
  3.                 '((+ fixedv 0)
  4.                   (- fixedv 1)
  5.                   (- fixedv 2)
  6.                   (- fixedv 3)
  7.                   (- fixedv 4)
  8.                   (+ fixedv 5)
  9.                   (+ fixedv 4)
  10.                   (+ fixedv 3)
  11.                   (+ fixedv 2)
  12.                   (+ fixedv 1)
  13.                  )
  14.            )
  15.          )
  16.      )


  1. (setq fixn (eval (cadr
  2.            (assoc remval
  3.                 '((0 (+ fixedv 0))
  4.                   (1 (- fixedv 1))
  5.                   (2 (- fixedv 2))
  6.                   (3 (- fixedv 3))
  7.                   (4 (- fixedv 4))
  8.                   (5 (+ fixedv 5))
  9.                   (6 (+ fixedv 4))
  10.                   (7 (+ fixedv 3))
  11.                   (8 (+ fixedv 2))
  12.                   (9 (+ fixedv 1))
  13.                  )
  14.            )
  15.          )
  16.      )
  17.      )

 
你甚至可以添加
 
  1. (if (and
  2.      (< -1 fixedv 10)
  3.      fixedv) (...))
回复

使用道具 举报

114

主题

1万

帖子

1万

银币

中流砥柱

Rank: 25

铜币
543
发表于 2022-7-6 00:18:58 | 显示全部楼层
或:
  1. (if (< remval 5)
  2.    (setq fixn (- fixedv remval))
  3.    (setq fixn (+ fixedv (- 10 remval)))
  4. )
回复

使用道具 举报

pBe

32

主题

2722

帖子

2666

银币

后起之秀

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

铜币
211
发表于 2022-7-6 00:28:25 | 显示全部楼层
 
真正地哦,伙计,你有没有想过这个?还是你只花了一分钟就想到了?
回复

使用道具 举报

114

主题

1万

帖子

1万

银币

中流砥柱

Rank: 25

铜币
543
发表于 2022-7-6 00:30:57 | 显示全部楼层
 
谢谢pBe-我花了一些时间试图避免if语句,但5及以上的模式很容易识别,因为每种情况下两个数字的总和都是10
回复

使用道具 举报

发表回复

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

本版积分规则

  • 微信公众平台

  • 扫描访问手机版

  • 点击图片下载手机App

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

GMT+8, 2025-3-11 01:35 , Processed in 0.666339 second(s), 83 queries .

© 2020-2025 乐筑天下

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