Aller au contenu

OUVERTURE DE FICHIER DWG


Messages recommandés

Posté(e)

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.

Posté(e)

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.

Posté(e)

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 Fluides

http://www.ategie.fr/uploads/ategie/ategie-at%C3%A9gie-bureau-%C3%A9tudes-etudes-fluides-logo-100x56.png

Exécution, Synthèse, Conception, Maîtrise d'Oeuvre, Audit, Chiffrage

www.ategie.fr

Posté(e)

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

Posté(e)

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. ;)

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 compte

Se connecter

Vous avez déjà un compte ? Connectez-vous ici.

Connectez-vous maintenant
×
×
  • Créer...

Information importante

Nous avons placé des cookies sur votre appareil pour aider à améliorer ce site. Vous pouvez choisir d’ajuster vos paramètres de cookie, sinon nous supposerons que vous êtes d’accord pour continuer. Politique de confidentialité