VB.NET (2008 express) et autocad 2008

Vincentkro Messages postés 18 Date d'inscription vendredi 29 février 2008 Statut Membre Dernière intervention 11 septembre 2009 - 20 oct. 2008 à 15:37
Shaegal Messages postés 110 Date d'inscription vendredi 1 février 2008 Statut Membre Dernière intervention 12 mai 2021 - 15 juin 2010 à 20:38
Bonjour,

Je réalise actuellement un programme de calcule sous vb.net 2008 qui interagit avec autocad 2008.
Mon problème actuel et que je ne parviens pas à utiliser la fonction getentity, pour sélectionner une polyline.
Ce code fonctionne sous vba et vb6 mais je ne parvient pas à l'utiliser en vb.net.
Voici le code que j'utilise :

    Private Sub Button1_Click
        Dim AutoCAD As Object

        Dim PolyLigne As AcadEntity
        Dim Pt As AcadObject
        ' La ligne suivante attend une sélection de l'utilisateur
        ' Elle fonctionne en vba et vb6 mais pose problème en vb.net
        AutoCAD.Application.ActiveDocument.Utility.GetEntity(PolyLigne, Pt, "Sélectionnez la Polyline :")
        ' Code VBA autocad : ThisDrawing.Utility.GetEntity PolyLigne, Pt, "Sélectionnez la Polyline :"

        If PolyLigne_Type = "AcDbPolyline"Then
                   ' J'éclate la polyline
                   PolyLigne.Explode()
        Else
            MsgBox("L'entité sélectionnée n'est pas une Polyline !")
        End If
    End Sub

Si quelqu'un peut m'apporter son aide, je lui serai très reconnaissant car cela fait plusieurs jours que je bloque sur ce problème.

Merci d'avance.

Vincent.

13 réponses

pile_poil Messages postés 682 Date d'inscription vendredi 6 avril 2007 Statut Membre Dernière intervention 4 août 2012 6
20 oct. 2008 à 17:44
bonjour
je ne connais pas VB.NET
mais il y a une erreur concernant ton Dim Pt As AcadObject
en effet Pt sous VB6 et VBA  doit etre un variant puisque ce sont les coordonnées x, y et z des points de la polyligne
ce ne peut donc pas etre un acadobject

de plus tu déclares AutoCAD comme object sans plus donc sous VB6 il faut faire
Set AutoCAD = GetObject(, "AutoCAD.Application.17")
pour que ça marche.
je suppose qu'en VB.NET cela doit aussi etre fait

[reglement.aspx ]si c'est la solution, penser : REPONSE ACCEPTEE
0
Vincentkro Messages postés 18 Date d'inscription vendredi 29 février 2008 Statut Membre Dernière intervention 11 septembre 2009 2
20 oct. 2008 à 17:55
Pour le premier point, je te confirma le type variant sous vba, sauf qu'en vb.net, cela n'existe pas. Il correspond au type objet, je pense. Mais pas certain.
Pour le second point, tu as tout a fait raison, j'ai coupé une partie du code qui me permet d'ouvrir autocad ainsi que le dessin souhaité.
J'ai trouvé d'autre piste du type :
Dim prEnt As PromptEntityOptions = New PromptEntityOptions("Select an Employee")
Mais je ne sais pas comment déclarer le PromptEntityOptions, il doit faire appel à une dll que je ne connait pas.

Vincent.
0
pile_poil Messages postés 682 Date d'inscription vendredi 6 avril 2007 Statut Membre Dernière intervention 4 août 2012 6
20 oct. 2008 à 18:09
PromptEntityOptions  ce n'est pas du VBA AutoCAD ça 
donc il ne le reconnaitra pas

[reglement.aspx ]si c'est la solution, penser : REPONSE ACCEPTEE
0
Vincentkro Messages postés 18 Date d'inscription vendredi 29 février 2008 Statut Membre Dernière intervention 11 septembre 2009 2
20 oct. 2008 à 21:45
Oui, je pense que ce code fait appel a des librairie spécifique d'autocad qui utilisent les objets ARX.
Cependant, je ne parviens pas à comprendre comment utiliser ce code. De plus j'ai essayer d'installer les fichiers (librairies, dll et autre) que j'ai récupéré sur le site autodesk mais l'installation échoue (elle nécessite visual studio 2005, et je ne posséde que VB Express 2005  ??).
Je rappelle que mon but étant par la suite de coder mon programme sous VB2008.

