richard-c Posté(e) le 19 octobre 2007 Posté(e) le 19 octobre 2007 Bonjour, j'utile ssf.lsp plutot de le filtre rapide, question : si je choisi une entité ayant la couleur DuCalque, le programme renvoie [surligneur] erreur: liste SSGET incorrecte[/surligneur], ce qui est normal car il n'a pas de code dxf 62, n'y a t'il pas un moyen d'y remédier, idem pour un bloc qui a la couleur DuBloc ? Merci et A+
(gile) Posté(e) le 19 octobre 2007 Posté(e) le 19 octobre 2007 Salut, Merci de me signaler cette erreur, la version en téléchargement n'avait pas été mise à jour, c'est chose faite : télécharger SSF Gilles Chanteau - gileCAD - GitHub Développements sur mesure pour AutoCAD
richard-c Posté(e) le 19 octobre 2007 Auteur Posté(e) le 19 octobre 2007 Non, tu n'as pas fais une erreur, quand on fait un programme on peut faire des oublis, et je pense que les tests fait par d'autre permette à faire progresser les programmes. un exemple : souvent, quant on fais un programme on le teste dans un dessin neuf, donc dans le SCG, et on oublie souvent que dans un dessin on est dans un SCU. J'ai d'autres questions, mais c'est bientot le week end, A+
richard-c Posté(e) le 19 octobre 2007 Auteur Posté(e) le 19 octobre 2007 dans le zip que j'ai téléchargé, est ce que le LSP (du 05-07-2007) est mis à jour par rapport au VLX (du 19-10-2007) pourquoi, parce que dans l'ancienne version, javais rajouté Style de texteValeur de texteHauteur de texte et c'etait bien pratique A+
(gile) Posté(e) le 19 octobre 2007 Posté(e) le 19 octobre 2007 Salut, sS le LISP s'appelle bien SSFilter.lsp et pas ssf.lsp, c'est bien le bon. Mon erreur ètait de m'être trompé de fichier quand j'ai fait la compilation et la mise en ligne. Le nouveau VLX est fait avec SSFilter.lsp Gilles Chanteau - gileCAD - GitHub Développements sur mesure pour AutoCAD
richard-c Posté(e) le 19 octobre 2007 Auteur Posté(e) le 19 octobre 2007 encore moi j'ai essayé de rajouter dans le nouveau ssfilter (çà marchais dans l'autre version) : spacer; :toggle{ label="Style du texte"; key="sty"; value="0"; fixed_width=true; allow_accept=true; } spacer; :toggle{ label="Valeur du texte"; key="val"; value="0"; fixed_width=true; allow_accept=true; } spacer; :toggle{ label="Hauteur du texte"; key="ht"; value="0"; fixed_width=true; allow_accept=true; } dans le dcl et (and (= \"1\" (get_tile \"sty\")) (setq lst (cons 7 lst)) ) (and (= \"1\" (get_tile \"val\")) (setq lst (cons 1 lst)) ) (and (= \"1\" (get_tile \"ht\")) (setq lst (cons 40 lst)) ) dans le lsp ces 3 commandes ne fonctionnent pas . . . je ne sai pas pourquoi. Bon WE et à +
(gile) Posté(e) le 19 octobre 2007 Posté(e) le 19 octobre 2007 Salut, tu n'as pa du les placer où il faut le DCL ssfilter_box:dialog{ label="Propriétés"; :toggle{ label="Type d'entité"; key="ent"; value="0"; fixed_width=true; allow_accept=true; } spacer; :toggle{ label="Calque"; key="lay"; value="0"; fixed_width=true; allow_accept=true; } spacer; :toggle{ label="Couleur"; key="col"; value="0"; fixed_width=true; allow_accept=true; } spacer; :toggle{ label="Type de ligne"; key="typ"; value="0"; fixed_width=true; allow_accept=true; } spacer; :toggle{ label="Epaisseur de ligne"; key="wid"; value="0"; fixed_width=true; allow_accept=true; } spacer; :toggle{ label="Style du texte"; key="sty"; value="0"; fixed_width=true; allow_accept=true; } spacer; :toggle{ label="Valeur du texte"; key="val"; value="0"; fixed_width=true; allow_accept=true; } spacer; :toggle{ label="Hauteur du texte"; key="ht"; value="0"; fixed_width=true; allow_accept=true; } spacer; ok_cancel; } le LISP (corrigé) (defun ssfilter_box (/ dcl_id lst) (setq dcl_id (load_dialog "ssfilter.dcl")) (if (not (new_dialog "ssfilter_box" dcl_id)) (exit) ) (action_tile "accept" "(and (= \"1\" (get_tile \"wid\")) (setq lst (cons 370 lst)) ) (and (= \"1\" (get_tile \"typ\")) (setq lst (cons 6 lst)) ) (and (= \"1\" (get_tile \"col\")) (setq lst (cons 62 lst)) ) (and (= \"1\" (get_tile \"lay\")) (setq lst (cons 8 lst)) ) (and (= \"1\" (get_tile \"ent\")) (setq lst (cons 0 lst)) ) (and (= \"1\" (get_tile \"sty\")) (setq lst (cons 7 lst)) ) (and (= \"1\" (get_tile \"val\")) (setq lst (cons 1 lst)) ) (and (= \"1\" (get_tile \"ht\")) (setq lst (cons 40 lst)) ) (done_dialog)" ) (action_tile "cancel" "(setq lst nil)") (start_dialog) (unload_dialog dcl_id) lst ) (defun c:ssf (/ ss ent lst flst n elst) (and (or (setq ss (cadr (ssgetfirst))) (setq ss (ssget)) ) (setq lst (ssfilter_box)) (repeat (setq n (sslength ss)) (setq elst (cons (entget (ssname ss (setq n (1- n)))) elst)) ) (setq flst (append (cons '(-4 . "[b] (apply 'append (mapcar '(lambda (x) (append (cons '(-4 . "[b] (mapcar '(lambda (y) (assoc x y) ) elst ) ) (list '(-4 . "OR>")) ) ) lst ) ) ) (list '(-4 . "AND>")) ) ) (sssetfirst nil (ssget "_X" flst)) ) (princ) ) [Edité le 22/10/2007 par (gile)] Gilles Chanteau - gileCAD - GitHub Développements sur mesure pour AutoCAD
richard-c Posté(e) le 22 octobre 2007 Auteur Posté(e) le 22 octobre 2007 Bonjour et merci (gile), avec ces 3 choix supplémentaires, on peux filtrer plus finement les textes et c'est un plus. Bonne journée.
richard-c Posté(e) le 22 octobre 2007 Auteur Posté(e) le 22 octobre 2007 voila le message qu'AutoCAD me renvoie : [surligneur] ; erreur: cdrs supplémentaire dans la paire pointée en entrée[/surligneur] A+
(gile) Posté(e) le 22 octobre 2007 Posté(e) le 22 octobre 2007 Salut, C'est CADxp qui interprète les Attention, si tu utilises un filtre sur les propriétés spécifiques aux textes (style de texte, valeur ou hauteur) la sélection de base ne doit contenir que des textes, sinon tu auras un message d'erreur : liste SSGET incorrecte. Gilles Chanteau - gileCAD - GitHub Développements sur mesure pour AutoCAD
(gile) Posté(e) le 22 octobre 2007 Posté(e) le 22 octobre 2007 Pour éviter l'erreur citée ci dessus, on peut évaluer le contenu de la sélection de base et "griser" les cases "texte" si la sélection ne contient pas que des textes (ou mtextes). Le DCL est inchangé. (defun ssfilter_box (text / dcl_id lst) (setq dcl_id (load_dialog "ssfilter.dcl")) (if (not (new_dialog "ssfilter_box" dcl_id)) (exit) ) (if (not text) (foreach tile '("sty" "val" "ht") (mode_tile tile 1) ) ) (action_tile "accept" "(and (= \"1\" (get_tile \"wid\")) (setq lst (cons 370 lst)) ) (and (= \"1\" (get_tile \"typ\")) (setq lst (cons 6 lst)) ) (and (= \"1\" (get_tile \"col\")) (setq lst (cons 62 lst)) ) (and (= \"1\" (get_tile \"lay\")) (setq lst (cons 8 lst)) ) (and (= \"1\" (get_tile \"ent\")) (setq lst (cons 0 lst)) ) (and (= \"1\" (get_tile \"sty\")) (setq lst (cons 7 lst)) ) (and (= \"1\" (get_tile \"val\")) (setq lst (cons 1 lst)) ) (and (= \"1\" (get_tile \"ht\")) (setq lst (cons 40 lst)) ) (done_dialog)" ) (action_tile "cancel" "(setq lst nil)") (start_dialog) (unload_dialog dcl_id) lst ) (defun c:ssf (/ ss ent lst flst n elst) (and (or (setq ss (cadr (ssgetfirst))) (setq ss (ssget)) ) (repeat (setq n (sslength ss)) (setq elst (cons (entget (ssname ss (setq n (1- n)))) elst)) ) (if (vl-every '(lambda (x) (wcmatch (cdr (assoc 0 x)) "*TEXT") ) elst ) (setq lst (ssfilter_box T)) (setq lst (ssfilter_box nil)) ) (setq flst (append (cons '(-4 . "[b] (apply 'append (mapcar '(lambda (x) (append (cons '(-4 . "[b] (mapcar '(lambda (y) (assoc x y) ) elst ) ) (list '(-4 . "OR>")) ) ) lst ) ) ) (list '(-4 . "AND>")) ) ) (sssetfirst nil (ssget "_X" flst)) ) (princ) ) [Edité le 22/10/2007 par (gile)] Gilles Chanteau - gileCAD - GitHub Développements sur mesure pour AutoCAD
richard-c Posté(e) le 22 octobre 2007 Auteur Posté(e) le 22 octobre 2007 Merci, penses seulement à supprimer le 2 à [surligneur] "ssfilter2.dcl"[/surligneur] sinon on obtien ; erreur: quitter / sortir abandon si tu mets cette version à télécharger A+
(gile) Posté(e) le 22 octobre 2007 Posté(e) le 22 octobre 2007 penses seulement à supprimer le 2 à "ssfilter2.dcl" Oupss !!! C'est corrigé ci-dessus. Gilles Chanteau - gileCAD - GitHub Développements sur mesure pour AutoCAD
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