jeudi 2 mai 2013

Premier module pour ZWCAD

Désormais, nous allons coder notre module destiné à ZWCAD.
 
Vérifier tout d'abord que tout les pré-requis sont “installés” .

On va créer une boite de dialogue qui lors du clic sur un bouton, va nous afficher un cercle à l’écran.

Tout d’abord on créer un nouveau projet et l’on choisit un modèle “bibliothèque de classe”. Ensuite on ajoute un nouvel élément à notre projet: une “boîte de dialogue”.

On va faire en sorte qu’elle ressemble à celle présentée ci-dessous:

On ne va pas modifier le code de cette boîte de dialogue !




Classe Cercle.vb


    Ensuite on va créer une nouvelle classe “Cercle.vb” où l’on écrira le code concernant le cercle que l’on va créer. (clic droit > nouvel élément ....)


Dans cette classe on va tout d’abord écrire tout les attributs dont nous avons besoin.
On définit d'abord l’accès au document actif ZwCad, à la base de donnée de ce document.

 
Namespace Cercle
    Public Class Cercle
        Public Sub Circle()
            ' Permet la lecture du document ZwCad Ouvert/actif
            Dim zcDoc As Document = Application.DocumentManager.MdiActiveDocument
            ' Permet la lecture de la base de donnéesdu document ZwCad ouvert/actif
            Dim zcDB As Database = zcDoc.Database
            ' Démarre une transaction
            Using zcTran As Transaction = zcDB.TransactionManager.StartTransaction
                ' Accède en lecture sur la base de donnée
                Dim zcBLT As BlockTable
                zcBLT = zcTran.GetObject(zcDB.BlockTableId, OpenMode.ForRead)
                Dim zcBLTR As BlockTableRecord
                ' Accède en écriture sur la base de donnée
                zcBLTR = zcTran.GetObject(zcBLT(BlockTableRecord.ModelSpace), OpenMode.ForWrite)
                ' On crée une instance de Circle (on crée un nouveau cercle)
                Dim zcCircle As Circle = New Circle
                zcCircle.Center = New Point3d(2, 3, 0)
                zcCircle.Radius = 10
                zcCircle.ColorIndex = 1
                zcBLTR.AppendEntity(zcCircle)
                ' Ajoute un objet à la base de donnée en l'ajoutant à la transaction
                zcTran.AddNewlyCreatedDBObject(zcCircle, True)
                ' Validation des modifications
                zcTran.Commit()
            End Using
            Dim doc As Document
            doc = Application.DocumentManager.MdiActiveDocument
            doc.SendStringToExecute("_ZOOM _E ", False, False, False)

        End Sub
    End Class
End Namespace


Ensuite on va démarrer une transaction de sorte que à ce que l’on puisse accéder plus tard aux objets présent dans la base de donnée en lecture ou en écriture avec la méthode GetObject.

Pour ajouter un objet à la base de donnée, il faut aussi l'ajouter à la transaction avec la méthode AddNewlyCreatedDBObject.

On valide les modifications faites dans la base de donnée depuis une transaction avec la méthode Commit (qu'il n'est donc pas nécessaire d'invoquer s'il n'y a eu aucune modification).

On utilise un groupe Using pour la partie concernant la transaction : ainsi les ressources des objets ouvert seront libérés même dans le cas où une exception interviendrait avant la fin de la transaction.

A la fin du ‘Using’, on utilise une ligne de code “doc.SendStringToExecute(“_Zoom_E”,...)” qui nous sert à écrire directement dans l’interpréteur de commande de ZWCad la commande “_ZOOM_E” qui nous permet de faire un zoom étendue. Ainsi notre cercle apparaît directement et à la bonne échelle.


Classe Main

Tout d’abord, on définit le nom de la commande avec laquelle on pourra appeler notre programme sous ZwCad+.’<CommandMethod(“nomCommande”)> _

Dans notre classe Main, nous allons également créer une instance de notre boite de dialogue ‘Dialog1’. C’est avec cette instance que nous allons pouvoir afficher cette boite de dialogue et utiliser les procédures qu’elle définit.



Imports ZwSoft.ZwCAD.Runtime
Imports ZcadAp = ZwSoft.ZwCAD.ApplicationServices.Application



Namespace AfficherCercle
    Public Class SHMain
        <CommandMethod("AddCircle")> _
        Public Sub AddCircle()
            Dim dlg As Dialog1 = New Dialog1()
            ZcadAp.ShowModalDialog(dlg)
            Dim c As Cercle.Cercle = New Cercle.Cercle()
            c.Circle()
        End Sub
    End Class
End Namespace

Après avoir afficher cette boite de dialogue et après que l’on aura appuyé sur le bouton ‘OK’, notre programme va créer une instance de notre cercle, et va ensuite l’afficher.


Désormais nous avons finis de coder! Il ne nous reste plus qu’à générer le code et lancer le programme sous ZwCad+.

Pour générer le code: [Générer -> Générer NomProjet/Solution]

Ensuite on lance ZwCad+. Tapez la commande “netload”: si celle-ci n’est pas reconnue c’est que les deux dll fournies, n’ont pas été placées dans le dossier d’installation de ZwCad+. Sinon vous pouvez rechercher votre dll générée par Visual Studio.




Vérifiez bien le chemin indiqué pour la dll générée [Projet -> Propriétés -> Compiler -> Chemin de sortie de la génération]




Sélectionnez votre dll. Ensuite tapez le nom de la commande que vous avez définit dans notre programme. 

Normalement nous avons cela qui apparait à l'écran :







Et lorsque l’on appuie sur OK, un cercle rouge apparaît à l’écran.







Aucun commentaire:

Enregistrer un commentaire