Aller au contenu

Etat des calques


l56

Messages recommandés

Salut

Comme c'est en vlisp

 

(setq lays (vla-get-layers (vla-get-activedocument (vlax-get-acad-object))))
(vlax-for lay lays
 (princ (strcat "\nEtat du calque --> " (vla-get-name lay)))
 (if (eq (vla-get-freeze lay) :vlax-true)
   (princ "\n\tCalque Gelé")
   (princ "\n\tCalque Non Gelé")
 )
 (if (eq (vla-get-layeron lay) :vlax-true)
   (princ "\n\tCalque Actif")
   (princ "\n\tCalque Désactivé")
 )
 (if (eq (vla-get-lock lay) :vlax-true)
   (princ "\n\tCalque Verrouillé")
   (princ "\n\tCalque Déverrouillé")
 )
)

 

@+

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

Lien vers le commentaire
Partager sur d’autres sites

Salut à tous. Patrick, il parle bien des états de calques sauvegardés.

 

 

Sur ce lien :

http://www.theswamp.org/index.php?topic=5516.0

 

Tu trouveras du code de Serge (un génial contributeur de CADxp qu'on ne voit malheureusement plus).

 

C'est en anglais.

 

On y apprends qu'il faut aller fouiller les dictionnaires étendus.

 

Je t'aiderais volontiers si j'avais un peu de temps.

 

Courage, c'est assez balaise !

 

Bureau d'études dessin.

Spécialiste Escaliers

Développement - Formation

 

./__\.
(.°=°.)
Lien vers le commentaire
Partager sur d’autres sites

(cond
    ((not (setq return (entget (cdr (assoc 330 (entget (tblobjname "layer" "0"))))))) (setq return nil))
    ((not (setq return (cdr (assoc 360 return)))) (setq return nil))
    ((not (setq return (member (cons 3 "ACAD_LAYERSTATES") (entget return)))) (setq return nil))
    (t 
       (setq return (mapcar 'cdr (vl-remove-if-not '(lambda (x) (= 3 (car x))) (entget (cdadr return)))))
    )
 )
 return

 

Pas besoin de Vlisp apparemment !

 

Bureau d'études dessin.

Spécialiste Escaliers

Développement - Formation

 

./__\.
(.°=°.)
Lien vers le commentaire
Partager sur d’autres sites

Vous m' impressionnez les mecs !

 

Je fais comment pour vous remercier ?

 

Arrête, je n'ai rien fait. Je lis le swamp depuis un an et y participe un tout petit peu. Mais c'est en anglais et, les locaux ont un language bourré d'expression. Difficile quand on ne connait que l'anglais académique.

 

Pour te rendre service, j'ai cherché un peu, c'est tout.

 

Quant on truc très élégant, l'usage du COND, je l'ai compris, mais je n'ai fait que le copier.

 

Je suis la plus mauvaise personne pour lire les dictionnaries d'AutoCAD !

 

En testant, j'ai trouvé plus d'états de calque que je n'avais pas réellement, mais tous mes états à moi étaient là. Peut-être faut-il y regarder de + près.

Bureau d'études dessin.

Spécialiste Escaliers

Développement - Formation

 

./__\.
(.°=°.)
Lien vers le commentaire
Partager sur d’autres sites

En testant, j'ai trouvé plus d'états de calque que je n'avais pas réellement

 

Il semble que la routine retourne aussi les vues enregistrées avec le suffixe : ACAD_VIEWS_

 

On peut remplacer le dernier return par :

 

(vl-remove-if '(lambda (x) (= "ACAD_VIEWS_" (substr x 1 11))) return)

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

Lien vers le commentaire
Partager sur d’autres sites

Oui, mais, justement, je ne pige pas bien pourquoi celui-ci figure dans la liste return.

 

Dans un autre dessin, je le vois dans la boite, cette fois-ci. Mais la dernière fois, j'en ai identifié qui n'était pas dans la boite de dialogue.

 

(j'ai fait ça tellement rapide).

Bureau d'études dessin.

Spécialiste Escaliers

Développement - Formation

 

./__\.
(.°=°.)
Lien vers le commentaire
Partager sur d’autres sites

  • 2 mois après...
Bonjour à tous,

 

Comment peut on savoir si un état des calques existe.

Un truc du genre "(tblsearch" mais pas pour les calques mais pour les ETATS de calques.

 

merci

 

Voici une routine qui retourne la liste des états de calque dans l'ordre de leur création

 (Defun AD_ListeEtatCalques ( /  objlayers ss ent ent2 lisst lisst0)
    (setq objlayers (Vla-get-Layers (Vla-get-ActiveDocument (Vlax-Get-Acad-Object))))
    (if (setq ss (cdr (assoc 360 (entget (vlax-vla-object->ename objlayers)))))
        (progn
               (setq ent (entget ss))
        (if (setq ent2 (member (cons 3 "ACAD_LAYERSTATES") ent))
	    (progn
	    	(setq ent   (entget (setq ent2 (cdadr  ent2)))
		      lisst0 (member (assoc 3 ent) ent)
		      
		)
	        (if lisst0
		  (progn 
		   (setq lisst nil)
		   (mapcar '(lambda (xxx)
			     (if (= 3 (car xxx)) (setq lisst (cons (cdr xxx) lisst)))
		 	    )
			    lisst0
	           )
		  ) 
		)
	    )
	)
 )
    )
    (reverse lisst)
)

;;Il faut charger les Com
(vl_load_com)

Lien vers le commentaire
Partager sur d’autres sites

  • 5 mois après...

Bonjour,

pour vérifier qu'un etat des calques particulier est présent :

par exemple (checkLayerStateName "toto") en vlisp :

 

; bto 1.070201

(defun checkLayerStateName (LayersStateName / objXdict return)

(setq objXdict

(vla-GetExtensionDictionary

(vla-get-Layers

(vla-get-activedocument

(vlax-get-acad-object)))))

(setq return

(not

(vl-catch-all-error-p

(vl-catch-all-apply

'(lambda ()

(vla-item (vla-Item objXDict "ACAD_LAYERSTATES") LayersStateName))))))

(vlax-release-object objXdict)

return

)

 

voila, ça devrait fonctionner

 

Bruno Toniutti

 

[Edité le 1/2/2007 par BTO]

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é