加入化海川流化工人平台,对接专业人技术圈
您需要 登录 才可以下载或查看,没有帐号?注册
x
本人从网上找的绝对好用的cad中数字求和的lisp小程序
使用方法:把以下程序复制,打开cad 在cad中保存为add.lisp文件,把add.lisp程序复制到cad安装程序文件夹中的support文件中;打开cad选加载应用程序,找到add.lisp程序选加载,点启动,选add.lisp即可。命令行输入add回车,选择数字,回车,ok!乘法输mul命令,绝对好用。具体方法如图:
(SETVAR "TEXTSIZE" 3.0)
;add.lsp
;本程序用处是 进行加法运算(addition)
;用法:
; 装载后 键入 add , 选择所要计算的数据,
; 然后 回车 即可在command之下输出结果.
;
(DEFUN C:ADD()
(princ "\nAddition,Version3.0,(C)1997-2000 by Huang Zenghong. Email: zhhuang@public.cc.jl.cn")
;保存原系统变量和出错处理函数
(setq oldech (getvar "CMDECHO")
olderr *ERROR*)
(setvar "CMDECHO" 0)
;定义新的出错处理函数
(defun *ERROR* (msg)
(princ "\n") (princ msg)
(setvar "CMDECHO" oldech)
(setq *ERROR* olderr)
)
(SETQ
ADDIT NIL SS NIL EN NIL ED NIL AS NIL
A_TXT NIL NEW_TXT NIL POT NIL
)
(SETQ A_TXT 0)
(PROMPT "\n选择您要进行加法运算的数据 : ")
(SETQ SS (SSGET))
(WHILE (> (SSLENGTH SS) 0)
(SETQ EN (SSNAME SS 0))
(SETQ ED (ENTGET EN))
(SETQ AS (CDR (ASSOC '0 ED)))
(IF (= AS "TEXT") (_TXT))
(IF (= AS "MTEXT") (_TXT))
(SSDEL EN SS)
)
(SETQ
ADDIT NIL SS NIL EN NIL ED NIL AS NIL
A_TXT NIL NEW_TXT NIL POT NIL
)
(PROMPT (STRCAT "\n加法运算之和: " NEW_TEXT))
(PRINC)
(SETQ POT (GETPOINT "\n请问您要将计算结果放在何处?:"))
(IF (NOT (= POT NIL))
(TEXT_YES)
)
;恢复原系统变量和出错处理函数
(setvar "CMDECHO" oldech)
(setq *ERROR* olderr)
(princ)
)
;加法
(DEFUN _TXT ()
(SETQ A_TXT (+ (ATOF (CDR (ASSOC '1 ED))) A_TXT))
(SETQ NEW_TEXT (RTOS A_TXT 2 3))
(SSDEL EN SS)
)
;mul.lsp
;本程序用处是 进行乘法运算(multiplication)
;用法:
; 装载后 键入 mul , 选择所要计算的数据,
; 然后 回车 即可在command之下输出结果.
;
(DEFUN C:mul()
(princ "\nMultiplication,Version3.0,(C)1997-2000 by Huang Zenghong. Email: zhhuang@public.cc.jl.cn")
;保存原系统变量和出错处理函数
(setq oldech (getvar "CMDECHO")
olderr *ERROR*)
(setvar "CMDECHO" 0)
;定义新的出错处理函数
(defun *ERROR* (msg)
(princ "\n") (princ msg)
(setvar "CMDECHO" oldech)
(setq *ERROR* olderr)
)
(SETQ
ADDIT NIL SS NIL EN NIL ED NIL AS NIL
B_TXT NIL NEW_TXT NIL POT NIL
)
(SETQ B_TXT 1.0)
(PROMPT "\n选择您要进行乘法运算的数据: ")
(SETQ SS (SSGET))
(WHILE (> (SSLENGTH SS) 0)
(SETQ EN (SSNAME SS 0))
(SETQ ED (ENTGET EN))
(SETQ AS (CDR (ASSOC '0 ED)))
(IF (= AS "TEXT") (_TXTM))
(IF (= AS "MTEXT") (_TXTM))
(SSDEL EN SS)
)
(SETQ
ADDIT NIL SS NIL EN NIL ED NIL AS NIL
B_TXT NIL NEW_TXT NIL POT NIL
)
(PROMPT (STRCAT "\n乘法运算之积: " NEW_TEXT))
(PRINC)
(SETQ POT (GETPOINT "\n请问您要将计算结果放在何处?:"))
(IF (NOT (= POT NIL))
(TEXT_YES)
)
;恢复原系统变量和出错处理函数
(setvar "CMDECHO" oldech)
(setq *ERROR* olderr)
(princ)
)
;乘法
(DEFUN _TXTM ()
(SETQ B_TXT (* (ATOF (CDR (ASSOC '1 ED))) B_TXT))
(SETQ NEW_TEXT (RTOS B_TXT 2 3))
(SSDEL EN SS)
)
;去除空格
(DEFUN KOC()
(SETQ C3 NEW_TEXT)
(SETQ PT1 (STRLEN C3))
(SETQ PT2 (SUBSTR C3 PT1 1))
(WHILE (= "0" PT2)
(SETQ PT1 (- PT1 1))
(SETQ PT2 (SUBSTR C3 PT1 1))
)
(WHILE (= "." PT2)
(SETQ PT1 (- PT1 1))
(SETQ PT2 (SUBSTR C3 PT1 1))
)
(SETQ KC (SUBSTR C3 1 PT1))
(SETQ C3 KC)
)
;写数据
(DEFUN TEXT_YES()
(KOC)
(COMMAND "TEXT" POT "" 0 C3)
)