明经CAD社区

 找回密码
 注册

QQ登录

只需一步,快速开始

搜索
查看: 3773|回复: 37

[机械] 数值圆整

  [复制链接]
发表于 2022-9-20 07:52:05 | 显示全部楼层 |阅读模式
本帖最后由 自贡黄明儒 于 2022-9-20 08:03 编辑

今天帮人写了一程序,要求: 个位数字小于2时,舍去;3~7时变为5;大于7时,进位
这种进位方式误差不超过3mm,采用四舍五入误差会更大一些
与vbs上很多进位方式也是不同的。
实际工作中,个位数5或者0,也便于下料看尺寸
这个适合练手。。。
;;(_MyNumRound 32.5)==>30
;;(_MyNumRound 37.5)==>35
;;(_MyNumRound 38.5)==>40
(defun _MyNumRound (num / A)
  (setq num (itoa (fix num)))
  (setq num (VL-STRING->LIST num))
  (setq num (reverse num))
  (setq a (car num))
  (setq num (cdr num))
  (cond        ((<= a 50) (setq a 48) (atoi(VL-LIST->STRING (reverse (cons a num)))))
        ((> a 55) (setq a 48)(+ (atoi(VL-LIST->STRING (reverse (cons a num)))) 10))
        (T (setq a 53)(atoi(VL-LIST->STRING (reverse (cons a num)))))
  )
)

本帖子中包含更多资源

您需要 登录 才可以下载或查看,没有账号?注册

x

评分

参与人数 1明经币 +1 金钱 +5 收起 理由
tigcat + 1 + 5

查看全部评分

"觉得好,就打赏"
还没有人打赏,支持一下
发表于 2022-9-20 15:09:10 | 显示全部楼层
liuhe 发表于 2022-9-20 10:04
大佬,你帮别人写插件 收费么?不方便说也没关系。只是最近没啥动力玩下去了,工作需求基本满足了

我半小时写个程序收别人5块钱别人都觉得不划算

点评

哈哈哈。。。。。要给自己定一个规矩  发表于 2022-9-20 15:33
回复 支持 1 反对 0

使用道具 举报

发表于 2022-9-23 08:42:49 | 显示全部楼层
本帖最后由 llsheng_73 于 2022-9-26 00:36 编辑

凑个热闹
  1. (defun fixn(a n / b)(if(zerop(setq b(rem a n)))a(*(+(/(- a b 0.)n)(if(<(+ b b)n)0 1))n)))

(fixn 10.7 0.5)
10.5
_$ (fixn 10.3 0.5)
10.5
_$ (fixn 10.2 0.5)
10.0
_$ (fixn 9.8 0.5)
10.0
_$ (fixn 1053.5 5)
1055.0
_$ (fixn 1052 5)
1050.0
其实这个的真正用法是应该是下边这样

(mapcar'(lambda(x)(fixn x 32))'(15 33 79 124 148))
(0.0 32.0 64.0 128.0 160.0)
_$ (mapcar'(lambda(x)(fixn x 7))'(15 33 79 124 148))
(14.0 35.0 77.0 126.0 147.0)
_$ (mapcar'(lambda(x)(fixn x 13))'(15 33 79 124 148))
(13.0 39.0 78.0 130.0 143.0)
_$ (mapcar'(lambda(x)(fixn x 27))'(15 33 79 124 148))
(27.0 27.0 81.0 135.0 135.0)
更多的时候会涉及小数

(mapcar'(lambda(x)(fixn x 0.3))'(1.5 3.3 7.9 12.4 14.8))
(1.5 3.3 7.8 12.3 14.7)

(mapcar'(lambda(x)(fixn x 0.02))'(1.55 3.213 7.899 12.313 14.819))
(1.56 3.22 7.9 12.32 14.82)



评分

参与人数 2明经币 +2 金钱 +5 收起 理由
tigcat + 1 + 5 龙总,总有简洁的写法!
自贡黄明儒 + 1 很给力!

查看全部评分

发表于 2022-9-20 09:21:53 | 显示全部楼层
本帖最后由 xtjd 于 2022-9-20 14:23 编辑

;黄总代码改用wcmatch法
(defun t1(num / a)
  (setq a(itoa(fix num)))
  (+(*(atoi(substr a 1(1-(strlen a))))10)
    (cond
      ((wcmatch a "*[0-2]") 0)
      ((wcmatch a "*[3-7]") 5)
      (t 10)
    )
  )
)

评分

参与人数 1明经币 +1 收起 理由
自贡黄明儒 + 1 赞一个!

查看全部评分

发表于 2022-9-20 08:15:24 | 显示全部楼层
黄老大早就发布实用函数啦
发表于 2022-9-20 08:28:40 | 显示全部楼层
黄老大早就发布实用函数啦
发表于 2022-9-20 09:12:52 | 显示全部楼层
感谢黄大师分享程序!
发表于 2022-9-20 09:22:14 | 显示全部楼层
感谢分享      
发表于 2022-9-20 09:24:51 | 显示全部楼层
感谢黄大师分享程序!
发表于 2022-9-20 09:49:26 | 显示全部楼层
虽然用不上,还是要向大佬学习。
发表于 2022-9-20 10:04:19 | 显示全部楼层
大佬,你帮别人写插件 收费么?不方便说也没关系。只是最近没啥动力玩下去了,工作需求基本满足了

点评

一月接一个小程序,够油钱。  发表于 2022-9-20 13:23
您需要登录后才可以回帖 登录 | 注册

本版积分规则

小黑屋|手机版|CAD论坛|CAD教程|CAD下载|联系我们|关于明经|明经通道 ( 粤ICP备05003914号 )  
©2000-2023 明经通道 版权所有 本站代码,在未取得本站及作者授权的情况下,不得用于商业用途

GMT+8, 2024-11-15 19:53 , Processed in 0.186871 second(s), 29 queries , Gzip On.

Powered by Discuz! X3.4

Copyright © 2001-2021, Tencent Cloud.

快速回复 返回顶部 返回列表