Pieroka Posté(e) le 16 avril 2007 Posté(e) le 16 avril 2007 Je ne peux utiliser que cette rubrique de suggestion de développement, car j'y connais rien en lisp. donc je suggère : :P (peut être que quelqu'un les a déjà programmés...?) 1er outil : "Utiliser les param. d'une entité comme param. courants". Ca peut s'apparenter à "RENDCALQUECOUR" (_Laymcur) mais il n'y a pas que le calque qui devient courant. (mais aussi type de ligne - couleur - epr.... de l'entité sélectionnée ).Il y aurait un dialogue de paramétrage genre celle de "CORRESPROP" ci dessous, qui permet de choisir les paramètres à prendre en compte. http://xs114.xs.to/xs114/07161/param.jpg Cette commande serait dispo dans le menu contextuel d'une entité selectionnée. ____________________________________________ 2eme Outil :Ca se rapproche du LISP de Gile "special_Selections" que je viens de tester. (Merci encore à Gile !! ) "Sélectionner les entités identiques" Il permet de sélectionner toutes les entités identiques du dessin. Par exemple toutes les lignes, calque zéro, couleur ducalque, epr 0.3mm...On pourra choisir les param. à prendre en compte dans le même type de dialogue que ci dessus ("CORRESPROP") . Le plus souvent, par défaut, on pourra choisir moins de param. pour sélectionner simplement toutes les entités d'un même calque. Cette commande serait dispo dans le menu contextuel d'une entité selectionnée. Bref Bref voilà... Formateur Autocad - Revit - Sketchup - Photoshop
LUDWIG Posté(e) le 16 avril 2007 Posté(e) le 16 avril 2007 Pour le 1er outils proposé, il pourrait être intéressant d'appliquer les paramètres de l'entité à son calque. Autocad 2021 - Revit 2022 - Windows 10
zebulon_ Posté(e) le 16 avril 2007 Posté(e) le 16 avril 2007 pour sélectionner simplement toutes les entités d'un même calque. là, j'ai fait quelque chose comme ça (defun c:laysel (/ SS FILTRE I E LAY) (setq SS (ssget)) (if SS (progn (setq FILTRE '((-4 . "OR>")) ) (setq I 0) (while (< I (sslength SS)) (setq E (entget (ssname SS I))) (setq LAY (assoc 8 E)) (setq FILTRE (cons LAY FILTRE)) (setq I (+ I 1)) ) [surligneur] (setq FILTRE (cons '(-4 . "< OR") FILTRE))[/surligneur] (setq SS (ssget "_X" FILTRE)) (sssetfirst SS SS) ) ) (princ) ) Attention, il y a un espace en trop après le < de la ligne surlignée. A supprimer, sinon ça marche pas. Si j'enlève l'espace, l'éditeur de CadXP supprime automatiquement le reste de la ligne. L'outil te permet de cliquer sur plusieurs objets (donc un seul aussi : qui peut le plus peut le moins) et ça te filtre tous les objets qui sont sur les calques des objets sélectionnés. c'est déjà un début. AmicalementZebulon_ C'est au pied du mur que l'on reconnaît le maçon ! (Anonyme) C’est en restant au pied du mur qu’on ne voit que le mur (Anonyme aussi)
(gile) Posté(e) le 16 avril 2007 Posté(e) le 16 avril 2007 Salut, Voilà un premier jet. Pour les commandes ssmatch et matchset l'entité peut être sélectionnée avant ou après le lancement de la commande (eel peuvent donc être placées dans un menu contextuel). Le DCL à enregistrer sous Props.dcl dans un répertoire de chemin de recherche des fichiers de support. props:dialog{ label="Propriétés"; :toggle{ label="Couleur"; key="col"; value="1"; fixed_width=true; allow_accept=true; } :toggle{ label="Calque"; key="lay"; value="1"; fixed_width=true; allow_accept=true; } :toggle{ label="Type de ligne"; key="typ"; value="1"; fixed_width=true; allow_accept=true; } :toggle{ label="Epaisseur de ligne"; key="wid"; value="1"; fixed_width=true; allow_accept=true; } spacer; ok_cancel; } La routine getprops qui doit être chargée pour ouvrir la boite de dialogue. (defun getprops (ent / lst) (setq elst (entget ent) dcl_id (load_dialog "Props.dcl") ) (if (not (new_dialog "props" dcl_id)) (exit) ) (action_tile "accept" "(if (= \"1\" (get_tile \"wid\")) (if (assoc 370 elst) (setq lst (cons (assoc 370 elst) lst)) (setq lst (cons '(370 . -1) lst)) ) ) (if (= \"1\" (get_tile \"typ\")) (if (assoc 6 elst) (setq lst (cons (assoc 6 elst) lst)) (setq lst (cons '(6 . \"BYLAYER\") lst)) ) ) (if (= \"1\" (get_tile \"lay\")) (if (assoc 8 elst) (setq lst (cons (assoc 8 elst) lst)) (setq lst (cons '(8 . \"BYLAYER\") lst)) ) ) (if (= \"1\" (get_tile \"col\")) (if (assoc 62 elst) (setq lst (cons (assoc 62 elst) lst)) (setq lst (cons '(62 . 256) lst)) ) ) (done_dialog)" ) (start_dialog) (unload_dialog dcl_id) lst ) ssmatch : pour sélectionner toutes les entités qui ont les mêmes propriétés (celles qui sont cochées dans la boite dialogue) que l'entité sélectionnée.Si la commande est lancée plusieurs fois à la suite, les nouveaux objets s'ajoutent au jeu de sélection. (defun c:ssmatch (/ ss ent lst) (and (or (and (setq ss (cadr (ssgetfirst))) (= 1 (sslength ss)) (setq ent (ssname ss 0)) ) (setq ent (car (entsel))) ) (setq lst (getprops ent)) (sssetfirst nil (ssget "_X" lst)) ) (princ) ) matchset : pour rendre courantes les propriétés (cochées) de l'entité sélectionnée. (defun c:matchset (/ ss ent lst) (if (or (and (setq ss (cadr (ssgetfirst))) (= 1 (sslength ss)) (setq ent (ssname ss 0)) ) (setq ent (car (entsel))) ) (progn (setq lst (getprops ent)) (cond ((= 256 (cdr (assoc 62 lst))) (setq lst (subst '(62 . "BYLAYER") '(62 . 256) lst)) ) ((= 0 (cdr (assoc 62 lst))) (setq lst (subst '(62 . "BYBLOCK") '(62 . 0) lst)) ) ((numberp (cdr (assoc 62 lst))) (setq lst (subst (cons 62 (itoa (cdr (assoc 62 lst)))) (assoc 62 lst) lst ) ) ) ) (mapcar '(lambda (code var) (if (assoc code lst) (setvar var (cdr (assoc code lst))) ) ) '(62 8 6 370) '("CECOLOR" "CLAYER" "CELTYPE" "CELWEIGHT") ) ) ) (princ) ) Gilles Chanteau - gileCAD - GitHub Développements sur mesure pour AutoCAD
Pieroka Posté(e) le 16 avril 2007 Auteur Posté(e) le 16 avril 2007 Merci les amis, chouette premier jet Gile.Le fonctionnement avec des pré-réglages par défaut comme dans "CORRESPROP" me semble plus pratique, avec l'accès au dialogue des paramètres, en option, seulement si on souhaite les modifier. Mais l'esprit du truc est là ! :D merci et bonne nuit, faut aller se coucher maintenant. Formateur Autocad - Revit - Sketchup - Photoshop
bonuscad Posté(e) le 16 avril 2007 Posté(e) le 16 avril 2007 J'avais tenté une approche de ton souhait dans ce sujet C'était un compromis entre la commande lisp SSX et ton souhait en boite de dialogue. J'utilise en fait les options dans le menu contextuel du click-droit.L'inconvénient: il faut être un familier de la valeur des code DXF. Choisissez un travail que vous aimez et vous n'aurez pas à travailler un seul jour de votre vie. - Confucius
(gile) Posté(e) le 17 avril 2007 Posté(e) le 17 avril 2007 Nouvelle mouture. Utiliser la même boite de dialogue pour les deux fonctions ne s'avère pas si pratique, donc j'ai fait deux boites différentes et j'ai ajouté le type d'entité dans celle de SSMATCH. Le fonctionnement avec des pré-réglages par défaut comme dans "CORRESPROP" me semble plus pratique, avec l'accès au dialogue des paramètres, en option CORRESPROP invite à choisir des objets ou [PAramètres]. L'équivalent supposerait une invite suppléméntaire dans SSMATCH et MATCHSET du style :"Valider ou [Paramètres] : "et valider en réponse à l'invite reviendrait au même que de faire entée quand la boite appaarît avec toutes les cases cochées.Si tu y tiens vraiment, je peux le faire, mais je n'en vois pas trop l'intérêt. SSMATCH version1.1 Le DCL ssmatch_box:dialog{ label="Propriétés"; :toggle{ label="Type d'entité"; key="ent"; value="1"; fixed_width=true; allow_accept=true; } :toggle{ label="Couleur"; key="col"; value="1"; fixed_width=true; allow_accept=true; } :toggle{ label="Calque"; key="lay"; value="1"; fixed_width=true; allow_accept=true; } :toggle{ label="Type de ligne"; key="typ"; value="1"; fixed_width=true; allow_accept=true; } :toggle{ label="Epaisseur de ligne"; key="wid"; value="1"; fixed_width=true; allow_accept=true; } spacer; ok_cancel; } Les LISP (defun ssmatch_box (ent / elst lst dcl_id) (setq elst (entget ent) lst (list (assoc 0 elst) (cond ((assoc 62 elst)) ('(62 . 256)) ) (assoc 8 elst) (cond ((assoc 6 elst)) ('(6 . "BYLAYER")) ) (cond ((assoc 370 elst)) ('(370 . -1)) ) ) dcl_id (load_dialog "ssmatch_box.dcl") ) (if (not (new_dialog "ssmatch_box" dcl_id)) (exit) ) (action_tile "accept" "(or (= \"1\" (get_tile \"ent\")) (setq lst (vl-remove (assoc 0 lst) lst)) ) (or (= \"1\" (get_tile \"col\")) (setq lst (vl-remove (assoc 62 lst) lst)) ) (or (= \"1\" (get_tile \"lay\")) (setq lst (vl-remove (assoc 8 lst) lst)) ) (or (= \"1\" (get_tile \"typ\")) (setq lst (vl-remove (assoc 6 lst) lst)) ) (or (= \"1\" (get_tile \"wid\")) (setq lst (vl-remove (assoc 370 lst) lst)) ) (done_dialog)" ) (start_dialog) (unload_dialog dcl_id) lst ) (defun c:ssmatch (/ ss ent lst) (and (or (and (setq ss (cadr (ssgetfirst))) (= 1 (sslength ss)) (setq ent (ssname ss 0)) ) (setq ent (car (entsel))) ) (setq lst (ssmatch_box ent)) (sssetfirst nil (ssget "_X" lst)) ) (princ) ) MATCHSET version1.1 Le DCL matchset_box:dialog{ label="Propriétés"; :toggle{ label="Couleur"; key="col"; value="1"; fixed_width=true; allow_accept=true; } :toggle{ label="Calque"; key="lay"; value="1"; fixed_width=true; allow_accept=true; } :toggle{ label="Type de ligne"; key="typ"; value="1"; fixed_width=true; allow_accept=true; } :toggle{ label="Epaisseur de ligne"; key="wid"; value="1"; fixed_width=true; allow_accept=true; } spacer; ok_cancel; } Les LISP (defun matchset_box (ent / elst lst dcl_id) (setq elst (entget ent) lst (list (cond ((or (null (assoc 62 elst)) (= 256 (cdr (assoc 62 elst))) ) '(62 . "BYLAYER")) ((= 0 (cdr (assoc 62 elst))) '(62 . "BYBLOCK") ) ((cons 62 (itoa (cdr (assoc 62 elst))))) ) (assoc 8 elst) (cond ((assoc 6 elst)) ('(6 . "BYLAYER")) ) (cond ((assoc 370 elst)) ('(370 . -1)) ) ) dcl_id (load_dialog "matchset_box.dcl") ) (if (not (new_dialog "matchset_box" dcl_id)) (exit) ) (action_tile "accept" "(or (= \"1\" (get_tile \"col\")) (setq lst (vl-remove (assoc 62 lst) lst)) ) (or (= \"1\" (get_tile \"lay\")) (setq lst (vl-remove (assoc 8 lst) lst)) ) (or (= \"1\" (get_tile \"typ\")) (setq lst (vl-remove (assoc 6 lst) lst)) ) (or (= \"1\" (get_tile \"wid\")) (setq lst (vl-remove (assoc 370 lst) lst)) ) (done_dialog)" ) (start_dialog) (unload_dialog dcl_id) lst ) (defun c:matchset (/ ss ent lst) (and (or (and (setq ss (cadr (ssgetfirst))) (= 1 (sslength ss)) (setq ent (ssname ss 0)) ) (setq ent (car (entsel))) ) (setq lst (matchset_box ent)) (mapcar '(lambda (code var) (if (assoc code lst) (setvar var (cdr (assoc code lst))) ) ) '(62 8 6 370) '("CECOLOR" "CLAYER" "CELTYPE" "CELWEIGHT") ) (sssetfirst) ) (princ) ) Gilles Chanteau - gileCAD - GitHub Développements sur mesure pour AutoCAD
(gile) Posté(e) le 18 avril 2007 Posté(e) le 18 avril 2007 J'ai un peu enjolivé les boites de dialogue, le les mets en téléchargement ici en attendant de les finaliser. il faut recharger LISP et DCL pour tester les nouvelle versions. Matchset ssmatch Gilles Chanteau - gileCAD - GitHub Développements sur mesure pour AutoCAD
(gile) Posté(e) le 19 avril 2007 Posté(e) le 19 avril 2007 Les deux fonctionnent maintenant avec les "couleurs vraies" (RGB).Les liens ci-dessus sont mis à jour, seuls les fichiers .lsp ont changé. http://xs414.xs.to/xs414/07164/ssm.png [Edité le 19/4/2007 par (gile)] Gilles Chanteau - gileCAD - GitHub Développements sur mesure pour AutoCAD
philsogood Posté(e) le 25 juin 2010 Posté(e) le 25 juin 2010 Bonjour, J'utilise depuis peu le superbe lisp de Gilles : matchset le truc c'est qu'il y a qqs trucs qui me genet sur ce lisp :-la longueur de la commande (c'est une commande que j'emploie pls fois par heures aussi un raccourci genre MS serait bienvenue, en je suis le rois des fautes de frappes!!)-la boite de dialogue pour confirmer les calques, couleurs style de trait épaisseur me gène...je préfère ne pas avoir de boite de dialogue et modifier ces paramètres au cas par cas (ce qui est pas fréquent)je ne peux pas modifier ce lisp (peut être que je sais pas m'y prendre!) aussi si vous pouviez m'aider. D'avance merci. Phil Projeteur Revit Indépendant - traitement des eaux/CVC
PHILPHIL Posté(e) le 25 juin 2010 Posté(e) le 25 juin 2010 hello gile haaa grrr les fameux *.zip de gile je suis désolé ca ne marche tjrs pas chez moiimpossible de récuperer un *.zip qui ne soit pas corrompu ton deuxieme : ssmatch renvoie vers une page inconnue de "orange" tjrs bizarre a+ phil FREELANCE Autodesk Architecture 2025 sous windows 11 64 REVIT 24 pouces vertical + 30 pouces horizontal + 27 pouces horizontal
lili2006 Posté(e) le 25 juin 2010 Posté(e) le 25 juin 2010 Bonjour à toutes et tous, Matchset ton deuxieme : ssmatch renvoie vers une page inconnue de "orange" Idem chez moi,... Civil 3D 2025 - COVADIS_18.3b https://www.linkedin...3%ABt-95313341/
Patrick_35 Posté(e) le 25 juin 2010 Posté(e) le 25 juin 2010 Salut Bonjour, J'utilise depuis peu le superbe lisp de Gilles : matchset le truc c'est qu'il y a qqs trucs qui me genet sur ce lisp :-la longueur de la commande (c'est une commande que j'emploie pls fois par heures aussi un raccourci genre MS serait bienvenue, en je suis le rois des fautes de frappes!!)-la boite de dialogue pour confirmer les calques, couleurs style de trait épaisseur me gène...je préfère ne pas avoir de boite de dialogue et modifier ces paramètres au cas par cas (ce qui est pas fréquent)je ne peux pas modifier ce lisp (peut être que je sais pas m'y prendre!) aussi si vous pouviez m'aider. D'avance merci. Phil Tu as aussi celui-ci (message 5) @+ Les Lisps de PatrickLe but n'est pas toujours placé pour être atteint, mais pour servir de point de mire.Joseph Joubert, 1754-1824
PHILPHIL Posté(e) le 25 juin 2010 Posté(e) le 25 juin 2010 hello lilian .gile. patrick .... avec toi lilian ca marche *.zip nickel heu tu peux donner un petit cours a gile pour les *.zip ???je plaisante bien sur merci tous bon soleillll phil FREELANCE Autodesk Architecture 2025 sous windows 11 64 REVIT 24 pouces vertical + 30 pouces horizontal + 27 pouces horizontal
philsogood Posté(e) le 9 août 2010 Posté(e) le 9 août 2010 Merci patrick, ce lisp est, lui aussi, extraordinairebon courage à ceux qui n'ont pas de vacances!! :) Projeteur Revit Indépendant - traitement des eaux/CVC
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