souvik 发表于 2022-7-5 23:05:05

多次减法或加法

是否可以将多个实文本值与其他多个文本值相减或相加,并将结果放在相同的X坐标上。
 
http://s9.postimg.org/6b0kxcmtr/Capture.png
 
这里我想从第1行减去第2行。第1行和第2行的文本值位于同一个X轴上。现在,我想先选择第1行,然后选择第2行,然后选择结果行来放置结果。

BIGAL 发表于 2022-7-5 23:24:58

这是一个开始
 
;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)

souvik 发表于 2022-7-5 23:39:15

谢谢比格尔。但在这里,我不能选择多个文本。

BIGAL 发表于 2022-7-5 23:44:00

它的方式更复杂的选择文字行我知道它可以做到,但!一条缺失的文字和你的错误。简单的答案是创建3个列表行1行2行3,然后简单地项目(1)行1项目(1)行2更新项目1(行3),只需使用带文本过滤器的ssget创建3个列表。如果我有时间,我会做的。

pBe 发表于 2022-7-5 23:54:05

张贴一个绘图样本,让我们看看你有什么。

BIGAL 发表于 2022-7-6 00:14:32

第二个版本这需要更多的增强,但将适用于您发布的行或列,一些假设,即文本是以正确的顺序一个接一个地生成的,而不是随机生成的。对于随机代码,需要更多的返工来检查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]
查看完整版本: 多次减法或加法