欢迎来到天天文库
浏览记录
ID:59307796
大小:30.00 KB
页数:9页
时间:2020-09-05
《CAD LISP 程序教程文件.doc》由会员上传分享,免费在线阅读,更多相关内容在教育资源-天天文库。
1、1.计算所有线段总长度(加载后只需框选所有线段便可得出这些线段的总长度) (defunc:LL() (setvar"cmdecho"1) (setqen(ssget(list'(0."spline,arc,line,ellipse,LWPOLYLINE")))) (setqi0) (setqll0) (repeat(sslengthen) (setqss(ssnameeni)) (setqendata(entgetss)) (command"lengthen"ss"") (setqdd(getvar"perimeter")) (
2、setqll(+ddll)) (setqi(1+i)) ) (princ"所选线条总长为:")(princll)(princ) ) 2.标注所有线段(加载后只需框选所有线段便可得标注这些线段) (defunc:LLL() (COMMAND"UCS""") (setvar"cmdecho"1) (SETVAR"OSMODE"0) (setq AcadObject (vlax-get-acad-object) AcadDocument(vla-get-ActiveDocumentAcadobject) mSpace (v
3、la-get-ModelSpaceAcaddocument) ) ;;选取需要测量的样条曲线、圆弧、直线、椭圆 (setqen(ssget(list'(0."spline,arc,line,ellipse,LWPOLYLINE")))) (setqi0) ;;获取系统参数textsize (setqshh(getvar"textsize")) (setqstr_hh(strcat"文字高度<"(rtosshh2)">:")) (setqhh(getdiststr_hh)) (whilehh (setvar"textsize"hh)
4、(setqhhnil)) ;;输入标注文字高度 ;;循环开始 (repeat(sslengthen) (setqss(ssnameeni)) (setqendata(entgetss)) (command"lengthen"ss"") (setqdd(getvar"perimeter")) (princ(strcat"长度="(rtosdd2))) ;;寻找代表图层的字符串 (setqaa(assoc0endata)) ;;获取图层名称 (setqaa1(cdraa)) ;;判断线条种类 (cond ((=
5、aa1"SPLINE") ;;如果是spline (progn (setqarcObj(VLAX-ENAME->VLA-OBJECTss)) (setqstartPnt1(vla-get-ControlPointsarcObj)) (setqp1 (vlax-safearray->list(vlax-variant-valuestartPnt1)) ) (setqx1(carp1)) (setqy1(cadrp1)) (setqz1(caddrp1)) (setqpp1(listx1y1z
6、1)) (repeat(-(/(lengthp1)3)1) ;;循环,寻找最后一个控制点 (setqp1(cdddrp1)) (setqx2(carp1)) (setqy2(cadrp1)) (setqz2(caddrp1)) ) (setqpp2(listx2y2z2)) ) ) ((=aa1"LWPOLYLINE") ;;如果是LWPOLYLINE (progn (setqarcObj(VLAX-ENAME->VLA-OBJECTss)) (setqstartPnt
7、1(vla-get-CoordinatesarcObj)) (setqp1 (vlax-safearray->list(vlax-variant-valuestartPnt1)) ) (setqx1(carp1)) (setqy1(cadrp1)) (setqz1(caddrp1)) (setqpp1(listx1y1z1)) (repeat(-(/(lengthp1)3)1) ;;循环,寻找最后一个控制点 (setqp1(cdddrp1)) (setqx2(carp1)) (set
8、qy2(cadrp1)) (setqz2(caddrp1)) ) (setqpp2(listx2y2z2)) ) ) (t ;;如果是其他种类线条 (progn (se
此文档下载收益归作者所有