sechanbask Posté(e) le 18 mars 2008 Posté(e) le 18 mars 2008 Bonsoir je cherche à faire en VBA ou lisp une commande pour faire un bloc automatiquement : avec l'ensemble des entiété du plan,le nom du bloc sera le ne nom du plan,l'unité du bloc correspond à l'unité du plan je vous laisse le début du code VBA pour les Sub Creer_bloc_nom_auto() Dim strNomFichierentier As String Dim strNomFichier As String Dim strExtension As String strNomFichierentier = VBA.UCase(ThisDrawing.Name) strExtension = VBA.Right(strNomFichierentier, 4) strNomFichier = VBA.Replace(strNomFichierentier, strExtension, "") strNomFichier = strNomFichier & " " ThisDrawing.SendCommand ("-b " & strNomFichier & " " & "0,0 ") End Sub je n'arrive pas à mettre le nom du plan dans le nom du bloc 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
winfield Posté(e) le 18 mars 2008 Posté(e) le 18 mars 2008 salutqu'est-ce que tu appelles "le nom du plan "? Nous n’ héritons pas de la terre de nos ancêtres.Nous l’empruntons à nos enfants.
(gile) Posté(e) le 18 mars 2008 Posté(e) le 18 mars 2008 Salut, En Visual LISP (defun c:bloctout (/ ss blk lst) (vl-load-com) (or *acdoc* (setq *acdoc* (vla-get-ActiveDocument (vlax-get-acad-object))) ) (if (setq ss (ssget "_X" '((410 . "Model")))) (progn (setq blk (vla-add (vla-get-Blocks *acdoc*) (vlax-3d-point '(0 0 0)) (vl-filename-base (getvar "DWGNAME")) ) ) (vlax-for obj (vla-get-ActiveSelectionSet *acdoc*) (setq lst (cons obj lst)) ) (vlax-invoke *acdoc* 'CopyObjects lst blk) ) ) (princ) ) [Edité le 18/3/2008 par (gile)] Gilles Chanteau - gileCAD - GitHub Développements sur mesure pour AutoCAD
sechanbask Posté(e) le 18 mars 2008 Auteur Posté(e) le 18 mars 2008 admettons que le plan s'appelle "blblabjkqbsm 78 iSt.dwg"je veux que le bloc s'appelle "blblabjkqbsm 78 iSt" merci (gile) je test ton code dès demain... si ça marche bien je vais l'intégrer à mon nettoyeur.dvb 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
sechanbask Posté(e) le 18 mars 2008 Auteur Posté(e) le 18 mars 2008 mais je n'arrive pas à en faire un bloc et d'ailleurs j'ai testé ta fonction mais; erreur: type d'argument incorrect: VLA-OBJECT nil tu veux quelque chose pour débuggé ta fonction ? ça vient peut être du nom super long de mon plan ? [Edité le 18/3/2008 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 18 mars 2008 Posté(e) le 18 mars 2008 Oupss !!!...J'ai encore oublié le (vl-load-com) pour charger les fonction Visual LISP.Je corrige le code. Gilles Chanteau - gileCAD - GitHub Développements sur mesure pour AutoCAD
(gile) Posté(e) le 18 mars 2008 Posté(e) le 18 mars 2008 Plus simple, (defun c:bloctout (/ doc blk lst) (vl-load-com) (setq doc (vla-get-ActiveDocument (vlax-get-acad-object)) blk (vla-add (vla-get-Blocks doc) (vlax-3d-point '(0 0 0)) (vl-filename-base (getvar "DWGNAME")) ) ) (vlax-for obj (vla-get-ModelSpace doc) (setq lst (cons obj lst)) ) (vlax-invoke doc 'CopyObjects lst blk) (princ) ) [Edité le 18/3/2008 par (gile)] Gilles Chanteau - gileCAD - GitHub Développements sur mesure pour AutoCAD
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