Aller au contenu

LISP ou VBA faire un bloc automatiquement


Messages recommandés

Posté(e)

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

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

Posté(e)

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

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

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

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é