.NET

Petit exemple montrant comment écrire dans Excel en C#

Le texte écrit dans Excel Voici le code complet d'une application console en C# qui se connecte à une session Excel existante ou qui en crée une nouvelle si Excel n'est pas en cours d'exécution.

Etiquettes:

AutoCAD : l'API .NET est parfois un peu compliquée

AutoCAD propose de nombreuses API : ObjectARX, .NET, ActiveX/COM, AutoLISP. Il faut en plus maintenant ajouter l'API Javascript qui est une nouveauté d'AutoCAD 2014. Et parfois, ce qui s'avère très simple dans une des API se révéle très compliqué dans une autre. Prenons par exemple le cas du zoom étendu.

Avec l'API ActiveX et VBA, il suffit de faire :

ThisDrawing.Application.ZoomExtents

Avec l'API .NET, c'est un peu plus compliqué :

Etiquettes:

AutoCAD indexed colors list

A little bit of code to export the list of Red, Green and Blue values for indexed AutoCAD colors:

[CommandMethod("DUMPCOLORS")]
public void DumpColors()
{
    using (var sw = new StreamWriter(@"C:\temp\acadColors.txt"))
    {
        sw.WriteLine(" I ; R ; G ; B ");
        for (short colorIndex = 1; colorIndex <= 255; colorIndex++)
        {
            using (Color color = Color.FromColorIndex(ColorMethod.ByAci, colorIndex))
            {
                sw.WriteLine("{0,3};{1,3};{2,3};{3,3}", colorIndex,
                    color.ColorValue.R, color.ColorValue.G, color.ColorValue.B);
            }
        }
    }
}

Etiquettes:

Liste des valeurs RVB pour les couleurs indexées d'AutoCAD

Un petit bout de code pour exporter la liste des valeurs Rouge, Vert, Bleu pour les couleurs indexées d'AutoCAD :

[CommandMethod("DUMPCOLORS")]
public void DumpColors()
{
    using (var sw = new StreamWriter(@"C:\temp\acadColors.txt"))
    {
        sw.WriteLine(" I ; R ; G ; B ");
        for (short colorIndex = 1; colorIndex <= 255; colorIndex++)
        {
            using (Color color = Color.FromColorIndex(ColorMethod.ByAci, colorIndex))
            {
                sw.WriteLine("{0,3};{1,3};{2,3};{3,3}", colorIndex,
                    color.ColorValue.R, color.ColorValue.G, color.ColorValue.B);
            }
        }
    }
}

Etiquettes:

Rendre Revit moins "bruyant" pendant le débogage

Lorsque vous êtes en train de déboguer un complément Revit dans Visual Studio, la fenêtre de sortie est polluée par plein de messages en provenance des espaces de nom System.Windows.Media.Animation et System.Windows.Data. Il devient alors très difficile de retrouver les messages laissés par votre application et la fenêtre de sortie en devient presque inutilisable.

Etiquettes:

Get the name of the active AutoCAD document with .NET

Here's a little sample code to detect if AutoCAD is running. If it does, it displays the full path of the active drawing.

The code use 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

Récupérer le nom du dessin AutoCAD actif en .NET

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

A virus targeting AutoCAD

The virus Flame is a lot of attention right now. A striking feature here is that it specifically targets AutoCAD DWG files. This suggests that this complex malware was designed by a state eager to seize some secrets documented through drawings.

Visual Studio : lancer une commande en pré-build uniquement en configuration Debug

Pour lancer le script cmd.bat dans l’évènement pré-build ou post-build uniquement en configuration Debug :


IF /I "$(ConfigurationName)" == "Debug" cmd.bat

Etiquettes:

Complication de code avec Eazfuscator.NET

Comme vous le savez sans doute, un programme écrit avec la plateforme .NET est compilé en Common Intermediate Language (CIL) qui peut être facilement décompilé avec un programme comme l'excellent DotPeek de JetBrains.

Pour protéger votre propriété intellectuelle, vous pouvez utiliser un obfuscateur qui complique le code généré par le compilateur. Le plus connu des programmes du genre est Dotfuscator, mais à l'usage il se révèle peu pratique.

Etiquettes:

Pages

Subscribe to RSS - .NET