;SET POINT's ELEVATION for AutoCAD 12.0 - 14.0
;1999.3 by renmc

;get point elevation text
(defun getph( p /  plist flist sst te el)
   (setq plist '() flist (list (cons 8 "9212") (cons 0 "TEXT")))
   (setq plist (cons (list (- (car ptn) 5.0) (- (cadr ptn) 2.0)) plist)
	 plist (cons (list (+ (car ptn) 5.0) (- (cadr ptn) 2.0)) plist)
	 plist (cons (list (+ (car ptn) 5.0) (+ (cadr ptn) 2.0)) plist)
	 plist (cons (list (- (car ptn) 5.0) (+ (cadr ptn) 2.0)) plist)
   )
   (setq sst (ssget "CP" plist flist))
       (if sst
	(progn
         (setq sst (ssname sst 0))
	 (setq te (entget sst))
         (setq el (read (dxf 1 te)))
         (if (= (type el) 'REAL)
	     (progn
	       (setq te (subst (cons 8 "color") (assoc 8 te) te))
	       (entmod te)
	     )
	     (setq el nil)
	 )
	)
       )
   el
)
  
(defun dxf (code elist)
  (cdr (assoc code elist))
)

;Reverse the entitis point order
(defun C:SETPE( / ss1 emax count pt1 ph en ed et pto ptn sst te sc fc)
     (prompt "\nͼ9212POINTʵ߳...")
     (setq sc 0 fc 0)
     (setq ss1 (ssget "X" (list (cons 0 "POINT") (cons 8 "9212"))))
     (setq count 0 emax (sslength ss1))
     (while (< count emax)
       (setq en (ssname ss1 count)
             ed (entget en)
             et (dxf 0 ed)
             count (1+ count)
       )
       (setq pto (assoc 10 ed))
       (setq ptn (cdr pto))
       (if (setq ph (getph ptn))
	(progn
          (setq pt1 (list (car ptn) (cadr ptn) ph))
          (setq ptn (cons 10 pt1))
          (setq ed (subst ptn pto ed))
          (setq ed (subst (cons 8 "color") (assoc 8 ed) ed))
          (entmod ed)
          (setq sc (1+ sc))
        )
        (setq fc (1+ fc))
       );if
      );while
      (prompt "\nOK!")
      (if (> count 0) (prompt (strcat " " (itoa count) " POINTʵ! ")))
      (if (> sc 0) (prompt (strcat (itoa sc) " POINTʵ˸߳! ")))
      (if (> fc 0) (prompt (strcat (itoa fc) " POINTʵδø߳! ")))
  (prin1)
)
(prin1)