bios 发表于 2005-6-10 20:48:00

[讨论]对数字文本的计算修改。

遇到这样的问题


单行文本总的数字,需要凡是数字都想编辑修改加同一个数字后的结果


比如以前是a,b,c....


现在都修改为a+1.3,b+1.3,c+1.3..........


但有些文本还有这样的情况,比如是写的范围a~b,这是在同一个文本中,想修改为


a+1.3~b+1.3,这样的情况,这就不知道怎修改了。请高手帮忙,由于文本很多,现在所有文本都要加,减同一个数字,手动编辑很难改,还怕修改错

xyp1964 发表于 2005-6-17 22:58:00

本帖最后由 作者 于 2005-6-20 0:21:44 编辑

不适合a~b的情况:


修改程序见4楼。

bios 发表于 2005-6-18 23:58:00

测试了,好像不行的


比如以前我的文本是:1.350~2.300,需要同时加入一个数字比如是1,则修改后是数值是2.350~3.300,就是这个意思,可能我开始没表述清楚

xyp1964 发表于 2005-6-20 00:19:00

(load "xyp_lib")      ;加载通用函数
;|
如果已经下载xyp_lib并放到搜索路径下可以不再下载!
利用以下任何一种方式即可加载和运行通用函数内的所有子程序:
1.在acad.lsp中增加(load"xyp_lib")
2.在每个程序内增加(load"xyp_lib")
3.在command下,输入(load"xyp_lib")
4.在菜单.mnl中增加(load"xyp_lib")
通用函数下载地址:
dispbbs.asp?boardID=3&ID=37554&page=1
|; ;;;
(defun c:test ()      ;(/ m n leng)
   (CMDLA0)
   (setqnum (UREAL 1 "" "\n数值" num)
ss   (ssget '((0 . "*TEXT")))
i   -1
   )
   (while (setq s1 (ssname ss (setq i (1+ i))))
       (setq txt   (dxf 1 (entget s1))
   leng (strlen txt)
   n       1
   m       ""
       )
       (while (< n leng)
         (setq t1 (substr txt n 2))
         (if (= t1 "~")
(setq m n)
         )
         (setq n (1+ n))
       )
       (if(/= m "")
         (progn
(setq tx1         (substr txt 1 (- m 1))
             tx2         (substr txt (+ m 2))
             txt-new (strcat (rtos (+ (atof tx1) num) 2)
               "~"
               (rtos (+ (atof tx2) num) 2)
               )
)
         )
         (setq txt-new (rtos (+ (atof txt) num) 2))
       )
       (sub_upd s1 1 txt-new)
   )
   (CMDLA1)
)

lichh_2003 发表于 2005-6-24 08:50:00

很简单啊,首先转化为DXF格式,然后用编程语言对数字逐个加减一个指定值不久可以了。我倒

lichh_2003 发表于 2005-6-24 08:53:00

很简单啊。在DXF文件中修改就可以了啊,


QQ 10364426
页: [1]
查看完整版本: [讨论]对数字文本的计算修改。