autospeed Posté(e) le 21 février 2011 Posté(e) le 21 février 2011 Je recherche un petit lisp qui permet de transferer automatiquement toutes les entités d'un dessins se trouvant dans le calque 0 dans un calque _rest0. ( le nom de la couche peut être différent , pas de problème).Est ce que quelqu'un d'entre vous aurait ça ? Merci Phil Auteur du logiciel AutospeedAuteur de la théorie du site www.kheops.bizAuteur de nombreux livres
lecrabe Posté(e) le 21 février 2011 Posté(e) le 21 février 2011 Hello Une petite piste pour commencer :(ssget "_X" '((8 . "0")))Pour selectionner TOUS les objets sur le calque ZERO Si tu fais "derriere" en ligne de commande : un EFFACER P (comme selection precedente)ouun CHPROP P (comme selection precedente)option calque ... Cela devrait t'aider un peu ! Le Decapode Autodesk Expert Elite Team
Fraid Posté(e) le 21 février 2011 Posté(e) le 21 février 2011 Bonjour, En lisp (defun c:goto (/) (if (setq selcalque0 (ssget "_x" '((8 . "0") (-4 . "") (-4 . "NOT>")))) (progn (command "-calque" "e" "_REST0" "") (command "_chprop" selcalque0 "" "ca" "_REST0" "") ) (princ "\nLe calque zero est vide") ) (princ) ) les objets en espace papier sont ignorésans gestion d'erreurs [Edité le 21/2/2011 par Fraid] https://github.com/Fraiddd
autospeed Posté(e) le 21 février 2011 Auteur Posté(e) le 21 février 2011 En général je crée un calque _rest0 , je le rends courant , je trace une ligne , je fais un filtre pour sélectionner le calque 0 puis un petit coup de pinceau a propriétés ..Ce que je cherche c'est un lisp qui le fait en automatique .. manuellement c'est faisable mais c'est chiant quand on a 35 plans a traiter. Auteur du logiciel AutospeedAuteur de la théorie du site www.kheops.bizAuteur de nombreux livres
autospeed Posté(e) le 21 février 2011 Auteur Posté(e) le 21 février 2011 Bonjour, En lisp (defun c:goto (/) (if (setq selcalque0 (ssget "_x" '((8 . "0") (-4 . "") (-4 . "NOT>")))) (command "_chprop" selcalque0 "" "ca" "nomducalque" "") (print "\nLe calque zero est vide") ) (princ) ) les objets en espace papier sont ignorésans gestion d'erreurs[Edité le 21/2/2011 par Fraid] [Edité le 21/2/2011 par Fraid] J'ai oublié de préciser un truc , il faudrait que cela crée le calque _rest0 si il n'existe pas Auteur du logiciel AutospeedAuteur de la théorie du site www.kheops.bizAuteur de nombreux livres
lecrabe Posté(e) le 21 février 2011 Posté(e) le 21 février 2011 Hello Tu peux ajouter cette ligne en 2eme position : (command "-calque" "e" "_REST0" "") Ca devrait faire ... Le Decapode Autodesk Expert Elite Team
Fraid Posté(e) le 21 février 2011 Posté(e) le 21 février 2011 j'ai modifié le code lecrabe Aprés un if si on doit executer plusieur command ou fonction il faut utiliser progn pour créer un ensemble qui sera considéré comme une seul commande. a bientot https://github.com/Fraiddd
(gile) Posté(e) le 21 février 2011 Posté(e) le 21 février 2011 Salut, Même si je pense que ce genre de demande ne nécessite pas un LISP (Sélection rapide + palette Propriétés devraient suffire), je donne un petit truc aux LISPeurs :La fonction entmod (comme entmake), créera automatiquement le calque s'il n'existe pas. ((lambda (/ ss n elst) (if (setq ss (ssget "_X" '((8 . "0") (0 . "~VIEWPORT")))) (repeat (setq n (sslength ss)) (setq elst (entget (ssname ss (setq n (1- n))))) (entmod (subst (cons 8 "rest_0") (assoc 8 elst) elst)) ) ) ) ) Gilles Chanteau - gileCAD - GitHub Développements sur mesure pour AutoCAD
autospeed Posté(e) le 21 février 2011 Auteur Posté(e) le 21 février 2011 Bon , la j'ai tout un tas de petits bouts de lisp ... quelqu'un pourrait-il les mettre bout à bout pour avoir le résultat suivant je charge le lisp goto je tape goto le lisp crée un calque _rest0 s'il n'existe pas encore puis transfert tout ce qui se trouve dans le calque 0 dans le calque _rest0 end :-) Auteur du logiciel AutospeedAuteur de la théorie du site www.kheops.bizAuteur de nombreux livres
lili2006 Posté(e) le 21 février 2011 Posté(e) le 21 février 2011 Bonjour à toutes et tous, ça marche mais,... (defun c:goto (/) ((lambda (/ ss n elst) (if (setq ss (ssget "_X" '((8 . "0") (0 . "~VIEWPORT")))) (repeat (setq n (sslength ss)) (setq elst (entget (ssname ss (setq n (1- n))))) (entmod (subst (cons 8 "rest_0") (assoc 8 elst) elst)) ) ) ) ) (command "_chprop" selcalque0 "" "ca" "nomducalque" "") (print "\nLe calque zero est vide") ) (princ) En ligne de commande => Commande: gotoCommande inconnue "GOTO". Appuyez sur F1 pour obtenir de l'aide.Commande inconnue "CA". Appuyez sur F1 pour obtenir de l'aide.Commande inconnue "NOMDUCALQUE". Appuyez sur F1 pour obtenir de l'aide.Commande inconnue "GOTO". Appuyez sur F1 pour obtenir de l'aide. "\nLe calque zero est vide" "\nLe calque zero est vide" Civil 3D 2025 - COVADIS_18.3b https://www.linkedin...3%ABt-95313341/
lili2006 Posté(e) le 21 février 2011 Posté(e) le 21 février 2011 Re, C'est mieux, mais je n'arrive pas avoir le message en fin de commande "Le calque zero est vide" sauf sur la ligne de commande,... (defun c:goto (/) ((lambda (/ ss n elst) (if (setq ss (ssget "_X" '((8 . "0") (0 . "~VIEWPORT")))) (repeat (setq n (sslength ss)) (setq elst (entget (ssname ss (setq n (1- n))))) (entmod (subst (cons 8 "rest_0") (assoc 8 elst) elst)) ) ) ) ) (print "\nLe calque zero est vide") ) (princ) Civil 3D 2025 - COVADIS_18.3b https://www.linkedin...3%ABt-95313341/
Fraid Posté(e) le 21 février 2011 Posté(e) le 21 février 2011 Merci Gile,je ne pense pas assez a entmak et entmod qui sont plus rapide (defun c:goto (/ ss elst n) (if (setq ss (ssget "_X" '((8 . "0") (0 . "~VIEWPORT")))) (repeat (setq n (sslength ss)) (setq elst (entget (ssname ss (setq n (1- n))))) (entmod (subst (cons 8 "rest_0") (assoc 8 elst) elst)) ) (princ "\nLe calque zero est vide") ) (princ) ) [Edité le 21/2/2011 par Fraid] https://github.com/Fraiddd
lili2006 Posté(e) le 21 février 2011 Posté(e) le 21 février 2011 Re, mais je n'arrive pas avoir le message en fin de commande "Le calque zero est vide" sauf sur la ligne de commande,... Ah bah toi non plus Fraid Civil 3D 2025 - COVADIS_18.3b https://www.linkedin...3%ABt-95313341/
Fraid Posté(e) le 21 février 2011 Posté(e) le 21 février 2011 Désolé j'avais un faute frappe print a la place de princ (des reste du Basic) c'est corrigé https://github.com/Fraiddd
lili2006 Posté(e) le 21 février 2011 Posté(e) le 21 février 2011 Re, Marche toujours pas chez moi ? (C'est juste une question de culture pour moi,...) Civil 3D 2025 - COVADIS_18.3b https://www.linkedin...3%ABt-95313341/
Fraid Posté(e) le 21 février 2011 Posté(e) le 21 février 2011 Chez moi cela fonctionneQuand le calque 0 est vide https://github.com/Fraiddd
lili2006 Posté(e) le 21 février 2011 Posté(e) le 21 février 2011 Re, Tiens ? Quel est ce miracle ? J'ai retesté => Commande: (LOAD "C:/Users/Lilian/Desktop/goto.lsp") C:GOTOCommande: gotoCommande: Le lisp fait bien ce qu'on attend de lui mais je n'ai pas le message alors que sur tmon premier bidouillage (Réponse N° 9), 'j'ai ça => (d'ailleur pourquoi je vois le "n" en début ?) http://img.ahst.fr/data/images/goto.jpg Merci encore, PS : Pour autospeed :Le lisp à charger est celui deFraid (Réponse N°9) Désolé de "polluer" ton post, mais je profite de ce genre de demande pour comprendre les "bases" du lisp,Merci de ta compréhension, ;) Civil 3D 2025 - COVADIS_18.3b https://www.linkedin...3%ABt-95313341/
Fraid Posté(e) le 21 février 2011 Posté(e) le 21 février 2011 je comprend pas tu est sur d'avoir pris le post 9 ? reprend le pour voir https://github.com/Fraiddd
autospeed Posté(e) le 21 février 2011 Auteur Posté(e) le 21 février 2011 Merci Fraid , ça marche .. j'ai juste oublié un petit détail , il faudrait que la couleur du calque _rest0 = 8 quand il est crée. Auteur du logiciel AutospeedAuteur de la théorie du site www.kheops.bizAuteur de nombreux livres
Fraid Posté(e) le 21 février 2011 Posté(e) le 21 février 2011 (defun c:goto (/ ss elst n) (if (setq ss (ssget "_X" '((8 . "0") (0 . "~VIEWPORT")))) (progn (repeat (setq n (sslength ss)) (setq elst (entget (ssname ss (setq n (1- n))))) (entmod (subst (cons 8 "rest_0") (assoc 8 elst) elst)) ) (command "-calque" "co" "8" "rest_0" "") ) (princ "\nLe calque zero est vide") ) (princ) ) je suis encore bien accroché au command :P je regarde comment on fait avec entmod ce soir https://github.com/Fraiddd
lili2006 Posté(e) le 21 février 2011 Posté(e) le 21 février 2011 Re, Dernière version, chez moi => Commande: goto-calqueCalque courant: "0"Entrez une option [?/Etablir/CHoisir/Nouv/Renommer/ACtif/INactif/COuleur/TLigne/EPaisseurl/TRANsparence/MAtériau/Tracé/Geler/Libérer/Verrouiller/Déverrouiller/étAt/deScription/RApprocher]: coNouvelle couleur [coUleursvraies/CArnet de couleurs] : 8Entrez la liste de noms des calques pour la couleur 8 : rest_0 Entrez une option [?/Etablir/CHoisir/Nouv/Renommer/ACtif/INactif/COuleur/TLigne/EPaisseurl/TRANsparence/MAtériau/Tracé/Geler/Libérer/Verrouiller/Déverrouiller/étAt/deScription/RApprocher]:Commande: Toujours pas de commentaires au bout de la souris,... (Bon ceci dis, c'est pas super grave, je voulais juste savoir pourquoi,...) Civil 3D 2025 - COVADIS_18.3b https://www.linkedin...3%ABt-95313341/
(gile) Posté(e) le 21 février 2011 Posté(e) le 21 février 2011 Lilian, Le LISP utilise une expression (if ...) qui :- si la condition est remplie (à savoir le jeu de sélection d'entité sur le calque 0 n'est pas vide) change le calque de ces entités et met le calque "rest_0" en couleur 8 ;- si la condition n'est pas remplie affiche un message comme quoi le calque 0 est vide. C'est le fonctionnement de if en LISP : (if (condition) (then_expression) (else_expression)) À voir le retour que tu as en ligne de commande, les échos de la commande "-calque" pour changer la couleur du calque "rest_0", c'est que la condition a été remplie. Il est donc normal que tu n'aies pas le message : "Le calque zero est vide". Gilles Chanteau - gileCAD - GitHub Développements sur mesure pour AutoCAD
lili2006 Posté(e) le 22 février 2011 Posté(e) le 22 février 2011 Bonjour à toutes et tous, Merci Gilles, Ah oui, OK pour l'extrait de ligne de commande posté ci -dessus ! Mais lorsque le calque "0" est vide. Ce que je ne comprend pas c'est pourquoi je l'ai en ligne de commande Commande: (LOAD "C:/Users/Lilian/Desktop/goto.lsp") C:GOTO Commande: goto Le calque zero est vide Mais pas au bout de ma souris comme sur l'image postée précédemment ? (if (condition) (then_expression) (else_expression)) Peux-tu développer un peu STP ? Merci encore, Civil 3D 2025 - COVADIS_18.3b https://www.linkedin...3%ABt-95313341/
Fraid Posté(e) le 22 février 2011 Posté(e) le 22 février 2011 si on traduit en français on comprend mieux(si (condition) (Alors_expression) (sinon_expression)) https://github.com/Fraiddd
autospeed Posté(e) le 22 février 2011 Auteur Posté(e) le 22 février 2011 Merci Fraid pour le lisp , il marche super ! Auteur du logiciel AutospeedAuteur de la théorie du site www.kheops.bizAuteur de nombreux livres
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