乐筑天下

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

[编程交流] 删除0#039;小数点后的s

[复制链接]

62

主题

466

帖子

404

银币

后起之秀

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

铜币
310
发表于 2022-7-6 10:31:01 | 显示全部楼层 |阅读模式
很快地做了一个Lisp程序的Lisp程序,想知道如何删除零
  1. (defun c:test (/ dist p1 p2 ent)
  2. (setq dist (rtos (distance
  3.    (setq p1 (getpoint "\nSpecify first point: "))
  4.    (setq p2 (getpoint p1 "\nSpecify second point: "))) 2))
  5. (setq ent (entget (car (entsel "\nSelect text to modify: "))))
  6. (entmod (subst (cons 1 dist)(assoc 1 ent) ent))
  7. (princ)
  8. )

 
我的意思示例
 
测量值为46.25而不是46.25000
或42.375而不是42.37500。我不是在寻找(rtos dist 2 2)或。。。距离2 3)
我在寻找某种自动改变精度的条件。
回复

使用道具 举报

114

主题

1万

帖子

1万

银币

中流砥柱

Rank: 25

铜币
543
发表于 2022-7-6 10:38:17 | 显示全部楼层
查看DIMZIN系统变量。
回复

使用道具 举报

62

主题

466

帖子

404

银币

后起之秀

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

铜币
310
发表于 2022-7-6 10:42:15 | 显示全部楼层
美好的谢谢
回复

使用道具 举报

20

主题

338

帖子

323

银币

初露锋芒

Rank: 3Rank: 3Rank: 3

铜币
100
发表于 2022-7-6 10:49:23 | 显示全部楼层
尝试以下操作:
 
  1. (defun set-prec (num / precn numstr)
  2. (setq li (reverse (vl-string->list (rtos num 2 (setq precn 12)))))
  3. (while (= 48 (car li))
  4.    (setq li (reverse (vl-string->list (rtos num 2 (setq precn (1- precn))))))
  5.    )
  6. (setq numstr (rtos num 2 precn))
  7. )

 
(设置prec 1.123456789000)返回“1.123456789”
回复

使用道具 举报

62

主题

466

帖子

404

银币

后起之秀

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

铜币
310
发表于 2022-7-6 10:51:51 | 显示全部楼层
我试着用AUTOLISP尽可能多地学习,但VLISP的调用太大了
回复

使用道具 举报

44

主题

3166

帖子

2803

银币

中流砥柱

Rank: 25

铜币
557
发表于 2022-7-6 10:56:02 | 显示全部楼层
你是说像这样?
 
  1. (defun c:TEST (/ dist eName eData)
  2. (if
  3.    (and
  4.      (setq dist (vl-string-right-trim "0" (rtos (getdist "\nSpecify first point: "))))
  5.      (setq eName (car (entsel "\nSelect text to modify: "))))
  6.    (entmod (subst (cons 1 dist) (assoc 1 (setq eData (entget eName))) eData)))
  7. (princ)) ;_end defun

 
 
请参阅,在这种情况下,当您在没有定义精度的情况下使用rtos时,它会将整个实数作为字符串返回(无论小数位数有多少)。现在将其与vl string right trim函数配对,得到一个返回的字符串,该字符串根据距离以十进制精度动态变化。
 
编辑:不更改系统变量
回复

使用道具 举报

114

主题

1万

帖子

1万

银币

中流砥柱

Rank: 25

铜币
543
发表于 2022-7-6 11:00:08 | 显示全部楼层
 
很抱歉吹毛求疵,但是
 
  1. (rtos nil)
回复

使用道具 举报

114

主题

1万

帖子

1万

银币

中流砥柱

Rank: 25

铜币
543
发表于 2022-7-6 11:07:18 | 显示全部楼层
如果您想完全避免VL:
 
  1. (defun c:test ( / d s )
  2. (if
  3.    (and
  4.      (setq d (getdist "\nSpecify Distance: "))
  5.      (setq s (ssget "_:L" '((0 . "TEXT,MTEXT"))))
  6.    )
  7.    (
  8.      (lambda ( i / e )
  9.        (while (setq e (ssname s (setq i (1+ i))))
  10.          (entupd
  11.            (cdr
  12.              (assoc -1
  13.                (entmod
  14.                  (subst
  15.                    (cons 1
  16.                      (
  17.                        (lambda ( s )
  18.                          (while (eq "0" (substr s (strlen s)))
  19.                            (setq s (substr s 1 (1- (strlen s))))
  20.                          )
  21.                          s
  22.                        )
  23.                        (rtos d)
  24.                      )
  25.                    )
  26.                    (assoc 1 (entget e)) (entget e)
  27.                  )
  28.                )
  29.              )
  30.            )
  31.          )
  32.        )
  33.      )
  34.      -1
  35.    )
  36. )
  37. (princ)
  38. )
回复

使用道具 举报

44

主题

3166

帖子

2803

银币

中流砥柱

Rank: 25

铜币
557
发表于 2022-7-6 11:11:57 | 显示全部楼层
 
 
李,请继续挑剔。。。这是我变得更好的唯一途径眨眼:
 
也许,这更可取:
 
  1. (defun c:TEST (/ dist eName eData)
  2. (vl-load-com)
  3. (if
  4.    (and
  5.      (setq dist (getdist "\nSpecify first point: "))
  6.      (setq dist (vl-string-right-trim "0" (rtos dist)))
  7.      (setq eName (car (entsel "\nSelect text to modify: "))))
  8.    (entmod (subst (cons 1 dist) (assoc 1 (setq eData (entget eName))) eData)))
  9. (princ)) ;_end defun
回复

使用道具 举报

114

主题

1万

帖子

1万

银币

中流砥柱

Rank: 25

铜币
543
发表于 2022-7-6 11:13:40 | 显示全部楼层
 
..........
回复

使用道具 举报

发表回复

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

本版积分规则

  • 微信公众平台

  • 扫描访问手机版

  • 点击图片下载手机App

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

GMT+8, 2025-3-6 17:57 , Processed in 0.373280 second(s), 72 queries .

© 2020-2025 乐筑天下

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