Je te remercie de l'attention que tu porte à mon problème et de la rapidité de tes réponses.
Je vais creuser encore un peu en espérant trouver au plus vite.
0

Vous n’avez pas trouvé la réponse que vous recherchez ?

Posez votre question
Vincentkro Messages postés 18 Date d'inscription vendredi 29 février 2008 Statut Membre Dernière intervention 11 septembre 2009 2
21 oct. 2008 à 22:13
J'ai creusé la piste du "PromptEntityOptions"

J'ai télécharger ces exemples sur le site d'autocad :
Lien: http://usa.autodesk.com/adsk/servlet/index?siteID=123112&id=1911627

Il s'avère que ce code correspond à des classes qui, une fois généré, constitue une dll que l'on peut utiliser sous autocad. Appelle de fonctions par l'intermédiaire de l'invite de commande d'autocad.
Je ne peut donc pas utiliser ce code directement dans un form. De plus je n'est jamais utiliser le code vb.net pour créer des dll ???

Quelqu'un peut-il me dire si il est possible de modifier le code d'une classe pour l'utiliser dans un form.
J'ai déjà essayer, mais j'ai constaté des problèmes au niveau des imports (autocad entre en vonflit avec vb).
Mais ne connaissant pas bien ce type de code, il est possible, même très probable, que j'ai fait des erreurs.

