Aller au contenu

Aide aux développeurs


(gile)

Messages recommandés

Depuis AutoCAD 2018, l'aide aux développeurs tous environnements confondus (AutoLISP, ActiveX/VBA, Managed .NET, ObjectARX, JavaScript) est accessible depuis la même page web :
https://help.autodesk.com/view/OARX/2018/FRA/

NB : on peut remplacer 2018 par une version ultérieure dans l'URL

Gilles Chanteau - gileCAD - GitHub
Développements sur mesure pour AutoCAD

Lien vers le commentaire
Partager sur d’autres sites

Un grand merci à toi @(gile), je colle tout de suite ce raccourcis dans mes préférences...

Windows 11 / AutoCAD 2024

Sur terre, il y a 10 types de personnes, celles qui comptent en binaire et les autres (developpez.net).
Davantage d'avantages, avantagent davantage (Bobby Lapointe).
La connaissance s'accroît quand on la partage (Socrate).
Tant va la cruche à l'eau que l'habit n'amasse pas mousse avant de l'avoir tué. (Moi)

Lien vers le commentaire
Partager sur d’autres sites

  • 2 semaines après...

Juste une petite remarque.
Quand je cherche toutes les propriétés d'un calque dans l'aide, je ne trouve que ça, et je ne trouve, par exemple, presque rien sur l'ensemble des propriété d'un calque. Le type de ligne, la couleur, l'épaisseur, l'option d'impression...
Il faut avouer que ce n'est pas facile de trouver des renseignements complets dans cette aide, qui a le mérite d'exister, c'est vrai, mais qui ne sert pas souvent tout de suite...
J'ai toutes-fois réussis à trouver beaucoup de renseignements, après plusieurs heures de recherches... Encore merci à @(gile)
Mais je n'ai toujours pas trouvé la variable d'impression (T=Trace ou A=Aucun tracé) en VBA dans cette aide...
Je cherche juste une deux choses, j'ai écris ce petit bout de code, qui fait parti d'un ensemble (en liaison tardive, encore merci à @(gile)

    Dim AcadApp As Object
    On Error Resume Next
    Set AcadApp = GetObject(, "AutoCAD.Application")
    Dim DocAutoCad As Object
    Set DocAutoCad = AcadApp.ActiveDocument
    Dim LayerNameColl As Object
    Set LayerNameColl = GetObject(, "AutoCAD.AcadLayer")
    NomFeuille = ActiveSheet.name
    Lign = 2
    Do While Sheets(NomFeuille).Cells(Lign, 1).Value <> ""
        Sheets(NomFeuille).Cells(Lign, 1).Value = ""
        Lign = Lign + 1
    Loop
    Lign = 2
    Dim entry As Object
    Set LayerNameColl = DocAutoCad.layers
    Lign = 2
    For Each entry In LayerNameColl
        If entry.name <> "0" Then
            Sheets(NomFeuille).Cells(Lign, 1).Value = entry.name
            'C'est ici que je n'y arrive pas *************************************************
            'Et la couleur de ce calque
            Sheets(NomFeuille).Cells(Lign, 2).Value = entry.color
            'Et le type de ligne de ce calque
            Sheets(NomFeuille).Cells(Lign, 3).Value = entry.LineType
            'Et l'épaisseur de ce calque
            Sheets(NomFeuille).Cells(Lign, 4).Value = entry.LineWeight
            'Et l'option d'impression de ce calque
            'Sheets(NomFeuille).Cells(Lign, 5).Value = entry. En cours de recherche ***************
            Lign = Lign + 1
        End If
    Next

Mais je n'obtient que des "-3" pour les épaisseurs de ligne. Je n'ai trouvé aucune explication sur ce "-3".
Et je n'ai toujours pas trouvé comment obtenir l'option d'impression d'un calque...

Windows 11 / AutoCAD 2024

Sur terre, il y a 10 types de personnes, celles qui comptent en binaire et les autres (developpez.net).
Davantage d'avantages, avantagent davantage (Bobby Lapointe).
La connaissance s'accroît quand on la partage (Socrate).
Tant va la cruche à l'eau que l'habit n'amasse pas mousse avant de l'avoir tué. (Moi)

Lien vers le commentaire
Partager sur d’autres sites

La page que tu as trouvé est celle de la propriété Layers (au pluriel) des objets Document ou Database (Document.Layers ou Database.Layers) qui permet d'accéder à la collection des calques de ces objets (tout ça est clairement décrit dans cette page).
Or ce que tu cherches ce sont les propriétés de l'objet Layer.

Les valeurs pour les épaisseurs de ligne (propriété Lineweight des calques comme de tous les objets graphiques) sont les membres d'une énumération. Chaque membre d'une énumération correspond à un entier différent (en liaison tardive on utilise cet entier). -3 est la valeur de acLnWtByLwDefault, soit la valeur par défaut définie dans la variable système LWDEFAULT.

  • acLnWtByLayer = -1
  • acLnWtByBlock = -2
  • acLnWtByLwDefault = -3
  • acLnWt000 = 0
  • acLnWt005 = 5
  • acLnWt009 = 9
  • acLnWt013 = 13
  • ...

 

Gilles Chanteau - gileCAD - GitHub
Développements sur mesure pour AutoCAD

Lien vers le commentaire
Partager sur d’autres sites

Citation

Mais je n'ai toujours pas trouvé la variable d'impression (T=Trace ou A=Aucun tracé) en VBA dans cette aide...

.plottable = true 'or false

tu as dans l'aide :

je te le redis l'aide VBA est tres bien documenté ! abuses-en !

Sub Example_Plottable()
    ' This example creates a new layer called "New_Layer".  It then uses
    ' the Plottable property of each Layer to display whether or not that layer
    ' is plottable.  The user has the ability to toggle the plottable state
    ' for each layer, and the final plottable status for all layers is displayed.
    
    Dim layerObj As AcadLayer, tempLayer As AcadLayer
    Dim msg As String

    ' Add the layer to the layers collection
    Set layerObj = ThisDrawing.Layers.Add("New_Layer")
    
    ' Make the new layer the active layer for the drawing
    ThisDrawing.ActiveLayer = layerObj
    
    ' Cycle through the layers and allow user to make them plottable or not
    
    For Each tempLayer In ThisDrawing.Layers
        If tempLayer.Plottable Then     ' Determine if this layer is plottable
            If MsgBox("The layer '" & tempLayer.name & "' will plot.  Would you like to turn off plotting for this layer?", vbYesNo & vbQuestion) = vbYes Then
                tempLayer.Plottable = False     ' Change plottable state
            End If
        Else
            If MsgBox("The layer '" & tempLayer.name & "' will not plot.  Would you like to turn on plotting for this layer?", vbYesNo & vbQuestion) = vbYes Then
                tempLayer.Plottable = True      ' Change plottable state
            End If
        End If
    Next
    
    ' Display the new plottable status of the layers in this drawing
    
    For Each tempLayer In ThisDrawing.Layers
        ' Determine if this layer is plottable
        If tempLayer.Plottable Then
            msg = msg & "The layer '" & tempLayer.name & "' will plot." & vbCrLf
        Else
            msg = msg & "The layer '" & tempLayer.name & "' will not plot." & vbCrLf
        End If
    Next

    MsgBox msg
End Sub

 

Lien vers le commentaire
Partager sur d’autres sites

Mille mercis @Curlygoth ! ! !

Windows 11 / AutoCAD 2024

Sur terre, il y a 10 types de personnes, celles qui comptent en binaire et les autres (developpez.net).
Davantage d'avantages, avantagent davantage (Bobby Lapointe).
La connaissance s'accroît quand on la partage (Socrate).
Tant va la cruche à l'eau que l'habit n'amasse pas mousse avant de l'avoir tué. (Moi)

Lien vers le commentaire
Partager sur d’autres sites

Créer un compte ou se connecter pour commenter

Vous devez être membre afin de pouvoir déposer un commentaire

Créer un compte

Créez un compte sur notre communauté. C’est facile !

Créer un nouveau compte

Se connecter

Vous avez déjà un compte ? Connectez-vous ici.

Connectez-vous maintenant
×
×
  • Créer...

Information importante

Nous avons placé des cookies sur votre appareil pour aider à améliorer ce site. Vous pouvez choisir d’ajuster vos paramètres de cookie, sinon nous supposerons que vous êtes d’accord pour continuer. Politique de confidentialité