Aller au contenu

Récup. info entité d\'un bloc autocad


Messages recommandés

Posté(e)

Bonjour,

 

Voilà, je cherche à récupérer (codé en VBA) le centre d'un cercle se trouvant dans un bloc (Autocad), ce bloc ayant été, au préalable, sélectionné par l'utilisateur.

J'arrive bien (Normal! me direz-vous...c'est simple) à récupérer le nom de ce bloc, à contrôler qu'il s'agit bien d'un bloc, mais ne peux obtenir d'info sur les entités le composant.

 

Dois-je exploser le bloc, passer par un jeu de sélection...?

 

Je débute en VBA...Dur!

 

Je vous remercie d'avance de votre collaboration.

 

Cordialement.

Posté(e)

Salut,

 

Tu peux récupérer les coordonnées du cercle dans la définition du bloc.

Il faudra ensuite les transformer en coordonnées de l'espace objet en intégrant les transformations subies par la référence de bloc (déplacement (insertion), rotation et échelles).

 

Je ne sais pas le faire en VBA, mais pourrais t'aider en LISP*.

 

* je pense que débuter en VBA aujourd'hui n'est pas très judicieux dans le mesure où Microsoft et Autodesk en ont annoncé l'abandon pour très bientôt (voir ici).

Gilles Chanteau - gileCAD - GitHub
Développements sur mesure pour AutoCAD

Posté(e)

Salut,

 

Je suis bien d'accord avec toi en ce qui concerne l'avenir du vba, mais n'ai actuellement très peu d'options possibles.

 

En tout cas, je te remercie de ton aide.

 

A bientôt (peut-être).

 

Cordialement.

Posté(e)

Salut,

 

Décomposer le bloc peut-être un moyen.

La méthode Explode retourne un variant (array des composant du bloc) mais ne supprime pas la référence.

Tu peux donc ensuite parcourir cet array pour récupérer les propriétés des composants puis les supprimer avec Delete.

 

Gilles Chanteau - gileCAD - GitHub
Développements sur mesure pour AutoCAD

  • 1 mois après...
Posté(e)
Bonjour,

 

Voilà, je cherche à récupérer (codé en VBA) le centre d'un cercle se trouvant dans un bloc (Autocad), ce bloc ayant été, au préalable, sélectionné par l'utilisateur.

J'arrive bien (Normal! me direz-vous...c'est simple) à récupérer le nom de ce bloc, à contrôler qu'il s'agit bien d'un bloc, mais ne peux obtenir d'info sur les entités le composant.

 

Dois-je exploser le bloc, passer par un jeu de sélection...?

 

Je débute en VBA...Dur!

 

Je vous remercie d'avance de votre collaboration.

 

Cordialement.

 

 

Le message date un peu, mais voilà une solution en vba :

Sub test()
Dim returnObj As AcadObject
Dim entite As AcadEntity
Dim nombloc As String
Dim Bloc As AcadBlock
Dim cercle As AcadCircle
Dim pntCen, pntRef, pnt(0 To 2) As Double

'Sélection du bloc
ThisDrawing.Utility.GetEntity returnObj, pntRef, "Sélectionner un bloc"

'Sortir de la procédure si l'entité sélectionnée n'est pas un bloc
If Not returnObj.ObjectName = "AcDbBlockReference" Then Exit Sub

'Création de l'objet bloc
nombloc = returnObj.Name
Set Bloc = ThisDrawing.Blocks(nombloc)

'Parcourir le bloc à la recherche du cercle
For Each entite In Bloc
   If entite.ObjectName = "AcDbCircle" Then
       'Si le cercle est trouvé :
       Set cercle = entite
       'Récupération du centre dans les coordonnées du bloc
       pntCen = cercle.Center
       'Récupération du point d'insertion de la référence du bloc sélectionné
       pntRef = returnObj.InsertionPoint
       'Calcul des coordonnées du centre du cercle dans l'espace courant :
       pnt(0) = pntRef(0) + pntCen(0)
       pnt(1) = pntRef(1) + pntCen(1)
       pnt(2) = pntRef(2) + pntCen(2)
       'Résultat :
       MsgBox "Le centre est au coordonnées : x= " & pnt(0) & " y= " & pnt(1) & " z= " & pnt(2)
       'Quitter la procédure
       Exit Sub
   End If
Next

End Sub 

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é