CAD中数据统计方法Word格式.docx
《CAD中数据统计方法Word格式.docx》由会员分享,可在线阅读,更多相关《CAD中数据统计方法Word格式.docx(9页珍藏版)》请在冰点文库上搜索。
原程序:
;
说明
(alert"
提醒:
\n请首先设置好输精度<
小数点位数>
在绘图的过程中可随时用命令JD设置精度。
\n命令\"
+-*/\"
分别代表对所选择的数字求和差积商。
\n其中\"
-/\"
则是以你第一个选到的数字文本为被减数和被除数。
..\"
(点点)代表对所选择的数字文本统一加减乘除某个数,默认为1。
TJ\"
代表对所选择的数字文本进行数学统计。
\n所有生成的新文本均与第一个选到的数字文本的样式相同(除角度外)。
"
)
定义了一个全局变量为精度
(defunC:
JD(/)
(prompt"
\n请输入精度,直接回车则为系统精度:
(initget4)
(if(setqPRECISION(getint))
(princ)
(setqPRECISION(getvar"
LUPREC"
))
)
(C:
JD)
加
+(/keyselinsfirstnumlstresult)
(while(common1)
(setqresult(apply'
+(cadrnumlst)))
(common2)
)
减
-(/keyselinsfirstnumlstresult)
-(cadrnumlst)))
乘
*(/keyselinsfirstnumlstresult)
*(cadrnumlst)))
除
/(/keyselinsfirstnumlstresult)
(while(common1)
/(cadrnumlst)))
所有数字都加减乘除某个数
..(/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)
(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'
))))
(null(initget0"
YesNo"
(if(setqkey(getkword"
\n是否保留原数字Yes,No?
<
默认不保留>
(setqkey"
Yes"
No"
做文字或者更新文字
(defuncommon2()
(setqresult(rtosresult(getvar"
)PRECISION))
(if(=key"
(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)
统计数字文本
tj(/unselinstollstnumlstfirstdatalenangHIGjnm)
(setqun(getvar"
(while(and(setqsel(ssget'
(setqins(getpoint"
(princ"
\n统计正在进行......"
(setqtollst(sel->
(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))
\n统计已经完成!
统计函数
(defunSTAT(numlst/lensumavevarsqrstd)
(setqlen(lengthnumlst));
样本数目
(setqsum(apply'
+numlst));
和
(setqave(/sumlen));
均值
(setqvar(mapcar'
(lambda(x)(*(-xave)(-xave)))numlst))
;
差平方
(setqsqr(/(apply'
+var)len));
方差variance
(setqstd(sqrtsqr));
标准差
(cons"
样本数......"
len)
总和........"
sum)
平均值......"
ave)
方差........"
sqr)
标准差......"
std)
复制代码