Aller au contenu

Création d\'une liste de calques


Patrick_35

Messages recommandés

Bonjour Youri

Je viens de voir à l'instant dans l'info rapide que tu cherche un lisp pour la création d'une liste de calques, voici une routine extraite d'un programme qui le permettra

La liste crée n'intègre pas les calques dépendant des xref (variable xref_plan), les calques gelés (variable gele_plan), les calques inactif (variable acti_plan) et les calques verrouillés (variable verr_plan)

 

@+

 

(defun creation_liste_des_plans(/ acti_plan couche etat_plan gele_plan verr_plan xref_plan)

(setq couche (tblnext "layer" T)

position_plan 0)

(while couche

(setq etat_plan (cdr (assoc 70 couche))

acti_plan (cdr (assoc 62 couche))

gele_plan (logand etat_plan 1)

verr_plan (logand etat_plan 4)

xref_plan (logand etat_plan 16))

(if (and (/= verr_plan 1) (/= gele_plan 1) (>= acti_plan 0) (/= xref_plan 16))

(setq liste_plans (cons (cdr (assoc 2 couche)) liste_plans))

)

(setq couche (tblnext "layer"))

)

(setq liste_plans (acad_strlsort liste_plans)

etat_plan 0)

(while (nth etat_plan liste_plans)

(if (= (cdr (assoc 9 liste_bibles)) (nth etat_plan liste_plans))

(setq position_plan etat_plan)

)

(setq etat_plan (1+ etat_plan))

)

)

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

merci beaucoup :D

 

