fabbcad Posté(e) le 21 août 2009 Posté(e) le 21 août 2009 Bonjour, je suis nouveau sous autocad et je connais un peu la programmation en vba, c'est pourquoi je me tourne vers le vba plutôt que vers le lisp ou autre... Je souhaiterai connaître la commande à taper en vba pour insérer un bloc (ou coller en tant que bloc peu importe) à des coordonnées XY (Z inutile).Pouvez vous m'aider? J'ai essayer de récupérer le "free vba macro recorder" mais imposible de le lancer, je comprends pas comment ça marche. Sinon avec lui ça aurait été simple. Je sais pas si ça a une importnace mais je suis sous map3D 2009. Je vous remercie par avance. Fab.
(gile) Posté(e) le 21 août 2009 Posté(e) le 21 août 2009 Salut, Regarde dans l'aide aux développeurs d'AutoCAD > ActiveX and VBA Reference > Methods > InsertBlock method. Tu peux aussi cliquer sur le lien Example Gilles Chanteau - gileCAD - GitHub Développements sur mesure pour AutoCAD
fabbcad Posté(e) le 21 août 2009 Auteur Posté(e) le 21 août 2009 Enorme! J'avais pas vu cette aide... C'est impecable. Merci beaucoup ;)
fabbcad Posté(e) le 21 août 2009 Auteur Posté(e) le 21 août 2009 Euh... j'ai parlé un peu vite ;) Je suis parti de ça : Sub inser_bloc() ' Insert the block Dim insertionPnt(0 To 2) As Double Dim blockRefObj As AcadBlockReference insertionPnt(0) = 200: insertionPnt(1) = 200: insertionPnt(2) = 0 Set blockRefObj = ThisDrawing.ModelSpace.InsertBlock(insertionPnt, "monbloc", 1#, 1#, 1#, 0) End Sub Mais si je fais ça il m'insére un bloc aux coordonées +200 en X et +200 en Y par rapport à mon bloc d'origine. Seulement j'aimerai insérer à des valeurs X et Y choisit...Que faut il modifier? Merci d'avance.
rom1_am Posté(e) le 24 août 2009 Posté(e) le 24 août 2009 Bonjour, Si tu veux que l'utilisateur clique un point, tu peux utiliser la méthode "Getpoint". Sub inser_bloc() ' Insert the block Dim blockRefObj As AcadBlockReference Dim returnPnt As Variant ' Return a point using a prompt returnPnt = ThisDrawing.Utility.GetPoint(, "Enter a point: ") Set blockRefObj = ThisDrawing.ModelSpace.InsertBlock(returnPnt, "monbloc", 1#, 1#, 1#, 0) End Sub _______________________________R.A.Développeur AutoCAD C#.netwww.danialu.fr
fabbcad Posté(e) le 24 août 2009 Auteur Posté(e) le 24 août 2009 Salut, bon deux choses : *déjà merci pour le bout de code qui renvoie les coordonnées cliquées mais ce n'est pas vraiment adapté à ce que voulais faie. Je voulais vraiment lui dire "tu l'insères à X=... et Y=...". *ensuite j'ai contourné mon problème en créant des points aux coordonnées où je souhaitais l'insertion puis en remplaçant ces points par les blocs ;)Au final j'ai mon résultat et c'est pas forcement plus complexe... Merci de m'avoir mis sur la piste en tout cas;
rom1_am Posté(e) le 24 août 2009 Posté(e) le 24 août 2009 Salut, "Getpoint" renvoie un point mais tu peux utiliser d'autres méthodes pour demander des infos à l'utilisateur (Getreal, Getinput...) Si tu veux demander les coordonnées pour définir ton point d'insertion, tu peux utiliser par exemple Getreal: Dim returnRealX As Double Dim returnRealY As Double ' Return the value entered by user. A prompt is provided. returnRealX = ThisDrawing.Utility.GetReal("X=: ") returnRealY = ThisDrawing.Utility.GetReal("Y=: ") Dim insertionPnt(0 To 2) As Double insertionPnt(0) = returnRealX: insertionPnt(1) = returnRealY: insertionPnt(2) = 0 _______________________________R.A.Développeur AutoCAD C#.netwww.danialu.fr
fabbcad Posté(e) le 24 août 2009 Auteur Posté(e) le 24 août 2009 Merci rom1_am c'était exactement ce que je cherchais : Getreal! Bon bein comme ça je vais pouvoir continuer mon script alors ;) Merci beaucoup.
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