Rebonjour, J'ai trouvé, je n'ai meme plus besoin du fichier txt. Dans le même lisp j'ai 2 routines, une pour ouvrir le bloc et une pour réinserer le bloc. (defun partsearch (n /)
(cond
((findfile n)) ;;; first search the dir's in AutoCAD's "env" variable, then search the additional places listed below:
((findfile (strcat "H:/bloc/profile/" n))) ;;;<--- this is an example path
((findfile (strcat "H:/bloc/gomme/" n)));;;<--- this is another example path
;;; etc, etc. List as many block folder
;;; paths as you need, following the patterns
(t (progn
(prompt
(strcat "** PartSearch Error ** Required file (" n ") could not be found."))
(terpri)
)
)
)
);defun
;;; ----------- Open source drawing of selected Block--------------
(defun c:OpenBL ( / cmdecho regen n bpath)
(setq cmdecho (getvar "cmdecho"))
(setq regen (getvar "regenmode"))
(setvar "cmdecho" 0)
(setvar "regenmode" 0)
(setq ent (car (entsel "\nSelect Block Entity: ")))
(if (eq (cdr (assoc 0 (entget ent))) "INSERT")
(progn
(setq BLKN (vla-get-effectivename
(vlax-ename->vla-object ent)))
)
)
(setq bpath (partsearch (strcat blkn ".dwg")))
(if bpath
(if (= 0 (getvar "SDI"))
(vla-activate (vla-open (vla-get-documents (vlax-get-acad-object)) bpath))
(vla-sendcommand
(vla-get-activedocument
(vlax-get-acad-object))
(strcat "(command \"_.open\")\n" bpath "\n") )
)
)
(setvar "cmdecho" cmdecho)
(setvar "regenmode" 1)
(princ)
); close defun
(princ)
;;; ----------- Insert & rededine Block --------------
(defun c:ReInsertBL ( / cmdecho regen n bpath)
(setq cmdecho (getvar "cmdecho"))
(setq regen (getvar "regenmode"))
(setvar "cmdecho" 0)
(setvar "regenmode" 0)
(setq ent (car (entsel "\nSelect Block Entity: ")))
(if (eq (cdr (assoc 0 (entget ent))) "INSERT")
(progn
(setq BLKN (vla-get-effectivename
(vlax-ename->vla-object ent)))
)
)
(setq bpath (partsearch (strcat blkn ".dwg")))
(if bpath
(vl-cmdf "insert" (strcat blkn "=" bpath) )
(command)
)
(setvar "cmdecho" cmdecho)
(setvar "regenmode" 1)
(princ)
); close defun
(princ)
Juste une question, dans la routine ou j'ouvre le bloc, si le bloc est déjà ouvert le programme ne me dit pas qu'il est déjà ouvert et l'ouvre en Readonly. Y a t-il un moyen de résoudre cela... Encore merci et bon weekend Francine