mais je sait pas pourquoi ça marche pas! :(

 

je charge le fichier lsp avec ta commande dedant et quand je veu lancer creation_liste_des_plans

dans mes commande autocad il me dit que cette commande existe pas! :(

 

comment procéder pour que cela fonctionne?

Lien vers le commentaire
Partager sur d’autres sites

bon j'ai résolu un pb ... il manqu'ait (je pense mais comme je suis un incapable en lisp je suis pas sur) le c: devant creation_liste_des_plans

donc on a :

 

(defun c:creation_liste_des_plans(/ acti_plan couche etat_plan gele_plan verr_plan xref_plan)

(setq couche (tblnext "layer" T)

position_plan 0)

(while couche

(setq etat_plan (cdr (assoc 70 couche))

acti_plan (cdr (assoc 62 couche))

gele_plan (logand etat_plan 1)

verr_plan (logand etat_plan 4)

xref_plan (logand etat_plan 16))

(if (and (/= verr_plan 1) (/= gele_plan 1) (>= acti_plan 0) (/= xref_plan 16))

(setq liste_plans (cons (cdr (assoc 2 couche)) liste_plans))

)

(setq couche (tblnext "layer"))

)

(setq liste_plans (acad_strlsort liste_plans)

etat_plan 0)

(while (nth etat_plan liste_plans)

(if (= (cdr (assoc 9 liste_bibles)) (nth etat_plan liste_plans))

(setq position_plan etat_plan)

)

(setq etat_plan (1+ etat_plan))

)

)

 

jusque la tout va bien ... seulement moi autocad ne fait qu'une chose .. il me retourne un chiffre qui a commencer a 24 et qui s'incrémente de 24 à chaque entrée de cette commande ... que faire?

Lien vers le commentaire
Partager sur d’autres sites

Que veux tu faire exactement ?

Le lisp ne sert que d'exemple et est là uniquement pour expliquer comment faire et c'est à toi de l'adapter à tes besoins, mais j'ai cru comprendre récemment en lisant plusieurs post que tu avais un peu de mal avec le lisp, alors donne-moi un peu plus de détail de ce que tu souhaite faire exactement, et je te l'écris à condition que ce ne soit pas une usine à gaz, en clair, je veux bien passer 1/4h pour faire un dévelopement, pas 3 mois

 

@+

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

:D

 

merci c'est gentil!

 

ben en fait ce que je cherche a faire c'est a extraire dans un fichier (xls,crv,txt ou autre qu'imlporte le format du temps qu'il est facilement exploitable) la liste des calques avec leurs état (gelé, vérouillé, en impression, couleur, types de ligne ... tout en fait!).

 

voilat c'est tout mais c déjà beaucoup :(

Lien vers le commentaire
Partager sur d’autres sites

Je vais te le faire en format texte dans la forme suivante et tu pourras l'importer dans excel

 

Nom_du_calque actif gelé verrouillé couleur type_de_ligne

texte 1 1 1 numéro texte

 

Cette liste doit inclure les calques dépendant des xref ?

Veux tu ajouter d'autres éléments à cette liste ?

 

Donne-moi ta réponse et je mis met

 

@+

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

Je vais te le faire en format texte dans la forme suivante et tu pourras l'importer dans excel

 

Nom_du_calque actif gelé verrouillé couleur type_de_ligne

texte 1 1 1 numéro texte

 

Cette liste doit inclure les calques dépendant des xref ?

Veux tu ajouter d'autres éléments à cette liste ?

 

Donne-moi ta réponse et je mis met

 

@+

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

Voila Youri, le lisp est fait, il suffit de de lancer et de taper la commande exc (EXtraire Calque).Un fichier texte est crée et il ne reste plus qu'à lancer excel et l'ouvrir en fichier texte (remarque, un copier/coller depuis notepad vers excel fonctionne aussi)

 

@+

 

(defun c:exc(/ calque nom etat acti gele verr xref styl chaine table fichier)

 

(setq calque (tblnext "layer" T)) ; Pointer sur la 1er entrée

(while calque

(setq nom (cdr (assoc 2 calque))

etat (cdr (assoc 70 calque))

acti (cdr (assoc 62 calque))

styl (cdr (assoc 6 calque))

gele (logand etat 1)

verr (logand etat 4)

xref (logand etat 16))

(if (/= xref 16) ; Calque ne dépendant pas des xref

(progn

(setq chaine (strcat nom (chr 9)))

(if (< acti 0)

(setq chaine (strcat chaine "Inactif" (chr 9)))

(setq chaine (strcat chaine "Actif" (chr 9))))

(if (= gele 1)

(setq chaine (strcat chaine "Gelé" (chr 9)))

(setq chaine (strcat chaine "Apparent" (chr 9))))

(if (= verr 4)

(setq chaine (strcat chaine "Verrouillé" (chr 9)))

(setq chaine (strcat chaine "Déverrouillé" (chr 9))))

(setq chaine (strcat chaine (itoa (abs acti)) (chr 9) styl))

(setq table (append table (list chaine)))

)

)

(setq calque (tblnext "layer"))

)

(if table

(progn

(setq table (acad_strlsort table))

(setq fichier (strcat (getvar "dwgprefix") (getvar "dwgname")))

(setq fichier (strcat (substr fichier 1 (- (strlen fichier) 3)) "txt"))

(setq n 0)

(setq nom (open fichier "w"))

(while (nth n table)

(write-line (nth n table) nom)

(setq n (1+ n))

)

(close nom)

(alert (strcat "Fichier " fichier (chr 13) "crée pour " (itoa (1+ n)) " calques"))

)

(alert "Pas de calques")

)

(princ)

)

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

Merci a vous 2 les patricks!

 

patrick> j'ai tester le logiciel en anglais (pas génan) et il mache a la perfection! magnifique et bien utile!

 

patrick_35> j'ai aussi tester uton lisp et il correspond exactement a ce que je veu (j'ai juste changer "TXT" par "XLS" ce qui est plus pratique pour moi) encore un grand merci pour le dévelopement que tu a effectuer dessus je vait essayer de l'annalyser et de le comprendre pour ainsi pouvoir continuer a apprendre doucement le LISP parceque quand même c'est bien utile cette petite chose la!

 

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é