IdentifiantMot de passe
Loading...
Mot de passe oublié ?Je m'inscris ! (gratuit)
Navigation

Inscrivez-vous gratuitement
pour pouvoir participer, suivre les réponses en temps réel, voter pour les messages, poser vos propres questions et recevoir la newsletter

VB.NET Discussion :

Utiliser Vb.net avec autocad


Sujet :

VB.NET

Vue hybride

Message précédent Message précédent   Message suivant Message suivant
  1. #1
    Nouveau membre du Club
    Profil pro
    Inscrit en
    Octobre 2008
    Messages
    7
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Octobre 2008
    Messages : 7
    Par défaut Utiliser Vb.net avec autocad
    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.

  2. #2
    Expert confirmé

    Avatar de Philippe Vialatte
    Homme Profil pro
    Architecte technique
    Inscrit en
    Juillet 2004
    Messages
    3 029
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 47
    Localisation : France, Alpes Maritimes (Provence Alpes Côte d'Azur)

    Informations professionnelles :
    Activité : Architecte technique
    Secteur : High Tech - Produits et services télécom et Internet

    Informations forums :
    Inscription : Juillet 2004
    Messages : 3 029
    Par défaut
    Citation Envoyé par vincent.delva Voir le message
    Ce code fonctionne sous vba et vb6 mais je ne parvient pas à l'utiliser en vb.net.
    Bonjour,

    qu'est-ce que tu entends pas "ne parviens pas a l'utiliser"?

    Exception ?

    Erreur de compilation ?

    Mon Blog

    The Cake is still a lie !!!



    Vous voulez contribuer à la rubrique .NET ? Contactez-moi par MP.
    Vous voulez rédiger des articles pour la rubrique .NET ? Voici la procédure à suivre.

  3. #3
    Nouveau membre du Club
    Profil pro
    Inscrit en
    Octobre 2008
    Messages
    7
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Octobre 2008
    Messages : 7
    Par défaut
    Je précise ma pensée

    Voici la ligne qui me pose problème :
    AutoCAD.Application.ActiveDocument.Utility.GetEntity(PolyLigne, Pt, "Sélectionnez la Polyline :")

    En effet, sous VBA, VB6, ce bout de code me propose de sélectionner une entité sous autocad. Je récupère l'objet (ici PolyLigne) et le point de sélection (ici Pt).
    Le problème étant que sur VB.Net je n'est pas d'erreur mais des avertissements (risque d'exception nulle pour ces deux variables), et lorsque je débogue cette ligne elle ne me retourne rien (variables à "Nothing").
    Selon moi, en net, la fonction ne gère pas les variables de sorties dans la fonction ??

    J'ai trouvé ce code fournit par Autocad, il semble permettre de réaliser la fonction de sélection d'objet sur autocad en vb.net:
    Dim prEnt As PromptEntityOptions = New PromptEntityOptions("Select an Employee")
    Dim prEntRes As PromptEntityResult = ed.GetEntity(prEnt)

    Lien: http://usa.autodesk.com/adsk/servlet/index?siteID=123112&id=1911627

    Il utilise les objets ARX mais je ne parvient pas à déclarer "PromptEntityOptions".
    Je pense qu'il faut des références spécifiques pour Vb ??
    Si quelqu'un à une idée, je suis preneur.
    Merci.

  4. #4
    Expert confirmé

    Avatar de Philippe Vialatte
    Homme Profil pro
    Architecte technique
    Inscrit en
    Juillet 2004
    Messages
    3 029
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 47
    Localisation : France, Alpes Maritimes (Provence Alpes Côte d'Azur)

    Informations professionnelles :
    Activité : Architecte technique
    Secteur : High Tech - Produits et services télécom et Internet

    Informations forums :
    Inscription : Juillet 2004
    Messages : 3 029
    Par défaut
    euh...

    tu as téléchargé le lab founri par autocad sur la page en question ?

    Parce que de ce que jén ai vu, ca m'a l'air super clair, et bien explique pas par pas...

    Mon Blog

    The Cake is still a lie !!!



    Vous voulez contribuer à la rubrique .NET ? Contactez-moi par MP.
    Vous voulez rédiger des articles pour la rubrique .NET ? Voici la procédure à suivre.

  5. #5
    Nouveau membre du Club
    Profil pro
    Inscrit en
    Octobre 2008
    Messages
    7
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Octobre 2008
    Messages : 7
    Par défaut
    Oui je l'ai télécharger, par contre c'est tout en anglais !!!
    Faut comprendre. De plus j'essaye d'adapter leurs exemples mais c'est pas gagné. l'ajout des dll autocad génère des erreurs dans mon code vb.net qui fonctionné jusqu'à maintenant.
    exemple: lorsque j'ajoute :
    Imports Autodesk.AutoCAD.ApplicationServices
    nécessaire à la déclaration de mes variables, tel que :
    Dim ed As Editor = Application.DocumentManager.MdiActiveDocument.Editor

    le code suivant ne fonctionne plus :
    'Quitter l'application VB
    Application.Exit()

    Ce qui risque de me poser certains problèmes.
    Si quelqu'un à déjà utiliser le module lab et peut me dire comment l'utiliser pour sélectionner des objets sous autocad ?

  6. #6
    Expert confirmé

    Avatar de Philippe Vialatte
    Homme Profil pro
    Architecte technique
    Inscrit en
    Juillet 2004
    Messages
    3 029
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 47
    Localisation : France, Alpes Maritimes (Provence Alpes Côte d'Azur)

    Informations professionnelles :
    Activité : Architecte technique
    Secteur : High Tech - Produits et services télécom et Internet

    Informations forums :
    Inscription : Juillet 2004
    Messages : 3 029
    Par défaut
    exemple: lorsque j'ajoute :
    Imports Autodesk.AutoCAD.ApplicationServices
    nécessaire à la déclaration de mes variables, tel que :
    Dim ed As Editor = Application.DocumentManager.MdiActiveDocument.Editor

    le code suivant ne fonctionne plus :
    'Quitter l'application VB
    Application.Exit()
    Normal, tu n'as pas moyen de savoir a quel objet Application fait reference.

    un conseil, par experience, quand tu as a manipuler des objets en passant par une API a part, essaye de bien separer les differentes parties de ton appli.

    Par exemple, ton pb vient du fait que la meme classe a la responsabilite de manipuler a la fois Autocad et de gerer ton application vb...

    dasn ton cas, une solution rapide serait:
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    Imports Autodesk.AutoCAD
    et
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    Dim ed As Editor = ApplicationServices.Application.DocumentManager.MdiActiveDocument.Editor
    Comme ca, tu n'as plus de pb avec Application.Exit...

    A la limite, le mieux, c'est de passer un ou deux jours a ecrire un petit wrapper, avec genre :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    Imports Autodesk.AutoCAD.ApplicationServices
     
    Public Class AutoCadWrapper
     
    Public Function GetEditor () As Editor
       Return ApplicationServices.Application.DocumentManager.MdiActiveDocument.Editor
    End Function
     
    End Class
    Et apres, tu peux appeler ce wrapper au lieu des classes Autocad.
    Ca peut avoir l'air inutile comme ca, mais le gain de temps final n'est pas negligeable

    Mon Blog

    The Cake is still a lie !!!



    Vous voulez contribuer à la rubrique .NET ? Contactez-moi par MP.
    Vous voulez rédiger des articles pour la rubrique .NET ? Voici la procédure à suivre.

Discussions similaires

  1. [.NET] utiliser ADO.NET avec le framework 4
    Par TheBlackReverand dans le forum SQLite
    Réponses: 0
    Dernier message: 23/06/2010, 19h40
  2. Réponses: 1
    Dernier message: 27/09/2006, 09h28
  3. Réponses: 1
    Dernier message: 04/05/2006, 10h45
  4. Réponses: 6
    Dernier message: 21/07/2005, 16h56
  5. [CF][PPC/VB.NET] Comment utiliser les Socket avec Pocket PC ?
    Par joefou dans le forum Windows Mobile
    Réponses: 5
    Dernier message: 17/05/2005, 14h24

Partager

Partager
  • Envoyer la discussion sur Viadeo
  • Envoyer la discussion sur Twitter
  • Envoyer la discussion sur Google
  • Envoyer la discussion sur Facebook
  • Envoyer la discussion sur Digg
  • Envoyer la discussion sur Delicious
  • Envoyer la discussion sur MySpace
  • Envoyer la discussion sur Yahoo