;;; ------------------------------------------------------------
;;; AutoCATS ¸®½À ÀÚ·á½Ç
;; ¸í·É: SELTYPE
;; ±â´É: ±âÁØ °´Ã¼¿Í °°Àº ¿£Æ¼Æ¼ À¯ÇüÀ» ÇöÀç ¸ðµ¨ ¶Ç´Â ¹èÄ¡ °ø°£¿¡¼­ ¼±ÅÃ
;; ÃâÃ³: https://www.autocats.co.kr/lisp/select-type
;; ¹öÀü: 1.0 (2026-07-23)
;; ¶óÀÌ¼±½º: ÀÚÀ¯ »ç¿ë¡¤¼öÁ¤, Àç¹èÆ÷ ½Ã ÃâÃ³(autocats.co.kr) Ç¥±â
;; ¾ÈÀü: *error* ÇÚµé·¯ Æ÷ÇÔ, °´Ã¼ ¼öÁ¤ ¾øÀ½
;;; ------------------------------------------------------------

(defun autocats-seltype-find (entity / data entity-type tab)
  (setq data (entget entity)
        entity-type (cdr (assoc 0 data))
        tab (getvar "CTAB"))
  (ssget "_X" (list (cons 0 entity-type) (cons 410 tab))))

(defun c:SELTYPE (/ *error* picked selection entity-type)
  (defun *error* (msg)
    (if (and msg (not (wcmatch (strcase msg) "*CANCEL*,*QUIT*,*EXIT*,*Ãë¼Ò*")))
      (princ (strcat "\n[SELTYPE] Áß´Ü: " msg)))
    (princ))

  (setq picked (entsel "\n[SELTYPE] ±âÁØ °´Ã¼¸¦ ¼±ÅÃÇÏ¼¼¿ä: "))
  (if picked
    (progn
      (setq entity-type (cdr (assoc 0 (entget (car picked))))
            selection (autocats-seltype-find (car picked)))
      (if selection
        (progn
          (sssetfirst nil selection)
          (princ (strcat "\n[SELTYPE] " entity-type " "
                         (itoa (sslength selection)) "°³¸¦ ¼±ÅÃÇß½À´Ï´Ù.")))
        (princ "\n[SELTYPE] °°Àº À¯ÇüÀÇ °´Ã¼°¡ ¾ø½À´Ï´Ù.")))
    (princ "\n[SELTYPE] ±âÁØ °´Ã¼¸¦ ¼±ÅÃÇÏÁö ¾Ê¾Ò½À´Ï´Ù."))
  (princ))

(princ "\n[AutoCATS] SELTYPE ·Îµå ¿Ï·á - ¸í·ÉÇà¿¡ SELTYPE ¸¦ ÀÔ·ÂÇÏ¼¼¿ä.")
(princ)
