Arcasdk Posté(e) le 3 avril 2009 Posté(e) le 3 avril 2009 Bonjour à tous. Voici un de mes lisps qui me permet de mettre un ensemble d'entité dans le calque voulu juste en lui donnant un numéro. ;Mettre le jeu de sélection dans le calque CACHE; (defun c:2 (/ js x name paire) (or js (setq js (ssget))) (sslength js) (setq x 0) (while (/= x (sslength js)) ;ECRIRE LE PROGRAMME (setq name (entget (ssname js x))) (setq paire (cons 8 "CACHE")) (setq name (subst paire (assoc 8 name) name)) (entmod name) ;FIN FDU PROGRAMME (setq x (+ x 1)) ) ) • Je souhaiterai améliorer ce lisp en forçant aussi la couleur à devenir DuCalque. Je sais que dans ce cas qu'il me faut enlever le code DXF 62..... Est-ce possible? Et si elle n'existe pas,eh bien ne rien faire cela va de soi! • J'aimerai aussi que quand ce programme se termine, qu'il me laisse en surbrillance mon jeu de sélection. comment sélectionner un objet via le lisp.? PS: J'ai remarqué que ce genre de programme ne fonctionne pas pour changer le calque d'une fenêtre de présentation. Merci à tous [Edité le 7/4/2009 par Arcasdk] <IMG SRC=http://peronfrederic.free.fr/banniere.jpg></IMG> <a href=www.formu-lan.net>www.FormuLan.net</a>
Patrick_35 Posté(e) le 3 avril 2009 Posté(e) le 3 avril 2009 Salut Je sais que dans ce cas qu'il me faut enlever le code DXF 62..... Est-ce possible?Regarde la fonction vl-remove qu'il me laisse en surbrillance mon jeu de sélectionRegarde la fonction redraw (à utiliser dans la boucle) PS: J'ai remarqué que ce genre de programme ne fonctionne pas pour changer le calque d'une fenêtre de présentation. Exact, il faut pour cela utiliser le vlisp @+ Les Lisps de PatrickLe but n'est pas toujours placé pour être atteint, mais pour servir de point de mire.Joseph Joubert, 1754-1824
Arcasdk Posté(e) le 3 avril 2009 Auteur Posté(e) le 3 avril 2009 Bon ben je suis résigné à me mettre au V-Lisp... Merci Patrick_35 <IMG SRC=http://peronfrederic.free.fr/banniere.jpg></IMG> <a href=www.formu-lan.net>www.FormuLan.net</a>
Arcasdk Posté(e) le 7 avril 2009 Auteur Posté(e) le 7 avril 2009 Bonjour, eh bien y a du nouveau. J'ai rajouté les éléments en surbrillance mais il ne se passe rien ou pas comme je le souhaite La fonction "vl-remove" ne fonctionne pas. (pas d'erreur non plus) Et le "redraw" laisse bien mon entité en surbrillance mais n'est pas sélectionnée pour autant. Mon jeu de sélection est vide. ;Mettre le jeu de sélection dans le calque 0; (defun c:5 (/ js x name paire code ent) (vl-load-com) (or js (setq js (ssget))) (sslength js) (setq x 0) (while (/= x (sslength js)) ;ECRIRE LE PROGRAMME (setq ent (ssname js x)) (setq name (entget ent)) (setq paire (cons 8 "DESSIN")) (setq name (subst paire (assoc 8 name) name)) [surligneur](if (setq code (assoc 67 name)) (vl-remove code name)) (if (setq code (assoc 6 name)) (vl-remove code name)) (redraw ent 3) (entupd name)[/surligneur] (entmod name) ;FIN FDU PROGRAMME (setq x (+ x 1)) ) ) Ai-je oublié quelque chose? [Edité le 7/4/2009 par Arcasdk] <IMG SRC=http://peronfrederic.free.fr/banniere.jpg></IMG> <a href=www.formu-lan.net>www.FormuLan.net</a>
Patrick_35 Posté(e) le 7 avril 2009 Posté(e) le 7 avril 2009 Salut Une version corrigée (defun c:5 (/ js x name paire code ent) (vl-load-com) (or js (setq js (ssget))) ; (sslength js) (setq x 0) (while (/= x (sslength js)) ;ECRIRE LE PROGRAMME (setq ent (ssname js x)) (setq name (entget ent)) (setq paire (cons 8 "DESSIN")) (setq name (subst paire (assoc 8 name) name)) (if (setq code (assoc 67 name)) (setq name (vl-remove code name))) (if (setq code (assoc 6 name)) (setq name (vl-remove code name))) (entmod name) ; (entupd (cdr (assoc -1 name))) (redraw ent 3) ;FIN FDU PROGRAMME (setq x (+ x 1)) ) ) @+ Les Lisps de PatrickLe but n'est pas toujours placé pour être atteint, mais pour servir de point de mire.Joseph Joubert, 1754-1824
Arcasdk Posté(e) le 7 avril 2009 Auteur Posté(e) le 7 avril 2009 ... Merci Patrick_35 mais cela ne fonctionne toujours pas. Tu l'as testé? Tu as supprimé le sslenght et ajouté un entupd. C'est bien ça? Le code "67" et "6" existe toujours..... :casstet: et le "redraw" ne dois pas être la commande que je cherche. <IMG SRC=http://peronfrederic.free.fr/banniere.jpg></IMG> <a href=www.formu-lan.net>www.FormuLan.net</a>
Patrick_35 Posté(e) le 7 avril 2009 Posté(e) le 7 avril 2009 ReTu l'as testé?Heu, non, juste à la lecture du lisp Sinon, je l'aurais écrit comme ça (defun c:5 (/ js x name ent) (setq x 0) (or js (setq js (ssget))) (while (setq ent (ssname js x)) (setq name (entget ent) name (subst (cons 8 "DESSIN") (assoc 8 name) name) name (subst (cons 62 256) (assoc 62 name) name) name (subst (cons 6 "BYLAYER") (assoc 6 name) name) ) (entmod name) ; (redraw ent 3) (setq x (1+ x)) ) (sssetfirst nil js) ; Cette sélection ? ) ps : testé ;)pps : le code 67 est pour espace objet/papier en non couleur, j'avais pas fait gaffe @+ Les Lisps de PatrickLe but n'est pas toujours placé pour être atteint, mais pour servir de point de mire.Joseph Joubert, 1754-1824
Arcasdk Posté(e) le 7 avril 2009 Auteur Posté(e) le 7 avril 2009 Ah ouais, ça va déjà mieux... Tu n'utilises pas le V-Lisp toi? j'essayais de le faire en V-Lisp suite à ton message PS: J'ai remarqué que ce genre de programme ne fonctionne pas pour changer le calque d'une fenêtre de présentation. Exact, il faut pour cela utiliser le vlisp Merci <IMG SRC=http://peronfrederic.free.fr/banniere.jpg></IMG> <a href=www.formu-lan.net>www.FormuLan.net</a>
Patrick_35 Posté(e) le 7 avril 2009 Posté(e) le 7 avril 2009 Tu n'utilises pas le V-Lisp toi?Ben si, mais c'était pour rester accessible et comme c'était en autolisp, j'ai continué j'essayais de le faire en V-Lisp suite à ton message Une version vlisp(defun c:5(/ doc js sel) (vl-load-com) (setq doc (vla-get-activedocument (vlax-get-acad-object))) (vla-startundomark doc) (vl-catch-all-apply 'vla-add (list (vla-get-layers doc) "DESSIN")) (and (setq js (ssget)) (progn (vlax-for ent (setq sel (vla-get-activeselectionset doc)) (vla-put-layer ent "DESSIN") (vla-put-color ent 256) (vla-put-linetype ent "ByLayer") ) (vla-delete sel) ) ) (sssetfirst nil js) (vla-endundomark doc) (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
Arcasdk Posté(e) le 8 avril 2009 Auteur Posté(e) le 8 avril 2009 Merci tout marche nikel. Je voulais rajouter une propriété.....L'épaisseur de ligne. Je pense avoir trouver le code V-lisp mais je ne sais pas quelle réponse il attend pour stipuler l'épaisseur de ligne "DuCalque" il s'agit bien de LineWeight? (vla-put-lineweight ent "LnWtByLayer") En revanche le LnWtByLayer ne doit pas être bon!!! Ahhh j'ai trouvé... c'est "-1". J'ai tapé (setq toto (vla-get-lineweight ent)) sur une ligne avec une épaisseur de ligne en DuCalque.... Pas CON Jean Pierre..... ;-) Ou est ce que je peux trouver ce genre de renseignement. J'ai trouver certains trucs dans l'explorateur du VBA (Alt+F11 et F2) mais je ne cherche peut être pas au bon endroit. Merci [Edité le 8/4/2009 par Arcasdk] <IMG SRC=http://peronfrederic.free.fr/banniere.jpg></IMG> <a href=www.formu-lan.net>www.FormuLan.net</a>
Patrick_35 Posté(e) le 8 avril 2009 Posté(e) le 8 avril 2009 Bien, tu commences à saisir le vlisp :D Pour trouver les propriétés d'un objet(setq a (vlax-ename->vla-object (car (entsel))))puis(vlax-dump-object a)Pour être certain que c'est bien la propriété Lineweight, je change l'épaisseur de mon objet, un vlax-dump-objet de ma variable et je constate qu'elle change Une astuceEn faisant (vlax-dump-objet a T), tu vois aussi les méthodes applicables à l'objet Une autre méthode en utilisant l'éditeur vbaTu fais F2 pour l'explorateur et tu vas dans sur ton type d'objet (AcadArc pour un arc de cercle, AcadCircle pour un cercle, etc...)Lors du vlax-ename->vla-objet, tu as une réponse du type #En enlevant le I de IAcadArc, tu le retrouves dans l'explorateur. Tu as tout, même des exemples vba qu'il reste à traduire en vlisp.C'est une logique à comprendre. Tu verras qu'en fait, le vlisp est plus simple et plus puissant qu'autolisp. @+ Les Lisps de PatrickLe but n'est pas toujours placé pour être atteint, mais pour servir de point de mire.Joseph Joubert, 1754-1824
Arcasdk Posté(e) le 8 avril 2009 Auteur Posté(e) le 8 avril 2009 Merci beaucoup Patrick_35, c'est bon je m'y lance.... <IMG SRC=http://peronfrederic.free.fr/banniere.jpg></IMG> <a href=www.formu-lan.net>www.FormuLan.net</a>
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