将舍入d的Lisp例程
这是一个令人尴尬的问题,但是否有一个lisp例程在放置文本后将小数点四舍五入?这与单位设置无关;这将只是编辑文件中已有的哑文本元素。我不写代码,但我想象一个文本字符串可以计算数字、小数点和后面的一些字符。如果不能四舍五入,我甚至乐意截断最后一个/额外的字符。我错误地从一个POS(软件)中导出了大量数字数据,数字中有三个四舍五入点。我只需要/想要两个,这样我的船员就不会认为我是****保留者。
有希望吗?
提前感谢 (defun c:R2D2 (/ ss)
(if (setq ss (ssget "_:L" '((0 . "TEXT"))))
((lambda (i / e l)
(while (setq e (ssname ss (setq i (1+ i))))
(setq l (entget e))
(entmod (subst (cons 1 (rtos (atof (cdr (assoc 1 l))) (getvar 'lunits) 2)) (assoc 1 l) l))
)
)
-1
)
)
(princ)
) 好的,所以这并不难。我该把钱寄到哪里?
非常感谢,你刚刚救了我一个早上!
xoxo
...哎呀,可能说得太早了。这在每次拾取的基础上都很有效,但如果我大规模地按窗口选择,则会出现不可预测的结果。
示例:(选择所有单独的文本实体作为一个集合)
CL标高:1278.141接地标高:1277.952(LT)1267.800
产量:
0.00 1278.14 0.00 1277.95 0.00 1267.80
也许区分字母和数字更难? :lol: 改天吧。不客气。
英雄联盟
RoundToDecimalsofTwo
这太完美了。 查看我编辑的xoxo帖子 啊,你没告诉我文字不仅仅是一个数字。 与Alan的代码没有太大不同,符合主题lol
(defun c:C3PO ( / ss )
(if (setq ss (ssget "_:L" '((0 . "TEXT"))))
(
(lambda ( i / e el )
(while (setq e (ssname ss (setq i (1+ i))))
(if (distof (cdr (assoc 1 (setq el (entget e)))))
(entupd
(cdr
(assoc -1
(entmod
(subst
(cons 1
(rtos
(atof
(cdr
(assoc 1 el)
)
)
(getvar 'LUNITS)
2
)
)
(assoc 1 el)
el
)
)
)
)
)
)
)
)
-1
)
)
(princ)
)
用distof检查字符串是个好主意。
谢谢,伙计
页:
[1]
2