有效位函数(fysf)
本帖最后由 muwind 于 2020-6-14 19:27 编辑;10多年前写的,实现如下功能(公司规定):;当数大于100时,无小数,
;当数小于100大于10,保留1位小数
;当数大于0.1小于10时候,保留2位小数
;当数小于0.1时候,保留两位有效数字
;有效数字Significant figures
;原数字Original number
(defun FySF ( Original_num / NowDS )
(if (/= (getvar "DIMZIN") 8)
(progn
(setq NowDS(getvar "DIMSTYLE"))
(setvar "DIMZIN" 8)
(command "-dimstyle" "s" NowDS "y")
)
)
;消除后续0,因为修改了变量会出现替代样式,本人有强迫症看不得。
;如果能确定"DIMZIN"的值是8,或者其他地方有设置,以上代码可以省略
(cond
((< Original_num 0.1)
(rtos Original_num 2 (+ 1 (atoi (substr (rtos Original_num 1 0) 4)))))
((< Original_num 10) (rtos Original_num 2 2))
((< Original_num 100) (rtos Original_num 2 1))
(T (rtos Original_num 2 0))
)
)
;发出来一是求优化,一是分享下
楼主用下来有什么问题吗? xvjiex 发表于 2020-6-15 13:48
楼主用下来有什么问题吗?
没发现没什么问题 ,正常使用
感觉有点啰嗦,^_^ 我也感觉很好,感谢分享! 小白请教下大佬,这个怎么调用..直接存为.lsp吗?命令在哪设置 另存为lsp的话你要加载一次
放在你的lisp函数库里面一起加载就可以直接调用了
( FySF 10.23511 ) 返回10.2
( FySF 1.023511 ) 返回1.02
( FySF 1023.511 ) 返回1023
( FySF 0.01023511 ) 返回0.01
( FySF 0.0123511 ) 返回0.012
很好,就找这个呢
页:
[1]