Aller au contenu

Commande vba pour inserer un bloc aux coordonnées données


Messages recommandés

Posté(e)

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.

Posté(e)

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

Posté(e)

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.

Posté(e)

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#.net

www.danialu.fr

Posté(e)

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;

Posté(e)

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#.net

www.danialu.fr

Posté(e)

Merci rom1_am c'était exactement ce que je cherchais : Getreal!

 

Bon bein comme ça je vais pouvoir continuer mon script alors ;)

 

Merci beaucoup.

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é