多次减法或加法
是否可以将多个实文本值与其他多个文本值相减或相加,并将结果放在相同的X坐标上。http://s9.postimg.org/6b0kxcmtr/Capture.png
这里我想从第1行减去第2行。第1行和第2行的文本值位于同一个X轴上。现在,我想先选择第1行,然后选择第2行,然后选择结果行来放置结果。 这是一个开始
;Writes the difference text1-text2 to text3
(defun C:T1t2 ()
(setq text1 (entget (car (entsel "\nSelect text 1 "))))
(setq anst1 (atof (cdr (assoc 1 text1))))
(setq text2 (entget (car (entsel "\nSelect text 2 "))))
(setq anst2 (atof(cdr (assoc 1 text2))))
(setq ans (rtos (- anst1 anst2) 2 3))
(setq en (entsel "\nSelect destination text:"))
(setq el (entget (car en)))
(setq el (subst (cons 1 ans) (assoc 1 el) el))
(entmod el)
;(entupd en)
) end defun
(PRINC)
谢谢比格尔。但在这里,我不能选择多个文本。 它的方式更复杂的选择文字行我知道它可以做到,但!一条缺失的文字和你的错误。简单的答案是创建3个列表行1行2行3,然后简单地项目(1)行1项目(1)行2更新项目1(行3),只需使用带文本过滤器的ssget创建3个列表。如果我有时间,我会做的。 张贴一个绘图样本,让我们看看你有什么。 第二个版本这需要更多的增强,但将适用于您发布的行或列,一些假设,即文本是以正确的顺序一个接一个地生成的,而不是随机生成的。对于随机代码,需要更多的返工来检查x或y行/列。不检查文本数量是否不均匀。使第1行第2行复制第3行的第2行,然后更新。
; Row1 - Row2 change value Row3
; by Alan H May 2014
(defun r1r2r3 ( / ss1 ss2 ss3el1 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)
页:
[1]