CAD统计多条线段长度程序及程序加载方法.docx

上传人:b****3 文档编号:1470768 上传时间:2022-10-22 格式:DOCX 页数:5 大小:16.46KB
下载 相关 举报
CAD统计多条线段长度程序及程序加载方法.docx_第1页
第1页 / 共5页
CAD统计多条线段长度程序及程序加载方法.docx_第2页
第2页 / 共5页
CAD统计多条线段长度程序及程序加载方法.docx_第3页
第3页 / 共5页
CAD统计多条线段长度程序及程序加载方法.docx_第4页
第4页 / 共5页
CAD统计多条线段长度程序及程序加载方法.docx_第5页
第5页 / 共5页
亲,该文档总共5页,全部预览完了,如果喜欢就下载吧!
下载资源
资源描述

CAD统计多条线段长度程序及程序加载方法.docx

《CAD统计多条线段长度程序及程序加载方法.docx》由会员分享,可在线阅读,更多相关《CAD统计多条线段长度程序及程序加载方法.docx(5页珍藏版)》请在冰豆网上搜索。

CAD统计多条线段长度程序及程序加载方法.docx

CAD统计多条线段长度程序及程序加载方法

用下面的这个程序可以,加载后执行命令:

mulen

(defunc:

mulen()

  (setqi1s0)

  (prompt"

选择直线:

")

  (setqss(ssget))

  (setqleng(sslengthss))

  (setqnamelist(list(ssnamess0)))

  (repeat(1-leng)(setqnamelist(appendnamelist(list(ssnamessi))))(setqi(1+i)))

  (foreachnamenamelist

    (setqnameall(entgetname))

    (setqps(cdr(assoc10nameall)))

    (setqpe(cdr(assoc11nameall)))

    (setqpsx(carps))

    (setqpsy(cadrps))

    (setqpsz(caddrps))

    (setqpex(carpe))

    (setqpey(cadrpe))

    (setqpez(caddrpe))

    

    (setqx(-psxpex))

    (setqy(-psypey))  

    (setqz(-pszpez))

    (setqlength(sqrt(+(exptx2)(expty2)(exptz2))))

    (setqs(+slength))

  )

  (princ(strcat"

直线总长为:

"(rtoss)))

  (princ)

){:

em27}

 

上述为程序内容,然后存为:

“文件名.lsp”,再从CAD里用appload命令加载此文件。

 

这里有一个程序,你可以用用看,

命令为AM

对line,arc,ellispe,spline,polyline,lwpolyline,circle,mline,solid均有效。

你既可统计长度,也可统计面积,或者两者都统计。

如果你对精确位不满意,你可以改动程序中的数字(我已经在程序注释中说明)。

 

;;;===================

;;;面积和长度统计程序

;;;highflybirdkunming

;;;===================

(prompt"命令为:

AM")

(defunC:

am(/f     ss         l         i         SSarea  totlen  entlen

         ename   name    obj     text-S  text-L  insPt0  height

         insPt1  insPt2  text-1  text-2  *APP    *DOC    *MSP

        )

  (vl-load-com)

  (setq*APP(vlax-get-acad-object))

  (setq*DOC(vla-get-activeDocument*APP))

  (setq*MSP(vla-get-Modelspace*DOC))

  (initget1"123")

  (setqf(getkword"\n请输入你要统计的<1>面积<2>长度<3>两者:

"))

  (if

    (and

      (setqss(ssget))

      (setqinsPt0(getpoint"\n请输入文字插入点:

"))

      (setqheight(getdist"\n请输入文字高度:

"))

    )

    (progn

      (setql(sslengthss))

      (setqi0)

      (setqSSarea0)

      (setqtotlen0)

      (setqinsPt1(vlax-3d-pointinsPt0))

      (setqinsPt2(polarinsPt0(*1.5Pi)(*1.5height)))

      (setqinsPt2(vlax-3d-pointinsPt2))        

      (cond

    ((=f"1")

          (repeatl

            (func-1)

            (func-2)

            (setqi(1+i))

          )

      (setqtext-S(strcat(convert1SSarea6)"平方米"));总面积为:

小数后6位

      (vla-addtext*MSPtext-SinsPt1height)

    )

    ((=f"2")

          (repeatl

            (func-1)

            (func-3)

            (setqi(1+i))

          )

      (setqtext-L(strcat(convert1totlen4)"米"))    ;总长度为:

小数后4位

      (vla-addtext*MSPtext-LinsPt2height)

    )

    ((=f"3")

          (repeatl

            (func-1)

        (func-2)

            (func-3)

            (setqi(1+i))

          )

      (setqtext-S(strcat(convert1SSarea6)"平方米"));总面积为:

小数后6位

      (setqtext-L(strcat(convert1totlen3)"米"))    ;总长度为:

小数后3位

      (vla-addtext*MSPtext-SinsPt1height)

      (vla-addtext*MSPtext-LinsPt2height)

    )    

      )    

    )

    (alert"你没有选取物体或者输入正确的数据!

")

  )

  (princ)

(defunfunc-1()

  (setqename(ssnamessi))

  (setqobj(vlax-ename->vla-objectename))

  (setqelist(entgetename))

  (setqname(cdr(assoc0elist)))

;;面积的统计

(defunfunc-2(/p1p2p3p4)

  (if(vlax-property-available-pobj"area")

    (setqSSarea(+(vla-get-areaobj)SSarea))

    (if    (=name"SOLID")

      (setqp1(cdr(assoc10elist))

            p2(cdr(assoc11elist))

        p3(cdr(assoc12elist))

            p4(cdr(assoc13elist))

        SSarea(+(area-of-verties(listp1p2p4p3))SSarea)

      )

    )

  )

;;长度的统计

(defunfunc-3(/p1p2p3p4)

  (cond

    ((=name"MLINE")

      (setqtotlen(+totlen(ml-lengthename)))

    )

    ((or(=name"ARC")

      (=name"CIRCLE")

      (=name"LINE")

      (=name"POLYLINE")

      (=name"LWPOLYLINE")

      (=name"SPLINE")

      (=name"ELLIPSE")

      )

      (setqentlen(vlax-curve-getdistatparamename(vlax-curve-getendparamename)))

      (setqtotlen(+totlenentlen))

    )

    ((=name"SOLID")

      (setqp1(cdr(assoc10elist)))

      (setqp2(cdr(assoc11elist)))

      (setqp3(cdr(assoc12elist)))

      (setqp4(cdr(assoc13elist)))   

      (setqtotlen(+(length-of-verties(listp1p2p4p3))totlen))

    )

  )

;;Mline的长度

(defunml-length(ename/jdptlist)

  (foreachn(entgetename)

    (if    (=(carn)11)

      (setqptlist(cons(cdrn)ptlist))

    )

  )

  (reverseptlist)

  (setq    j0)

  (setqd0)

  (repeat(1-(lengthptlist))

    (setqd(+d(distance(nthjptlist)(nth(1+j)ptlist))))

    (setqj(1+j))

  )

  d

;;单位转化

(defunconvert(xn/tol_xfra_xint_x)

  (setqtol_x(/x(expt10n)))

  (setqfra_x(rtos(-tol_x(fixtol_x))2n))

  (setqfra_x(vl-string-left-trim"0"fra_x))

  (setqint_x(itoa(fixtol_x)))

  (strcatint_xfra_

展开阅读全文
相关资源
猜你喜欢
相关搜索

当前位置:首页 > 解决方案 > 学习计划

copyright@ 2008-2022 冰豆网网站版权所有

经营许可证编号:鄂ICP备2022015515号-1