MIC07 Posté(e) le 25 septembre 2008 Posté(e) le 25 septembre 2008 Bonjour all, Je cherche un petit coup de main ou un indice pour la réalisation de mon projet Je travail avec Autocad 2008 et sauvegarde mes schémas dans la version 2004 Bon j’expose mon petit problème, je dois changer la désignation et le numéro de plan dans un cartouche, jusque là pas compliqué …, mais je dois le faire 580 fois :P Donc j’ai commencé à pauser des questions et on m’a dirigé vers le Lisp … (j’y comprends pas grand-chose) … (lacune à revoir) Mes schémas sont placé dans un répertoire du même nom que l’attribut « DESIGNATION » généralement et dans ce répertoire on trouve les DWG qui ce nomme 01 pour le 1er plan, 02,03, in si de suite.A noté que le cartouche ce trouve dans le model space RésuméLe nom du bloc cartouche est « ISO_04 » Noms des attributs dans le cartouche ISO_04•AFFAIRE le nom du chantier « idem pour toute les pages »•ECHELLE l’échelle utilisée « idem pour toute les pages »•FEUILLE_NUM numéro de la page (peut être le nom du fichier) « variable »•NUMERO numéro du chantier « idem pour toute les pages »•PLAN_NUM numéro du plan « idem pour toute les pages »•DESIGNATION Désignation du plan « idem pour toute les pages » Merci d’avance pour votre aide
lesourd2 Posté(e) le 25 septembre 2008 Posté(e) le 25 septembre 2008 Salut BienvenuPour changer X fois le meme attribut d'un bloc => commande GATTE. @+
(gile) Posté(e) le 25 septembre 2008 Posté(e) le 25 septembre 2008 Salut et bienvenue, À moins d'utiliser ObjectBDX avec Visual LISP, une routine LISP ne fonctionne que dans dans le fichier courant.Mais tu peux faire une routine LISP pour mettre le cartouche à jour et à l'aide d'un script ouvrir chaque fichier exécuter le LISP, enregistrer et fermer le fichier (voir SuperAutoScript par exemple) Voilà un exemple de LISP qui remplace la valeur de l'attribut FEUILLE_NUM par le nom du fichier et l'attribut DESIGNATION par le nom du répertoire.Il faut entrer MIC07 à la ligne de commande pour le lancer dans le fichier courant.Le nom de la commande est le même dans le script, il faut que le lISP soit automatiquement chargé à chaque ouverture de dessin (voir ce sujet). (defun c:MIC07 (/ ss dir file) (vl-load-com) (setq file (vl-string-right-trim ".dwg" (getvar "DWGNAME")) dir (vl-string-right-trim "\\" (getvar "DWGPREFIX")) dir (substr dir (if (setq pos (vl-string-position (ascii "\\") dir 1 T)) (+ 2 pos) 1 ) ) ) (if (ssget "_X" '((0 . "INSERT") (2 . "ISO_04"))) (progn (vlax-for b (setq ss (vla-get-ActiveSelectionSet (vla-get-ActiveDocument (vlax-get-acad-object) ) ) ) (foreach att (vlax-invoke b 'GetAttributes) (cond ((= (vla-get-TagString att) "FEUILLE_NUM") (vla-put-TextString att file) ) ((= (vla-get-TagString att) "DESIGNATION") (vla-put-TextString att dir) ) (T nil) ) ) ) (vla-delete ss) ) ) (princ) ) [Edité le 25/9/2008 par (gile)] Gilles Chanteau - gileCAD - GitHub Développements sur mesure pour AutoCAD
MIC07 Posté(e) le 26 septembre 2008 Auteur Posté(e) le 26 septembre 2008 Merci beaucoup, je ne m’attendais pas à une raiponce aussi rapide :) J’ais suivi un moment la voie de la commande gatte mais vite abandonné :casstet: J’ai même utilisé un lisp qui récupère les données du cartouche dans un fichier txt (jusque maintenant la version la plus rapide) Je teste votre proposition et vous dis quoi :D [Edité le 26/9/2008 par MIC07]
MIC07 Posté(e) le 30 septembre 2008 Auteur Posté(e) le 30 septembre 2008 Teste très très concluent merci Gile :D As-tu une idée pour modifier le reste des attribues du cartouche ? :) :exclam: Peut être en utilisent la commande ATTIN mais je ne sais pas comment l’ajouter au lisp
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