CAD中多个封闭区域的总面积计算插件
我在网上找到一个程序,如下:;求spline,polyline,lwpolyline,arc面积(defunc:ss()(setq总面积0)(setq总亩数0)(setq...
我在网上找到一个程序,如下:
;求spline,polyline,lwpolyline,arc面积
(defun c:ss ()
(setq 总面积 0)
(setq 总亩数 0)
(setq 面积 0)
(setq 总周长 0)
(setq 周长 0)
(setq k 0)
(setq a nil)
(setq a (ssget))
(setq Len (sslength a))
(repeat Len
(setq name (ssname a k))
(setq ent1 (entget name))
(setq na (assoc 0 ent1))
(setq na (cdr na))
(if (= na "SPLINE")
(progn
(command "area" "o" name)
(setq 面积 (getvar "area"))
(setq 总面积 (+ 总面积 面积))
(setq 周长 (getvar "perimeter"))
(setq 总周长 (+ 总周长 周长))
)
)
(if (= na "POLYLINE")
(progn
(command "area" "o" name)
(setq 面积 (getvar "area"))
(setq 总面积 (+ 总面积 面积))
(setq 周长 (getvar "perimeter"))
(setq 总周长 (+ 总周长 周长))
)
)
(if (= na "ARC")
(progn
(command "area" "o" name)
(setq 面积 (getvar "area"))
(setq 总面积 (+ 总面积 面积))
(setq 周长 (getvar "perimeter"))
(setq 总周长 (+ 总周长 周长))
)
)
(if (= na "CIRCLE")
(progn
(command "area" "o" name)
(setq 面积 (getvar "area"))
(setq 总面积 (+ 总面积 面积))
(setq 周长 (getvar "perimeter"))
(setq 总周长 (+ 总周长 周长))
)
)
(if (= na "ELLIPSE")
(progn
(command "area" "o" name)
(setq 面积 (getvar "area"))
(setq 总面积 (+ 总面积 面积))
(setq 周长 (getvar "perimeter"))
(setq 总周长 (+ 总周长 周长))
)
)
(if (= na "LINE")
(progn
(command "area" "o" name)
(setq 面积 (getvar "area"))
(setq 总面积 (+ 总面积 面积))
(setq 周长 (getvar "perimeter"))
复制以下内容到记事本:
(setq 总周长 (+ 总周长 周长))
)
)
(if (= na "LWPOLYLINE")
(progn
(command "area" "o" name)
(setq 面积 (getvar "area"))
(setq 总面积 (+ 总面积 面积))
(setq 周长 (getvar "perimeter"))
(setq 总周长 (+ 总周长 周长))
)
)
(setq k (+ k 1))
(setq 总亩数 (/ 总面积 666.667))
)
(print (list "总周长=" 总周长))
(print (list "总面积=" 总面积 "平方米" 总亩数 "亩"))
(princ)
)
结束复制,保存文件。将文件后缀.txt更改为.lsp。OK。完成,加载应用程序(CAD快捷命令AP)。本lisp的快捷命令为:SS
但是这样计算的结果是科学计数法体现的 ,怎么编辑后是以平方米或者平方毫米显示结果的。 展开
;求spline,polyline,lwpolyline,arc面积
(defun c:ss ()
(setq 总面积 0)
(setq 总亩数 0)
(setq 面积 0)
(setq 总周长 0)
(setq 周长 0)
(setq k 0)
(setq a nil)
(setq a (ssget))
(setq Len (sslength a))
(repeat Len
(setq name (ssname a k))
(setq ent1 (entget name))
(setq na (assoc 0 ent1))
(setq na (cdr na))
(if (= na "SPLINE")
(progn
(command "area" "o" name)
(setq 面积 (getvar "area"))
(setq 总面积 (+ 总面积 面积))
(setq 周长 (getvar "perimeter"))
(setq 总周长 (+ 总周长 周长))
)
)
(if (= na "POLYLINE")
(progn
(command "area" "o" name)
(setq 面积 (getvar "area"))
(setq 总面积 (+ 总面积 面积))
(setq 周长 (getvar "perimeter"))
(setq 总周长 (+ 总周长 周长))
)
)
(if (= na "ARC")
(progn
(command "area" "o" name)
(setq 面积 (getvar "area"))
(setq 总面积 (+ 总面积 面积))
(setq 周长 (getvar "perimeter"))
(setq 总周长 (+ 总周长 周长))
)
)
(if (= na "CIRCLE")
(progn
(command "area" "o" name)
(setq 面积 (getvar "area"))
(setq 总面积 (+ 总面积 面积))
(setq 周长 (getvar "perimeter"))
(setq 总周长 (+ 总周长 周长))
)
)
(if (= na "ELLIPSE")
(progn
(command "area" "o" name)
(setq 面积 (getvar "area"))
(setq 总面积 (+ 总面积 面积))
(setq 周长 (getvar "perimeter"))
(setq 总周长 (+ 总周长 周长))
)
)
(if (= na "LINE")
(progn
(command "area" "o" name)
(setq 面积 (getvar "area"))
(setq 总面积 (+ 总面积 面积))
(setq 周长 (getvar "perimeter"))
复制以下内容到记事本:
(setq 总周长 (+ 总周长 周长))
)
)
(if (= na "LWPOLYLINE")
(progn
(command "area" "o" name)
(setq 面积 (getvar "area"))
(setq 总面积 (+ 总面积 面积))
(setq 周长 (getvar "perimeter"))
(setq 总周长 (+ 总周长 周长))
)
)
(setq k (+ k 1))
(setq 总亩数 (/ 总面积 666.667))
)
(print (list "总周长=" 总周长))
(print (list "总面积=" 总面积 "平方米" 总亩数 "亩"))
(princ)
)
结束复制,保存文件。将文件后缀.txt更改为.lsp。OK。完成,加载应用程序(CAD快捷命令AP)。本lisp的快捷命令为:SS
但是这样计算的结果是科学计数法体现的 ,怎么编辑后是以平方米或者平方毫米显示结果的。 展开
2个回答
展开全部
把后面两句
(print (list "总周长=" 总周长))
(print (list "总面积=" 总面积 "平方米" 总亩数 "亩"))
改成
(print (list "总周长=" (rtos 总周长) "米"))
(print (list "总面积=" (rtos 总面积) "平方米" (rtos 总亩数) "亩"))
如果不想在结果中看到那么多引号可以改成
(princ (strcat "\n总周长=" (rtos 总周长) "米"))
(princ (strcat "\n总面积=" (rtos 总面积) "平方米, " (rtos 总亩数) "亩"))
(print (list "总周长=" 总周长))
(print (list "总面积=" 总面积 "平方米" 总亩数 "亩"))
改成
(print (list "总周长=" (rtos 总周长) "米"))
(print (list "总面积=" (rtos 总面积) "平方米" (rtos 总亩数) "亩"))
如果不想在结果中看到那么多引号可以改成
(princ (strcat "\n总周长=" (rtos 总周长) "米"))
(princ (strcat "\n总面积=" (rtos 总面积) "平方米, " (rtos 总亩数) "亩"))
推荐律师服务:
若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询