bertos3 Posté(e) le 5 septembre 2019 Partager Posté(e) le 5 septembre 2019 Salut à tous,J'utilise fréquemment la fonction sélection par bande de recherche pour sélection rapidement des points proches d'une polyligne. Or il est impossible de le faire avec plusieurs polylignes d'un coup. Il faut donc refaire la manip autant de fois qu'il y a de poly....Quelqu'un a-t-il une idée pour le faire automatiquement avec plusieurs poly ? J'en ai des centaines....merci d'avance Lien vers le commentaire Partager sur d’autres sites More sharing options...
didier Posté(e) le 5 septembre 2019 Partager Posté(e) le 5 septembre 2019 Coucou Loin de moi l'idée de vouloir ré-écrire Covadis (hihi)Mais ce que je te répondrais si j'étais l'auteur de la commande est que ce que tu demandes n'est pas dans "l'esprit" de la commandeSi les multiples polylignes que tu proposes en sélection se croisent ou qu'un point attribué à une polyligne est proche d'une autre COMMENT la commande va choisir de surligner ou pas le point ? Amicalement Éternel débutant... Mon site perso : Programmer dans AutoCAD Lien vers le commentaire Partager sur d’autres sites More sharing options...
bertos3 Posté(e) le 5 septembre 2019 Auteur Partager Posté(e) le 5 septembre 2019 ça doit, à mon avis, être à la portée d'un programmeur que de trouver un algorithme capable de faire ça !Pour les points de polylignes, ils sont déjà dans un autre calque, ou au poire je ré-immatricule l'ensemble de mes polylignes à la fin. Du coup il suffirait juste de sélectionner l'ensemble des points se trouvant à 50cm de toutes les polylignes... qu'elles se croisent ou non ne change rien il me semble. Et puis je n'ai jamais de polyligne qui se croisent sur ce type de fichier pour lesquels j'utilise cette fonction.Merci quand même de ton point de vue. Lien vers le commentaire Partager sur d’autres sites More sharing options...
didier Posté(e) le 6 septembre 2019 Partager Posté(e) le 6 septembre 2019 Coucou Assurément, mais si tu cherchais un programmeur il eût fallu poster dans le forum ad hoc,Je te propose de reposer ta question sur le forum Lisp car les "programmeurs" ne baguenaudent que très rarement ici.J'ai déjà travaillé sur le principe de la "bande de recherche" et ce que j'ai obtenu ne te conviendrait pas avec des polylignes multiples. Amicalement Éternel débutant... Mon site perso : Programmer dans AutoCAD Lien vers le commentaire Partager sur d’autres sites More sharing options...
zebulon_ Posté(e) le 6 septembre 2019 Partager Posté(e) le 6 septembre 2019 (defun ConsListesPtSel (pk) (setq PT (vlax-curve-getPointAtDist obj pk)) (setq PM (vlax-curve-GetParamAtPoint obj PT)) (setq fder (vlax-curve-getfirstderiv obj PM)) (setq PT1DERIV (mapcar '+ PT fder)) (setq PT1 (polar PT (+ (angle PT PT1DERIV) (/ pi 2)) (* lb 0.5))) (setq PT2 (polar PT (+ (angle PT PT1DERIV) (/ pi 2)) (* lb -0.5))) (setq lsPtSel1 (cons (trans PT1 0 1) lsPtSel1)) (setq lsPtSel2 (cons (trans PT2 0 1) lsPtSel2)) ) (defun ssappend (jst js / J) (setq J 0) (if js (repeat (sslength js) (setq ent (ssname js J)) (setq J (+ J 1)) (setq jst (ssadd ent jst)) ) ) jst ) (defun c:SelBande () (setq ss (ssget)) (setq pas (getdist "\nValeur du pas : ")) (setq lb (getdist "\nLargeur de la bande : ")) (setq jst (ssadd)) (setq I 0) (repeat (sslength ss) (setq e (ssname ss I)) (setq I (+ I 1)) (setq obj (vlax-ename->vla-object e)) (setq pk 0) (setq lgobj (vlax-curve-getDistAtPoint obj (vlax-curve-getEndPoint obj))) (setq lsPtSel1 nil) (setq lsPtSel2 nil) (while (< pk lgobj) (ConsListesPtSel pk) (setq pk (+ pk pas)) ) (ConsListesPtSel lgobj) (setq LsPtSel (append (reverse LsPtSel1) LsPtSel2)) (setq js (ssget "_WP" LsPtSel)) (setq jst (ssappend jst js)) ) (sssetfirst nil jst) (princ) ) Amic'allemandVincent 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) Lien vers le commentaire Partager sur d’autres sites More sharing options...
zebulon_ Posté(e) le 13 septembre 2019 Partager Posté(e) le 13 septembre 2019 Bonjour,j'ai compris ce qu'il fallait faire ou je suis à côté de la plaque ?Mais a priori "Pas de nouvelle, bonne nouvelle !" Amic'allemandVincent 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) Lien vers le commentaire Partager sur d’autres sites More sharing options...
didier Posté(e) le 13 septembre 2019 Partager Posté(e) le 13 septembre 2019 Coucou Pas sûr que tu aies mal comprisC'est juste que les temps changent et "on" (article indéfini) vient poser des questions sur la toileSans avoir à l'esprit que des humains travaillent pour les réponses, sans doute "on" croit que ce sont des robots qui répondentEt du coup "on" se fiche d'aller voir les réponses car on est passé à un autre sujetQuand "on" aura besoin de nous il reviendra...Il trouvera des excuses, il y en a plein de toutes faites mais le minimum du respect est de venir voir les réponses et de dire si ça va ou pas comme réponse et si ça va pas on s'y recolle. Je suis très occupé avec mon site en ce moment et du coup je ne peux pas travailler sur cette "bande de recherche" et j'en profite pour te remercier de la piste de recherche,mais je n'y renonce pas.Je suis dans les ellipses et je manque d'aspirine... Amicalement Éternel débutant... Mon site perso : Programmer dans AutoCAD Lien vers le commentaire Partager sur d’autres sites More sharing options...
zebulon_ Posté(e) le 13 septembre 2019 Partager Posté(e) le 13 septembre 2019 Bonjour,pour mon autocritique, je trouve que ce n'est pas satisfaisant lorsque on a des polylignes pour lesquelles les segments successifs ne sont pas tangents. Il vaudrait peut être mieux faire deux offsets de la polyligne et, enfin, mieux gérer les sommets qui ne tombent pas forcément à un multiple du pas. Et puis quand on a un segment droit, deux points suffiraient. Amic'allemand, Vincent 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) Lien vers le commentaire Partager sur d’autres sites More sharing options...
lecrabe Posté(e) le 13 septembre 2019 Partager Posté(e) le 13 septembre 2019 Hello Maitre Zebulon_ En attendant le retour du demandeur ... ET bien moi, je n'arrive a "rien" (ou presque) avec ton Lisp ! Ou alors je n'ai pas compris ce qu'il fait ! Soit un DWG de Carto/Cadastre et de multiples Polylignes 2D qui seraient par exemple des axes de travaux ... Avec par exemple une largeur de bande de 50M sur les N Polylignesje pensais qu'il allait faire une selection _WP sur les N zones tampons / buffers !? ET il semblerait que NON !? Mais bon, je suis peut etre un peu fatigue ! Bon WE, Bye, lecrabe "triste" Autodesk Expert Elite Team Lien vers le commentaire Partager sur d’autres sites More sharing options...
zebulon_ Posté(e) le 13 septembre 2019 Partager Posté(e) le 13 septembre 2019 Bonjour, J'ai fait un fichier dwg exemple ici D'abord on sélectionne les axes rouges, puis on donne un pas, par exemple 20, puis on donne une largeur de bande, ici 20 aussi. Puis ça sélectionne tout ce qui est situé entre les pointillées. Plus le pas est petit plus c'est précis il faut aussi faire attention au zoom, car le ssget "_wp" semble ne sélectionner que ce qui est affiché. Il faudrait faire un zoom étendu en amont du ssget puis un zoom précédent après. Puis je n'ai pas regardé les problèmes éventuels de scu, mais je ne crois pas qu'il y en ait. Le ssget _wp attend des coordonnées générales, enfin je crois il faudrait que je vérifie, et les fonctions vlax-curve renvoient des coordonnées générales, donc ça à l'air cohérent. Amic'allemandVincent 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) Lien vers le commentaire Partager sur d’autres sites More sharing options...
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