




已阅读5页,还剩1页未读, 继续免费阅读
版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领
文档简介
用下面的这个程序可以,加载后执行命令:mulen(defun c:mulen() (setq i 1 s 0) (prompt 选择直线:) (setq ss (ssget) (setq leng (sslength ss) (setq namelist (list(ssname ss 0) (repeat (1- leng) (setq namelist (append namelist (list (ssname ss i) (setq i (1+ i) (foreach name namelist (setq nameall (entget name) (setq ps (cdr (assoc 10 nameall) (setq pe (cdr (assoc 11 nameall) (setq psx (car ps) (setq psy (cadr ps) (setq psz (caddr ps) (setq pex (car pe) (setq pey (cadr pe) (setq pez (caddr pe) (setq x (- psx pex) (setq y (- psy pey) (setq z (- psz pez) (setq length (sqrt (+ (expt x 2) (expt y 2) (expt z 2) (setq s (+ s length) ) (princ (strcat 直线总长为:(rtos s) (princ):em27上述为程序内容,然后存为:“文件名.lsp”,再从CAD里用appload命令加载此文件。这里有一个程序,你可以用用看,命令为AM对line ,arc ,ellispe,spline,polyline,lwpolyline,circle,mline,solid均有效。你既可统计长度,也可统计面积,或者两者都统计。如果你对精确位不满意,你可以改动程序中的数字(我已经在程序注释中说明)。;= ;面积和长度统计程序 ;highflybird kunming ;= (prompt 命令为:AM) (defun C:am (/ fssliSSareatotlenentlen enamenameobjtext-Stext-LinsPt0height insPt1insPt2text-1text-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) (initget 1 1 2 3) (setq f (getkword n请输入你要统计的面积长度两者:) (if (and (setq ss (ssget) (setq insPt0 (getpoint n请输入文字插入点: ) (setq height (getdist n请输入文字高度:) ) (progn (setq l (sslength ss) (setq i 0) (setq SSarea 0) (setq totlen 0) (setq insPt1 (vlax-3d-point insPt0) (setq insPt2 (polar insPt0 (* 1.5 Pi) (* 1.5 height) (setq insPt2 (vlax-3d-point insPt2) (cond ( (= f 1) (repeat l (func-1) (func-2) (setq i (1+ i) ) (setq text-S (strcat (convert1 SSarea 6) 平方米);总面积为:小数后6位 (vla-addtext *MSP text-S insPt1 height) ) ( (= f 2) (repeat l (func-1) (func-3) (setq i (1+ i) ) (setq text-L (strcat (convert1 totlen 4) 米);总长度为:小数后4位 (vla-addtext *MSP text-L insPt2 height) ) ( (= f 3) (repeat l (func-1) (func-2) (func-3) (setq i (1+ i) ) (setq text-S (strcat (convert1 SSarea 6) 平方米);总面积为:小数后6位 (setq text-L (strcat (convert1 totlen 3) 米);总长度为:小数后3位 (vla-addtext *MSP text-S insPt1 height) (vla-addtext *MSP text-L insPt2 height) ) ) ) (alert 你没有选取物体或者输入正确的数据!) ) (princ) ) (defun func-1 () (setq ename (ssname ss i) (setq obj (vlax-ename-vla-object ename) (setq elist (entget ename) (setq name (cdr (assoc 0 elist) ) ;面积的统计 (defun func-2 (/ p1 p2 p3 p4) (if (vlax-property-available-p obj area) (setq SSarea (+ (vla-get-area obj) SSarea) (if(= name SOLID) (setq p1 (cdr (assoc 10 elist) p2 (cdr (assoc 11 elist) p3 (cdr (assoc 12 elist) p4 (cdr (assoc 13 elist) SSarea (+ (area-of-verties (list p1 p2 p4 p3) SSarea) ) ) ) ) ;长度的统计 (defun func-3 (/ p1 p2 p3 p4) (cond ( (= name MLINE) (setq totlen (+ totlen (ml-length ename) ) ( (or (= name ARC) (= name CIRCLE) (= name LINE) (= name POLYLINE) (= name LWPOLYLINE) (= name SPLINE) (= name ELLIPSE) ) (setq entlen (vlax-curve-getdistatparam ename (vlax-curve-getendparam ename) (setq totlen (+ totlen entlen) ) ( (= name SOLID) (setq p1 (cdr (assoc 10 elist) (setq p2 (cdr (assoc 11 elist) (setq p3 (cdr (assoc 12 elist) (setq p4 (cdr (assoc 13 elist) (setq totlen (+ (length-of-verties (list p1 p2 p4 p3) totlen) ) ) ) ;Mline的长度 (defun ml-length (ename / j d ptlist) (foreach n (entget ename) (if(= (car n) 11) (setq ptlist (cons (cdr n) ptlist) ) ) (reverse ptlist) (setqj 0) (setq d 0) (repeat (1- (length ptlist) (setq d (+ d (distance (nth j ptlist) (nth (1+ j) ptlist) (setq j (1+ j) ) d ) ;单位转化 (defun convert (x n / tol_x fra_x int_x) (setq tol_x (/ x (expt 10 n) (setq fra_x (rtos (- tol_x (fix tol_x) 2 n) (setq fra_x (vl-string-left-trim 0 fra_x) (setq int_x (itoa (fix tol_x) (strcat int_x fra_x) ) (defun convert1 (x n / tol_x fra_x int_x) (setq tol_x (/ x (expt 10 n) (setq fra_x (rtos (- tol_x (fix tol_x) 2 3) (setq fra_x (vl-string-left-trim 0 fra_x) (setq int_x (itoa (fix tol_x) (strcat int_x fra_x) ) ;n个点的长度 (defun length-of-verties (pts / i l len pts1) (setq i -1 len 0) (setq pts1 (cons (last pts) pts) (repeat (length pts) (setq i(1+ i) (setq l(distance (nth i pts1) (nth (1+ i) pts1) (setq len (+ l len) ) ) ;n个点的面积 (defun area-of-verties (pts / i area PX0 PY0 x1 y1 x2 y2) (setq i 0) (setq area 0) (setq px0 (caar pts) (setq py0 (cadar pts) (repeat (- (len
温馨提示
- 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
- 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
- 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
- 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
- 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
- 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
- 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。
最新文档
- 部编版二年级语文下册备课指导
- 2023年度济宁职业技术学院单招《物理》能力提升B卷题库附参考答案详解【黄金题型】
- 医师定期考核题库检测试题打印及参考答案详解(能力提升)
- 2024年安全员考试试卷附答案详解(A卷)
- 2024医学检验(师)高分题库附答案详解【综合卷】
- 混凝土施工安全管理与技术保障
- 2024江西省贵溪市中考数学能力检测试卷及参考答案详解【A卷】
- 2025年反射疗法师大赛理论模拟题库带答案详解(A卷)
- 施工项目目标控制说课稿-2025-2026学年中职专业课-建筑施工组织与管理-建筑类-土木建筑大类
- 制定印刷成本控制策略
- 医疗机构卫生技术人员名录
- 安全文明施工措施费使用计划表完整优秀版
- 项目施工重大安全隐患排查表
- 材料、构配件进场检验记录
- 大象版五年级科学上册 《感官、大脑与认知》教育教学课件
- 《Unit2 Let's talk teens》教学设计教案
- 电生理发展史
- 2.5人脑的高级功能-高二上学期生物人教版(2019)选择性必修1
- 高压燃气管线施工安全生产措施
- T∕CBMF 95-2020 T∕CCPA 19-2020 内衬玻璃钢钢筋混凝土复合管
- 重力坝毕业设计
评论
0/150
提交评论