已阅读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. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。
最新文档
- 中学体育教师绩效考核细则
- 企业行政工作执行规范手册
- 安全行车责任落实承诺书(4篇)
- 动物村中的奇幻故事想象作文15篇
- 公司年终工作总结及来年计划范文
- 门面出租附加合同范本
- 鞋店连锁加盟合同范本
- 餐厅花店合作合同范本
- 画室助教兼职合同范本
- 中小学英语语法教学课件设计
- 甘肃开放大学2025年《地域文化(本)》形成性考核1-3终考答案
- 中国五矿秋招面试题及答案
- 2025年(完整)汉字听写大会竞赛试题库(附答案)
- 2025年潜江市事业单位人才引进55人考试笔试参考题库附答案解析
- 水电系统安装施工方案
- 荒山承包合同补充协议
- 建筑装饰工程项目总结及经验分享
- 2025年医学检验副高职称答辩题库及答案
- 2025“才聚齐鲁成就未来”山东文旅云智能科技有限公司招聘2人笔试历年典型考点题库附带答案详解3套试卷
- 2025-2030民办中小学师资队伍建设研究及管理优化与发展策略报告
- 村干部考公务员试题及答案
评论
0/150
提交评论