rebcao Posté(e) le 17 janvier 2006 Posté(e) le 17 janvier 2006 Bonjour à toutes et à tous, Ce serait sympa de temps en temps de pouvoir sélectionner des objets à partir d'un polygone ou une polyligne, un cercle, etc. en mode capture et fenêtre...Exemple, je crée une polyligne, puis je la sélectionne et la sélection se ferait en mode capture ou fenêtre. ce serait bien que ce genre de fonction fasse partie des options de sélection standard ! En attendant si quelqu'un avait une fonction équivalente ? ;) Merci de vos réponses, ;) Christian Formateur, Consultant Expert AutoCAD, REVIT MEP, INVENTOR, télécharger , des Outils AutoCAD...cad123 @ wanadoo.fr (enlever les espaces de part et d'autre de @)
Eric Posté(e) le 17 janvier 2006 Posté(e) le 17 janvier 2006 Ce serait sympa de temps en temps de pouvoir sélectionner des objets à partir d'un polygone ou une polyligne, un cercle, etc. en mode capture et fenêtre...Exemple, je crée une polyligne, puis je la sélectionne et la sélection se ferait en mode capture ou fenêtre. Ben il y a quand même les modes CPolygone et SPolygone qui font à eu près çaIl y a aussi la méthode par trajet qui est pratique C'est vrai qu'il n'y a pas de sélection par cercle Eric est formateur, revendeur sur AutoCAD LT, DraftSight, ZWCAD, SketchUp et PDF2CAD
rebcao Posté(e) le 17 janvier 2006 Auteur Posté(e) le 17 janvier 2006 tu cherches la bagarre ????? :mad: Fais gaffe Eric !!! on a la même ceinture !!!! ça va saigner !!! Espèce de breton... ;) Mais ne l'oublions pas ITALIQUE = HUMOUR... OUI je connais Eric ! mais le problème c'est qu'il faut à chaque fois recréer la forme de cette sélection... s'il y a 15 points tu imagines, même déjà avec 5-6 points !!! L'idée c'est de garder à l'écran ce "polygone de sélection" et en Un Clic on obtient l'équivalent de 15 sommets, soit 15 Clics... Je pense faire un petit LISP qui analyse les sommets et qui les renvoie à l'option de sélection CP = capturePolygone Christian [Edité le 18/1/2006 par rebcao] Formateur, Consultant Expert AutoCAD, REVIT MEP, INVENTOR, télécharger , des Outils AutoCAD...cad123 @ wanadoo.fr (enlever les espaces de part et d'autre de @)
bonuscad Posté(e) le 17 janvier 2006 Posté(e) le 17 janvier 2006 Il y avait ce SUJET que j'avais lancé, mais sans trop succés. Il faut dire que les caractères " > " contenu dans le code, avaient "bouffés" des lignes (je viens de m'en apercevoir).Ha-la-la ces symboles de balises " < > " en htlm posent problème... :mad: Donc, j'ai corrigé le post pour que celui-ci ne soit pas tronqué. Choisissez un travail que vous aimez et vous n'aurez pas à travailler un seul jour de votre vie. - Confucius
zebulon_ Posté(e) le 17 janvier 2006 Posté(e) le 17 janvier 2006 salut les ceintures noires (defun c:selobj (/ ENT vlaobj pt_org pt_end param_strat param_end perim_obj esp X NB liste_pt ss) (vl-load-com) (setq ENT (car (entsel))) (setq vlaobj (vlax-ename->vla-object ent) pt_org (vlax-curve-getStartPoint vlaobj) pt_end (vlax-curve-getEndPoint vlaobj) param_start (vlax-curve-getStartParam vlaobj) param_end (vlax-curve-getEndParam vlaobj) perim_obj (vlax-curve-getDistAtParam vlaobj param_end) ) (setq ESP 1) ;; précision (setq NB (fix (/ perim_obj ESP))) ;; nb se sommets (setq X 0) (setq liste_pt nil) ;; liste des points à injecter au ssget (repeat NB (setq liste_pt (cons (trans (vlax-curve-getPointAtParam vlaobj (vlax-curve-getParamAtDist vlaobj x)) 0 1) liste_pt)) (setq X (+ X ESP)) ) (setq ss (ssget "_wp" liste_pt)) (sssetfirst nil ss) (princ) ) Voilà, vite fait sans trop tester...j'ai fixé la précision arbitrairement à 1 unité, à voir en fonction de la taille des objets utilisés. Amicalement Zebulon_ 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)
zebulon_ Posté(e) le 17 janvier 2006 Posté(e) le 17 janvier 2006 Mais ne l'oublions pas ITALIQUE = HUMOUR... et de l'italique gras = humour gras ? Amicalement Zebulon_ 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)
rebcao Posté(e) le 17 janvier 2006 Auteur Posté(e) le 17 janvier 2006 Fui... ;) Formateur, Consultant Expert AutoCAD, REVIT MEP, INVENTOR, télécharger , des Outils AutoCAD...cad123 @ wanadoo.fr (enlever les espaces de part et d'autre de @)
lecrabe Posté(e) le 17 janvier 2006 Posté(e) le 17 janvier 2006 Bonsoir Les Ceintures Noires qui se foutent sur la gueule Sympa ces programmes, je vais les tester à l'occasion ... :) Mais je suis un fanatique de MAP, et donc je dispose de cette fonction dans les requêtes par "Emplacement géographique" sur un ou plusieurs DWGs du groupe de dessins. - C un peu moins pratique, car je dois d'abord faire une 1ère requête "spécifique" pour faire apparaître le / la cercle / polyligne qui m'intéresse. :o - Puis une 2eme requete où je selectionne les objets précédents soit pour une fenêtre "Normale", soit une fenêtre "Capture". Par contre je peux chosir les objets qui SONT ou NE SONT PAS dans le/la cercle/polyligne ! :) et le tout combiné BIEN SUR avec d'autres critères plus ou moins compliqués ! :exclam: Le Decapode "mappant" 1 Autodesk Expert Elite Team
rebcao Posté(e) le 18 janvier 2006 Auteur Posté(e) le 18 janvier 2006 Tout d'abord merci à Bonuscad et Zebulon, Je vais de ce pas tester ces deux sources. Par contre ce serait pour une utilisation avec LT-EXTENDER, ça a des chances de fonctionner ? Je vous dirai quoi ! Sinon, mes chers Zebulon et Bonuscad avez-vous pensez à une union, un mariage, (oui ! oui ! humour gras) car je constate dans beaucoup de sujet là où il y a Bonuscad il y a Zebulon et la ou il y a Zebulon il y a Bonucad.... Les Inséparables ! c'est très bien continuez ;) Encore merci à vous pour les nombreux sources que vous nous proposez. :D Christian ;) Formateur, Consultant Expert AutoCAD, REVIT MEP, INVENTOR, télécharger , des Outils AutoCAD...cad123 @ wanadoo.fr (enlever les espaces de part et d'autre de @)
LUDWIG Posté(e) le 18 janvier 2006 Posté(e) le 18 janvier 2006 En attendant si quelqu'un avait une fonction équivalente ? ;) Réponse de Serge sur une reqûête similaire Autocad 2021 - Revit 2022 - Windows 10
zebulon_ Posté(e) le 18 janvier 2006 Posté(e) le 18 janvier 2006 car je constate dans beaucoup de sujet là où il y a Bonuscad il y a Zebulon et la ou il y a Zebulon il y a Bonucad.... Les Inséparables ! c'est très bien continuez Unis par les liens du lisp, jusqu'à ce que la mort nous sépare... La réponse de Serge, rappelée par ludwig, ne prend en compte que les sommets des polylignes. J'ai essayé de faire quelque chose de plus polyvalent, mais cela reste moins "précis" que ce que propose serge, puisque je fais un point toutes les 1 unité le long de l'objet, sans tenir compte d'éventuels sommets. Mais, de ce fait, mon lisp marche aussi pour des cercles, des ellipses, des polylignes avec des arcs et même des splines. Mais dans une version prochaine, on aura peut-être la possibilité de sélectionner suivant un objet. Christian l'a rèvé, Autodesk l'a fait. (ou va le faire, pour être plus exact) Amicalement Zebulon_ 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)
rebcao Posté(e) le 18 janvier 2006 Auteur Posté(e) le 18 janvier 2006 AH si seulement ils pouvaient t'entendre ! ;) merci Christian Formateur, Consultant Expert AutoCAD, REVIT MEP, INVENTOR, télécharger , des Outils AutoCAD...cad123 @ wanadoo.fr (enlever les espaces de part et d'autre de @)
(gile) Posté(e) le 19 janvier 2006 Posté(e) le 19 janvier 2006 Intellidesk 2005 l'a fait : http://img14.imageshack.us/img14/682/select8kk.png Gilles Chanteau - gileCAD - GitHub Développements sur mesure pour AutoCAD
kallain Posté(e) le 19 janvier 2006 Posté(e) le 19 janvier 2006 Covadis le fait aussi, il appelle ça : Clipping ;)
lecrabe Posté(e) le 19 janvier 2006 Posté(e) le 19 janvier 2006 Bonjour Eh Oui pour Intellidesk, car les developpeurs d'Intellidesk France sont des Pros AutoCADs et donc ils essayent (autant que faire se peut) d'implanter des fonctionnalites utiles et subtiles ... Le Decapode "Intellideskant" Autodesk Expert Elite Team
didier Posté(e) le 19 janvier 2006 Posté(e) le 19 janvier 2006 hello, à KALLAIN tu parles du cliping ?quel est le rapport ? merci de confirmer Éternel débutant... Mon site perso : Programmer dans AutoCAD
rebcao Posté(e) le 21 janvier 2006 Auteur Posté(e) le 21 janvier 2006 Comme je le craignais Zebulon lorsque je charge ton Programme via LT-EXTENDER j'ai un message d'erreur...!!! [surligneur] ; error : no function definition at [EVAL][/surligneur] J'ai donc vite réécrit un petit programme LISP qui permet de faire une sélection à l'aide d'une polyligne en Mode Capture ou Fenêtre...deux commandes sont créées SELCP et SELFP... Merci pour ceux que ça intéressent de tester et de me dire quoi ? Christian ;) Formateur, Consultant Expert AutoCAD, REVIT MEP, INVENTOR, télécharger , des Outils AutoCAD...cad123 @ wanadoo.fr (enlever les espaces de part et d'autre de @)
(gile) Posté(e) le 21 janvier 2006 Posté(e) le 21 janvier 2006 Salut Christian, J'ai un peu testé ton LISP, çà marche fort bien (même sur Intellidesk). J'ai juste une petite question, je ne comprends pas ce que tu fais avec CMDECHO ; pourquoi le désactives-tu à nouveau à la fin ?Un oubli ou une subtilité que je ne connais pas ? Gilles Chanteau - gileCAD - GitHub Développements sur mesure pour AutoCAD
rebcao Posté(e) le 21 janvier 2006 Auteur Posté(e) le 21 janvier 2006 Merci Giles pour avoir passé un peu de temps sur cette petite bidouille ! As-tu remarqué la structure du source ? J'aime bien commenter, ça me facilite la maintenance de mes programmes plus tard !!! Pour le CMDECHO à 1 c'était juste pour qu'il m'affiche le nombre d'objets trouvés et je le remet à 0 par habitude, c'est tout. C'est vrai que dans un programme on a rarement besoin qu'il soit à 1. Christian ;) [Edité le 21/1/2006 par rebcao] Formateur, Consultant Expert AutoCAD, REVIT MEP, INVENTOR, télécharger , des Outils AutoCAD...cad123 @ wanadoo.fr (enlever les espaces de part et d'autre de @)
(gile) Posté(e) le 21 janvier 2006 Posté(e) le 21 janvier 2006 C'est vrai que dans un programme on a rarement besoin qu'il soit à 1. Entièrement d'accord, bien que j'ai lu quelque part dans un message sur ce site un exemple qui montrait un intérêt d'avoir CMDECHO à 1 (mais je ne le retrouve pas*). Pour ma part je préfère, dans mes LISP, stocker la valeur initiale dans une variable pour la restituer à la fin de façon à ne pas perturber les habitudes d'autres utilisateurs éventuels dudit code. Pour les commentaires, tu as raison je ne le fais pas (ou plus) assez souvent. * Je l'ai retrouvé, c'est là. [Edité le 21/1/2006 par (gile)] Gilles Chanteau - gileCAD - GitHub Développements sur mesure pour AutoCAD
rebcao Posté(e) le 21 janvier 2006 Auteur Posté(e) le 21 janvier 2006 Entièrement d'accord, bien que j'ai lu quelque part dans un message sur ce site un exemple qui montrait un intérêt d'avoir CMDECHO à 1 je le fais effectivement en phase développement et je remet 0 une fois le Programme au point ! Pour ma part je préfère, dans mes LISP, stocker la valeur initiale dans une variable pour la restituer à la fin de façon à ne pas perturber les habitudes d'autres utilisateurs éventuels dudit code. c'est que je fais aussi et ici entre autre pour OSMODE Pour info ce petit bijou va permettre à mes stagiaires de préparer dans des plans bâtiment les contours des différentes pièces avec la commande contour, puis ils n'auront plus qu'à faire une sélection de la polylgine pour connaitre le quantitatif de tous les BLOCS dans la pièce (si blocs il y a bien sûr !!!) Christian [Edité le 21/1/2006 par rebcao] Formateur, Consultant Expert AutoCAD, REVIT MEP, INVENTOR, télécharger , des Outils AutoCAD...cad123 @ wanadoo.fr (enlever les espaces de part et d'autre de @)
(gile) Posté(e) le 2 octobre 2006 Posté(e) le 2 octobre 2006 Je réveille cette discussion un peu ancienne parce que je me suis penché sur ce sujet à propos de celui-ci. Je propose donc ici ma version, avec une routine qui peut être appelée depuis d'autres LISP et comme exemple une fonction d'appel. La routine permet de créer un jeu de sélection avec tous les objets contenus ou capturés par la polyligne, le cercle ou l'ellipse sélectionné. Le polygone de sélection est constitué de 50 sommets pour les coubes fermées (cercles ellipses), le nombre de sommets est calculé en fonction de la courbure des arc de polylignes dans les mêmes proportions. La routine nécessite 3 arguments :- le nom d'entité de l'objet (ename)- le mode de sélection Fenêtre ou Capture (Wp Cp)- un filtre de sélecion (liste ssget) si aucun filtre n'est utilisé cet argument doit être nil. La routine :(bug du filtre de sélection corrigé) Version corrigée le 04/10/06 ;;; SelByObj -Gilles Chanteau- 04/10/06 ;;; Crée un jeu de sélection avec tous les objets contenus ou ;;; capturés par le polygone créé à partir de l'objet sélectionné ;;; Les courbes (cercles, ellipses, arcs de polylignes) sont segmentés ;;; Arguments : ;;; - un nom d'entité (ename) -cercle, ellipse, polyligne fermée- ;;; - un mode de sélection (Cp ou Wp) ;;; - un filtre de sélection (defun SelByObj (ent opt fltr / obj dist n lst prec dist p_lst) (vl-load-com) (setq obj (vlax-ename->vla-object ent)) (cond ((member (cdr (assoc 0 (entget ent))) '("CIRCLE" "ELLIPSE")) (setq dist (/ (vlax-curve-getDistAtParam obj (vlax-curve-getEndParam obj) ) 50 ) n 0 ) (repeat 50 (setq lst (cons (trans (vlax-curve-getPointAtDist obj (* dist (setq n (1+ n)))) 0 1 ) lst ) ) ) ) (T (setq p_lst (vl-remove-if-not '(lambda (x) (or (= (car x) 10) (= (car x) 42) ) ) (entget ent) ) ) (while p_lst (setq lst (append lst (list (cdr (assoc 10 p_lst))))) (if (/= 0 (cdadr p_lst)) (progn (setq prec (fix (* 50 (abs (cdadr p_lst)))) dist (/ (- (if (cdaddr p_lst) (vlax-curve-getDistAtPoint obj (cdaddr p_lst) ) (vlax-curve-getDistAtParam obj (vlax-curve-getEndParam obj) ) ) (vlax-curve-getDistAtPoint obj (cdar p_lst) ) ) prec ) n 0 ) (repeat (1- prec) (setq lst (append lst (list (trans (vlax-curve-getPointAtDist obj (+ (vlax-curve-getDistAtPoint obj (cdar p_lst) ) (* dist (setq n (1+ n))) ) ) 0 1 ) ) ) ) ) ) ) (setq p_lst (cddr p_lst)) ) (setq lst (mapcar '(lambda (x) (trans x 0 1)) lst)) ) ) (ssget (strcat "_" opt) lst fltr) ) Une fonction d'appel (supprimer les espaces entre ;;; SSO ;;; Grippe les objets contenus ou capturés par l'objet sélectionné (defun c:sso (/ ss opt) (sssetfirst nil nil) (if (setq ss (ssget "_:S:E" (list '(-4 . "[color=#CC0000] '(0 . "CIRCLE") '(-4 . "[color=#CC0000] '(0 . "ELLIPSE") '(41 . 0.0) (cons 42 (* 2 pi)) '(-4 . "AND>") '(-4 . "[color=#CC0000] '(0 . "LWPOLYLINE") '(-4 . "&") '(70 . 1) '(-4 . "AND>") '(-4 . "OR>") ) ) ) (progn (initget "Cp Wp") (setq opt (getkword "\nChoisir une méthode de sélection [Cp/Wp]: ") ) (sssetfirst nil (SelByObj (ssname ss 0) opt nil)) ) ) (princ) ) [Edité le 3/10/2006 par (gile)] [Edité le 4/10/2006 par (gile)] Gilles Chanteau - gileCAD - GitHub Développements sur mesure pour AutoCAD
(gile) Posté(e) le 3 octobre 2006 Posté(e) le 3 octobre 2006 À cause d'un petit oubli, le filtre de sélection ne fonctionnait pas, c'est réparé. Gilles Chanteau - gileCAD - GitHub Développements sur mesure pour AutoCAD
(gile) Posté(e) le 3 octobre 2006 Posté(e) le 3 octobre 2006 Re, Pour les non lispeurs, deux fonctions d'appel : SSOC pour une sélection par capture et SSOF pour une sélection par fenêtre. Comme précédemment, supprimer les espaces entre SelByObj doit, bien sûr, être chargé. (defun c:ssoc (/ ss opt) (sssetfirst nil nil) (if (setq ss (ssget "_:S:E" (list '(-4 . "[color=#CC0000] '(0 . "CIRCLE") '(-4 . "[color=#CC0000] '(0 . "ELLIPSE") '(41 . 0.0) (cons 42 (* 2 pi)) '(-4 . "AND>") '(-4 . "[color=#CC0000] '(0 . "LWPOLYLINE") '(-4 . "&") '(70 . 1) '(-4 . "AND>") '(-4 . "OR>") ) ) ) (sssetfirst nil (SelByObj (ssname ss 0) "Cp" nil)) ) (princ) ) (defun c:ssof (/ ss opt) (sssetfirst nil nil) (if (setq ss (ssget "_:S:E" (list '(-4 . "[color=#CC0000] '(0 . "CIRCLE") '(-4 . "[color=#CC0000] '(0 . "ELLIPSE") '(41 . 0.0) (cons 42 (* 2 pi)) '(-4 . "AND>") '(-4 . "[color=#CC0000] '(0 . "LWPOLYLINE") '(-4 . "&") '(70 . 1) '(-4 . "AND>") '(-4 . "OR>") ) ) ) (sssetfirst nil (SelByObj (ssname ss 0) "Wp" nil)) ) (princ) ) [Edité le 4/10/2006 par (gile)] Gilles Chanteau - gileCAD - GitHub Développements sur mesure pour AutoCAD
(gile) Posté(e) le 4 octobre 2006 Posté(e) le 4 octobre 2006 Des tests plus poussés ont fait apparaître un dysfonctionnement avec des SCU différents du SCG, le bug est corrigé. Avec SSOC, si on veut exclure du jeu de sélection l'objet ayant servi à le faire, on peut remplacer : (sssetfirst nil (SelByObj (ssname ss 0) "Cp" nil)) par : (sssetfirst nil (ssdel (ssname ss 0) (SelByObj (ssname ss 0) "Cp" nil))) 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