IdentifiantMot de passe
Loading...
Mot de passe oublié ?Je m'inscris ! (gratuit)
Navigation

Inscrivez-vous gratuitement
pour pouvoir participer, suivre les réponses en temps réel, voter pour les messages, poser vos propres questions et recevoir la newsletter

Lisp Discussion :

AUTOCAD 2013 : Lisp : Tableau récapitulatif polylignes + longueur totale


Sujet :

Lisp

  1. #1
    Débutant
    Profil pro
    Inscrit en
    Avril 2008
    Messages
    193
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Avril 2008
    Messages : 193
    Points : 58
    Points
    58
    Par défaut AUTOCAD 2013 : Lisp : Tableau récapitulatif polylignes + longueur totale
    Bonjour,

    J'ai récupéré un bout de lisp sur le net et j'aimerais avoir une aide pour le comprendre et le modifier. je tiens à remercier son auteur pour l'aide précieuse apportée.

    Étant novice sur Visual Lisp, je sollicite votre aide. je ne connais que Python, Matlab et Scilab.

    Quel ligne de code donne le nombre de lignes et le nombres de colonnes du tableau ?

    Est ce : pour les colonnes et
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    setq NumRows (+ 3 LayerCount)
    pour les lignes ?

    Serait il possible de quantifier le nombre de lignes au résultats du filtre suivant au début de code :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    setq filteredLayers "*EP_PRO_TRANCHEE_*"
    soit indiquée à LayerCount le nombre de fichiers trouvés

    Est il possible avec ce filtre à l'inverse d'exclure des calques commencçant par EP_PRO_S.... ?

    Comment peut on ajouter des colonnes ?

    Merci d'avance pour l'aide.

    Cordialement

    Voici le code en entier

    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
    94
    95
    96
    97
    98
    99
    100
    101
    102
    103
    104
    105
    106
    107
    108
    109
    110
    111
    112
    113
    114
    115
    116
    117
    118
    119
    120
    121
    122
    123
    124
    125
    126
    127
    128
    129
    130
    131
    132
    133
    134
    135
    136
    137
    138
    139
    140
    141
    142
    143
    144
    145
    146
    147
    148
    149
    150
    151
    152
    153
    154
    155
    156
    157
    158
    159
    160
    161
    162
    163
    164
    165
    166
    167
    168
    169
    170
    171
    172
    173
    174
    175
    176
    177
    178
    179
    180
    181
    182
    183
    184
    185
    186
    187
    188
    189
    190
    191
    192
    193
    194
    195
    196
    197
    198
    199
    200
    201
    202
    203
    204
    205
    206
    207
    208
    209
    210
    211
    212
    213
    214
    215
    216
    217
    218
    219
    220
    221
    222
    223
    224
    225
    226
    227
    228
    229
    230
    231
    232
    233
    234
    235
    236
    237
    238
    239
    240
    241
    242
    243
    244
    245
    246
    247
    248
    249
    250
    251
    252
    253
    254
    255
    256
    257
    258
    259
    260
    261
    262
    263
    264
    (vl-load-com)
     
    (defun c:tableau_Perimetres (
     
     / acadObject column ColWidth endPt filteredLayers filteredObjets i LayerCount LayerName layerNames lcLayerName
     
       LineWeightMedium LineWeightNone LineWeightThick ModelSpace n NumColumns NumRows objectName perimeter Point3D_UCS
     
       Point3D_WCS Resultat Resultats row RowHeight tableau textsize ThisDrawing Total vlaLayers vlaPoint3D vlaTableau
     
       )
     
     
     
       ;; ======================================================================================================================
     
       ;; Personnalisation
     
       ;; ======================================================================================================================
     
     
     
       ;; Liste des calques et objets désirés, séparés par des virgules, sans espace, wildcard acceptés, en minuscules ou majuscules
     
       ;; Exemple pour calques: "*" pour tous les calques, "E*,Z*" pour tous ceux qui commencent par E et par Z
     
       ;; Exemple pour objets "*" pour tous les objets "*line,circle" pour tous les objets dont le nom se termine par "line", ainsi que les cercles
     
       (setq filteredLayers "*EP_PRO_TRANCHEE_*")  
     
       (setq filteredObjets "*line")  
     
     
       ;; Taille du tableau
     
       (setq textsize (getvar "textsize"))          ; Voir cette variable qui contrôle la hauteur du texte
     
       (setq RowHeight (* 2.0 textsize))
     
       (setq ColWidth (* 10.0 RowHeight))           ; Largeur totale du tableau = 2 * ColWidth puisqu'on a 2 colonnes
     
       (setq LineWeightThick acLnWt090)             ; Épaisseur de la ligne de séparation (voir LWDISPLAY)
     
       (setq LineWeightMedium acLnWt040)            ; Épaisseur de la ligne de séparation (voir LWDISPLAY)
     
       (setq LineWeightNone acLnWt000)              ; Épaisseur de la ligne de séparation (voir LWDISPLAY)
     
     
     
     
       ;; ======================================================================================================================
     
       ;; Ne pas modifier la suite du programme
     
       ;; ======================================================================================================================
     
     
       (setq filteredLayers (strcase filteredLayers t))  ; Minuscules
     
       (setq filteredObjets (strcase filteredObjets t))  ; Minuscules
     
     
     
       (setq acadObject (vlax-get-acad-object))
     
       (setq ThisDrawing (vla-get-ActiveDocument acadObject))
     
       (setq ModelSpace (vla-get-ModelSpace ThisDrawing))
     
       (setq vlaLayers (vla-get-Layers ThisDrawing))
     
       (setq LayerCount (vla-get-count vlaLayers))
     
     
       (setq Point3D_UCS (getpoint "\nPoint d'insertion: "))
     
       (setq Point3D_WCS (trans Point3D_UCS 1 0))  ; Si pas en WCS
     
       (setq vlaPoint3D (PointToVariant Point3D_WCS))
     
     
       ;; En AutoLISP, il n'y a pas de tableau. On va se créer un faux tableau avec des clés (hash table)
     
       ;; dont les paires sont (LayerName Count)
     
       (setq Resultats nil)
     
       (setq layerNames nil)
     
       (vlax-for vlaLayer vlaLayers
     
          (setq layerName (vla-get-name vlaLayer))
     
          (setq lcLayerName (strcase layerName t))  ; Minuscules
     
          (if (wcmatch lcLayerName filteredLayers) (setq layerNames (cons lcLayerName layerNames)))
     
       )
     
       (setq layerNames (vl-sort layerNames '<))  ; Trier en ordre croissant
     
       (setq Resultats (mapcar '(lambda (x) (cons x 0.0)) layerNames))
     
     
       (vlax-for vlaObject ModelSpace
     
     
     
          (if (and (wcmatch (setq objectName (strcase (vla-get-ObjectName vlaObject) t)) filteredObjets)
     
                   (wcmatch (setq layerName (strcase (vla-get-Layer vlaObject) t)) filteredLayers)
     
              )
     
          (progn
     
             (setq endPt (vlax-curve-getEndParam vlaObject))
     
             (setq perimeter (vlax-curve-getDistAtParam vlaObject endPt))
     
             (setq Total (+ perimeter (cdr (assoc layerName Resultats))))
     
             (setq Resultats (subst (cons layerName Total) (assoc layerName Resultats) Resultats))
     
          ))
     
       )
     
     
       (setq NumRows (+ 3 LayerCount)) ; 2 lignes de titre + total
     
       (setq NumColumns 2)
     
       (setq vlaTableau (vla-AddTable ModelSpace vlaPoint3D NumRows NumColumns RowHeight ColWidth))
     
     
       ;; Ligne 0
     
       (setq row 0)
     
       (setq column 0)
     
       (SetCellProperties vlaTableau row column "Résultats" textsize acMiddleCenter nil)
     
     
       ;; Ligne 1, colonne 0
     
       (setq row 1)
     
       (setq column 0)
     
       (SetCellProperties vlaTableau row column "Calques" textsize acMiddleCenter (cons acHorzBottom LineWeightMedium))
     
     
       ;; Ligne 1, colonne 1
     
       (setq row 1)
     
       (setq column 1)
     
       (SetCellProperties vlaTableau row column "Longueur de tranchée" textsize acMiddleCenter (cons acHorzBottom LineWeightMedium))
     
     
       ;; Lignes de résultat
     
       (setq i 0)
     
       (setq n LayerCount)
     
       (setq Total 0.0)
     
       (while (< i n);remplacer 4 par n
     
          (setq Resultat (nth i Resultats))
     
          (setq row (+ i 2))
     
     
          ;; Calque
     
          (setq column 0)
     
          (setq layerName (strcase (car Resultat)))
     
          (SetCellProperties vlaTableau row column layerName textsize acMiddleLeft nil)
     
     
          ;; Longueur de tranchée
     
          (setq column 1)
     
          (setq perimeter (cdr Resultat))
     
          (setq Total (+ Total perimeter))
     
          (SetCellProperties vlaTableau row column (rtos perimeter) textsize acMiddleRight nil)
     
          (setq i (1+ i))
     
       )
     
    )
     
     
     
     
    (defun SetCellProperties (
     
       vlaTableau Row Column Texte TextHeight Alignment LineWeightPair
     
       )
     
       ;; Gère les propriétés populaires des cellules d'un tableau
     
       ;;    vlaTableau Row Column : Obligatoire, les autres sont facultatifs
     
       ;;    Row, Column : INT, base 0
     
       ;;    Alignment: INT,
     
       ;;    LineWeightPair: nil, sinon (cons "AcGridLineType enum" "acad_lweight enum"), soit (cons Position Épaisseur)
     
       ;; Support pour Acad2006 et Acad2009
     
       (if LineWeightPair (vla-SetCellGridLineWeight vlaTableau Row Column (car LineWeightPair) (cdr LineWeightPair)))
     
       (if Alignment (vla-SetCellAlignment vlaTableau Row Column Alignment))
     
       (if TextHeight (vla-SetCellTextHeight vlaTableau Row Column TextHeight))
     
       (if Texte
     
          (if vla-SetCellValue
     
             (vla-SetCellValue vlaTableau Row Column Texte) ; AutoCAD 2009
     
             (vla-SetText vlaTableau Row Column Texte)      ; AutoCAD 2006
     
          )
     
       )
     
    )
     
     
    ;;; PointToVariant
     
    ;;; Conversion de Point2D ou Point3D en variant
     
    (defun PointToVariant (
     
       point
     
     / arraySpace sArray
     
       )
     
       (setq arraySpace (vlax-make-safearray vlax-vbDouble (cons 0 (1- (length point)))))
     
       (setq sArray (vlax-safearray-fill arraySpace point))
     
       (vlax-make-variant sArray)
     
    )

  2. #2
    Membre du Club
    Profil pro
    Inscrit en
    Janvier 2011
    Messages
    35
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Janvier 2011
    Messages : 35
    Points : 63
    Points
    63
    Par défaut
    Bonjour,

    Le code que tu proposes est probablement une adaptation du code de Serge Camiré issue de cette discussion,
    http://cadxp.com/topic/20057-lisp-po...ost__p__107252


    Pour répondre à tes interrogations:

    Oui l'expression (setq NumColumns 2), fixe le nombre de colonne du tableau. Augmenter ce nombre ajoutera des colonnes "vide", pour les "remplir" il faudra commencer ligne 162 à modifié un peu le code.


    Actuellement le nombre de lignes est associé au nombre de calques présent dans ton dessin (ligne 72), pour que le nombre soit quantifié au résultat, tu peux lier la variable NumRows au nombre d'éléments présent dans la variable layerNames qui est renseigné (en ligne 96), en fonction de ton filtre définie en ligne 29 avec la variable filteredLayers .
    Remplace:
    (setq NumRows (+ 3 LayerCount)) par (setq NumRows (+ 3 (length layerNames)))
    Et également:
    (setq n LayerCount) par (setq n (length layerNames)) ligne 168


    Il est également possible d'exclure les calques commençant par EP_PRO_S.... au moyen du caractère ~
    Ligne 29 substitue l'actuel expression par l'expression (setq filteredLayers "~EP_PRO_S*"), dans le lien qui suit tu trouveras l'aide sur la fonction wcmatch pour une meilleur compréhension des possibilité offerts
    http://help.autodesk.com/view/ACD/20...6-9B09952A53AD

    Cordialement,

  3. #3
    Débutant
    Profil pro
    Inscrit en
    Avril 2008
    Messages
    193
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Avril 2008
    Messages : 193
    Points : 58
    Points
    58
    Par défaut
    Bonjour,

    Merci pour la reponse.

    effectivement c'est un code de serge Camiré éludé puisqu'il y avait un autre tableau dans son code.

    J'ai pris note des correctifs et j'ai adapté le code.

    Le voici fini pour ce que ça intéresse. Merci Bruno pour les corrections et Serge l'auteur de la trame principale du code.

    J'ai une seule question, comment peut dire pour l'affichage d'un calque, d'afficher depuis tel numéro de caractère jusqu'à la fin, ou du début jusqu'à tel numéro de caractère ou entre telle numéros de caractères ?

    Je crois que c'est dans ces lignes de codes :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    ;; Lignes de résultat
     
       (setq i 0)
     
       (setq n (length layerNames)) ;;Ecriture des lignes du filtre
     
       (setq Total 0.0)
     
       (while (< i n);remplacer 4 par n
     
          (setq Resultat (nth i Resultats))
     
          (setq row (+ i 2)


    Voici le code en entier:
    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
    94
    95
    96
    97
    98
    99
    100
    101
    102
    103
    104
    105
    106
    107
    108
    109
    110
    111
    112
    113
    114
    115
    116
    117
    118
    119
    120
    121
    122
    123
    124
    125
    126
    127
    128
    129
    130
    131
    132
    133
    134
    135
    136
    137
    138
    139
    140
    141
    142
    143
    144
    145
    146
    147
    148
    149
    150
    151
    152
    153
    154
    155
    156
    157
    158
    159
    160
    161
    162
    163
    164
    165
    166
    167
    168
    169
    170
    171
    172
    173
    174
    175
    176
    177
    178
    179
    180
    181
    182
    183
    184
    185
    186
    187
    188
    189
    190
    191
    192
    193
    194
    195
    196
    197
    198
    199
    200
    201
    202
    203
    204
    205
    206
    207
    208
    209
    210
    211
    212
    213
    214
    215
    216
    217
    218
    219
    220
    221
    222
    223
    224
    225
    226
    227
    228
    229
    230
    231
    232
    233
    234
    235
    236
    237
    238
    239
    240
    241
    242
    243
    244
    245
    246
    247
    248
    249
    250
    251
    252
    253
    254
    255
    256
    257
    258
    259
    260
    261
    262
    263
    264
    265
    266
    267
    268
    269
    270
    271
    272
    273
    274
    275
    276
    277
    278
    279
    280
    281
    282
    283
    284
    285
    286
    287
    288
    289
    290
    291
    292
    293
    ;;; c:lineaire_tranchee
     
    ;;; Dessine un tableau illustrant la liste des calques et les périmètres d'objets filtrés (en ModelSpace)
     
    ;;;
     
    ;;; Compatibilité: AutoCAD 2005 et plus
     
    ;;;
     
    ;;; Instructions:
     
    ;;; 1) Charger ce fichier
     
    ;;; 2) Tapez TABLEAU_PERIMETRES sur la ligne de commande
     
    ;;; 3) Indiquez le point d'insertion
     
    ;;; 4) La partie Personnalisation peut être modifiés.
     
     
    (vl-load-com)
     
     
    (defun c:Lineaire_Tranchee (
     
     / acadObject column ColWidth endPt filteredLayers filteredObjets i LayerCount LayerName layerNames lcLayerName 
     
       LineWeightMedium LineWeightNone LineWeightThick ModelSpace n NumColumns NumRows objectName perimeter Point3D_UCS 
     
       Point3D_WCS Resultat Resultats row RowHeight tableau textsize ThisDrawing Total vlaLayers vlaPoint3D vlaTableau
     
       ) 
     
     
     
       ;; ======================================================================================================================
     
       ;; Personnalisation
     
       ;; ======================================================================================================================
     
     
     
       ;; Liste des calques et objets désirés, séparés par des virgules, sans espace, wildcard acceptés, en minuscules ou majuscules
     
       ;; Exemple pour calques: "*" pour tous les calques, "E*,Z*" pour tous ceux qui commencent par E et par Z
     
       ;; Exemple pour objets "*" pour tous les objets "*line,circle" pour tous les objets dont le nom se termine par "line", ainsi que les cercles
     
       (setq filteredLayers "*EP_PRO_TRANCHEE_*")  
     
       (setq filteredObjets "*line")  
     
     
       ;; Taille du tableau
     
       (setq textsize (getvar "textsize"))          ; Voir cette variable qui contrôle la hauteur du texte
     
       (setq RowHeight (* 2 textsize))
     
       (setq ColWidth (* 21.0 RowHeight))		; Largeur totale du tableau = 2 * ColWidth puisqu'on a 2 colonnes Largeur des colonnes
     
       ;;(setq ColHeight (* 60.0 RowHeight))
     
       (setq LineWeightThick acLnWt015)             ; Épaisseur de la ligne de séparation (voir LWDISPLAY)
     
       (setq LineWeightMedium acLnWt015)            ; Épaisseur de la ligne de séparation (voir LWDISPLAY)
     
       (setq LineWeightNone acLnWt015)              ; Épaisseur de la ligne de séparation (voir LWDISPLAY)
     
     
     
     
       ;; ======================================================================================================================
     
       ;; Ne pas modifier la suite du programme
     
       ;; ======================================================================================================================
     
     
       (setq filteredLayers (strcase filteredLayers t))  ; Minuscules
     
       (setq filteredObjets (strcase filteredObjets t))  ; Minuscules
     
     
     
       (setq acadObject (vlax-get-acad-object))
     
       (setq ThisDrawing (vla-get-ActiveDocument acadObject))
     
       (setq ModelSpace (vla-get-ModelSpace ThisDrawing))
     
       (setq vlaLayers (vla-get-Layers ThisDrawing))
     
       (setq LayerCount (vla-get-count vlaLayers))
     
     
       (setq Point3D_UCS (getpoint "\nPoint d'insertion: "))
     
       (setq Point3D_WCS (trans Point3D_UCS 1 0))  ; Si pas en WCS
     
       (setq vlaPoint3D (PointToVariant Point3D_WCS))
     
     
       ;; En AutoLISP, il n'y a pas de tableau. On va se créer un faux tableau avec des clés (hash table)
     
       ;; dont les paires sont (LayerName Count)
     
       (setq Resultats nil)
     
       (setq layerNames nil)
     
       (vlax-for vlaLayer vlaLayers
     
          (setq layerName (vla-get-name vlaLayer))
     
          (setq lcLayerName (strcase layerName t))  ; Minuscules
     
          (if (wcmatch lcLayerName filteredLayers) (setq layerNames (cons lcLayerName layerNames)))
     
       )
     
       (setq layerNames (vl-sort layerNames '<))  ; Trier en ordre croissant
     
       (setq Resultats (mapcar '(lambda (x) (cons x 0.0)) layerNames))
     
     
       (vlax-for vlaObject ModelSpace
     
     
     
          (if (and (wcmatch (setq objectName (strcase (vla-get-ObjectName vlaObject) t)) filteredObjets)
     
                   (wcmatch (setq layerName (strcase (vla-get-Layer vlaObject) t)) filteredLayers)
     
              )
     
          (progn
     
             (setq endPt (vlax-curve-getEndParam vlaObject))
     
             (setq perimeter (vlax-curve-getDistAtParam vlaObject endPt))
     
             (setq Total (+ perimeter (cdr (assoc layerName Resultats))))
     
             (setq Resultats (subst (cons layerName Total) (assoc layerName Resultats) Resultats)) 
     
          ))
     
       )
     
       (setq NumRows (length layerNames));; Nombre de lignes en fonction du nombre de calques
     
       (setq NumRows (+ NumRows 2));; Ajout 2 lignes de titre
     
       ;;(setq NumColumns 2)
     
       (setq NumColumns 2) ;; Nombre de colonne
     
       (setq vlaTableau (vla-AddTable ModelSpace vlaPoint3D NumRows NumColumns RowHeight ColWidth))
     
     
       ;; Ligne 0
     
       (setq row 0)
     
       (setq column 0)
     
       ;;(SetCellProperties vlaTableau row column "RESULTATS" textsize acMiddleCenter nil)
     
       (SetCellProperties vlaTableau row column "RESULTATS" textsize acMiddleCenter nil)
     
       (setvar "textsize" 3) ;; changement ecriture taille du texte dans les cellules
     
       ;; Ligne 1, colonne 0
     
       (setq row 1)
     
       (setq column 0)
     
       (SetCellProperties vlaTableau row column "TRANCHEE" textsize acMiddleCenter (cons acHorzBottom LineWeightMedium))
     
     
       ;; Ligne 1, colonne 1
     
       (setq row 1)
     
       (setq column 1)
     
       (SetCellProperties vlaTableau row column "LONGUEUR DE TRANCHEE EN m" textsize acMiddleCenter (cons acHorzBottom LineWeightMedium))
     
     
       ;; Lignes de résultat
     
       (setq i 0)
     
       (setq n (length layerNames)) ;;Ecriture des lignes du filtre
     
       (setq Total 0.0)
     
       (while (< i n);remplacer 4 par n
     
          (setq Resultat (nth i Resultats))
     
          (setq row (+ i 2))
     
     
          ;; Calque
     
          (setq column 0)
     
          (setq layerName (strcase (car Resultat)))
     
          (SetCellProperties vlaTableau row column layerName textsize acMiddleCenter nil)
     
     
          ;; Longueur de tranchée
     
          (setq column 1)
     
          (setq perimeter (cdr Resultat))
     
          (setq Total (+ Total perimeter))
     
          (SetCellProperties vlaTableau row column (rtos perimeter) textsize acMiddleCenter nil)
     
          (setq i (1+ i))
     
       ) 
     
    )
     
     
     
    (defun SetCellProperties (
     
       vlaTableau Row Column Texte TextHeight Alignment LineWeightPair
     
       )
     
       ;; Gère les propriétés populaires des cellules d'un tableau
     
       ;;    vlaTableau Row Column : Obligatoire, les autres sont facultatifs
     
       ;;    Row, Column : INT, base 0
     
       ;;    Alignment: INT, 
     
       ;;    LineWeightPair: nil, sinon (cons "AcGridLineType enum" "acad_lweight enum"), soit (cons Position Épaisseur)
     
       ;; Support pour Acad2006 et Acad2009
     
       (if LineWeightPair (vla-SetCellGridLineWeight vlaTableau Row Column (car LineWeightPair) (cdr LineWeightPair)))
     
       (if Alignment (vla-SetCellAlignment vlaTableau Row Column Alignment))
     
       (if TextHeight (vla-SetCellTextHeight vlaTableau Row Column TextHeight))
     
       (if Texte
     
          (if vla-SetCellValue 
     
             (vla-SetCellValue vlaTableau Row Column Texte) ; AutoCAD 2009
     
             (vla-SetText vlaTableau Row Column Texte)      ; AutoCAD 2006
     
          )
     
       )
     
    )
     
     
    ;;; PointToVariant
     
    ;;; Conversion de Point2D ou Point3D en variant
     
    (defun PointToVariant (
     
       point
     
     / arraySpace sArray
     
       )
     
       (setq arraySpace (vlax-make-safearray vlax-vbDouble (cons 0 (1- (length point)))))
     
       (setq sArray (vlax-safearray-fill arraySpace point))
     
       (vlax-make-variant sArray)
     
    )
    Merci beaucoup.

  4. #4
    Membre du Club
    Profil pro
    Inscrit en
    Janvier 2011
    Messages
    35
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Janvier 2011
    Messages : 35
    Points : 63
    Points
    63
    Par défaut
    Re,

    Si je comprends bien la question tu ne souhaiterais afficher que partiellement le libellé du calque renseigné dans ton tableau dessiné sous AutoCAD dans ce cas je t'invite à regarder l'aide des fonctions Lisp substr et strlen

    Quelques petits exemples de ce que tu souhaites faire:
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    (setq layername "nom_de_mon_calque")
    Pour afficher depuis le 5ème caractère jusqu'a la fin
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    _$ (substr layername  5)
    "de_mon_calque"
    Pour afficher depuis le début jusqu'au 5ème caractère
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    _$ (substr layername 1 (- (strlen layername) (strlen (substr layername  5))))
    "nom_"
    Pour afficher entre le 4ème et le 10ème caractères
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    _$ (substr layername  5 5)
    "de_mo"
    Dans le code l'information que tu cherches à modifier est contenu dans la variable layerName, personnellement je ferais la modification au niveau de la ligne 213 dans le code.

    A+

  5. #5
    Débutant
    Profil pro
    Inscrit en
    Avril 2008
    Messages
    193
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Avril 2008
    Messages : 193
    Points : 58
    Points
    58
    Par défaut
    Merci Bruno pour la réponse, j'ai pu faire mes modifications dans le code. Tout fonctionne bien

    J'ai une question sur une partie du code pour que je le comprenne entièrement.

    Sur cette portion, il y a, me semble-t-il, dans les lignes suivantes
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
     (progn
     
             (setq endPt (vlax-curve-getEndParam vlaObject))
     
             (setq perimeter (vlax-curve-getDistAtParam vlaObject endPt))
     
             (setq Total (+ perimeter (cdr (assoc layerName Resultats))))
     
             (setq Resultats (subst (cons layerName Total) (assoc layerName Resultats) Resultats)) 
     
          ))
    une ligne qui compte le linéaire pour chaque portion de calque (
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    (setq perimeter (vlax-curve-getDistAtParam vlaObject endPt))
    ) ?.

    Y a t il un moyen de compter le nombre de polylignes additionnées et de récupérer cette information. Il faut donc créer une variable supplémentaire et l'associer au layername.

    Merci d'avance pour la confirmation à ma question et pour le début d'aide.

  6. #6
    Membre du Club
    Profil pro
    Inscrit en
    Janvier 2011
    Messages
    35
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Janvier 2011
    Messages : 35
    Points : 63
    Points
    63
    Par défaut
    Bonjour,

    Citation Envoyé par niepoc Voir le message
    une ligne qui compte le linéaire pour chaque portion de calque (
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    (setq perimeter (vlax-curve-getDistAtParam vlaObject endPt))
    ) ?.
    Non la ligne renvoie le périmètre de la polyligne en cours de traitement, dans les lignes suivantes cette valeur est ajouté à la valeur déjà calculé, puis elle mis à jour (substitué) dans la liste de résultat.

    Citation Envoyé par niepoc Voir le message
    Y a t il un moyen de compter le nombre de polylignes additionnées et de récupérer cette information. Il faut donc créer une variable supplémentaire et l'associer au layername.
    Oui, il y a moyen de récupérer cette information, pour pouvoir associer cette information au layername, il te faudra au préalable bien comprendre ces lignes de codes suivantes:
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    ;; En AutoLISP, il n'y a pas de tableau. On va se créer un faux tableau avec des clés (hash table)
    ;; dont les paires sont (LayerName Count)
      (setq Resultats nil)
      (setq layerNames nil)
      (vlax-for vlaLayer vlaLayers
        (setq layerName (vla-get-name vlaLayer))
        (setq lcLayerName (strcase layerName t)) ; Minuscules
        (if (wcmatch lcLayerName filteredLayers)
          (setq layerNames (cons lcLayerName layerNames))
        )
      )
      (setq layerNames (vl-sort layerNames '<)) ; Trier en ordre croissant
      (setq Resultats (mapcar '(lambda (x) (cons x 0.0)) layerNames))
    Et comprendre le principe d'une liste associative, après tu pourras modifier la dernière ligne comme ceci:
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    (setq Resultats (mapcar '(lambda (x) (cons x 0.0 0.0)) layerNames))
    Pour pouvoir y associer l'information que tu veux au moyen des lignes de codes précédemment expliqué..

    Cordialement

  7. #7
    Débutant
    Profil pro
    Inscrit en
    Avril 2008
    Messages
    193
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Avril 2008
    Messages : 193
    Points : 58
    Points
    58
    Par défaut
    Bonjour Bruno,

    merci pour cette réponse.

    j'ai en partie fini de taper le code et je suis arrivé aux résultats voulus en matière de contenu et de forme du tableau.

    Pour mon histoire de section, mon information était contenue dans la variable endPt, j'ai donc créé une seconde liste sur le même modèle que la première.

    Ensuite j'ai fait des conditions pour supprimer des lignes dans mon tableau quand endPt était égale à zéro.

    J'ai fait une autre condition pour forcer la valeur de ma dernière colonne à zéro quand le mot Vide était contenu dans un nom de claque.

    J'ai mis en forme les noms de gaines et câbles en supprimant les "_".

    Voici le code en entier
    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
    94
    95
    96
    97
    98
    99
    100
    101
    102
    103
    104
    105
    106
    107
    108
    109
    110
    111
    112
    113
    114
    115
    116
    117
    118
    119
    120
    121
    122
    123
    124
    125
    126
    127
    128
    129
    130
    131
    132
    133
    134
    135
    136
    137
    138
    139
    140
    141
    142
    143
    144
    145
    146
    147
    148
    149
    150
    151
    152
    153
    154
    155
    156
    157
    158
    159
    160
    161
    162
    163
    164
    165
    166
    167
    168
    169
    170
    171
    172
    173
    174
    175
    176
    177
    178
    179
    180
    181
    182
    183
    184
    185
    186
    187
    188
    189
    190
    191
    192
    193
    194
    195
    196
    197
    198
    199
    200
    201
    202
    203
    204
    205
    206
    207
    208
    209
    210
    211
    212
    213
    214
    215
    216
    217
    218
    219
    220
    221
    222
    223
    224
    225
    226
    227
    228
    229
    230
    231
    232
    233
    234
    235
    236
    237
    238
    239
    240
    241
    242
    243
    244
    245
    246
    247
    248
    249
    250
    251
    252
    253
    254
    255
    256
    257
    258
    259
    260
    261
    262
    263
    264
    265
    266
    267
    268
    269
    270
    271
    272
    273
    274
    275
    276
    277
    278
    279
    280
    281
    282
    283
    284
    285
    286
    287
    288
    289
    290
    291
    292
    293
    294
    295
    296
    297
    298
    299
    300
    301
    302
    303
    304
    305
    306
    307
    308
    309
    310
    311
    312
    313
    314
    315
    316
    317
    318
    319
    320
    321
    322
    323
    324
    325
    326
    327
    328
    329
    330
    331
    332
    333
    334
    335
    336
    337
    338
    339
    340
    341
    342
    343
    344
    345
    346
    347
    348
    349
    350
    351
    352
    353
    354
    355
    356
    357
    358
    359
    360
    361
    362
    363
    364
    365
    366
    367
    368
    369
    370
    371
    372
    373
    374
    375
    376
    377
    378
    379
    380
    381
    382
    383
    384
    385
    386
    387
    388
    389
    390
    391
    392
    393
    394
    395
    396
    397
    398
    399
    400
    401
    402
    403
    404
    405
    406
    407
    408
    409
    410
    411
    412
    413
    414
    415
    416
    417
    418
    419
    420
    421
    422
    423
    424
    425
    426
    427
    428
    429
    430
    431
    432
    433
    434
    435
    436
    437
    438
    439
    440
    441
    442
    443
    444
    445
    446
    447
    448
    449
    450
    451
    452
    453
    454
    455
    456
    457
    458
    459
    460
    461
    462
    463
    464
    465
    466
    467
    468
    469
    470
    ;;; c:Tableau_Gaine_Cable
     
    ;;; Dessine un tableau illustrant la liste des calques et les périmètres d'objets filtrés (en ModelSpace)
     
    ;;;
     
    ;;; Compatibilité: AutoCAD 2005 et plus
     
    ;;;
     
    ;;; Instructions:
     
    ;;; 1) Charger ce fichier
     
    ;;; 2) Tapez TABLEAU_PERIMETRES sur la ligne de commande
     
    ;;; 3) Indiquez le point d'insertion
     
    ;;; 4) La partie Personnalisation peut être modifiés.
     
     
    (vl-load-com)
     
     
    (defun c:Tableau_Gaine_Cable (
     
     / acadObject column ColWidth endPt filteredLayers filteredObjets i LayerCount LayerName layerNames lcLayerName 
     
       LineWeightMedium LineWeightNone LineWeightThick ModelSpace n NumColumns NumRows objectName perimeter Point3D_UCS 
     
       Point3D_WCS Resultat Resultats row RowHeight Sections tableau textsize ThisDrawing Total Totalsec vlaLayers vlaPoint3D vlaTableau VIDE
     
       ) 
     
     
     
       ;; ======================================================================================================================
     
       ;; Personnalisation
     
       ;; ======================================================================================================================
     
     
     
       ;; Liste des calques et objets désirés, séparés par des virgules, sans espace, wildcard acceptés, en minuscules ou majuscules
     
       ;; Exemple pour calques: "*" pour tous les calques, "E*,Z*" pour tous ceux qui commencent par E et par Z
     
       ;; Exemple pour objets "*" pour tous les objets "*line,circle" pour tous les objets dont le nom se termine par "line", ainsi que les cercles
     
       (setq filteredLayers "*EP_PRO_GAINE*")  
     
       (setq filteredObjets "*line")  
     
     
       ;; Taille du tableau
     
       (setq textsize (getvar "textsize"))          ; Voir cette variable qui contrôle la hauteur du texte
     
       (setq RowHeight (* 2 textsize))
     
       (setq ColWidth (* 15.0 RowHeight))		; Largeur totale du tableau = 2 * ColWidth puisqu'on a 2 colonnes Largeur des colonnes
     
       ;;(setq ColHeight (* 60.0 RowHeight))
     
       (setq LineWeightThick acLnWt015)             ; Épaisseur de la ligne de séparation (voir LWDISPLAY)
     
       (setq LineWeightMedium acLnWt015)            ; Épaisseur de la ligne de séparation (voir LWDISPLAY)
     
       (setq LineWeightNone acLnWt015)              ; Épaisseur de la ligne de séparation (voir LWDISPLAY)
     
     
     
     
       ;; ======================================================================================================================
     
       ;; Ne pas modifier la suite du programme
     
       ;; ======================================================================================================================
     
     
       (setq filteredLayers (strcase filteredLayers t))  ; Minuscules
     
       (setq filteredObjets (strcase filteredObjets t))  ; Minuscules
     
     
     
       (setq acadObject (vlax-get-acad-object))
     
       (setq ThisDrawing (vla-get-ActiveDocument acadObject))
     
       (setq ModelSpace (vla-get-ModelSpace ThisDrawing))
     
       (setq vlaLayers (vla-get-Layers ThisDrawing))
     
       (setq LayerCount (vla-get-count vlaLayers))
     
     
       (setq Point3D_UCS (getpoint "\nPoint d'insertion: "))
     
       (setq Point3D_WCS (trans Point3D_UCS 1 0))  ; Si pas en WCS
     
       (setq vlaPoint3D (PointToVariant Point3D_WCS))
     
     
       ;; En AutoLISP, il n'y a pas de tableau. On va se créer un faux tableau avec des clés (hash table)
     
       ;; dont les paires sont (LayerName Count)
     
       (setq Resultats nil)
     
       (setq Sections nil)
     
       (setq layerNames nil)
     
     
     
       (vlax-for vlaLayer vlaLayers
     
          (setq layerName (vla-get-name vlaLayer))
     
          (setq lcLayerName (strcase layerName t))  ; Minuscules
     
          (if (wcmatch lcLayerName filteredLayers) (setq layerNames (cons lcLayerName layerNames)))
     
       )
     
       (setq layerNames (vl-sort layerNames '<))  ; Trier en ordre croissant
     
       (setq Resultats (mapcar '(lambda (x) (cons x 0.0)) layerNames))
     
       (setq Sections (mapcar '(lambda (x) (cons x 0.0)) layerNames))
     
     
       (vlax-for vlaObject ModelSpace
     
     
     
          (if (and (wcmatch (setq objectName (strcase (vla-get-ObjectName vlaObject) t)) filteredObjets)
     
                   (wcmatch (setq layerName (strcase (vla-get-Layer vlaObject) t)) filteredLayers)
     
              )
     
          (progn
     
             (setq endPt (vlax-curve-getEndParam vlaObject));; Récupération du nombre de section itérée
     
             (setq Totalsec (+ endPt (cdr (assoc layerName Sections))));; Association nombre section à un calque	 
     
             (setq Sections (subst (cons layerName Totalsec) (assoc layerName Sections) Sections))
     
             (setq perimeter (vlax-curve-getDistAtParam vlaObject endPt));; Récupération du nombre de la longeur 
     
             (setq Total (+ perimeter (cdr (assoc layerName Resultats))));; Association nombre longueur à un calque	 
     
             (setq Resultats (subst (cons layerName Total) (assoc layerName Resultats) Resultats))
     
     
     
          ))
     
       )
     
       ;;(setq NumRows (length layerNames));; Nombre de lignes en fonction du nombre de calques
     
       (setq n (length layerNames)) ;; Nombre de calques
     
       (setq i 0)
     
       (setq j 0)
     
       (while (< i n)
     
          (setq section (nth i Sections))
     
          (setq nb_sections (cdr section))
     
          (if  (/= 0 nb_sections)
    	     (progn
    	        (print "Section")
    	        (print nb_sections)
    	        (setq j (1+ j))
    	        (print "j")
    	        (print j)
          	     )
            )
          (setq i (1+ i))
       )
     
     
       (setq NumRows (* j 1))
     
       (setq NumRows (+ NumRows 2));; Ajout 2 lignes de titre
     
       ;;(setq NumColumns 2)
     
       (setq NumColumns 6) ;; Nombre de colonne
     
       (setq vlaTableau (vla-AddTable ModelSpace vlaPoint3D NumRows NumColumns RowHeight ColWidth))
     
     
       ;; Ligne 0
     
       (setq row 0)
     
       (setq column 0)
     
       ;;(SetCellProperties vlaTableau row column "RESULTATS" textsize acMiddleCenter nil)
     
       (SetCellProperties vlaTableau row column "RESULTATS" textsize acMiddleCenter nil)
     
       (setvar "textsize" 3) ;; changement ecriture taille du texte dans les cellules
     
       ;; Ligne 1, colonne 0
     
       (setq row 1)
     
       (setq column 0)
     
       (SetCellProperties vlaTableau row column "CALQUE" textsize acMiddleCenter (cons acHorzBottom LineWeightMedium))
     
     
       ;; Ligne 1, colonne 1
     
       (setq row 1)
     
       (setq column 1)
     
       (SetCellProperties vlaTableau row column "TYPES DE GAINE" textsize acMiddleCenter (cons acHorzBottom LineWeightMedium))
     
     
     
       ;; Ligne 1, colonne 2
     
       (setq row 1)
     
       (setq column 2)
     
       (SetCellProperties vlaTableau row column "TYPES DE CABLES" textsize acMiddleCenter (cons acHorzBottom LineWeightMedium))
     
     
       ;; Ligne 1, colonne 3
     
       (setq row 1)
     
       (setq column 3)
     
       (SetCellProperties vlaTableau row column "NOMBRE DE SECTIONS" textsize acMiddleCenter (cons acHorzBottom LineWeightMedium))
     
     
       ;; Ligne 1, colonne 4
     
       (setq row 1)
     
       (setq column 4)
     
       (SetCellProperties vlaTableau row column "LONGUEUR DE GAINE" textsize acMiddleCenter (cons acHorzBottom LineWeightMedium))
     
     
       ;; Ligne 1, colonne 5
     
       (setq row 1)
     
       (setq column 5)
     
       (SetCellProperties vlaTableau row column "LONGUEUR DE CABLE" textsize acMiddleCenter (cons acHorzBottom LineWeightMedium))
     
     
       ;; Lignes de résultat
     
       (setq i 0)
     
       (setq j 2)
     
       (setq n (length layerNames)) ;; Nombre de calques
     
       (setq Total 0.0)
     
       (setq Totalsec 0.0)
     
     
       (while (< i n)
     
          (setq Resultat (nth i Resultats))
     
          (setq section (nth i Sections))
     
          (setq nb_sections (cdr section))
     
          ;; (setq row (+ j 2))
     
          (setq row (* j 1))
     
          ;; CALQUE
     
          (setq column 0)
     
          (setq layerName (strcase (car Resultat)));;choix de l'affichage du nom de calque
     
          ;;(setq layername (substr layerName 8));; Nom des calques 
     
          (SetCellProperties vlaTableau row column layerName textsize acMiddleCenter nil)
     
     
          ;; GAINE
     
          (setq column 1)
     
          (setq layerName (strcase (car Resultat)));;choix de l'affichage du nom de calque
     
          (setq layername (substr layerName 8 8));; Nom des gaines
     
          (setq position (vl-string-search "_" layername))
     
          (setq layername (vl-string-subst " " "_" layername position));; Suppression du caractère "_"
     
          (SetCellProperties vlaTableau row column layerName textsize acMiddleCenter nil)
     
     
          ;; CABLES
     
          (setq column 2)
     
          (setq layerName (strcase (car Resultat)));;choix de l'affichage du nom de calque
     
          (setq layername (substr layerName 16));; Nom des cables
     
          (setq position (vl-string-search "_" layername))
     
          (setq layername (vl-string-subst " " "_" layername position));; Suppression du premier caractère "_"
     
          (setq position (vl-string-search "_" layername))
     
          (setq layername (vl-string-subst " " "_" layername position));; Suppression du second caractère "_"
     
          (SetCellProperties vlaTableau row column layerName textsize acMiddleCenter nil)
     
          ;;Nombre de sections
     
          (setq column 3)
     
          (setq nb_sections (cdr section))
     
          (setq Totalsec (+ Totalsec nb_sections))
     
          (SetCellProperties vlaTableau row column (rtos nb_sections 2 0) textsize acMiddleCenter nil)
     
     
          ;; Longueur de gaine
     
          (setq column 4)
     
          (setq perimeter (cdr Resultat))
     
          (setq perimeter (+ perimeter (* nb_sections 2)));; AJOUT DE 1.5m DE GAINE PAR ALIMENTATIONS OU OUVRAGES QUI CORRESPOND A 0.75m x 2 REMONTEES !!! 
     
          (setq Total (+ Total perimeter))
     
          (SetCellProperties vlaTableau row column (rtos perimeter 2 2) textsize acMiddleCenter nil)
     
     
          ;; Longueur de cable
     
          (setq column 5)
     
          (setq perimeter (cdr Resultat))
     
          (setq perimeter (+ perimeter (* nb_sections 2)));; AJOUT DE 2m DE CABLES PAR ALIMENTATIONS OU OUVRAGES QUI CORRESPOND A 1m x 2 REMONTEES !!!
     
          (setq layerName (strcase (car Resultat)));;choix de l'affichage du nom de calque
     
          (if (vl-string-search "VIDE" layerName)
    	   (progn
    	      (setq perimeter 0)
    	   )
           )	   
     
          (setq Total (+ Total perimeter))
     
          (SetCellProperties vlaTableau row column (rtos perimeter 2 2) textsize acMiddleCenter nil)
     
     
          (setq i (1+ i))
     
     
          (if  (/= 0 nb_sections)
    	     (progn
    	        (print "Section")
    	        (print nb_sections)
    	        (setq j (1+ j))
    	        (print "j")
    	        (print j)
    	     )
          )
     
       )
    )
     
     
     
     
    (defun SetCellProperties (
     
       vlaTableau Row Column Texte TextHeight Alignment LineWeightPair
     
       )
     
       ;; Gère les propriétés populaires des cellules d'un tableau
     
       ;;    vlaTableau Row Column : Obligatoire, les autres sont facultatifs
     
       ;;    Row, Column : INT, base 0
     
       ;;    Alignment: INT, 
     
       ;;    LineWeightPair: nil, sinon (cons "AcGridLineType enum" "acad_lweight enum"), soit (cons Position Épaisseur)
     
       ;; Support pour Acad2006 et Acad2009
     
       (if LineWeightPair (vla-SetCellGridLineWeight vlaTableau Row Column (car LineWeightPair) (cdr LineWeightPair)))
     
       (if Alignment (vla-SetCellAlignment vlaTableau Row Column Alignment))
     
       (if TextHeight (vla-SetCellTextHeight vlaTableau Row Column TextHeight))
     
       (if Texte
     
          (if vla-SetCellValue 
     
             (vla-SetCellValue vlaTableau Row Column Texte) ; AutoCAD 2009
     
             (vla-SetText vlaTableau Row Column Texte)      ; AutoCAD 2006
     
          )
     
       )
     
    )
     
     
    ;;; MISE EN FORME DU TABLEAU
    ;;; SUPPRESSION DES LIGNES INUTILES
    ;;; SUPPRESSION DES _ DANS LES COLONNES TYPE DE GAINES ET TYPE DE CABLES
    ;;; AFFECTATION DE LA VALEUR ZERO SI LA GAINE EST VIDE
     
     
     
     
     
     
    ;;; PointToVariant
     
    ;;; Conversion de Point2D ou Point3D en variant
     
    (defun PointToVariant (
     
       point
     
     / arraySpace sArray
     
       )
     
       (setq arraySpace (vlax-make-safearray vlax-vbDouble (cons 0 (1- (length point)))))
     
       (setq sArray (vlax-safearray-fill arraySpace point))
     
       (vlax-make-variant sArray)
     
    )

    J'ai une question, est il possible de partir du tableau obtenu pour générer un deuxième tableau dans le même lisp et l'afficher en dessous?

    L'idée est de créer un tableau en ajoutant cette fois-ci chaque valeur selon le même type de gaine ou de câble ? Un genre de tableau total....

    Est ce qu'un tableau fonctionne comme une matrice sous AutoLisp ?

    Merci d'avance

  8. #8
    Expert confirmé
    Homme Profil pro
    Développeur informatique en retraite
    Inscrit en
    Avril 2008
    Messages
    2 101
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Côtes d'Armor (Bretagne)

    Informations professionnelles :
    Activité : Développeur informatique en retraite

    Informations forums :
    Inscription : Avril 2008
    Messages : 2 101
    Points : 5 849
    Points
    5 849
    Par défaut
    Citation Envoyé par niepoc Voir le message
    est il possible de partir du tableau obtenu pour générer un deuxième tableau dans le même lisp et l'afficher en dessous?

    L'idée est de créer un tableau en ajoutant cette fois-ci chaque valeur selon le même type de gaine ou de câble ? Un genre de tableau total....
    Si j'ai bien compris, le but des forums de ce site est d'aider les demandeurs à résoudre des problèmes techniques concernant lisp.
    Il me semble que la question que tu poses est plus fonctionnelle que technique...
    Il me semble aussi qu'elle demande de lire et comprendre tout ton code pour répondre, ce qui n'est pas le fonctionnement habituel de ce site.
    Il nous serait plus facile de t'aider si tu nous exposais ce que tu as essayé et qui ne marche pas comme tu voudrais.

    Est ce qu'un tableau fonctionne comme une matrice sous AutoLisp ?
    En fait, le problème est que ce forum est plutôt dédié à lisp (bien qu'il n'ait pas une intense activité).
    Et la question que tu poses est très spécifique d'Autolisp.
    J'aurais bien voulu t'aider, mais (bien que "expert" en lisp) je ne connais pas du tout Autolisp :-(
    J'espère que tu trouveras des compétences Autolisp ici.
    Sinon il vaudrait peut-être mieux aller sur un forum spécifiquement dédié à autocad/autolisp!
    Je suis désolé de ne pas être plus aidant!

  9. #9
    Débutant
    Profil pro
    Inscrit en
    Avril 2008
    Messages
    193
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Avril 2008
    Messages : 193
    Points : 58
    Points
    58
    Par défaut
    Bonjour,

    Merci Jack pour la réponse et l'attention.

    Je vais regarder ça si je peux trouver de l'aide ailleurs.

    Cordialement

Discussions similaires

  1. [XL-2007] [AUTOCAD 2013] Insertion d'objet sur une polyligne à une longueur donnée
    Par Garruth dans le forum Macros et VBA Excel
    Réponses: 1
    Dernier message: 05/12/2012, 15h21
  2. Réponses: 1
    Dernier message: 25/05/2007, 10h55
  3. Réponses: 1
    Dernier message: 05/01/2007, 15h33
  4. Réponses: 6
    Dernier message: 03/02/2006, 19h45
  5. Générer un tableau récapitulatif
    Par NicoNGRI dans le forum MS SQL Server
    Réponses: 9
    Dernier message: 14/11/2005, 09h01

Partager

Partager
  • Envoyer la discussion sur Viadeo
  • Envoyer la discussion sur Twitter
  • Envoyer la discussion sur Google
  • Envoyer la discussion sur Facebook
  • Envoyer la discussion sur Digg
  • Envoyer la discussion sur Delicious
  • Envoyer la discussion sur MySpace
  • Envoyer la discussion sur Yahoo