第二个版本这需要更多的增强,但将适用于您发布的行或列,一些假设,即文本是以正确的顺序一个接一个地生成的,而不是随机生成的。对于随机代码,需要更多的返工来检查x或y行/列。不检查文本数量是否不均匀。使第1行第2行复制第3行的第2行,然后更新。
- ; Row1 - Row2 change value Row3
- ; by Alan H May 2014
- (defun r1r2r3 ( / ss1 ss2 ss3 el1 el2 el3 diff val1 val2)
- (alert (strcat "Select 1st rowcol of text" "\nPlus Enter to accept"))
- (setq ss1 (ssget (list (cons 0 "Text"))))
- (setq len1 (sslength ss1))
- (alert (strcat "Select 2nd row/col of text" "\nEnter to accept"))
- (setq ss2 (ssget (list (cons 0 "Text"))))
- (setq len2 (sslength ss2))
- (alert (strcat "Select 3rd row/col of text" "\nEnter to accept"))
- (setq ss3 (ssget (list (cons 0 "Text"))))
- (setq len3 (sslength ss3))
- ; needs a check here len1=len2=len3 for unbalanced
- (setq x 0)
- (repeat len1
- (setq el1 (entget (ssname ss1 x)))
- (setq val1 (atof (cdr (assoc 1 el1))))
- (setq el2 (entget (ssname ss2 x)))
- (setq val2 (atof (cdr (assoc 1 el2))))
- (setq diff (rtos (- val1 val2) 2 3))
- (setq el3 (entget (ssname ss3 x)))
- (entmod (subst (cons 1 diff) (assoc 1 el3) el3))
- (setq x (+ x 1))
- ) ; repeat
- ) ; defun
- (r1r2r3)
|