乐筑天下

搜索
欢迎各位开发者和用户入驻本平台 尊重版权,从我做起,拒绝盗版,拒绝倒卖 签到、发布资源、邀请好友注册,可以获得银币 请注意保管好自己的密码,避免账户资金被盗
查看: 13|回复: 5

[编程交流] 多次减法或加法

[复制链接]

20

主题

62

帖子

42

银币

初露锋芒

Rank: 3Rank: 3Rank: 3

铜币
100
发表于 2022-7-5 23:05:05 | 显示全部楼层 |阅读模式
是否可以将多个实文本值与其他多个文本值相减或相加,并将结果放在相同的X坐标上。
 

                               
登录/注册后可看大图

 
这里我想从第1行减去第2行。第1行和第2行的文本值位于同一个X轴上。现在,我想先选择第1行,然后选择第2行,然后选择结果行来放置结果。
回复

使用道具 举报

106

主题

1万

帖子

101

银币

顶梁支柱

Rank: 50Rank: 50

铜币
1299
发表于 2022-7-5 23:24:58 | 显示全部楼层
这是一个开始
 
  1. ;Writes the difference text1-text2 to text3
  2. (defun C:T1t2 ()     
  3.    (setq text1 (entget (car (entsel "\nSelect text 1 "))))
  4.    (setq anst1 (atof (cdr (assoc 1 text1))))      
  5.    (setq text2 (entget (car (entsel "\nSelect text 2 "))))
  6.    (setq anst2 (atof(cdr (assoc 1 text2))))
  7.    (setq ans (rtos (- anst1 anst2) 2 3))
  8.    (setq en (entsel "\nSelect destination text:"))
  9.    (setq el (entget (car en)))
  10.    (setq el (subst (cons 1 ans) (assoc 1 el) el))
  11.   (entmod el)
  12.   
  13.   ;(entupd en)
  14. ) end defun
  15. (PRINC)
回复

使用道具 举报

20

主题

62

帖子

42

银币

初露锋芒

Rank: 3Rank: 3Rank: 3

铜币
100
发表于 2022-7-5 23:39:15 | 显示全部楼层
谢谢比格尔。但在这里,我不能选择多个文本。
回复

使用道具 举报

106

主题

1万

帖子

101

银币

顶梁支柱

Rank: 50Rank: 50

铜币
1299
发表于 2022-7-5 23:44:00 | 显示全部楼层
它的方式更复杂的选择文字行我知道它可以做到,但!一条缺失的文字和你的错误。简单的答案是创建3个列表行1行2行3,然后简单地项目(1)行1项目(1)行2更新项目1(行3),只需使用带文本过滤器的ssget创建3个列表。如果我有时间,我会做的。
回复

使用道具 举报

pBe

32

主题

2722

帖子

2666

银币

后起之秀

Rank: 20Rank: 20Rank: 20Rank: 20

铜币
211
发表于 2022-7-5 23:54:05 | 显示全部楼层
张贴一个绘图样本,让我们看看你有什么。
回复

使用道具 举报

106

主题

1万

帖子

101

银币

顶梁支柱

Rank: 50Rank: 50

铜币
1299
发表于 2022-7-6 00:14:32 | 显示全部楼层
第二个版本这需要更多的增强,但将适用于您发布的行或列,一些假设,即文本是以正确的顺序一个接一个地生成的,而不是随机生成的。对于随机代码,需要更多的返工来检查x或y行/列。不检查文本数量是否不均匀。使第1行第2行复制第3行的第2行,然后更新。
 
  1. ; Row1 - Row2 change value Row3
  2. ; by Alan H May 2014
  3. (defun r1r2r3 ( / ss1 ss2 ss3  el1 el2 el3 diff val1 val2)
  4. (alert (strcat "Select 1st rowcol of text" "\nPlus Enter to accept"))
  5. (setq ss1 (ssget (list (cons 0 "Text"))))
  6. (setq len1 (sslength ss1))
  7. (alert (strcat "Select 2nd row/col of text" "\nEnter to accept"))
  8. (setq ss2 (ssget (list (cons 0 "Text"))))
  9. (setq len2 (sslength ss2))
  10. (alert (strcat "Select 3rd row/col of text" "\nEnter to accept"))
  11. (setq ss3 (ssget (list (cons 0 "Text"))))
  12. (setq len3 (sslength ss3))
  13. ; needs a check here len1=len2=len3 for unbalanced
  14. (setq x 0)
  15. (repeat len1
  16.        (setq el1 (entget (ssname ss1 x)))
  17.        (setq val1 (atof (cdr (assoc 1 el1))))
  18.        (setq el2 (entget (ssname ss2 x)))
  19.        (setq val2 (atof (cdr (assoc 1 el2))))
  20.        (setq diff (rtos (- val1 val2) 2 3))
  21.        (setq el3 (entget (ssname ss3 x)))
  22.        (entmod (subst (cons 1 diff) (assoc 1 el3) el3))
  23. (setq x (+ x 1))
  24. ) ; repeat
  25. ) ; defun
  26. (r1r2r3)
回复

使用道具 举报

发表回复

您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

  • 微信公众平台

  • 扫描访问手机版

  • 点击图片下载手机App

QQ|关于我们|小黑屋|乐筑天下 繁体中文

GMT+8, 2025-3-11 03:11 , Processed in 0.399803 second(s), 68 queries .

© 2020-2025 乐筑天下

联系客服 关注微信 帮助中心 下载APP 返回顶部 返回列表