Aller au contenu

Comment faire pour "vider" un (ssget ?


Messages recommandés

Posté(e)

Bonjour à tous,

 

Voilà, j'ai un petit LiSP qui me permet d'effectuer plusieurs sélections :

........
 (ssget "_X" '((0 . "TEXT,MTEXT") (1 . "#,##,###,####") (8 . "Portes")))
 (command "-calque" "n" "TOPO_NUM_POLICE" "")
 (command "chprop" "_P" "" "ca" "TOPO_NUM_POLICE" "")
 ;;
 (ssget "_X" '((0 . "TEXT,MTEXT") (1 . "#.##,##.##,###.##")(8 . "0,_0")))
 (command "-calque" "n" "TOPO_ALTI" "")
 (command "chprop" "_P" "" "ca" "TOPO_ALTI" "")
 ;;
 (ssget "_X" '((8 . "0,_0")))
 (command "_erase" "_P" "")
........

Mais lorsqu'un (ssget ne répond pas aux critère de sélection, dans la ligne suivant (command "_erase" "_P" ""), c'est la précédente sélection qui est en cours...

 

Comment déselectionner tout le dessin...?

 

J'ai essayé un (ssget nil) (ssget ""), rien ne fonctionne...

 

Si quelqu'un a un indice, je suis preneur...

 

Denis...

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)

Posté(e)

Bonjour,

 

Peut-être que tu cherche à faire qqc comme cela?

 

(if (setq ss (ssget "_X" '((0 . "TEXT,MTEXT") (1 . "#,##,###,####") (8 . "Portes"))))
  (progn (command "-calque" "n" "TOPO_NUM_POLICE" "")
         (command "chprop" ss "" "ca" "TOPO_NUM_POLICE" "")
  )
)
;;
(if (setq ss (ssget "_X" '((0 . "TEXT,MTEXT") (1 . "#.##,##.##,###.##") (8 . "0,_0"))))
   (progn (command "-calque" "n" "TOPO_ALTI" "") 
          (command "chprop" ss "" "ca" "TOPO_ALTI" "")
  )
)
;;
(if (setq ss (ssget "_X" '((8 . "0,_0"))))
   (command "_erase" ss "")
)

 

A+

(Ps: non testé, pour le principe)

Apprendre => Prendre => Rendre

Posté(e)

Bonjour VDH-Bruno,

 

Effectivement, c'est bien plus complet que ce que j'ai écris... Je pensais qu'il existait un "_unselect" ou un truc dans ce genre...

 

Avec ça, je vais me retaper une bonne partie de mon code, pour que ce soit plus "propre" comme dans ton exemple...

 

Et en fin de section, on fait un (setq ss "") ? Comme ça :

;;
(if (setq ss (ssget "_X" '((0 . "TEXT,MTEXT") (1 . "#.##,##.##,###.##") (8 . "0,_0"))))
   (progn (command "-calque" "n" "TOPO_ALTI" "") 
          (command "chprop" ss "" "ca" "TOPO_ALTI" "")
  )
)
(setq ss "")
;;

 

Et merci à toi,

 

Denis...

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)

Posté(e)

Bonjour Denis,

 

Si tu veux effacer une variable un cours de programme, il faut faire

 

(setq ss nil)

 

Nil équivaut également à vide.

 

"" équivaut à une chaîne de caractères vide.

 

Olivier

Posté(e)

Bonjour Olivier, et merci,

 

En plus, je le savais...

 

Ya des fois, je claquerais... ;-)

 

Denis

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)

Posté(e)

Re,

 

Une question me turlupine, sous VB, j'aurais créé un dictionnaire (qui est une liste de paires pointées) pour faire cette macro, exemple avec ça :

  (if (tblsearch "layer" "1")
   (progn (command "-calque" "n" "TOPO_PT_MATRI" "")
          (command "fuscalques" "n" "1" "" "n" "TOPO_PT_MATRI" "o")
   ) ;_ Fin de progn
 ) ;_ Fin de if
 ;;
 (if (tblsearch "layer" "2")
   (progn (command "-calque" "n" "VEG_ARBRE" "")
          (command "fuscalques" "n" "2" "" "n" "VEG_ARBRE" "o")
   ) ;_ Fin de progn
 ) ;_ Fin de if
 ;;
 (if (tblsearch "layer" "3")
   (progn (command "-calque" "n" "MOBILIER_URBAIN" "")
          (command "fuscalques" "n" "3" "" "n" "MOBILIER_URBAIN" "o")
   ) ;_ Fin de progn
 ) ;_ Fin de if

je pensais, qu'avec le LiSP, Roi des listes, on aurais pû faire un truc dans ce genre :

(setq LstCalq
   (1 . "TOPO_PT_MATRI")
   (2 . "VEG_ARBRE")
   (3 . "MOBILIER_URBAIN")
   (......)
)

Avec un (vlax-for pour boucler sur cette liste jusqu'à sa fin...

 

(vlax-for 
  (tblsearch "layer" élément_de_gauche_du_dico,
    (progn (command "-calque" "n" élément_de_droite_du_dico "")
           (command .......
    )

 

Ce qui aurait énormément simplifier la liste des calques à traiter...

 

Mais ça doit être bien au dessus de mon niveau LiSP...

 

Denis...

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)

Posté(e)

Salut

 

Pour répondre à ta question

(mapcar '(lambda(a B)
  (if (tblsearch "layer" a)
    (progn
      (command "-calque" "n" b "")
      (command "fuscalques" "n" a "" "n" b "o")
    )
  )
)
'("1" "2" "3")
'("TOPO_PT_MATRI" "VEG_ARBRE" "MOBILIER_URBAIN")
)

Et pourquoi ne pas utiliser _rename ?

 

@+

Les Lisps de Patrick

Le but n'est pas toujours placé pour être atteint, mais pour servir de point de mire.

Joseph Joubert, 1754-1824

Posté(e)

Slt

Si tu veux effacer une variable un cours de programme, il faut faire

(setq ss nil)

Nil équivaut également à vide.

"" équivaut à une chaîne de caractères vide.

 

Une petite subtilité avec ce qui vient d'être dit ici et qui dépasse le cadre du forum débutant, le fait de le remettre à nil ou de localiser la variable qui contient le pointeur, qui pointe sur un jeu de sélection permet sa libération et permet ainsi de ne jamais atteindre la limite des 128 jeux de sélection ouvert simultanément.

 

On peut faire le parallèle avec vla-get-activeselectionset qui créer un pointeur objet sur le pointeur du jeu de sélection, objet qu'il faut détruire explicitement avec vla-delete pour libérer ce dernier, au risque d'atteindre la limite de jeu de sélection et de retourner une erreur COM.

 

Mais si on joue sur les mots pour vider un jeu de sélection, on ferait plutôt comme ceci:

_$ (setq ss (ssget))
<Selection set: 1a5>
_$ (sslength ss)
3
_$ (while (setq e (ssname ss 0)) (ssdel e ss))
<Selection set: 1a5>
_$ (sslength ss)
0

 

Maintenant on a une variable qui pointe sur un pointeur de jeu de sélection vide de tout entitée

Commande: _move

Choix des objets: !ss

<Selection set: 1a5>

0 trouvé(s)

A+

Apprendre => Prendre => Rendre

Posté(e)

Re,

 

@Patrick_35 : je suis parti sur des "fusions" car, au début, il y avait plusieurs calques à prendre en compte, un rename ne suffisait pas. Je vais essayer ton code pour mes besoins... "(mapcar" ? Bon, un petit coup d'oeuil sur "Introduction_a_AutoLISP.pdf" de (gile)...

 

@VDH-Bruno : effectivement, ça dépasse largement le niveau débutant, qui est le mien...

 

Merci encore à tous...

 

Denis...

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)

Posté(e)

(mapcar '(lambda(a B)
  (if (tblsearch "layer" a)
    (progn
      (command "-calque" "n" b "")
      (command "fuscalques" "n" a "" "n" b "o")
    )
  )
)
'("1" "2" "3")
'("TOPO_PT_MATRI" "VEG_ARBRE" "MOBILIER_URBAIN")
)

Mais pour celà, n'était-ce pas plus facile d'utiliser les paires pointées (qui est bien plus facile à remplir, voir même à mettre dans un fichier txt) ? Comme celle-ci :

(setq LstCalq '((1 "TOPO_PT_MATRI")
                 (2 . "VEG_ARBRE")
                 (3 . "MOBILIER_URBAIN")
                 (5 . "Portes")
                 (6 . "MOBILIER_URBAIN")
                 (13 . "DET_GAZ")
                 (14 . "DET_EAU")
                 (15 . "DET_EDF")
                 (16 . "DET_TEL")
                 (17 . "DET_ASS")
                 (18 . "DET_CHA")
                 (21 . "TOPO_BORDUR")
                 (22 . "TOPO_NAT_SOL")
                 (30 . "TOPO_MUR")
                 (40 . "TOPO_PT_CELL")
                 (43 . "VEG_HAIE_D")
                 (44 . "VEG_HAIE_G")
                 (47 . "TOPO_GLISS")
                 (48 . "RAILS")
                 (49 . "TOPO_FIL")
                 (50 . "TOPO_STATION")
                 (57 . "BAT_DUR")
                 (58 . "TOPO_CLOTU_R")
                 (59 . "TALUS_BAS")
                 (61 . "TALUS_HAUT_D")
                 (62 . "TALUS_HAUT_G")
                 (63 . "TOPO_ALTI")
                 )
       )

 

Par contre, je ne sais pas ce que ferait un (foreach sur des paires pointées...

 

Denis...

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)

Posté(e)

Mais pour celà, n'était-ce pas plus facile d'utiliser les paires pointées ? Comme celle-ci :

(setq LstCalq '((1 "TOPO_PT_MATRI")
                 (2 . "VEG_ARBRE")
                 (3 . "MOBILIER_URBAIN")
                 (5 . "Portes")
                 (6 . "MOBILIER_URBAIN")
                 (13 . "DET_GAZ")
                 (14 . "DET_EAU")
                 (15 . "DET_EDF")
                 (16 . "DET_TEL")
                 (17 . "DET_ASS")
                 (18 . "DET_CHA")
                 (21 . "TOPO_BORDUR")
                 (22 . "TOPO_NAT_SOL")
                 (30 . "TOPO_MUR")
                 (40 . "TOPO_PT_CELL")
                 (43 . "VEG_HAIE_D")
                 (44 . "VEG_HAIE_G")
                 (47 . "TOPO_GLISS")
                 (48 . "RAILS")
                 (49 . "TOPO_FIL")
                 (50 . "TOPO_STATION")
                 (57 . "BAT_DUR")
                 (58 . "TOPO_CLOTU_R")
                 (59 . "TALUS_BAS")
                 (61 . "TALUS_HAUT_D")
                 (62 . "TALUS_HAUT_G")
                 (63 . "TOPO_ALTI")
                 )
       )

 

Par contre, je ne sais pas ce que ferait un (foreach sur des paires pointées...

 

Denis...

C'est selon la sensibilité de chacun et pour jouer du mapcar.

A toi de l'adapter selon ta liste (un bon exo ;) )

 

ps : foreach = mapcar (en gros)

 

@+

Les Lisps de Patrick

Le but n'est pas toujours placé pour être atteint, mais pour servir de point de mire.

Joseph Joubert, 1754-1824

Posté(e)

Merci pour cette réponse,

 

Pour l'exo, je l'avais justement commencé, enfin, j'ai juste commencé à lire le PDF de (gile)... Une vrai mine d'or...

 

Denis...

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)

Posté(e)

Ben voilà, j'ai fais ça :

  (setq LstCalq '((1 . "TOPO_PT_MATRI")
                 (2 . "VEG_ARBRE")
                 (3 . "MOBILIER_URBAIN")
                 (5 . "Portes")
                 (6 . "MOBILIER_URBAIN")
                 (13 . "DET_GAZ")
                 (14 . "DET_EAU")
                 (15 . "DET_EDF")
                 (16 . "DET_TEL")
                 (17 . "DET_ASS")
                 (18 . "DET_CHA")
                 (21 . "TOPO_BORDUR")
                 (22 . "TOPO_NAT_SOL")
                 (30 . "TOPO_MUR")
                 (40 . "TOPO_PT_CELL")
                 (43 . "VEG_HAIE_D")
                 (44 . "VEG_HAIE_G")
                 (47 . "TOPO_GLISS")
                 (48 . "RAILS")
                 (49 . "TOPO_FIL")
                 (50 . "TOPO_STATION")
                 (57 . "BAT_DUR")
                 (58 . "TOPO_CLOTU_R")
                 (59 . "TALUS_BAS")
                 (61 . "TALUS_HAUT_D")
                 (62 . "TALUS_HAUT_G")
                 (63 . "TOPO_ALTI")
                )
 ) ;_ Fin de setq
 (foreach PosLst LstCalq
   (if (tblsearch "layer" (rtos PosLst))
     (progn (command "-calque" "e" (cdr (assoc PosLst LstCalq)) "")
            (command "fuscalques" "n" (rtos PosLst) "" "n" (cdr (assoc PosLst LstCalq)) "o")
     ) ;_ Fin de progn
   ) ;_ Fin de if
 ) ;_ Fin de foreach

 

Mais AutoCAD n'est pas content et me répond :

erreur: type d'argument incorrect: numberp: (1 . "TOPO_PT_MATRI")

 

PFFFF....

 

Je continu mes tests...

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)

Posté(e)

Ben voilà, j'ai fais ça :

  (setq LstCalq '((1 . "TOPO_PT_MATRI")
                 (2 . "VEG_ARBRE")
                 (3 . "MOBILIER_URBAIN")
                 (5 . "Portes")
                 (6 . "MOBILIER_URBAIN")
                 (13 . "DET_GAZ")
                 (14 . "DET_EAU")
                 (15 . "DET_EDF")
                 (16 . "DET_TEL")
                 (17 . "DET_ASS")
                 (18 . "DET_CHA")
                 (21 . "TOPO_BORDUR")
                 (22 . "TOPO_NAT_SOL")
                 (30 . "TOPO_MUR")
                 (40 . "TOPO_PT_CELL")
                 (43 . "VEG_HAIE_D")
                 (44 . "VEG_HAIE_G")
                 (47 . "TOPO_GLISS")
                 (48 . "RAILS")
                 (49 . "TOPO_FIL")
                 (50 . "TOPO_STATION")
                 (57 . "BAT_DUR")
                 (58 . "TOPO_CLOTU_R")
                 (59 . "TALUS_BAS")
                 (61 . "TALUS_HAUT_D")
                 (62 . "TALUS_HAUT_G")
                 (63 . "TOPO_ALTI")
                )
 ) ;_ Fin de setq
 (foreach PosLst LstCalq
   (if (tblsearch "layer" (rtos PosLst))
     (progn (command "-calque" "e" (cdr (assoc PosLst LstCalq)) "")
            (command "fuscalques" "n" (rtos PosLst) "" "n" (cdr (assoc PosLst LstCalq)) "o")
     ) ;_ Fin de progn
   ) ;_ Fin de if
 ) ;_ Fin de foreach

 

Mais AutoCAD n'est pas content et me répond :

 

PFFFF....

 

Je continu mes tests...

Tu as une liste de paires. Regarde les fonctions car, cdr et ensuite cadr, etc...

 

@+

Les Lisps de Patrick

Le but n'est pas toujours placé pour être atteint, mais pour servir de point de mire.

Joseph Joubert, 1754-1824

Posté(e)

Merci Patrick_35 pour me distiller encore tes précieux conseils...

 

De plus, je pense avoir fait une autre boulette avec

 (foreach PosLst LstCalq
   (if (tblsearch "layer" (rtos PosLst))

 

Car PosList devrait s'incrémenter avec le "(foreach" : 1, 2, 3, 4, 5, 6, 7.... Et ma liste comporte des "trous". je n'ai pas de quatre par exemple...

 

Je vais me plonger dans l'aide de (gile), car les autres aides que je possède sont en anglais...

 

Je pensais m'en être sorti avec " (cdr (assoc PosLst LstCalq))" ?

 

Mais dans une liste de paires pointées, n'a-t-on pas besoin uniquement ce "(car" et "(cdr" ? Vue qu'il n'y a que deux données.

 

D'après (gile) et ce que j'en ai compris :

(car '(1 2 3 4 5) retourne 1

et (cdr '(1 2 3 4 5) retourne (2 3 4 5)

 

Donc, dans une paire pointée, "(car" est la première valeur de la paire et "(cdr" la deuxième... Non ?

 

Ca devrait pourtant être plus facile avec des paires pointées, non de non...

 

En tout cas, merci pour ces indices... Je verrais ça demain matin... Si je n'ai pas encore une autre "urgence" du commercial qui auras ENCORE oublié de me parler d'un dossier à livrer la veille ! !

 

A+

 

Denis...

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)

Posté(e)

Salut

 

Dans ta liste de paires, tu indiques comme valeurs des chaines de caractères.

Quand tu fais une recherche dans la table des calques, il est demandé une chaine de caractères.

Un rtos est fait pour convertir un réel en chaine de caractères.

Au vu de ce que je t'ai décrit, tu devrais voir où se situe l'erreur.

 

Pour bien comprendre l'utilisation de car, cadr, cdr, etc..., rien de mieux que des tests.

Essaye (car '(1 . 2)) (cdr '(1 . 2)) (cadr '(1 . 2)) (car '(1 2)) (cdr '(1 2)) (cadr '(1 2))

 

@+

  • Upvote 1

Les Lisps de Patrick

Le but n'est pas toujours placé pour être atteint, mais pour servir de point de mire.

Joseph Joubert, 1754-1824

Posté(e)

Bonjour Patrick_35 et encore merci pour ton aide,

 

J'ai suivi tes conseils et j'ai tout placé dans la console, ce qui me donne :

_1$ (car '(1 . 2))
1
_1$ (cdr '(1 . 2))
2
_1$ (cadr '(1 . 2))
_$; erreur: type d'argument incorrect: consp 2
_$ (car '(1 2))
1
_$ (cdr '(1 2))
(2)
_$ (cadr '(1 2))
2
_$ 

 

Donc, si j'ai bien tout compris,

(car retourne le premier élément de la liste

(cdr retourne la liste à partir du deuxième élément,

(cadr retourne le deuxième élément de la liste, et c'est là que je ne comprend pas pourquoi il plante,

 

Je pensais donc que celà ferait l'affaire :

  (foreach PosLst LstCalq
   (if (tblsearch "layer" (car (assoc PosLst LstCalq)))
     (progn (command "-calque" "e" (cdr (assoc PosLst LstCalq)) "")
            (command "fuscalques" "n" (car (assoc PosLst LstCalq)) "" "n" (cdr (assoc PosLst LstCalq)) "o")
     ) ;_ Fin de progn
   ) ;_ Fin de if
 ) ;_ Fin de foreach

Mais non :

; erreur: type d'argument incorrect: stringp nil

 

Mais je ne trouve rien dans mes aides sur "stringp"...

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)

Posté(e)
(cadr retourne le deuxième élément de la liste, et c'est là que je ne comprend pas pourquoi il plante,

Regarde comment sont les listes.

Deux liens

http://docs.autodesk.com/MAP/2014/ESP/index.html?url=filesACD/GUID-F0E08704-2854-4E05-9096-3A3ACEA007EB.htm,topicNumber=ACDd30e564256

http://knowledge.autodesk.com/support/autocad/getting-started/caas/CloudHelp/cloudhelp/2016/ITA/AutoCAD-AutoLISP/files/GUID-877B87BA-6FA2-4894-9F94-184E7DF25B7D-htm.html

 

Regarde les valeurs que prends la variable PosLst dans la boucle foreach

(foreach PosLst LstCalq
 (terpri)(princ PosLst)
)

 

@+

  • Upvote 1

Les Lisps de Patrick

Le but n'est pas toujours placé pour être atteint, mais pour servir de point de mire.

Joseph Joubert, 1754-1824

Posté(e)

YOUPI ! ! !

 

J'ai fini par y arriver ! ! ! Je n'aurais JAMAIS pu le faire sans vos aides... Un grand merci à vous messieurs...

 

Fier de ce code, je le poste volontier, si ça peut servir à quelqu'un d'autre... :

;;; Supprime un ancien calque vers un nouveau par fusion
;;; ListCalq = ("Nom de l'ancien calque" . "Nom du nouveau") NE PAS OUBLIER LE POINT ENTRE LES DEUX NOMS
   (setq LstCalq '(("1" . "TOPO_PT_MATRI")
                 ("2" . "VEG_ARBRE")
                 (............)
                 ("3" . "MOBILIER_URBAIN")
                 ("62" . "TALUS_HAUT_G")
                 ("63" . "TOPO_ALTI")
                )
 ) ;_ Fin de setq
 ;;
 (foreach PosLst LstCalq
   (if (tblsearch "layer" (car PosLst))
 ;(if (tblsearch "layer" (car (assoc (car PosLst) LstCalq)))
     (progn (command "-calque" "n" (cdr (assoc (car PosLst) LstCalq)) "")
            (command "fuscalques" "n" (car PosLst) "" "n" (cdr (assoc (car PosLst) LstCalq)) "o") ;_ Fin de command
     ) ;_ Fin de progn
   ) ;_ Fin de if
 ) ;_ Fin de foreach

 

J'aurais du tester si le calque existe avant de le créer...

 

Maintenant que j'y pense, j'aurais même pu prévoir une couleur par calque, mais on ne parle plus de paire pointée (sauf si on fait deux Listes). Mais ça ne m'est d'aucune utilité.

 

J'ai un fichier Excel (XLSM) qui met à jours tous mes calques avec couleur, style de ligne, description.... directement dans AutoCAD.

 

Merci encore à vous tous...

 

Denis (content)...

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)

Posté(e)

Par comme ça :

 (cadr PosLst)

 

Je m'en vais le tester...

 

Merci encore...

 

Denis...

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)

Posté(e)

J'ai ajouter un petit controle, vérifier qu'un calque n'existe pas avant de le créer...

  (setq LstCalq '(("1" . "TOPO_PT_MATRI")
                 ("2" . "VEG_ARBRE")
                 ("3" . "MOBILIER_URBAIN")
                 ("5" . "Portes") 
                 (.....................)
                 ("62" . "TALUS_HAUT_G")
                 ("63" . "TOPO_ALTI")
                )
 ) ;_ Fin de setq
 (foreach PosLst LstCalq
   (if (tblsearch "layer" (car PosLst))
     (progn (if (not (tblsearch "layer" (cdr (assoc (car PosLst) LstCalq))))
              (command "-calque" "n" (cdr (assoc (car PosLst) LstCalq)) "")
            ) ;_ Fin de if
            (command "fuscalques" "n" (car PosLst) "" "n" (cdr (assoc (car PosLst) LstCalq)) "o") ;_ Fin de command
     ) ;_ Fin de progn
   ) ;_ Fin de if
 ) ;_ Fin de foreach

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)

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é