gainsbarre57 Posté(e) le 9 novembre 2010 Posté(e) le 9 novembre 2010 Bonjour à toutes et à tous Je cherche une commande pour effectuer une selection similaire d'un bloc dans un dessin.Je sais que cette commande existe sur les version MAP mais je ne la possède pas. Quelqu'un aurait il une commande ou un lisp que je puisse utiliser; merci pour vos réponses Allez Salut les P'tits Gars
bryce Posté(e) le 9 novembre 2010 Posté(e) le 9 novembre 2010 Bonjour, Tu peux sans doute t'en tirer avec la commande "Sélection rapide". Sinon voici un lisp que j'ai trouvé sur le net : ;| Select Similar (based on a command found in a few versions of AutoCAD-based products) written by Adam Wuellner all rights released Edited by Marc Scherer for www.cad.de Changes: The selsim command now identifies the "Simliar" Objects not only by the Entity-Type and Layername. The Identification is based on the resulting entget-list from the Sub-Function "FILTER-DXFCODES". This Function first removes all DXF-Codes which Datatypes are not String or Real (f.e. Layernames, Textstyles, Hatchnames, Textheights...) Then it removes all DXF-Codes that are defined in the second Argument of the member function within. Feel free to change this List for your own purposes. You can find this List if you search this code for the Text: "Here is the List of DXF-Codes that have to be removed" |; (defun C:SELSIM (/ SS1 I ENT FILTER_LIST TYPE-LAYER FILTER SSTEMP) (defun SS:UNION (SS1 SS2 / ENAME SS-SMALLER SS-LARGER C) (cond ((and SS1 SS2) (setq C 0) (if (< (sslength SS1) (sslength SS2)) (setq SS-SMALLER SS1 SS-LARGER SS2 ) (setq SS-LARGER SS1 SS-SMALLER SS2 ) ) (while (< C (sslength SS-SMALLER)) (setq ENAME (ssname SS-SMALLER C) C (1+ C) ) (if (not (ssmemb ENAME SS-LARGER)) (ssadd ENAME SS-LARGER) ) ) SS-LARGER ) (SS1 SS1) (SS2 SS2) (t NIL) ) ) (defun FILTER-DXFCODES (LST-ENTGETDATA /) ;; At first remove all DXF-Codes which Datatypes are not String or Real (if (setq LST-ENTGETDATA (vl-remove-if-not '(lambda (X) (setq OBJTYPE (type (cdr X))) (or (= OBJTYPE 'STR) (= OBJTYPE 'REAL)) ) LST-ENTGETDATA ) ) ;; Then remove all DXF-Code that are defined in the second Argument of ;; the member function. Feel free to change this List for your own purposes. (setq LST-ENTGETDATA (vl-remove-if '(lambda (X) (member (car X) ;; Here is the List of DXF-Codes that have to be removed '(1 3 5 40 41 42 43 44 45 46 49 50 51 52 53 54 100 102 300 410 460 461 462 470 ) ) ) LST-ENTGETDATA ) ) ) LST-ENTGETDATA ) (if (not (setq SS1 (cadr (ssgetfirst)))) (setq SS1 (ssget)) ) (setq I 0 FILTER_LIST '() ) (if SS1 (progn (repeat (sslength SS1) (setq ENT (FILTER-DXFCODES (entget (ssname SS1 I))) I (1+ I) ) (setq TYPE-LAYER ENT) (if (not (member TYPE-LAYER FILTER_LIST)) (setq FILTER_LIST (cons TYPE-LAYER FILTER_LIST)) ) ) (foreach FILTER FILTER_LIST (setq SSTEMP (ssget "X" FILTER)) (setq SS1 (SS:UNION SS1 SSTEMP) SSTEMP NIL ) ) (princ (strcat "\nFilter: " (vl-prin1-to-string FILTER_LIST) ) ) (sssetfirst NIL SS1) (princ (strcat "\n>" (itoa (sslength SS1)) "< similar Objects selected!" ) ) ) (princ "\nNo Filter Objects selected!") ) (princ) ) (princ)La commande à utiliser est SELSIM.On peut choisir dans le code LISP les codes DXF à filtrer.J'ai déjà retiré le code 2 qui correspond au nom, de façon à ce que seuls les blocs du même nom et sur le même calque soient sélectionnés. [Edité le 9/11/2010 par bryce] Brice, formateur AutoCAD - Inventor - SolidWorks - ZWCad - DraftSight - SketchUp indépendant
gainsbarre57 Posté(e) le 10 novembre 2010 Auteur Posté(e) le 10 novembre 2010 Bonjour Bryce Merci pour le lisp ca marche super!!! bonne journée Allez Salut les P'tits Gars
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