欢迎来到天天文库
浏览记录
ID:48039401
大小:232.42 KB
页数:6页
时间:2020-02-07
《AutoLISP入门7 - 图元资料的取得与活用技巧(二).pdf》由会员上传分享,免费在线阅读,更多相关内容在行业资料-天天文库。
1、单元七:图元资料的取得与活用技巧(二)五、范例练习:范例一:请撰写一个CHGRAD.LSP,用来修改圆半径,此程式的执行过程要求如下:指令:CHGRAD选取已知圆:碰选画面上已存在的圆自动显示该旧圆半径值于指令区新半径:要求输入一半径值new_rr程式内容解答:(defunc:chgrad()(setvar"cmdecho"0;指令执行过程不回应;;;;以下为INPUT图元选取(setqen(entsel"选取已知圆:"));要求碰选一个圆;;;;以下为图元资料&半径资料取得(setqen_data(entget
2、(caren)));取得元体资料串列(setqold_rad_list(assoc40en_data));取得半径子串列(setqold_rr(cdrrad_list));取得旧有半径(princ“旧半径=”)(princold_rr);显示该旧圆半径值于指令区;;;;以下为新半径输入&图元资料新旧半径更替(setqcenpt(cdr(assoc10en_data)));一口气取得圆之圆心(setqnew_rr(getdistcenpt"NewRadius:"));要求输入一半径值(setqnew_rad_l
3、ist(cons40new_rr));产生新半径子串列(setqen_data(substnew_rad_listold_rad_listen_data));新旧交替(entmoden_data);依新图元资料自动更新圆半径(prin1))(prompt"***************<>*****************")(prin1)程式执行:(请先在画面上任意的画一些圆)指令:(load"chgrad")回应:***************<>***********
4、******指令:CHGRAD选取已知圆:(碰选画面上已有的圆)新半径:20(输入一半径值)范例二:请撰写一个MCIR.LSP,当碰选画面上的LINE时,会在该线的中点(Midpoint)产生一个圆,此程式的执行过程要求如下:指令:MCIRSelectaLINE:碰选画面上已有的线CircleRadius:要求输入一半径值MR(可给整数、实数或拉一段距离)自动的在该线的中点画出一个半径值为MR的圆该如何设计MCIR.LSP呢???解题关键:先取得线的二端点座标pt1(px1py1)&pt2(px2py2),那二点
5、的中点座标mpt(mxmy)就用数学几何公式求得mx=(px1+px2)/2my=(py1+py2)/2程式内容解答:(defunc:mcir()(setvar"cmdecho"0);指令执行过程不回应(setqen(entsel"SelectaLINE:"));要求碰选一条线(setqen_data(entget(caren)));取得元体资料串列;********************求得pt1&px1、py1*********************(setqpts(assoc10en_data));取得
6、群码10的子串列(setqpt1(cdrpts));取得起点pt1座标(setqpx1(carpt1));取得pt1座标的x值(setqpy1(cadrpt1));取得pt1座标的y值;********************求得pt2&px2、py2***********************(setqpte(assoc11en_data));取得群码11的子串列(setqpt2(cdrpte));取得终点pt2座标(setqpx2(carpt2));取得pt2座标的x值(setqpy2(cadrpt2));
7、取得pt2座标的y值;*****************求得mx&my并结合成mpt****************(setqmx(/(+px1px2)2));求得mx值(setqmy(/(+py1py2)2));求得my值(setqmpt(listmxmy));结合mx&my成mpt点;********************Input&Finish************************(setqmr(getdistmpt"CircleRadius:"));要求输入半径值(command"ci
8、rcle"mptmr);完成中点画圆(prin1))(prompt"***************<>*****************")(prin1)程式执行:(请先在画面上任意的画一些线)指令:(load"mcir")回应:***************<>*****************指令:MCIRSelectaLINE:(碰选
此文档下载收益归作者所有