曲面算面积,怎么能提高执行效率。。
自己写了一个关于算曲面面积的lisp。但是执行时间很长。应该是调用command "explode"比较耗时。请大神们看看怎么能让它执行得更快。
(defun 3pt_mj (pt1 pt2 pt3/ a b c p s);三点求面积
(if (/= pt1 pt2 pt3)
(progn
(setq a (distance pt1 pt2))
(setq b (distance pt1 pt3))
(setq c (distance pt2 pt3))
;海伦公式求面积
(setq p (/(+ a b c)2))
(setq s (abs(sqrt(* p (- p a)(- p b)(- p c)))))
)
(alert "\n有重合的点。请核对。")
)
s
)
(defun C:tt (/ ent entity i mj mj1 ptlst ss tymj)
(setvar "cmdecho" 0)
(setq ss (ssget '((0 . "ACAD_PROXY_ENTITY"))))
(setq i 0 MJ 0 tymj 0)
(repeat (sslength ss)
(command "UNDO" "be")
(setq ent (cdr(assoc -1 (entget(ssname ss i)))))
(setq Entity (entlast))
(command "explode" ss)
(setq ptlst nil)
(while
(setq Entity (entnext Entity))
(setq ent (entget Entity))
(setq ptlst (append ptlst (list(cdr(assoc 10 ent)))))
)
;====算面积=======
(setq mj1 (3pt_mj (car ptlst)(cadr ptlst)(caddr ptlst)))
(setq MJ (+ MJ mj1))
(setq i (1+ i))
(command "undo" "e" "undo" "1")
)
(alert (strcat "\n所选取图像面积为:" (rtos (/ MJ 1000000)2 3)"平方米。"))
(setvar "cmdecho" 1)
(princ)
)
http://bbs.mjtd.com/xwb/images/bgimg/icon_logo.png 该贴已经同步到 取个长点勒名字的微博
页:
[1]