Rappel de mon but:
1- Clic sur un bouton dans un form (de mon application vb.net)
2- Attente de réponse, l'utilisateur doit sélectionner un objet sur un dessin d'autocad
3- Je doit récupérer l'objet, ici les coordonnées graphiques, le type d'objet, etc... (ex: pour une droite c'est une array)
Ensuite j'enregistre tout ça dans une base de donnée pour faire mes calculs et par la suite regénérer mon dessin si nécessaire.

Oui, je sais mon projet et ambitieux . Mais j'éspère que quelqu'un pourra me donner un petit coup de pousse car pour le moment je bloque sur la sélection de l'objet.

Merci.

Vincent
0
pile_poil Messages postés 682 Date d'inscription vendredi 6 avril 2007 Statut Membre Dernière intervention 4 août 2012 6
21 oct. 2008 à 22:26
pourquoi ne fais tu pas cela directement dans le VBA d'autocad
regardes  ici: C:\Program Files\AutoCAD 2008\Sample\ActiveX\ExtAttr
tu as un exemple d'extraction de données d'un dessin et export vers excel

[reglement.aspx ]si c'est la solution, penser : REPONSE ACCEPTEE
0
Vincentkro Messages postés 18 Date d'inscription vendredi 29 février 2008 Statut Membre Dernière intervention 11 septembre 2009 2
21 oct. 2008 à 22:47
Voici le contexte:
Je travaille actuellement sur un programme existant sur autocad, coder sous autocad en LISP.
Pour des raisons pratiques, on souhaite faire évoluer ce code.
Raisons:
-Code peu conviviale (indigeste par rapport à VB et très peu utilisé)
-Créer une gestion de projet (fichiers, calcul)
-Stocker les calculs intermédiaires pour effectuer des modifications sans tout recommencer du début --> Gestion base de donnée
-En résumé, augmenter les possibilités du programme et faciliter la gestion par l'utilisateur.
Il faut savoir que dans mon cas, le dessin est "peu important", il ne sert qu'à la récupération des coordonnées graphiques afin de générer les calculs. Les calculs se réalisant sur des plans de plusieurs kilomètres sont très long et la moindre modification, nous oblige à tous recommencer. D'où l'intérêt de stocker les données dans une base pour les travailler et une fois les calculs vérifier, générer le plan.
Pour le moment, je suis capable de générer le dessin sur autocad grâce à vb.net, ma seule lacune est le chemin inverse (récupérer une selection autocad sou vb). J'ai pourtant utiliser le code VBA pour récupérer un point (GetPoint(, "sélectionner le point :")) sous vb.net sans aucun souci !

Je suis vraiment déçu, je pensé que ça aller fonctionner sans problème, mais la je suis refroidis !

Vincent.
0
BeuheC Messages postés 16 Date d'inscription lundi 21 janvier 2008 Statut Membre Dernière intervention 15 juin 2010
5 janv. 2009 à 09:46
Bonjour,

Je souhaite également programmer une application qui utilise AutoCAD via Visual Basic 2008 Express.
Mais pour l'instant impossible de faire comprendre mes commandes à VB08 Xpress ...

On dirai que j'ai un problème de références mais je ne trouve pas comment le résoudre ...

Faut-il installer des bibliothèques spécifiques (type ObjectARX, DOT.NET, ...) ?

D'avance merci.
0
cs_bertyboy Messages postés 1 Date d'inscription vendredi 9 juin 2006 Statut Membre Dernière intervention 25 août 2009
25 août 2009 à 04:37
Il faut utiliser charger les références acmgd.dll et acdbmgd.dll du dossier d'installation d'AutoCAD.
Dans les propriétés de ces références, spécifier de ne pas copier.

Le nouveau projet doit être de type "Bibliothèque de classes".

Imports Autodesk.AutoCAD.ApplicationServices
Imports Autodesk.AutoCAD.DatabaseServices
Imports Autodesk.AutoCAD.Geometry
Imports Autodesk.AutoCAD.Runtime

Public Class bertClass
'Définition de votre commande
<CommandMethod("Programme")> _
Public Sub Programme()
Dim ThisDoc As Document = Application.DocumentManager.MdiActiveDocument
Dim ThisDB As Database = ThisDoc.Database

'Votre code...
End Sub
End Class


Voilà un début!!

Bert
0
BeuheC Messages postés 16 Date d'inscription lundi 21 janvier 2008 Statut Membre Dernière intervention 15 juin 2010
26 août 2009 à 02:15
Merci

En fait j'avais un problème avec les fichiers "référence" (corrompu ... ?)
Une réinstallation d'AutoCAD a résolu le problème.

Merci pour l'aide.
0
Shaegal Messages postés 110 Date d'inscription vendredi 1 février 2008 Statut Membre Dernière intervention 12 mai 2021 1
15 juin 2010 à 13:28
Bonjour,

Dans l'entreprise où je travail, nous utilisons beaucoup AutoCad mais certaines paersonnes n'ont que la version LT. Ce qui est mon cas.
J'aurai pourtant besoin d'automatiser une tâche qui semble simple, mais n'ayant pas connaissance du language utilisé dans les macros VBA sous AutoCad, je ne sais par où commencer.
Dans AutoCad LT 2009, je créer mon propre calque uniquement constitué de textes. Sous VB.net 2008 Express, je souhaite récupérer ces textes et les importer dans un tableau Excel. Ce tableau Excel sera ensuite utilisé par le pilote d'une étiqueteuse.
Je maîtrise bien la liaison vb.net <> Excel, mais pas du tout vb.net <> AutoCad dont je rappel que j'ai la version LT, donc pas accès aux macros.
J'ai trouvé un topic sur la liaison Excel <> AutoCad LT, mais c'est une vraie usine à gaz. Le code sous vb.net me semble plus simple à écrire.

Quelqu'un pourrait-il m'aider à au moins démarrer?
Par avance, merci... ;-)
0
BeuheC Messages postés 16 Date d'inscription lundi 21 janvier 2008 Statut Membre Dernière intervention 15 juin 2010
15 juin 2010 à 17:42
Salut

Si tu maitrise la liaison VBnet <> Excel, tu devrais bien te débrouiller avec AutoCAD.
C'est le même principe, sauf qu'à la place des cellules tu as des lignes, bloc de texte, calques ...

Fais ton plan avec tes blocs de texte et quelques lignes, ensuite
commence un programme qui permet de lancer AutoCAD et d'ouvrir le fichier .dwg que tu as créé.
Enfin tu pourras accéder aux objets contenus dans ce plan.
0
Shaegal Messages postés 110 Date d'inscription vendredi 1 février 2008 Statut Membre Dernière intervention 12 mai 2021 1
15 juin 2010 à 20:38
Bonjour BeuheC et merci pour cette rapide réponse.

C'est là que le bât blesse. Je ne connais aucune syntaxe pour AutoCad. Je ne sais même pas l'ouvrir via vb.net.
Tout comme pour Excel, j'ai testé GetObject(,"Autocad.application") ou CreateObject que j'ai vu dans un autre topic, mais ma variable reste à Nothing.
Je rappelle pour info que j'utilise une version LT. Peut-être que le problème vient de là...
0
Rejoignez-nous