Aller au contenu

Tous le calques gelés...


Messages recommandés

Posté(e)

Bonjour,

 

Je sais geler un calque en VBA mais je sèche sur le fait de tous les geler. J'en ai une trentaine et je ne voudrai pas écrire trente fois la ligne...

 

Je passe en selectionset ? Ca ne marche pas...

 

Merci à vous !

 

"La ligne droite est le plus court chemin entre deux points, à condition que les deux points soient bien en face l'un de l'autre" P. Desproges.

Posté(e)

Salut

Un exemple en vlisp. Je pense que la traduction en vba ne devrait pas trop poser de problèmes

 

@+

 

(setq lays (vla-get-layers (vla-get-activedocument (vlax-get-acad-object)))) ; Pointer sur la table des calques
(vlax-for lay lays ; Boucle pour parcourir la table des calques
 (if (and (not (eq (vla-get-name lay) (getvar "clayer"))) ; Ne pas prendre en compte le calque actif
          (not (vl-string-search "|" (vla-get-name lay))) ; Ne pas prendre en compte un calque xref
     )
   (vla-put-freeze lay :vlax-true) ; geler le calque
 )
)

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)

Allez sois cool, le même lisp mais en entier comme ça je fais un copier coller... La je ne sais même pas ce que je dois mettre dans mon bouton...

 

Et celui qui rigole je le gèle !

 

 

Merci beaucoup !

 

PS : en fait j'ai le Layiso dans les Express qui fait l'affaire mais en fait j'aimerai que les calques "1", "2" et "3" restent allumés...

 

See you !

:D

"La ligne droite est le plus court chemin entre deux points, à condition que les deux points soient bien en face l'un de l'autre" P. Desproges.

Posté(e)

Ha pardon,

 

Je croyais qu'il devait commencer par un "defun xxxxxxx" !

 

Merci ! Je teste et je reposte !

"La ligne droite est le plus court chemin entre deux points, à condition que les deux points soient bien en face l'un de l'autre" P. Desproges.

  • 3 semaines après...
Posté(e)

Ouf,

 

Il m'en a fallut du temps pour comprendre ce qui manquait :

 

 
[surligneur](defun c:lca ()[/surligneur] 
(setq lays (vla-get-layers (vla-get-activedocument (vlax-get-acad-object)))) ; Pointer sur la table des calques
(vlax-for lay lays ; Boucle pour parcourir la table des calques
(if (and (not (eq (vla-get-name lay) (getvar "clayer"))) ; Ne pas prendre en compte le calque actif
(not (vl-string-search "|" (vla-get-name lay))) ; Ne pas prendre en compte un calque xref
)
(vla-put-freeze lay :vlax-true) ; geler le calque
)
)
[surligneur] (princ)
)[/surligneur] 

 

Pour tout geler sauf les calques "1" et "2" je dois dupliquer la ligne :

 

(not (vl-string-search "|" (vla-get-name lay))) ; Ne pas prendre en compte un calque xref
)

 

et remplacer le "l" qui filtre les Xref par "1" puis encore une ligne avec "2" ou y a-t'il une astuce pour tout mettre sur une seule ligne ? Pour l'instant je me retrouve avec un code qui ressemble à ça :

 

(not (vl-string-search "Murs porteurs" (vla-get-name lay))) ; Ne pas prendre en compte un calque xref
(not (vl-string-search "Texte" (vla-get-name lay))) ; Ne pas prendre en compte un calque xref

 

Entre parenthèse, on dérive grave sur du lisp, vous allez me convertir, je vais me faire excommunier moi ! Tant que j'évite le bûcher et que mes calques sont gelés, pour le Paradis on verra une autre fois...

 

 

 

[Edité le 14/10/2006 par phil_vsd]

"La ligne droite est le plus court chemin entre deux points, à condition que les deux points soient bien en face l'un de l'autre" P. Desproges.

Posté(e)

Très loins d'être aussi balèze que Meister , mais puisque nous sommes dans le forum VBA...

 Sub GelerTousLesCalques()

   Dim ObjCalque As AcadLayer
   Dim ObjCalques As AcadLayers
   
   Set ObjCalques = ThisDrawing.Layers
   For I = 0 To ObjCalques.Count - 1
       Set ObjCalque = ObjCalques(I)
       If ObjCalque.Name <> ThisDrawing.ActiveLayer.Name Then
           ObjCalque.Freeze = True
       End If
   Next
   
End Sub

Si ça peut t'aider......

Nous n’ héritons pas de la terre de nos ancêtres.Nous l’empruntons à nos enfants.

Posté(e)

Merci,

 

Cela va m'aider effectivement. Je me suis pas encore aventuré dans les count - 1 mais je vais creuser...

 

Maintenant je vais tester ton "CopyContinu" !

 

A bientôt !

"La ligne droite est le plus court chemin entre deux points, à condition que les deux points soient bien en face l'un de l'autre" P. Desproges.

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é