Publié par Maxence le mar, 22/03/2016 - 10:47
Aujourd'hui, en examinant un problème sur l'application d'un client, je suis tombé sur quelque chose de bien étrange.
L'application tente de se connecter à AutoCAD en utilisant Marshal.GetActiveObject
de façon à récupérer le nom du document actif comme je l'avais expliqué dans cet article. Mais il semblerait que l'application ne fonctionne pas sur certaines machines.
Publié par Maxence le mer, 21/01/2015 - 14:34
Un client m'a demandé si on pouvait faire dialoguer une application écrite en .NET avec un programme AutoLISP fonctionnant dans AutoCAD.
Dans le sens application .NET > AutoCAD, c'est très simple. Il suffit d'utiliser l'API COM d'AutoCAD :
Publié par Maxence le jeu, 02/08/2012 - 16:19
Voici un petit exemple de code qui permet de détecter si AutoCAD est en cours d'exécution. Si c'est le cas, il affiche le chemin complet du dessin ouvert.
Le code utilise COM (out of process).
VB.NET
Imports System.Runtime.InteropServices
Module Module1
Sub Main()
Try
Dim acad = Marshal.GetActiveObject("AutoCAD.Application")
Dim activeDocument = acad.ActiveDocument
MsgBox("Le chemin complet du document actif est : " & activeDocument.FullName)
Catch ex As COMException
Const MK_E_UNAVAILABLE As Integer = &H800401E3
If ex.ErrorCode = MK_E_UNAVAILABLE Then
MsgBox("AutoCAD n'est pas en cours d'exécution.")
Else
Throw
End If
End Try
End Sub
End Module