frmaniako Posté(e) le 5 janvier 2005 Posté(e) le 5 janvier 2005 Salut à tous,Je cherche un moyen de récupérer, en VBA, les données d'un dessin fait sous autocad(2D)Par exemple, j'ai un carré et j'aimerais connaitre les coordonnées des 4 points du carré.Est ce possible, Merci pour votre aide, A+ [Edité le 5/1/2005 par frmaniako]
DenisHen Posté(e) le 6 octobre 2006 Posté(e) le 6 octobre 2006 Bonsoir, J'ai commencé une macro cette semaine... Tu sélectionne une polyligne (attention, sinon erreur, je n'ai pas fini) puis elle écrit un texte multiligne dans AutoCAD : La voilà : Public Sub TableauDA() Dim objPoly As AcadLWPolyline Dim basePnt, returnPnt As Variant Dim nbPoints, Pt, Echelle As Integer Dim Tableau(200), Lot As String Dim MtextObj As AcadMText Ph = "Phalene": Ech = "Ech1" 'ThisDrawing.SendCommand "(setvar " & """useri1""" & " (vlax-ldata-get " & """Phalene""" & " " & """Ech1""" & "))" & vbCr 'Echelle = ThisDrawing.GetVariable("useri1") a = 0: Pt = 1 ThisDrawing.Utility.GetEntity objPoly, basePnt, "Selectionner une polyligne :" For Each Coordinate In objPoly.Coordinates Tableau(nbPoints) = Coordinate nbPoints = nbPoints + 1 Next Do While Tableau(a) <> "" Texte = Texte & "\P" & Pt & Chr(9) & "X=" & Round(CCur(Tableau(a)), 2) & Chr(9) & "Y=" & Round(CCur(Tableau(a + 1)), 2) returnPnt = Val(Str(Tableau(a)) & Str(Tableau(a + 1))) Pt = Pt + 1 a = a + 2 Loop Texte = "Tableau des coordonnées\P" + Texte returnPnt = ThisDrawing.Utility.GetPoint(, "Cliquez le coin Haut Gauche du Cadre :") Set MtextObj = ThisDrawing.ModelSpace.AddMText(returnPnt, 200, Texte) MtextObj.Height = 1 MtextObj.Update End Sub Bon courage... Denis... Windows 11 / AutoCAD 2024 Sur terre, il y a 10 types de personnes, celles qui comptent en binaire et les autres (developpez.net). Davantage d'avantages, avantagent davantage (Bobby Lapointe). La connaissance s'accroît quand on la partage (Socrate). Tant va la cruche à l'eau que l'habit n'amasse pas mousse avant de l'avoir tué. (Moi)
winfield Posté(e) le 16 octobre 2006 Posté(e) le 16 octobre 2006 Je sais bien kia l'apostrophe, mais à quoi sert 'ThisDrawing.SendCommand "(setvar " & """useri1""" & " (vlax-ldata-get " & """Phalene""" & " " & """Ech1""" & "))" & vbCr j'y connais rien Lisp et encore moi en VLisp, alors help me please :cool: Nous n’ héritons pas de la terre de nos ancêtres.Nous l’empruntons à nos enfants.
DenisHen Posté(e) le 17 octobre 2006 Posté(e) le 17 octobre 2006 Je vais essayé de faire claire : ThisDrawing et SendCommand : tu devrais connaitre, En lisp, chaque terme à interpréter (termes Lisp) est précédé d'une parenthèse et mis en premier, puis, la parenthèse doit être refermé à la fin, exemple :en VBA :If a=1 then a=2 else a=3en Lisp :(if (= a 1) (setq a 2) (setq a 3)) "setq" correspond à peu près à "Set" en VB Cette phrase :(setvar " & """useri1""" & " (vlax-ldata-get " & """Phalene""" & " " & """Ech1""" & "))" & vbCr Donne en LiSP :(setvar "useri1" (vlax-ldata-get "Phalene" "Ech1")) setvar : Set Variable (variables d'AutoCAD comme "Othtomode" ou autre...)useri1 : nom de la variable "user", type de la variable "i" (integer), incrément de la variable "1" car je croix qu'on en a droit à 5 ou 6... de chaque type (i=integer, r=réel et s=string). Quand à (vlax-ldata-get "Phalene" "Ech1"), là, c'est du Visual Lisp"Phalène" et "Ech1" sont des attribut de "xdata", c'est pour placer une variable dans le dwg. Tu places ta valeur dans "Phalene" "Ech1", comme 250, en faisant (vlax-ldata-put "Phalene" "Ech1" 250), tu sauvegardes ton dwg, tu fermes AutoCAD, tu ouvres à nouveau ton dwg puis tu récupère ta variable en tapant (vlax-ldata-get "Phalene" "Ech1"), Et AutoCAD te renvoie 250... J'avais cette ligne parceque la quazi totalité de mes routines sont en Lisp, et quand je n'arrive pas à les faire en Lisp, je me tourne en VBA. Voilà, j'en connais bien plus en VB qu'en Lisp... Mon explication n'est peut-être pas parfaite, mais j'espère qu'elle t'a un peu aider... Bonne journée, Denis... Windows 11 / AutoCAD 2024 Sur terre, il y a 10 types de personnes, celles qui comptent en binaire et les autres (developpez.net). Davantage d'avantages, avantagent davantage (Bobby Lapointe). La connaissance s'accroît quand on la partage (Socrate). Tant va la cruche à l'eau que l'habit n'amasse pas mousse avant de l'avoir tué. (Moi)
winfield Posté(e) le 17 octobre 2006 Posté(e) le 17 octobre 2006 http://www.cadxp.com/modules.php?op=modload&name=XForum&file=viewthread&tid=12050#pid47869 Il est vraiment étonnant qu'à 24 h près, 2 personnes différentes postent le même style de code pour le même travail dans le même langage, à moins que ça ne soit qu'une coïncidence............. Nous n’ héritons pas de la terre de nos ancêtres.Nous l’empruntons à nos enfants.
DenisHen Posté(e) le 17 octobre 2006 Posté(e) le 17 octobre 2006 Il est vraiment étonnant qu'à 24 h près, 2 personnes différentes postent le même style de code pour le même travail dans le même langage, à moins que ça ne soit qu'une coïncidence............. Tu as raison... CabinetD, c'est moi, mais au boulo... Je n'avais pas mon mot de passe à l'époque... Et merci pour ton aide, Denis... Windows 11 / AutoCAD 2024 Sur terre, il y a 10 types de personnes, celles qui comptent en binaire et les autres (developpez.net). Davantage d'avantages, avantagent davantage (Bobby Lapointe). La connaissance s'accroît quand on la partage (Socrate). Tant va la cruche à l'eau que l'habit n'amasse pas mousse avant de l'avoir tué. (Moi)
winfield Posté(e) le 18 octobre 2006 Posté(e) le 18 octobre 2006 Denis Corvée et Denis House, pas mal pas mal...fallait y penser Nous n’ héritons pas de la terre de nos ancêtres.Nous l’empruntons à nos enfants.
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