明经CAD社区

 找回密码
 注册

QQ登录

只需一步,快速开始

搜索
查看: 1779|回复: 8

求助:用lisp程序如何删除数字的前导0+0?

[复制链接]
发表于 2005-4-16 09:11 | 显示全部楼层 |阅读模式
我现在图形中的文字格式是:0+001.23、0+023.35、1+235.68等.我现在的想法是:能否用lisp程序,把所有文字的前面加号与前导0删除,后变为:1.23、23.35、1235.68.要求数字的中心不变,各位大侠,请问有方法吗?
发表于 2005-4-16 11:40 | 显示全部楼层
这个好解决,你把要修改的文字都加入一个选择集中,然后逐个判断第个字符中“+”的位置,然后去掉“+”及其前面的部分,再把剩余部分用 atof 转换成实数,再用 rtos 转换回字符即可。
 楼主| 发表于 2005-4-16 12:20 | 显示全部楼层
谢谢你的提示,但是我对lisp一点不懂。请问能否帮我写一个出来。谢谢。
发表于 2005-4-16 12:32 | 显示全部楼层
使用AutoCAD命令好了。


先改一下数字的对齐点为中心点,命令:justifytext,选mc


然后用Find命令查找替换。找0+0, 替换为空,再找+号,替换为空。
 楼主| 发表于 2005-4-16 12:48 | 显示全部楼层
OK,问题解决了。不过要是有自动的lisp程序就了。以后我只要运行就OK啦。
发表于 2005-4-16 14:07 | 显示全部楼层
(defun c:test ()
(setvar "cmdecho" 0)
(prompt "\n选择要修改的文字......")
(setq ss (ssget))
(setq i 0)
(repeat (sslength ss)
(setq ent (ssname ss i))
(command "justifytext" ent "" "mc")
(setq data (entget ent))
(setq tex (cdr (assoc 1 data)))
(setq tex (vl-string-subst "" "+" tex))
(setq tex (rtos (atof tex)))
(setq data (subst (cons 1 tex) (assoc 1 data) data))
(entmod data)
(setq i (1+ i))
)
(setvar "cmdecho" 1)
)
 楼主| 发表于 2005-4-17 09:18 | 显示全部楼层
谢谢ljpnb,你真是个好同学。前导零是删除啦。但是删掉后的数字在后多了几个零啊。能否保持小数后面的位数不变以呢?
发表于 2005-4-17 09:57 | 显示全部楼层
kgd4510发表于2005-4-17 9:18:00谢谢ljpnb,你真是个好同学。前导零是删除啦。但是删掉后的数字在后多了几个零啊。能否保持小数后面的位数...

嘿嘿,多一把年纪了,还同学啊。 后面多出的几个零将系统变量“dimzin”设置一下。或者 你把(setq tex (rtos (atof tex)))改成(setq tex (rtos (atof tex) 2 2))就行了。
 楼主| 发表于 2005-4-18 16:35 | 显示全部楼层
OK啦,问题完美解决。谢谢
您需要登录后才可以回帖 登录 | 注册

本版积分规则

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

GMT+8, 2024-5-17 19:57 , Processed in 0.195080 second(s), 25 queries , Gzip On.

Powered by Discuz! X3.4

Copyright © 2001-2021, Tencent Cloud.

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