Aller au contenu

[Résolu] Comment activer la fenètre de gestion des calques


Messages recommandés

Posté(e)

Bonjour à tous,

 

Voilà, j'ai posté un fichier Excel 2013 avec des macros qui gèrent une "charte graphique".

 

Je créé, depuis Excel, des centaines de calques, mais lorsque la fenêtre de gestion des calques est active, çà prend un temps fou. Alors que, si elle est inactivée, les calques se créés à la vitesse de la lumière ! !

 

Comment désactivé cetet fenêtre et la réactivée après la macro...

 

Je n'ai pas trouvé de "variable" dans Express Tools/System Variables et rien dans l'aide AutoCAD VBA...

 

Merci pour l'aide,

 

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 Olivier,

 

Merci, mais c'est bien dommage çà, je voulais justement pouvoir agir dessus...

 

Enfin je vais faire un tour dans "LAYER" et MANAGER"... On ne sait jamais...

 

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)

Bonjour Patrick_35,

 

Merci pour cette commande. Je crois que je vais devoir faire avec... Dommage, j'aurai aimé réactiver cette fenêtre si elle l'était avant que je la désactive... Tanpis.

 

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)

Ok, j'avais compris, merci les gars...

 

"_.layerclose" ferme la fenêtre

"_.layer" ouvre la fenêtre...

 

Mais comment savoir si elle est ouverte ou fermée. Tel est la question (que j'ai dû mal poser). ;)

 

 

ps : avec un (initdia) auparavant en lisp

 

Et en VBA, ça se traduit comment s'il te plait ?

 

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)

Il suffit de lire la variable donnée en réponse #2. Si elle est à 0 la fenêtre est fermée. Si elle à 1 elle est ouverte.

 

Pour le initdia , je ne connais pas le VBA.

 

Olivier

  • Upvote 1
Posté(e)
Et en VBA, ça se traduit comment s'il te plait ?

Je suis comme Olivier, je ne connais pas le VBA, mais j'ai déjà vu des codes qui font appels à des fonctions lisp en VBA, d'où ma réponse.

 

Un thisdrawing.sendcommand("(initdia)") ?

 

@+

  • 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)

Merci Olivier, je n'ai pas pensé à consulter la valeur de cette variable...

 

Ca fonctionne nikel maintenant...

 

la variable s'obtient avec

MsgBox ThisDrawing.GetVariable("LAYERMANAGERSTATE")

 

Merci encore,

 

Denis...

 

PS : "thisdrawing.sendcommand("(initdia)")" me répond "nil". Je ne sais pas quoi faire avec. ;)

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)

PS : "thisdrawing.sendcommand("(initdia)")" me répond "nil". Je ne sais pas quoi faire avec. ;)

Ma réponse va se faire en lisp ;)

 

Dans la ligne de commande, quand tu fais

Commande: (command "_.layer")

Tu n'as pas la boite de dialogue.

 

Maintenant, pour la faire apparaitre, tu fais en ligne de commande

Commande: (initdia)
Commande: (command "_.layer")

Et miracle, le gestionnaire des calques :D

 

@+

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 ces précisions...

 

C'est une sorte de ATTDIA pour 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,

 

Attention la fonction AutoLISP command et la méthode COM SendCommand ne fonctionnent pas pareil.

 

En LISP la fonction command appelle toujours la commande en ligne de commande (quand elle existe bien sûr).

(command "_.layer") ou (command "_.-layer) appellent toutes deux la commande en ligne de commande, c'est pourquoi il faut faire un (initdia) avant si on veut forcer l'ouverture de la boite de dialogue.

De plus command accepte des arguments de différents types (entiers, réels, enames, jeux de sélection etc.).

 

SendCommand ne prend qu'une chaîne de caractère comme argument et la passe à la ligne de commande un peu comme un script et fera donc la différence entre "_layer " et "_-layer"

On peut le tester en Visual LISP :

(setq ThisDrawing (vla-get-ActiveDocument (vlax-get-acad-object)))
(vla-SendCommand ThisDrawing "_.layer ")

ouvre la boite de dialogue.

 

(vla-SendCommand ThisDrawing "_.-layer ")

passe en ligne de commande.

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

Posté(e)

Re,

 

Petite subtilité, SendCommand permet d'appeler une commande définie en LISP (defun c:...) et de lui passer, "en dur", les paramètres requis.

 

La fonction LISP suivante invite l'utilisateur à spécifier un point et dessine un cercle de rayon 10 avec le point spécifié pour centre.

(defun c:cmd (/ p)
 (if (setq p (getpoint "\nCentre: "))
   (entmake
     (list
'(0 . "CIRCLE")
(cons 10 p)
'(40 . 10.0)
     )
   )
 )
 (princ)
)

Avec SendCommand, on peut appeler "cmd" et lui passer directement un point sous forme de chaîne (ici 20,10).

(vla-sendCommand
 (vla-get-ActiveDocument (vlax-get-acad-object))
 "cmd 20,10 "
)

  • Upvote 2

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

Posté(e)

Petite subtilité, SendCommand permet d'appeler une commande définie en LISP (defun c:...) et de lui passer, "en dur", les paramètres requis.

 

J'ignorai cette petite subtilité très interessante, merci (gile) de nous la faire partager.

 

A+ Bruno

(Ps: Je me coucherai plus riche que je me suis levé, c'est ce que j'appel une bonne journée)

Apprendre => Prendre => Rendre

Posté(e)

Un grand merci à (gile) et Patric_35 qui, une fois de plus, nous font partager leur immence savoir...

 

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

 

Merci (gile) pour ces précisions.

 

Avec SendCommand, on peut appeler "cmd" et lui passer directement un point sous forme de chaîne (ici 20,10).

Si je résume, on utilise la syntaxe avec SendCommand comme pour un script.

 

@+

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)
Si je résume, on utilise la syntaxe avec SendCommand comme pour un script.

 

Exactement, c'est ce que je disais dans ma première réponse.

C'est la même chose en .NET avec la méthode Document.SendStringToExecute() dont le nom est plus explicite.

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

Posté(e)

Ok, on aura donc :

ActiveDocument.SendCommand("-calque e NouveauCalque ")

Ou plutôt

ActiveDocument.SendCommand("-calque" & "e" & "NouveauCalque" & "")

Mais peut-on utiliser les ";" entre chaque instruction ?

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é