wchsunshine 发表于 2013-7-19 22:07:10

高手请进 ,求文字数组替换lisp

本帖最后由 wchsunshine 于 2022-3-12 22:06 编辑


求二次开发
功能:    数实现表二的文字直接替换成表一中的文字
实现结果:见运行后

wchsunshine 发表于 2013-7-21 19:55:29

哪位高手帮帮忙哈

Gu_xl 发表于 2013-7-21 20:23:54

其实这根本用不着编程,删除表2文字,复制表1 文字,也不麻烦!
非要写一个程序的话,用下面这个试试:
(defun c:tt (/ S1 S2 N LST1 LST2 A B e h1 h2)
(while
    (and
      (progn
        (princ "\n选择表一文字:")
        (setq s1 (ssget '((0 . "text"))))
      )
      (progn
        (princ "\n选择表二文字:")
        (setq s2 (ssget '((0 . "text"))))
      )
    )
   (setq h1 0
           h2 2
   )
   (repeat (setq n (sslength s1))
       (setq lst1 (cons (setq e (ssname s1 (setq n (1- n)))) lst1))
       (setq h1 (max h1 (cdr (assoc 40 (entget e)))))
   )
   (repeat (setq n (sslength s2))
       (setq lst2 (cons (ssname s2 (setq n (1- n))) lst2))
       (setq h2 (max h2 (cdr (assoc 40 (entget e)))))
   )
   (setq lst1
          (vl-sort
              lst1
              '(lambda (a b)
               (setq a (cdr (assoc 10 (entget a)))
                     b (cdr (assoc 10 (entget b)))
               )
               (if (equal (cadr a) (cadr b) h1)
                   (< (car a) (car b))
                   (> (cadr a) (cadr b))
               )
             )
          )
   )
   (setq lst2
          (vl-sort
              lst2
              '(lambda (a b)
               (setq a (cdr (assoc 10 (entget a)))
                     b (cdr (assoc 10 (entget b)))
               )
               (if (equal (cadr a) (cadr b) h1)
                   (< (car a) (car b))
                   (> (cadr a) (cadr b))
               )
             )
          )
   )
   (mapcar
       '(lambda        (a b)
          (entmod
          (subst (assoc 1 (entget a)) (assoc 1 (entget b)) (entget b))
          )
        )
       lst1
       lst2
   )
)
(princ)
)

xiabin68 发表于 2013-7-22 09:40:29

g版就是厉害

fl202 发表于 2013-7-22 16:44:54

删除表2,复制表1。这比用程序还快,毕竟以后程序多了,还要加载,load后,还要记得这个程序的名字。没意义嘛。

lsjj 发表于 2013-7-23 00:24:31

樓上的朋友,您沒看懂問題

wchsunshine 发表于 2013-7-23 12:06:55

(表一与表二的表格框 不一样) ,这个程序 主要是为了   画图时借用其他明细表内的内容。

yxp 发表于 2013-7-23 18:31:44

本帖最后由 yxp 于 2013-7-23 18:37 编辑

程序实现倒很简单,只是CAD表格内文字的读取是个麻烦事,涉及到了表格线条包围的区域是否闭合问题。
在表格软件中,比如excel ,这简直没有任何障碍,直接访问 Range 对象即可,但CAD不行。
貌似院长有个程序可以识别,他不愿意公开源码。

wchsunshine 发表于 2013-7-23 20:31:41

谢谢版主,已测试可行

注册 发表于 2013-7-24 08:18:37

这个东西可以有,不错的
页: [1] 2
查看完整版本: 高手请进 ,求文字数组替换lisp