匿名用户
1级
2016-12-02 回答
;求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