Patrick_35 Posté(e) le 4 décembre 2003 Posté(e) le 4 décembre 2003 Bonjour YouriJe 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 permettraLa 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 PatrickLe but n'est pas toujours placé pour être atteint, mais pour servir de point de mire.Joseph Joubert, 1754-1824
youri Posté(e) le 10 décembre 2003 Posté(e) le 10 décembre 2003 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_plansdans mes commande autocad il me dit que cette commande existe pas! :( comment procéder pour que cela fonctionne?
youri Posté(e) le 10 décembre 2003 Posté(e) le 10 décembre 2003 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_plansdonc 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?
Patrick_35 Posté(e) le 10 décembre 2003 Auteur Posté(e) le 10 décembre 2003 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 PatrickLe but n'est pas toujours placé pour être atteint, mais pour servir de point de mire.Joseph Joubert, 1754-1824
youri Posté(e) le 10 décembre 2003 Posté(e) le 10 décembre 2003 :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 :(
Patrick_35 Posté(e) le 10 décembre 2003 Auteur Posté(e) le 10 décembre 2003 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_lignetexte 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 PatrickLe but n'est pas toujours placé pour être atteint, mais pour servir de point de mire.Joseph Joubert, 1754-1824
Invité Patrick Posté(e) le 10 décembre 2003 Posté(e) le 10 décembre 2003 L'outil gratuit LayerHTM de Dotsoft permet de faire cela je crois.
Patrick_35 Posté(e) le 10 décembre 2003 Auteur Posté(e) le 10 décembre 2003 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_lignetexte 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 PatrickLe but n'est pas toujours placé pour être atteint, mais pour servir de point de mire.Joseph Joubert, 1754-1824
youri Posté(e) le 10 décembre 2003 Posté(e) le 10 décembre 2003 patrick 35 > non je n'ait pas besoin des calques dépendant des xref ni d'intégrer d'autre ellément! Patrick> je m'en vai tester de ce pas! :D Merci beaucoup a vous 2!
Patrick_35 Posté(e) le 10 décembre 2003 Auteur Posté(e) le 10 décembre 2003 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 PatrickLe but n'est pas toujours placé pour être atteint, mais pour servir de point de mire.Joseph Joubert, 1754-1824
youri Posté(e) le 11 décembre 2003 Posté(e) le 11 décembre 2003 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!
Messages recommandés
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 compteSe connecter
Vous avez déjà un compte ? Connectez-vous ici.
Connectez-vous maintenant