Aller au contenu

recupérer données figure autocad avec VBA


Messages recommandés

Posté(e)

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]

  • 1 an après...
Posté(e)

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)

  • 2 semaines après...
Posté(e)

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.

Posté(e)

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=3

en 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)

Posté(e)

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)

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é