Aller au contenu

Application.Getopenfilname


Fundream

Messages recommandés

Bonjour à tous,

 

Je souhaite mettre à jour tous les bloc de mon dessin par les blocs portants le même nom contenus dans un autre fichier dwg.

J'ai tenté le LISP sans succès, les blocs s'insèrent sans se redéfinir et j'essai donc le Vba dont je n'ai aucune notion.

Pour choisir mon fichier source des bloc je souhaite utiliser Application.getopenfilename ("Fichier DWG (*dwg), *dwg") mais visiblement autocad ne reconnais pas la commande.

Si vous avez une solution à m'apporter pour réaliser cette tache, se serait d'une grande aide.

Merci

Autocad 2015 - Lumion 3D - SCIA Engineer

I7 6700K 4 cores @4.0Ghz - 32Go DDR4 - GTX980ti 6Gb - SSD 512Go - Windows 7 64 bits.

Lien vers le commentaire
Partager sur d’autres sites

Il y a 2 heures, Fundream a dit :

Je souhaite mettre à jour tous les bloc de mon dessin par les blocs portants le même nom contenus dans un autre fichier dwg.

J'ai tenté le LISP sans succès, les blocs s'insèrent sans se redéfinir

La séquence suivante devrait suffire pour redéfinir un bloc sans insérer de bloc.

(command "_.insert" (strcat nomBloc "=" cheminFichierBloc))(command)

 

Il y a 2 heures, Fundream a dit :

j'essai donc le Vba

Tout ce que tu ferais en VBA AutoCAD tu peux le faire en Visual LISP. Les deux utilisent la même API COM/ActiveX.

Gilles Chanteau - gileCAD - GitHub
Développements sur mesure pour AutoCAD

Lien vers le commentaire
Partager sur d’autres sites

Je suis désolé Gile mais cette séquence insère le bloc nommé sans mettre a jour l'ancien.

J'ai tenté pas mal de chose mais autocad me dit "définition a double du bloc impossible", donc j'ai tenté de renommer les bloc avant insertion des nouveau mais rien ne se passe et ma liste reste désespérément vide...

(defun c:UpdateBlocks (/ source-dwg block-list old-block-name new-block-name)
  (setq source-dwg (getfiled "Sélectionnez le fichier DWG source" "" "dwg" 8))
  (if source-dwg
    (progn
      (setq block-list (vl-remove-if '(lambda (x) (= (cdr (assoc 2 x)) "*Model_Space")) (dictsearch (namedobjdict) "ACAD_BLOCK")))
      (foreach block block-list
        (progn
          (setq old-block-name (cdr (assoc 2 block))
                new-block-name (strcat old-block-name "-old"))
          (command "_.-rename" "_B" old-block-name new-block-name)
          (command "_.-insert" source-dwg old-block-name "_0,0" "_1" "_1" "_0")
        )
      )
    )
  )
  (princ)
)

Autocad 2015 - Lumion 3D - SCIA Engineer

I7 6700K 4 cores @4.0Ghz - 32Go DDR4 - GTX980ti 6Gb - SSD 512Go - Windows 7 64 bits.

Lien vers le commentaire
Partager sur d’autres sites

Bonjour @Fundream

Hypothèses : Dessin A celui dont les blocs doivent se mettre à jour, Dessin B celui qui a les bons blocs

Il est toujours possible d'ouvrir le dessin A, de tout effacer sans purger, d'insérer le dessin B, tous les blocs se redéfiniront puis enregistrer sous un autre nom.

Amicalement

Lien vers le commentaire
Partager sur d’autres sites

Bonjour @didier

Si je ne purge pas, l'insertion utilise les blocs déjà présent dans le fichier, ils ne se redéfinissent donc pas.

En plus l'idée c'est de redéfinir les blocs en place, exactement au même endroit que les originaux, les plans étant déjà établis mais avec des bloc non à jour.

Autocad 2015 - Lumion 3D - SCIA Engineer

I7 6700K 4 cores @4.0Ghz - 32Go DDR4 - GTX980ti 6Gb - SSD 512Go - Windows 7 64 bits.

Lien vers le commentaire
Partager sur d’autres sites

Coucou,
As-tu testé la routine RBloc de Patrick_35 ? De souvenir elle fonctionne sans soucis (aucune idée si cela correspond parfaitement à ton besoin cependant). J'ai également souvenir que depuis la version 2021 (?), je ne suis plus certaine de la version exacte..., AutoCAD a intégré nativement la possibilité de redéfinir une définition de bloc si l'on tente d'insérer un bloc issu d'un autre dessin sous condition que les deux blocs portent strictement le même nom et une définition de bloc différente. Cependant, aucune idée d'à quel point c'est conservateur concernant les propriétés dynamiques et attributs.

Bisous,
Luna

Lien vers le commentaire
Partager sur d’autres sites

Merci Luna je vais essayer RBloc mais de mon souvenir ça ne fait pas de changements de masse multiples.

Sur autocad 2020 j'arrive à redéfinir les blocs mais va savoir pourquoi, à l'enregistrement ça perd les materiaux...

Autocad 2015 - Lumion 3D - SCIA Engineer

I7 6700K 4 cores @4.0Ghz - 32Go DDR4 - GTX980ti 6Gb - SSD 512Go - Windows 7 64 bits.

Lien vers le commentaire
Partager sur d’autres sites

il y a 10 minutes, Fundream a dit :

Merci Luna je vais essayer RBloc mais de mon souvenir ça ne fait pas de changements de masse multiples.

Sur autocad 2020 j'arrive à redéfinir les blocs mais va savoir pourquoi, à l'enregistrement ça perd les materiaux...

Bonjour,

Et ça donne quoi avec EDIT_BLOC de @gile?

Sinon regarde aussi dans Express Tools

Amicalement

AutoCad MAP 2023 - Covadis + Autopiste 18.0c

www.colas-mayotte.fr

Lien vers le commentaire
Partager sur d’autres sites

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é