




免费预览已结束,剩余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. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。
最新文档
- 茶叶炒制包装线创新创业项目商业计划书
- 第四章第一讲玻璃包装容器性能测试
- 笔迹检验原理及笔迹特征
- 无线对讲系统升级创新创业项目商业计划书
- 上海市静安区高三下学期二模试题语文
- 敦煌高速面试题目及答案
- 河北省石家庄市井陉矿区贾庄镇区贾庄中学2024年数学七年级第一学期期末学业水平测试试题含解析
- 韩国概况考试试题及答案
- 重庆市合川区太和中学2024-2025学年九上数学期末达标检测模拟试题含解析
- 化学与社会单元复习
- 职业技能竞赛-网络与信息安全管理员理论题库(附参考答案)
- 2023年山东青岛局属高中自主招生物理试卷真题(含答案详解)
- 2024年中华全国律师协会招聘5人历年(高频重点复习提升训练)共500题附带答案详解
- 房地产 -2024年第二季度大连写字楼和零售物业市场报告
- 档案管理借阅制度
- 《电机与变压器》教案
- 质量目标及实施计划制定
- 重力式(仰斜、俯斜)挡土墙计算软件
- 财务年终总结报告
- 小米 新员工入职培训
- 2023年江苏财经职业技术学院单招考试职业适应性测试试题及答案解析
评论
0/150
提交评论