AutoCAD : LISP Commande création de calque

AutoCAD : LISP Commande création de calque

Arthur.D21
Contributor Contributor
2 188 Visites
9 Réponses
Message 1 sur 10

AutoCAD : LISP Commande création de calque

Arthur.D21
Contributor
Contributor

Bonjour à tous !

Je viens à vous pour une information sur la création d'un calque sur Autocad en programmation LISP.

Je souhaite au moment ou je lance ma fonction :

 

*Avoir une commande pour chercher si le calque x est présent, si il est présent alors le mettre en actif pour que mon dessin (réalisé à l'aide de ma fonction) soit dans le calque x,

 

*Si le calque n'existe pas, alors le créer, le mettre en actif pour que mon dessin (réalisé à l'aide de ma fonction) soit dans le calque x.

 

En vous remerciant par avance.

Bonne journée à vous !


Le titre du sujet a été modifié par un modérateur pour faciliter la recherche. Titre original:
LISP Commande création de calque

0 J'aime
Solutions acceptées (3)
2 189 Visites
9 Réponses
Replies (9)
Message 2 sur 10

tramber
Advisor
Advisor

Lisp simple avec l'instruction COMMAND ou script, c'est pareil.

Quand on lance -calque en ligne de commande, il y a l'option Etablir. Elle gère tout, le calque existant ou non.

Donc on peut écrire :

(command "calque" "Etablir" "mon_calque" "")

bête comme chou 😉


EESignature

Message 3 sur 10

DVaquand
Mentor
Mentor

Bonjour

 

En complément à ce que vous indique @tramber je vous invite de préférence à écrire vos commandes et options AutoLisp en anglais afin que votre application puisse fonctionner sur n'importe quelle version autre que FR.

 

(command "_layer" "_m" "NomDuCalque" "")

 

En tant que commande cela sera facile de trouver l'équivalent en anglais ou inversement par la commande GETCNAME

 

(Getcname "Calque") retourne "_Layer"

(Getcname "_Layer") retourne "Calque"

 

Pour les options il faudra trouver l'équivalent en anglais. Par exemple "_M" pour "make".

Le signe "_" (tiret bas) devant la commande et l' option signifie que la commande ou l'option est en anglais.

 

Bon développement

 

Cordialement
Dominique VAQUAND
www.dovaq.fr

 

 

Cordialement
Dominique VAQUAND
www.dovaq.fr

Cette publication vous a-t-elle été utile ? N’hésitez pas à attribuer la mention J’aime à cette publication.
Avez-vous obtenu la réponse à votre question ? Cliquez ensuite sur le bouton ACCEPTER LA SOLUTION.

EESignature

Message 4 sur 10

-didier-
Advisor
Advisor
Solution acceptée

Bonjour @Arthur.D21 

 

Je me permets de venir compléter la réponse précédente de @tramber avec le test d'existence du calque

J'utilise la syntaxe internationale qui permet aux routines de fonctionner quoi qu'il arrive comme l'explique @DVaquand 

Amicalement

 

(if (not (tblsearch "layer" "NomCalque"));test de l'existence
    (command "_layer" "_M" "NomCalque" "");si n'existe pas il est créé
    (command "_layer" "_S" "Nomcalque""");s'il existe il devient courant
    )

 

Éternel débutant.. my site for learning : Programmer dans AutoCAD

DA

EESignature

Message 5 sur 10

O_Eckmann
Mentor
Mentor

Juste penser à dégeler le calque sinon il ne peut pas être rendu courant.

 

Olivier

Olivier Eckmann

EESignature

Message 6 sur 10

-didier-
Advisor
Advisor
Solution acceptée

Merci @O_Eckmann 

 

En tenant compte de ta remarque :

(if (not (tblsearch "layer" "NomCalque"));test de l'existence
    (command "_layer" "_M" "NomCalque" "");si n'existe pas il est créé
    (progn ;s'il existe
        (command "_layer" "_T" "Nomcalque""");il est dégelé (au cas où)
        (command "_layer" "_S" "Nomcalque""");il devient courant
        )        
    )

 Amicalement

Éternel débutant.. my site for learning : Programmer dans AutoCAD

DA

EESignature

Message 7 sur 10

O_Eckmann
Mentor
Mentor
Solution acceptée

Salut @-didier- ,

 

En règle générale, je vais même un peu plus loin en déverrouillant et en activant avant de le rendre courant

(setq sNomCalque "NomCalque")
(if (not (tblsearch "layer" sNomCalque));test de l'existence
  ;si n'existe pas il est créé et devient courant
  (command "_layer" "_M" sNomCalque "")
  ;s'il existe, au cas où on dégèle, active et déverrouille, puis on le rend courant
  (command "_layer" "_T" sNomCalque "_U" sNomCalque "_ON" sNomCalque "_S" sNomCalque "")
)

 

Olivier

Olivier Eckmann

EESignature

Message 8 sur 10

PaulV3090
Contributor
Contributor
Bonjour,
Effectivement, merci de l'info !
0 J'aime
Message 9 sur 10

Arthur.D21
Contributor
Contributor
Impeccable c'est parfait !
Merci à vous
0 J'aime
Message 10 sur 10

Arthur.D21
Contributor
Contributor
Oui je me suis rendu compte, en effet c'est plus pratique 😉
0 J'aime