CAD中数据统计方法.docx
《CAD中数据统计方法.docx》由会员分享,可在线阅读,更多相关《CAD中数据统计方法.docx(9页珍藏版)》请在冰豆网上搜索。
CAD中数据统计方法
CAD中统计数字的方法:
(1)使用CAD中的快捷键TT,但是需要先进行加载,加载方法是:
打开CAD,选择菜单栏---工具---加载应用程序---选择窗口中全部文件---加载(即可)。
然后就可以用这个快捷键了。
在CAD中选择需要计算的数据,然后TT快捷键,点下空格后就会出现一个对话框了。
(2)在绘图过程中,经常会对数字文本进行四则运算,或者统计数字,在现有的CAD命令中没有直接命令与之相关,用计算器又麻烦。
所以可以用一个小程序来解决。
我觉得挺好的。
快捷键TJ。
用法:
1、先加载程序,首先会提示你如何用这个程序。
2、然后你输入计算结果的精度,即小数点位数:
这个只要在开始的时候输入就可以了,以后的命令你不用输入精度,如果你要调整精度,随时输入命令JD.
3、下面为它的具体用法,你可以选择多个文字,如果是除法,劝你最好不要选择0数字,否则会出错。
而且命令可以连用,直到你空输入(没有选择或者取点)为止。
+-*/命令不用多说。
..命令为对所选文字同时加减乘除某个数。
4、统计的命令为TJ。
其速度是很快的,我曾对十万级的数字验证,求结果既快又准。
5、这个程序适用于各个版本,我甚至觉得可以用于DOS的CAD版本。
原程序:
;;;说明
(alert"提醒:
\n请首先设置好输精度<小数点位数>,在绘图的过程中可随时用命令JD设置精度。
\n命令\"+-*/\"分别代表对所选择的数字求和差积商。
\n其中\"-/\"则是以你第一个选到的数字文本为被减数和被除数。
\n命令\"..\"(点点)代表对所选择的数字文本统一加减乘除某个数,默认为1。
\n命令\"TJ\"代表对所选择的数字文本进行数学统计。
\n所有生成的新文本均与第一个选到的数字文本的样式相同(除角度外)。
"
)
;;;定义了一个全局变量为精度
(defunC:
JD(/)
(prompt"\n请输入精度,直接回车则为系统精度:
")
(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"\n请输入操作数<默认为1>:
")))
(setqop1.0)
)
(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"))
(if(setqkey(getkword"\n是否保留原数字Yes,No?
<默认不保留>:
"))
(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)
)
;;;统计数字文本
(defunC:
tj(/unselinstollstnumlstfirstdatalenangHIGjnm)
(setqun(getvar"LUNITS"))
(while(and(setqsel(ssget'((0."TEXT"))))
(setqins(getpoint"\n请输入插入点:
")))
(princ"\n统计正在进行......")
(setqtollst(sel->listsel))
(setqnumlst(cadrtollst))
(setqfirst(caartollst))
(setqdata(STATnumlst))
(setqlen(strcat(caardata)(itoa(cdardata))))
(setqHIG(*(make-textfirstlenins)1.5))
(setqang(*Pi-0.5))
(setqj1)
(repeat4
(setqn(nthjdata))
(setqm(strcat(carn)(rtos(cdrn)unPRECISION)))
(make-textfirstm(polarinsang(*jHIG)))
(setqj(1+j))
)
(princ"\n统计已经完成!
")
)
(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)
)
)
复制代码