Aller au contenu

rendre un calque actif


Zugzwang

Messages recommandés

Bonjour

J'ai un lispounet pour me créer un calque épure qui me sert de trait au crayon gris dans mes dessin.

Quand je le fait avec (entmake , le code (70 . 0) le met actif.

Mais il m'arrive de lancer la commande dans un dessin ou le calque est déja présent, et je me retrouve avec mon calque actif, mais non affiché ou geler.. comment s'assurer que si le calque existe il soit activé, (ou qu'on le force)

 

voila ma pauvre prose...

 

(defun c:eee ()
  (if (not (tblsearch "LAYER" "---EPURES"))
    (entmakex (list '(0 . "LAYER")
		    '(100 . "AcDbSymbolTableRecord")
		    '(100 . "AcDbLayerTableRecord")
		    (cons 2 "---EPURES")
		    '(70 . 0)
		    '(62 . 32)

	      )
    )

    (setvar "clayer" "---EPURES")
  )
)

 

merci...

Lien vers le commentaire
Partager sur d’autres sites

Salut @Zugzwang
Je te propose une petite ligne de commande :

(command "-calque" "e" "---EPURES" "")

Plusieurs choses, cette ligne : 
 - créé le calque s'il n'existe pas,
 - le rends courant,
 - le rends visible (et probablement de dégèle).
Je n'ai pas AutoCAD sous la main, il faudrait vérifier...

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

Bonjour @Zugzwang

Puisque tu utilises un IF et que tu veux deux choses, si le IF est vérifié.

Il faut utiliser PROGN pour "globaliser" ce qui va se passer si le IF est vérifié
Sinon, il prend ta ligne de mettre le calque courant SI le IF n'est pas vérifié, je suis clair ?

Code corrigé

(defun c:eee ()
  (if (not (tblsearch "LAYER" "---EPURES"))
      (progn
           (entmakex (list '(0 . "LAYER")
		    '(100 . "AcDbSymbolTableRecord")
		    '(100 . "AcDbLayerTableRecord")
		    (cons 2 "---EPURES")
		    '(70 . 0)
		    '(62 . 32)
                           )
                     )
          (setvar "clayer" "---EPURES")
          )
      )
    )

Amicalement

Lien vers le commentaire
Partager sur d’autres sites

à confirmer, mais il n'y a que deux commandes, le (Entmake, et le (setvar je ne crois pas que le promt serve à qq chose

à la limite le prompt servirai pour enchainer le (setvar avec l'activation et le dégel puisque le setvar est lu que si le calque existe?

mais bon, j'ai testé... ça change rien effectivement

Lien vers le commentaire
Partager sur d’autres sites

il y a 42 minutes, Zugzwang a dit :

merci 😉

mais cette ligne ne résout pas le pb pour forcer l'affichage du calque s'il existe 😞 

Je ne comprends pas, chez moi, si le calque est inactif, mon exemple active ce 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

Coucou,

Essaye simplement de sortir ton (setvar) de ton (if), car si je comprends bien la démarche, si ton calque existe > le définir courant ; si ton calque n'existe pas > le créer + le définir courant...

Donc au final l'action de "définir courant" est commune aux deux cas de figure :3

Bisous, Luna

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é