ehamleonnaej Posté(e) le 3 novembre 2010 Posté(e) le 3 novembre 2010 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.
(gile) Posté(e) le 4 novembre 2010 Posté(e) le 4 novembre 2010 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
ehamleonnaej Posté(e) le 4 novembre 2010 Auteur Posté(e) le 4 novembre 2010 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.
(gile) Posté(e) le 6 novembre 2010 Posté(e) le 6 novembre 2010 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
OtObOx Posté(e) le 28 décembre 2010 Posté(e) le 28 décembre 2010 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 OtObOxblOg photoAutoCAD et vba
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