CAD中数据统计方法.docx
《CAD中数据统计方法.docx》由会员分享,可在线阅读,更多相关《CAD中数据统计方法.docx(6页珍藏版)》请在冰豆网上搜索。
CAD中数据统计方法
CAD中统计数字的方法:
使用CAD中的快捷键TT,但是需要先进行加载,加载方法是:
打开CAD选择菜单栏---工具---加载应用程序---选择窗口中全部文件---加载(即可)。
然后就可以用这个快捷键了。
在CAD中选择需要计算的数据,然后TT快捷键,点下空格后就会出现一个对话框了。
在绘图过程中,经常会对数字文本进行四则运算,或者统
计数字,在现有的CAD命令中没有直接命令与之相关,用计算器又麻烦。
所以可以用一个小程序来解决。
我觉得挺好的。
快捷键TJ。
1、
用法:
先加载程序,首先会提示你如何用这个程序。
2、然后你输入计算结果的精度,即小数点位数:
这个只要在
到你空输入(没有选择或者取点)为止。
+-*/命令不用多说。
..命令为对所选文字同时加减乘除某个数。
4、统计的命令为TJ。
其速度是很快的,我曾对十万级的数字验证,求结果既快又准。
版本。
原程序:
;;;说明(alert"提醒:
\n请首先设置好输精度<小数点位数>,在绘图勺过程中可随时用命令JD设置精度。
\n命令\"+-*/\"分别代表对所选择勺数字求和差积
商。
数和被除数。
相同(除角度外)。
";;;定义了一个全局变量为精度
(defunC:
JD(/)
(initget4)
(if(setqPRECISION(getint))
(princ)
(setqPRECISION(getvar"LUPREC"))
(C:
JD);;;加(defunC:
+(/keyselinsfirstnumlstresult)
(while(common1)
(setqresult(apply'+(cadrnumlst)))
(common2)
(princ)
;;;减(defunC:
-(/keyselinsfirstnumlstresult)
(while(common1)
(setqresult(apply'-(cadrnumlst)))
(common2)
(princ)
;;;乘
(defunC:
*(/keyselinsfirstnumlstresult)
(while(common1)
(setqresult(apply'*(cadrnumlst)))
(common2)
(princ)
;;;除(defunC:
/(/keyselinsfirstnumlstresult)
(while(common1)
(setqresult(apply'/(cadrnumlst)))
(common2)
(princ)
;;;所有数字都加减乘除某个数(defunC:
..(/keyopselinsfirstnumlstresult)
(while(setqsel(ssget'((0."TEXT"))))
(setqfirst(ssnamesel0))
(setqNumlst(sel->listsel))
(initget1"+-*/"
(setqkey(getkword"\n请输入加减乘除符号<+-*/>:
"))
请输入操作数<默认为
(initget2)
(if(null(setqop(getreal"\n1>:
")))
(all-calnumlstkeyop)
(princ)
(defunall-cal(resultsymop/lstoldnew)
(foreachn(carnumlst)
(setqlst(entgetn))
(setqold(atof(cdr(assoc1lst))))
(setqnew(eval(cons(readsym)(listoldop))))
(setqnew(cons1(rtosnew(getvar"LUNITS")
PRECISION)))
(setqlst(substnew(assoc1lst)lst))
(entmodlst)
;;;选择和插入点(defuncommon1()
(and
(setqsel(ssget'((0."TEXT"))))
(null(initget0"YesNo"))
认不保留>:
"))
(setqkey"Yes")
(setqkey"No")
(setqfirst(ssnamesel0))
(setqNumlst(sel->listsel))
;;;做文字或者更新文字(defuncommon2()
(setqresult(rtosresult(getvar"LUNITS")
PRECISION))
(if(=key"No")
请输入插入点:
"))
(if(setqins(getpoint"\n
(make-textfirstresultins)
(update-textfirstresult)
;;;选择集合转化成数字列表(defunsel->list(sel/ientlstnumElsnls)
(setqi0)
(repeat(sslengthsel)
(setqent(ssnameseli))
(setqlst(entgetent))
(setqnum(atof(cdr(assoc1lst))))
(setqEls(consentEls))
(setqNls(consnumNls))
(setqi(1+i))
(list
(reverseEls)
(reverseNls)
;;;创建新文字,在指定点插入(defunmake-text(firststringinspt/removetxtlstlst)
(setqremove(list-133051101150))
(setqtxtlst(entgetfirst))
(foreachntxtlst
(if(not(member(carn)remove))
(setqlst(consnlst))
(setqlst(cons(cons1string)lst))
(setqlst(cons(cons10inspt)lst))
(setqlst(cons(cons11inspt)lst))
(setqlst(reverselst))
(cdr(assoc40(entmakelst)))
;;;保留文字,仅更新内容(defunupdate-text(entstring/txtlst)
(setqtxtlst(entgetent))
(setqtxtlst(subst(cons1string)(assoc1txtlst)txtlst))
(entmodtxtlst)
;;;统计数字文本
lenang
(defunC:
tj(/unselinstollstnumlstfirstdata
HIGjnm)
(setqun(getvar"LUNITS"))
(while(and(setqsel(ssget'((0."TEXT"))))
(setqtollst(sel->listsel))
(setqnumlst(cadrtollst))
(setqfirst(caartollst))
(setqdata(STATnumlst))
(setqlen(strcat(caardata)(itoa(cdardata))))
(setqj1)
(repeat4
(setqn(nthjdata))
(setqm(strcat(carn)(rtos(cdrn)unPRECISION)))
(make-textfirstm(polarinsang(*jHIG)))
(setqj(1+j))
(princ)
;;;统计函数(defunSTAT(numlst/lensumavevarsqrstd)
(setqlen(lengthnumlst))本数目
(setqsum(apply'+numlst))
(setqave(/sumlen))
(setqvar(mapcar'(lambda(x)(*(-xave)(-xave)))numlst))
平方
(setqsqr(/(apply'+var)len))差variance
(setqstd(sqrtsqr))准差
(list
(cons"
样本数..
"len)
(cons"
总和
.."sum)
(cons"
平均值..
"ave)
(cons"
方差
.."sqr)
(cons"
标准差..
"std)
复制代码