多条线段围成的闭合区梁历域求面积,可扒渣稿以先用 绘图-边界 来创建面域而求得面积和周长
-----------------------------------------------------
程序名:linelong.LSP
功 能:计算线段和多义线的长度
版 权:春孝(C) copyright 2001.8 by maohong. All Rights Reserved!
-----------------------------------------------------
(defun c:ll( / a n index0 tuyname)
(setq a (ssget))
(setq n (sslength a)) 求出选择集中的图元数目
(setq index0 0)设置计数器
(setq s 0)
(repeat n 对后面的表达式进行N次计算
(setq tuyname (ssname a index0))返回选择集中由序号指定的图元名
(setq index0 (+ index0 1)) 计数器加一
(setq ent1 (entget tuyname))
(setq et (length ent1))
(setq et1 et)
(setq index1 0)
(setq test 0)
(setq x2 0)
(setq y2 0)
(setq x1 0 y1 0)
(setq s0 0)
(repeat 2
(setq xy (nth index1 ent1))
计算line线长
(if (= (cdr xy) "LINE")
(progn
(setq index2 0)
(repeat et1
(setq xy (nth index2 ent1))
(if (= (car xy) 10)
(progn
(setq x1 (nth 1 xy))
(setq y1 (nth 2 xy))
)
)
(if (= (car xy) 11)
(progn
(setq x2 (nth 1 xy))
(setq y2 (nth 2 xy))
)
)
(setq index2 (+ index2 1))
)
(setq s0 (sqrt (+(* (- x2 x1) (- x2 x1)) (* (- y2 y1) (- y2 y1)))))
)
)
line线计算结束
计算"LWPOLYLINE"线长
(if (= (cdr xy) "LWPOLYLINE")
(progn
(setq index2 0)
(repeat et1
(setq xy (nth index2 ent1))
(if (= (car xy) 10)
(if (= test 1)
(progn
(setq x2 x1)
(setq y2 y1)
(setq x1 (nth 1 xy))
(setq y1 (nth 2 xy))
(setq s0 (+ s0 (sqrt (+(* (- x2 x1) (- x2 x1)) (* (- y2 y1) (- y2 y1))))))
)
)
)
(if (= (car xy) 10)
(if (= test 0)
(progn
(setq x1 (nth 1 xy))
(setq y1 (nth 2 xy))
(setq test 1)
)
)
)
(setq index2 (+ index2 1))
)
)
)
计算"LWPOLYLINE"线结束
(setq index1 (+ index1 1))
)
(print s0)
(setq s (+ s s0))
)
(print )
(princ "总长度:")
(princ s)
(setq a nil)
(princ)
)
1、把需要输出坐标的点用多段线连接起来。2、然后选中这条帆配多段线。输入命令list。
3、出来一个对话框,这些点的坐标就分别出来铅铅了。
4、然后复制,直接粘贴到EXCEL。这个时候数据是一个整体。
5、你如果需要编辑的话。可以点击数据-分列(快捷可以点那个粘贴选项,就是你粘贴过来下面那个槐轿好像文件夹的图标)。
LSP是autocad的编程命令格式凯乎LSP程序用法: 先把*.LSP程序放入Autocad支持的目录。
方法1.进入Autocad__Tools__Load Application...__File__选告凯中目标__打开__Load即可。
方法2.进入Autocad__在Command:输入(load "lsp命令")__OK。
方法3.以上方法如退出Autocad,在进入就要重新来过,要每次自动装盯友悉载,就要把你要的(load "lsp程序")写入ACAD.lsp即可。
欢迎分享,转载请注明来源:内存溢出
评论列表(0条)