A subrotina abaixo, insere um bloco no desenho. Se o parâmetro NOME for dado com o caminho completo do arquivo do bloco, este será procurado no HD…, veja que se você fizer isso, não coloque a extensão DWG no nome do arquivo.
(defun draw-insert (nome pt lay rot esc tags / ent tmp)
(setq tmp (vl-filename-base nome))
(if (setq nome (if (tblsearch “block” tmp)
tmp
(findfile (strcat nome “.dwg”))))
(progn
(setq ent (vla-InsertBlock (get-activespace)
(vlax-3d-point pt) nome esc esc esc rot)
tags (mapcar ‘list (car tags) (cadr tags)))
(if (= :vlax-true (vla-get-HasAttributes ent))
(foreach x (3d-of-vla (vla-GetAttributes ent))
(if (setq tmp (assoc (vla-get-tagstring x) tags))
(vla-put-TextString x (cadr tmp)))))
(if lay (remake-ent ent 8 lay))
(vla-get-handle ent))))
inserindo o bloco com o método activex, e não com entmake, eu não preciso me preocupar com os atributos do mesmo, pois via entmake, é necessário fazer entmake nas entidades dos atributos do bloco, senão eles não irão ser inseridos no desenho e este bloco ficará sem atributos editáveis… em resumo, torna-se mais prático assim.