672505821 发表于 2023-4-24 20:54:01

两组超大量单行文本图元内容比对

请问如何处理两组超大量文本图元内容比对,1表比2表不同的图元变黄色!!2表比1表不同的图元变红色!!!

自己写的,处理两千对两千个数据三分钟:Q-


[*](defun c:tt()
[*]   (time:begin)
[*](setvar "CMDECHO" 0)
[*](setq old_sslst (pickset:to-list (ssget'((0 . "TEXT"))));上一层模板信息
[*]    new_sslst (pickset:to-list (ssget'((0 . "TEXT"))));本层模板信息
[*]    old_out'()
[*])
[*]
[*](entity:putdxf new_sslst 62 9)
[*]
[*]
[*]    (foreach a old_sslst
[*]      (setq str_a (entity:getdxf a 1)
[*]      str_new_sslst (mapcar'(lambda(x)(entity:getdxf x 1)) new_sslst)
[*]         a_position (vl-position str_a str_new_sslst)
[*]      )
[*]      (cond ((/= a_position nil)
[*]            (setq new_sslst (list:remove-nth a_position new_sslst))
[*]            )
[*]            (T
[*]            (setq old_out (cons a old_out))
[*]            )
[*]
[*]      )
[*]    )
[*](entity:putdxf new_sslst 62 1)
[*](entity:putdxf old_out 62 2)
[*](if (/= new_sslst nil) (Lst2Table "新增模板" (list:split-3d (mapcar'(lambda(x)(entity:getdxf x 1)) new_sslst))))
[*]
[*](if (/= old_out nil) (Lst2Table "取消模板" (list:split-3d (mapcar'(lambda(x)(entity:getdxf x 1)) old_out))))
[*]
[*](setvar "CMDECHO" 1)
[*]    (setq time (time:return))
[*](setq time_str (rtos time 2))
[*](princ (strcat "总计耗时" time_str "秒"))
[*](prin1)
[*])

页: [1]
查看完整版本: 两组超大量单行文本图元内容比对