;FACEAREA
;CAD Studio, 2013

(defun c:FaceArea ( / ss ssl en ed p1 p2 p3 p4 area3p fArea tArea)

(defun area3p (p1 p2 p3 / a b c s)
 (setq
	a (distance p1 p2)
	b (distance p2 p3)
	c (distance p3 p1)
	s (* 0.5 (+ a b c))
 )
(sqrt
	(*
		s
		(- s a)
		(- s b)
		(- s c)
	)
 )
)

;------------------------------------
  
  (princ "\nSelect 3D face(s): ")
  (setq ss (ssget '((0 . "3DFACE"))))
  (if (and ss (setq ssl (sslength ss)))(progn
     (setq i 0  tArea 0.0)
	 (repeat ssl
        (setq en (ssname ss i)
              ed (entget en)
              p1 (cdr (assoc 10 ed))
              p2 (cdr (assoc 11 ed))
              p3 (cdr (assoc 12 ed))
              p4 (cdr (assoc 13 ed))
              )
        (setq fArea (+ (area3p p1 p2 p3) (area3p p3 p4 p1)))
        (setq tArea (+ tArea fArea))
        (setq i (1+ i))
	 );rep
	 (princ (strcat "\nTotal area: " (rtos tArea 2)))
  ));if      
  (princ)
);defun

(princ "\nCommand FACEAREA loaded.")
(princ)
  
  

