zhb236623 发表于 2013-7-30 18:18:33

求助 关于文字批量替换,数字递增问题

本帖最后由 zhb236623 于 2013-7-31 18:33 编辑

如图,或者下载CAD图里面有我想要达到的效果……想要把数字批量替换,然后数字递增,批量替换数字的时候按从左到右,从上到下的顺序替换……。应该用得着下面的程序,但是自己能力有限,写不出来。盼高手赐教。 ;;;;取得点集行数,将每行的y坐标列表,lst为点坐标表,rc为容差
(defun y_lst (lst rc / it lst2)
(while (setq lst2 (cons (setq it (cadr (car lst))) lst2)
               lst(vl-remove-if '(lambda (x) (equal it (cadr x) rc)) lst)
         )
)
(vl-sort lst2 (function (lambda (e1 e2) (> e1 e2))))
)
;;;将点集按从上到下,从左到右的顺序排序。pt_lst为点坐标表,rc为容差
(defun dh_zhy_sort_pt (pt_lst rc /      pt_y lst1 pt_lst_new n1      n2 m1 m2 pt_y_a      pt_lst_a lst2)
(setq pt_y (y_lst pt_lst rc))
(setq pt_lst_new '())
(setq lst1 '())
(setq m1 0)
(setq n1 (length pt_y))
(setq n2 (length pt_lst))
(while (/= m1 n1)
    (setq pt_y_a (nth m1 pt_y))
    (setq m2 0)
    (while (/= m2 n2)
      (setq pt_lst_a (nth m2 pt_lst))
      (if (equal pt_y_a (cadr pt_lst_a) rc)
      (setq lst1 (cons pt_lst_a lst1))
      )
      (setq m2 (1+ m2))
    )
    (if      (/= (length lst1) 1)
      (setq lst1 (vl-sort lst1
                        (function (lambda (e1 e2) (< (car e1) (car e2))))
               )
      )
    )
    (setq pt_lst_new (cons lst1 pt_lst_new))
    (setq lst1 '())
    (setq m1 (1+ m1))
)
(setq pt_lst_new (reverse pt_lst_new))
(setq n1 (length pt_lst_new))
(setq m1 0)
(setq lst2 '())
(while (/= m1 n1)
    (setq lst1 (nth m1 pt_lst_new))
    (setq n2 (length lst1))
    (setq m2 0)
    (while (/= m2 n2)
      (setq lst (nth m2 lst1))
      (setq lst2 (cons lst lst2))
      (setq m2 (1+ m2))
    )
    (setq m1 (1+ m1))
)
(reverse lst2)
)

yxl88168 发表于 2017-8-22 12:51:50

这个搞好了吗,能发个源程序给我不,我的邮箱是yxl33168@163.com 谢谢你

328302216 发表于 2013-7-30 18:23:07

虽然不会帮给顶一下!

pzweng 发表于 2013-7-30 21:25:37

langjs的递增刷,看他的帖子

峰峰兒 发表于 2013-7-31 07:43:34

ucuc2003 发表于 2013-7-31 10:57:01

帮不了忙,顶起来!

自贡黄明儒 发表于 2013-7-31 12:05:03

我用的1 选择集根据点坐标排序http://bbs.mjtd.com/thread-96090-1-1.html
         2 未尾数字增加http://bbs.mjtd.com/thread-102143-1-1.html 7楼
仅供参考

【KAIXIN】 发表于 2013-7-31 18:22:18

提供思路 :
就以上情况而言,可以用排序加1的方法直接写入文字

zhb236623 发表于 2013-7-31 18:22:44

自贡黄明儒 发表于 2013-7-31 12:05 static/image/common/back.gif
我用的1 选择集根据点坐标排序http://bbs.mjtd.com/thread-96090-1-1.html
         2 未尾数字增加http:/ ...

谢谢,这几天有空把你的两个帖子消化下再看看能不能写得出来。

zhb236623 发表于 2013-7-31 18:29:18

【KAIXIN】 发表于 2013-7-31 18:22 http://bbs.mjtd.com/static/image/common/back.gif
提供思路 :
就以上情况而言,可以用排序加1的方法直接写入文字

直接写入文字实现起来是相对比较容易,然后把旧的直接删除,因为文字样式,对中方式,大小都是一样的,只要设定统一的不用针对每个文字更改。如果要根据旧的文字只更改内容感觉会比较难。

【KAIXIN】 发表于 2013-7-31 18:31:13

zhb236623 发表于 2013-7-31 18:29 static/image/common/back.gif
直接写入文字实现起来是相对比较容易,然后把旧的直接删除,因为文字样式,对中方式,大小都是一样的, ...

也不难的,这样的话,你就要提取文本,获取最后一个数字进行加一即可
页: [1] 2
查看完整版本: 求助 关于文字批量替换,数字递增问题