phil_vsd Posté(e) le 3 septembre 2006 Posté(e) le 3 septembre 2006 Bonjour tous, Je repose une question que j'ai posé en forum AutoCAD 2006 et j'ai même eu une super réponse de Gile avec routine clef en main (Encore merci à lui) dans le domaine du Lisp. Je sais maintenant que les champs dynamiques sont pilotables en Lisp et j'aimerai savoir si on peut les piloter en VBA. En gros : cliquer sur une polyligne et cela insèrerai un texte contenant un champs renseigné par l'aire de la polyligne. Je connais un peu mieux le VBA que le Lisp (Non c'est pas vrai, le Lisp je connait rien du tout...) , je me sens plus à l'aise en VBA pour pondre de routines. J'aimerai donc en faire rapidement en VBA avant de plonger dans le lisp car on a des dossiers urgents au bureau. Donc vos réponses sont les bienvenues. Merci d'avance. PS: Message à Gile, promis je me met au lisp bientôt... :P :D "La ligne droite est le plus court chemin entre deux points, à condition que les deux points soient bien en face l'un de l'autre" P. Desproges.
(gile) Posté(e) le 3 septembre 2006 Posté(e) le 3 septembre 2006 Re, Un champ c'est un TEXTE ou un MTEXE dont la syntaxe est un code. Pour récupérer ce code, tu peux le trouver dans la fenêtre de la commande "champ" en bas sous "Expression de champ:" ou en utilisant FieldCode Method sur un champ (ou un texte en contenant un). : "%%" pour la date, ou "%%).Area \f "%lu6%qf1">%" pour l'aire d'un objet. Dans le dernier cas "2128135232" est l'ID de l'objet (ObjectID Property).Il faut donc concatener (il doit bien y avoir une fonction VBA pour ce faire) "%%).Area \f "%lu6%qf1">%" pour constituer la chaine de caractère à passer comme argument à addText ou addMtext Method. Gilles Chanteau - gileCAD - GitHub Développements sur mesure pour AutoCAD
(gile) Posté(e) le 3 septembre 2006 Posté(e) le 3 septembre 2006 En gros, ce que fait le LISP et comment on devrait pouvoir le traduire en VBA : Sélection de la polyligne (getEntiy Method) S'assurer que c'est une lwpolyline (Objectname Property)Et qu'elle est fermée (Closed Property)Récupérer l'ID (ObjectID Property)Constituer la chaine en concatenant "%%).Area \\f \"%lu6%qf1\">%" plus les préfixe et suffixe que l'on veut (?)Créer une région à partir de la polyligne (addRegion Method)Récupérer le centre de gravité de la région (Centroid Property)Créer un Mtext (addMtext Method)Justifier le texte (AttachmentPoint Property -> acAttachmentPointMiddleCenter et InsertionPoint Property)Supprimer la région (Delete Method) Gilles Chanteau - gileCAD - GitHub Développements sur mesure pour AutoCAD
g_barthe Posté(e) le 11 septembre 2006 Posté(e) le 11 septembre 2006 Je pense qu'il est possible de réaliser qqch comme cela. Ca reste simple mais efficace. A améliorer et completer en fonction de tes besoins perso(arrondi des surface...). Ce bout de prog n'est pas vérifié ds tous les sens donc peut produire des bugs de tps en tps. c'est juste une ligne de conduite Sub aire_polyligne() Dim acadutil As Object Dim points(0 To 5) As Double Dim acadDoc As Object Dim aire As Double Dim moSpace As Object Dim acadObj As Object Dim pnt As Variant Dim startpoint(0 To 2) As Double Dim annotobj As Object Dim returnObj As AcadObject Dim basePnt As Variant Set acadObj = GetObject(, "AutoCAD.Application") Set acadDoc = acadObj.ActiveDocument Set moSpace = acadDoc.ModelSpace On Error Resume Next ThisDrawing.Utility.GetEntity returnObj, basePnt, "Sélectionner un objet" returnObj.Update aire = returnObj.Area returnObj.Update 'saisie de l'emplacement du texte pnt = ThisDrawing.Utility.GetPoint(, "Position de l'étiquette ? ") startpoint(0) = pnt(0) startpoint(1) = pnt(1) startpoint(2) = pnt(2) Set annotobj = moSpace.AddText(aire, startpoint, 1#) End Sub PS : il est aussi possible d'utiliser la fonction "insertion" -> "champ"... d'autocad 2006 (voir les versions antérieures) qui ajoutes le champs aire en fonction de l'objet choisi et le met à jour à l'enregistrement du fichier. Donc action dynamique sympa. Je viens de m'appercevoir que ce sujet etait traiter ds l'annonce "routines VBA" le prog est déja réaliser et les champs dynamiques ont déjà été abordés. Donc j'ai réinventé la roue. Désolé. A voir suivant le besoin réel.[Edité le 11/9/2006 par g_barthe] [Edité le 11/9/2006 par g_barthe] Vous voulez parler de génie climatique et poser vos questions alors venez par ici : http://le-genie-climatique.positifforum.com Les loisirs créatifs vous tentent : http://pausebroderie.fr
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