formula1 Posté(e) le 2 juillet 2007 Posté(e) le 2 juillet 2007 Bonjours a tous, j'aimerais savoir si c'est possible de créer en VBA une routine me permettant de cliquer sur un bloc dans mon dessin et d'en ouvrir le fichier source?Je m'explique, j'ai un prog qui se greffe a autocad pour sortir mes indices de barre.Seulement quand je sort des barre avec des forme bizarre, le bloc qu'il créé ne me conviends pas, donc je dois le modifier, le seul hic c'est qu'il porte un nom pas possible du genre "s_AAR@MBR@EED@ID.dwg".Et donc ce que je veus faire c'est cliquer sur ce bloc et qu'il me l'ouvre automatiquement dans AUTOCAD.
winfield Posté(e) le 2 juillet 2007 Posté(e) le 2 juillet 2007 Du peu que je connais, peu importe le langage, ce n'est pas possible ( à moins de scanner tous le(s) disque(s) ), vu que dans ton dessin tu n'as qu'une définition de block. Par contre, ouvrir une définition pour modifier, là, tu peux. Et t'as pas besoin de coder, un double-clic sur le bloc suffit.Entre autre chose je ne comprends pas la relation entre le nom du bloc et le reste, mais bon............Bonne soirée Nous n’ héritons pas de la terre de nos ancêtres.Nous l’empruntons à nos enfants.
sechanbask Posté(e) le 2 juillet 2007 Posté(e) le 2 juillet 2007 Je pense que c'est possible (en partant du principe que tout est possible mdr).Je ne dis pas que je serais capable de le faire mais...Tu pourrais mettre dans dans fichier de ton bloc un attribut dans ton bloc avec le champs du nom, comme ça en l'insérant tu auras au moins le nom, je me demande même si tu peux pas mettre le chemin de ton fichier dans un attribut...Bon courage, j'espère que ça t'aidera ATTENTION : j'ai perdu mon bloc en mettant le champs du fichiers avec le nom du chemin. Quand j'ai fermé mon éditeur de bloc(j'ai une version2006) Fait des essais avant de faire ça avec de vrais blocs. [Edité le 2/7/2007 par sechanbask] ATEGIE - Bureau d'Études Fluideshttp://www.ategie.fr/uploads/ategie/ategie-at%C3%A9gie-bureau-%C3%A9tudes-etudes-fluides-logo-100x56.pngExécution, Synthèse, Conception, Maîtrise d'Oeuvre, Audit, Chiffragewww.ategie.fr
(gile) Posté(e) le 2 juillet 2007 Posté(e) le 2 juillet 2007 Oui c'est possible, mais comme dit winfield, si tu ne précise pas un peu le chemin, ça peut être très long. Un exemple en LISP (je ne cause pas le VBA), si le fichier n'est pas dans un répertoire du chemin de recherche, il est demandé à l'utilisateur d'indiquer le chemin (on peut entrer seulement C: par exemple ou être un peu plus précis (defun c:open-dwg (/ app bloc elst file path dir) (vl-load-com) (and (setq app (vlax-get-acad-object)) (setq bloc (car (entsel))) (= "INSERT" (cdr (assoc 0 (setq elst (entget bloc))))) (setq file (strcat (cdr (assoc 2 elst)) ".dwg")) (if (setq path (findfile file)) (vla-put-ActiveDocument app (vla-open (vla-get-documents app) path) ) (progn (setq dir (getstring "\nIndiquez le chemin: ")) (if (setq path (GetFirstFile (strcat (cdr (assoc 2 elst)) ".dwg") (list dir) ) ) (vla-put-ActiveDocument app (vla-open (vla-get-documents app) path) ) (alert "\nAucun fichier trouvé") ) ) ) ) (princ) ) ;;; GetFirstFile -ElpanovEvgeniy- (defun GetFirstFile (f p) (cond ((not p) nil) ((vl-directory-files (car p) f) (strcat (car p) "\\" (car (vl-directory-files (car p) f))) ) ((GetFirstFile f (append (mapcar (function (lambda (x) (strcat (car p) "\\" x))) (vl-remove ".." (vl-remove "." (vl-directory-files (car p) nil -1)) ) ) ;_ mapcar (cdr p) ) ;_ append ) ;_ GetFirstFile ) ) ;_ cond ) [Edité le 2/7/2007 par (gile)] Gilles Chanteau - gileCAD - GitHub Développements sur mesure pour AutoCAD
oran Posté(e) le 3 juillet 2007 Posté(e) le 3 juillet 2007 Bonjour,Ceci n'a rien à voir mais, par contre, peut éventuellement venir en complément. [surligneur]WBL.lsp[/surligneur] ( Ouvre un fichier de chaque bloc utilisé dans le dessin en cours) (defun c:wbl(/ bl cmd doc) (vl-load-com) (setq doc (vla-get-activedocument (vlax-get-acad-object)) cmd (getvar "cmdecho")) (vla-startundomark doc) (setvar "cmdecho" 0) (setq bl (tblnext "block" t)) (while bl (if (and (not (eq (logand (cdr (assoc 70 bl)) 1) 1)) (not (eq (logand (cdr (assoc 70 bl)) 4) 4)) (not (eq (logand (cdr (assoc 70 bl)) 16) 16)) (not (vl-string-search "AVE_" (strcase (cdr (assoc 2 bl)))))) (command "_.wblock" (strcat (getvar "dwgprefix") (cdr (assoc 2 bl))) (cdr (assoc 2 bl))) ) (setq bl (tblnext "block")) ) (setvar "cmdecho" cmd) (vla-endundomark doc) (princ) ).....il n'est pas de moi, je n'y connais rien en language lisp, peut-être de Gile d'ailleurs...!! je ne sais plus. ;)
Messages recommandés
Créer un compte ou se connecter pour commenter
Vous devez être membre afin de pouvoir déposer un commentaire
Créer un compte
Créez un compte sur notre communauté. C’est facile !
Créer un nouveau compteSe connecter
Vous avez déjà un compte ? Connectez-vous ici.
Connectez-vous maintenant