Bonjour à tous,


Je suis nouveau sur le forum et nouveau en programmation...
... Pardonnez-moi par avance si mes questions semblent basiques!

Je cherche à "piloter" Autocad (v.2007) depuis une appli VB.net 2005.

Après avoir cherché pas mal de temps, j'ai finalement trouvé comment ouvrir un fichier .dwg, créer: du texte, une ligne, un bloc-attribut.
MAIS je n'ai pas réussi à modifier la justification du texte (alors qu'il est possible de la faire tourner) ou à modifier les valeurs d'un bloc-attribut pré-existant!

Savez-vous comment faire cela..?

Merci par avance pour votre aide .

Ci-dessous: la routine que j'utilise.

Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
 
   Private Sub Button1_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles Button1.Click
 
        Dim A(0 To 2) As Double, B(0 To 2) As Double
        Dim AutoCAD As Object
        Dim textobj As Object
        Dim blnrunning As Boolean    ' Si Autocad était en exécution
        Dim xo, yo As Double 'point origine d'insertion des éléments
 
        'coordonnées du point origine d'insertion des éléments
        xo = 0
        yo = 100
 
        ' Déroutement des erreurs
        On Error Resume Next
        '
        ' Référencer l'application Autocad
        AutoCAD = GetObject(, "Autocad.Application")
        If Err.Number <> 0 Then
            AutoCAD = CreateObject("Autocad.Application")
            blnrunning = False        ' Excel n'était pas en exécution
        Else
            blnrunning = True
        End If
 
 
        AutoCAD.documents.open("C:\Documents and Settings\All Users\Bureau\Dessinbase.dwg")
        '--------------------------------------------------------------------------------------------------
 
        '1 - Insertion d'une ligne
        '-------------------------
        A(0) = 0 : A(1) = 1 : A(2) = 0
        B(0) = 100 : B(1) = 100 : B(2) = 0
        AutoCAD.Application.ActiveDocument.ModelSpace.AddLine(A, B)
 
 
        '2 - Insertion d'un texte
        '------------------------
        textobj = AutoCAD.Application.ActiveDocument.ModelSpace.Addtext("toto", A, 5)
        ' textobj.TextAlignment = "alignmentPoint" ????? Ne fonctionne pas!
        ' textobj.acAttachmentPointMiddle()        ????? Ne fonctionne pas!
        textobj.update()
 
 
        '3 - Insertion d'un bloc
        '-----------------------
        ' Define the block
        Dim blockObj As Object
        Dim insertionPnt(0 To 2) As Double
        insertionPnt(0) = 0
        insertionPnt(1) = 0
        insertionPnt(2) = 0
        blockObj = AutoCAD.Application.ActiveDocument.Blocks.Add(insertionPnt, "BlockWithAttribute")
 
        ' Add an attribute to the block
        Dim attributeObj As Object
        Dim height As Double
        Dim mode As Long
        Dim prompt As String
        Dim insertionPoint(0 To 2) As Double
        Dim tag As String
        Dim value As String
        height = 1
        prompt = "New Prompt"
        insertionPoint(0) = 5
        insertionPoint(1) = 5
        insertionPoint(2) = 0
        tag = "New Tag"
        value = "New Value"
        blockObj.AddAttribute(height, mode, prompt, insertionPoint, tag, value)
 
        ' Insert the block, creating a block reference and an attribute reference
        insertionPnt(0) = 2
        insertionPnt(1) = -10
        insertionPnt(2) = 0
        AutoCAD.Application.ActiveDocument.ModelSpace.InsertBlock(insertionPnt, "BlockWithAttribute", 1.0#, 1.0#, 1.0#, 0)
 
        '--------------------------------------------------------------------------------------------------
 
        'Enregistrer et quitter
        AutoCAD.Visible = True
        AutoCAD.Application.ZoomExtents()
        AutoCAD.ActiveDocument.SaveAs("C:\Documents and Settings\All Users\Bureau\essai.dwg")
        AutoCAD.ActiveDocument.close()
 
        ' Ne pas quitter si Autocad était déjà lancé !
        If Not (blnrunning) Then ' S'il n'était pas lancé...
            AutoCAD.Quit()        ' alors quitter Autocad
        End If
        MsgBox("fini")
        'End If
 
    End Sub