明经CAD社区

 找回密码
 注册

QQ登录

只需一步,快速开始

搜索
查看: 2512|回复: 4

[资源] 单行文字的四则运算

[复制链接]
发表于 2011-4-7 01:05:37 | 显示全部楼层 |阅读模式
本帖最后由 feng582304 于 2011-4-7 01:10 编辑

之前在论坛里看到有讨论四则运算的,俺刚好也要用到,就做了一个,大家一起玩玩看,呵。
用法:用单选文字写出等式,比如“1+(2*(3/(4-5)))=”,运行命令后会在等式后面写出结果“-5”

;======================计算等式======================
(defun c:ys ( / ss ss1 n txt po doc p1 p2 nn hi )
  (setq doc (vla-get-modelspace (vla-get-activedocument (vlax-get-acad-object))))
  (setq ss1 (ssget '((0 . "text"))))
  (setq nn 0)
  (repeat (sslength ss1)
    (vla-getboundingbox  (vlax-ename->vla-object (ssname ss1 nn)) 'p1 'p2)
    (setq p1 (vlax-safearray->list p1))
    (setq p2 (vlax-safearray->list p2))
    (setq po (list (+ 100 (car p2)) (cadr p1) 0))
    (setq ss (vla-get-textstring (vlax-ename->vla-object (ssname ss1 nn))))
    (setq hi (vla-get-height (vlax-ename->vla-object (ssname ss1 nn))))
    (setq n 1)
    (setq txt "")
    (repeat (strlen ss)
      (cond
        ((and (> (ascii (substr ss n 1)) 47) (< (ascii (substr ss n 1)) 58))
         (setq txt (strcat txt (substr ss n 1)))
         )
        ((= (substr ss n 1) ".")
         (setq txt (strcat txt "."))
         )
        ((or (= (substr ss n 1) "X") (= (substr ss n 1) "*") (= (substr ss n 1) "x"))
         (setq txt (strcat txt "*"))
         )
        ((= (substr ss n 1) "+")
         (setq txt (strcat txt "+"))
         )
        ((= (substr ss n 1) "-")
         (setq txt (strcat txt "-"))
         )
        ((= (substr ss n 1) "/")
         (setq txt (strcat txt "/"))
         )
        ((= (substr ss n 1) "(")
         (setq txt (strcat txt "("))
         )
        ((= (substr ss n 1) ")")
         (setq txt (strcat txt ")"))
         )
        )
      (setq n (1+ n))
      )
    (princ txt)
    (if (null cal)(arxload"geomcal"))
    (vla-addtext doc (rtos (c:cal txt) 2 2) (vlax-3d-point po) hi)
    (setq nn (1+ nn))
    )
  (princ)
  )
发表于 2011-4-7 09:41:14 | 显示全部楼层
进来看看,顺便顶下....
发表于 2023-5-4 09:58:31 | 显示全部楼层
支持,我正好需要,谢谢楼主
您需要登录后才可以回帖 登录 | 注册

本版积分规则

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

GMT+8, 2024-12-23 22:20 , Processed in 0.166122 second(s), 24 queries , Gzip On.

Powered by Discuz! X3.4

Copyright © 2001-2021, Tencent Cloud.

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