本帖最后由 1291500406 于 2020-11-18 19:01 编辑
(defun-q c:bb( / A B C )(command "cal" nil)
(cond((and(setq A (getpoint "\n输入A点:")) (setq B (getpoint A "\n输入B点:")) (setq C (getpoint B "\n输入C点:")))
(command "pline" "non"A "non" B "non" C "non" A"" "Area" "o" "l")
(alert(strcat "\n方法一:三角函数公式法---> 面积是: "(rtos(c:cal "abs(sin(ang(B,A)-ang(C,A))*dist(A,B)*dist(A,C)*0.5)"))))
(alert(strcat"\n方法二:变量法---> 面积是"(rtos(getvar "Area"))))
(alert(strcat"\n方法三:对象法---> 面积是"(rtos(vla-get-Area (vlax-ename->vla-object (entlast))))))
(alert(strcat"\n方法四:curve法---> 面积是"(rtos(vlax-curve-getArea (entlast)))))
(setq LA(distance a b)LB(distance a c)LC(distance b c)P(*(+ LA LB LC)0.5))
(alert(strcat "\n方法五:海伦公式法---> 面积是: "(rtos(sqrt(* P(- P LA)(- P LB)(- P LC))))))
(entdel(entlast))))(princ))
command的undo
->
(setq doc (vla-get-activedocument (vlax-get-acad-object)))
(vla-startundomark doc)
(vla-endundomark doc)
command 的 regen
(vla-regen (vla-get-activedocument (vlax-get-acad-object)) 1)
|