draw-insert

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.

Nenhum comentário:

Postar um comentário