ename-of

Nas subrotinas as vezes nos referenciamos as entidades pelo ename, pelo vla-object ou pela handle da mesma... mas temos de ficar testando pra saber qual referência temos... então pra simplificar:
(defun ename-of (ent)
  (
if (setq ent
        (cond
          ((= 'STR (type ent)) (handent ent))
          ((
= 'VLA-OBJECT (type ent))
           (
vlax-vla-object->ename ent))
          ((
listp ent) (cdr (assoc -1 ent)))
          (
t ent)))
    (
if (entget ent)  ent)))

esta rotina tenta converter o argumento passado em um ENAME, se conseguir, tenta recuperar sua ELIST, se conseguir, a referência é válida e a entidade existe, caso contrário, retorna NIL

dxf

Uma rotina bastante útil, pois ela simplifica o processo de pegar o valor de um dxf duma entidade... veja que funciona com selections sets também

(defun dxf (dx ent / tmp ls? l e n)
  (
if (= 'PICKSET (type ent))
    (
progn
      (setq n 0)
      (
repeat (sslength ent)
    (
setq e (ssname ent n)
          n (1+ n)
          l (append l (list (dxf dx e)))))
      l)
    (
progn
      (setq ent (if (listp ent)
                    ent 
                    (if (setq tmp (ename-of ent)) 
                        (
entget tmp '("*"))))
        ls? (listp dx)
        dx  (if ls? dx (list dx))
        tmp (if ent
              (mapcar 
                '(lambda (x) (cdr (assoc x ent)))
               dx)))
    (
if ls? tmp (car tmp)))))