明经CAD社区

 找回密码
 注册

扫一扫,访问微社区

QQ登录

只需一步,快速开始

查看: 178|回复: 3

[源码] 论坛里一位朋友的文本求和的源码,求帮助完善

[复制链接]
发表于 2019-6-11 16:46 | 显示全部楼层 |阅读模式
前辈们,论坛中有一个文本求和的插件计算比较方便,实在记不清哪位朋友的插件,感谢这位朋友啦。
如下两点稍稍完善就更好用了,前辈们百忙之中麻烦给与指导,谢谢啦,
1、计算式目前在0层,如写到当前层,更为便利。
2、计算式中的“-”号删除了,计算完成需要二次修改,不知“-”号能否保留?

本帖子中包含更多资源

您需要 登录 才可以下载或查看,没有帐号?注册

x
 楼主| 发表于 2019-6-11 16:52 | 显示全部楼层
图片上传错了,更换下

本帖子中包含更多资源

您需要 登录 才可以下载或查看,没有帐号?注册

x
发表于 2019-6-16 20:42 | 显示全部楼层
yamjqq 发表于 2019-6-11 16:52
图片上传错了,更换下

(defun c:SZGL  (/  SS VAL N EN OBJ DATA PT TEXT HAND)
    (princ "\n选择文字:")
  (setq ss (ssget '((0 . "text"))))
  (if ss
    (progn
      (setq val 0)
      (repeat (setq n (sslength ss))
        (setq en   (ssname ss (setq n (1- n)))
              obj  (vlax-ename->vla-object en)
              data (cons (dxf en 5) data)
              val  (+ val (atof (dxf en 1)))
              )
        )
      (setq pt (getpoint "\n文字位置:"))
      (entmake (list '(0 . "text")
                     (cons 10 pt)
                     (cons 1 (rtos val 2))
                     (cons 40 (dxf en 40))))
      (setq text (entlast))
      (setq hand (dxf text 5))
      
      (repeat (setq n (sslength ss))
        (setq en (ssname ss (setq n (1- n))))
        (vlr-pers ;_ 设置永久反应器
          (VLR-Object-Reactor
            (list (vlax-ename->vla-object en))
            data ;_ 关联的对象索引
            '((:VLR-modified . text-change) ;_ 回调函数
              )
            )
          )
        (VLAX-LDATA-PUT
          (vlax-ename->vla-object En)
          "data"
          (entget text)
          ) ;_ 将关联文字数据保存在词典里
        )
      )
    )
  )
(defun dxf  (e i)
    (cdr (assoc i (entget e)))
    )
;;回调函数
(defun text-change  (Object         Reactor-Object                 Parameter-list
                     /                 hand             ent         val
                     data         dxfs)
  (setq data (vlr-data Reactor-Object))
  (setq
    hand (cdr (assoc 5 (setq dxfs (VLAX-LDATA-get Object "data")))))
  (if (and
      hand
        (setq ent (handent hand))
        (setq el (entget ent))
        )
    (progn
      (setq val
             (apply '+
                    (mapcar
                      '(lambda (x / e)
                         (if
                           (and
                             (setq e (handent x))
                             (entget e)
                             )
                            (atof (dxf e 1))
                            0
                            )
                         )
                      data
                      )
                    )
            )
      (entmod (subst (cons 1 (rtos val 2)) (assoc 1 el) el))
      )
    (progn
      (setq val
             (apply '+
                    (mapcar
                      '(lambda (x / e)
                         (if
                           (and
                             (setq e (handent x))
                             (entget e)
                             )
                            (atof (dxf e 1))
                            0
                            )
                         )
                      data
                      )
                    )
            )
      (entmake (subst (cons 1 (rtos val 2)) (assoc 1 dxfs) dxfs)) ;_ 恢复关联文字
      (setq text (entget (entlast)))
      (foreach h  data
        (if (and
              (setq en (handent h))
              (entget en)
              )
          (VLAX-LDATA-PUT (vlax-ename->vla-object En) "data" text) ;_ 重置数据
          )
        )
      )
    )
  (princ)
  )
拿去,不谢
发表于 2019-6-17 23:08 | 显示全部楼层

;; 非源码慎用


本帖子中包含更多资源

您需要 登录 才可以下载或查看,没有帐号?注册

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

本版积分规则

小黑屋|手机版|CAD论坛|CAD教程|CAD下载|联系我们|关于明经|明经通道 ( 粤ICP备05003914号  
©2000-2017 明经通道 版权所有 本站代码,在未取得本站及作者授权的情况下,不得用于商业用途

GMT+8, 2019-6-18 21:42 , Processed in 0.158595 second(s), 28 queries , Gzip On.

Powered by Discuz! X3.3

© 2001-2013 Comsenz Inc.

快速回复 返回顶部 返回列表