Aller au contenu

Sélection par bande de recherche


bertos3

Messages recommandés

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

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 commande

Si 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

 

Lien vers le commentaire
Partager sur d’autres sites

ç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

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

Lien vers le commentaire
Partager sur d’autres sites

(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'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

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'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

Coucou

 

Pas sûr que tu aies mal compris

C'est juste que les temps changent et "on" (article indéfini) vient poser des questions sur la toile

Sans avoir à l'esprit que des humains travaillent pour les réponses, sans doute "on" croit que ce sont des robots qui répondent

Et du coup "on" se fiche d'aller voir les réponses car on est passé à un autre sujet

Quand "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

Lien vers le commentaire
Partager sur d’autres sites

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

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 Polylignes

je 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

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'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

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 compte

Se connecter

Vous avez déjà un compte ? Connectez-vous ici.

Connectez-vous maintenant
×
×
  • Créer...

Information importante

Nous avons placé des cookies sur votre appareil pour aider à améliorer ce site. Vous pouvez choisir d’ajuster vos paramètres de cookie, sinon nous supposerons que vous êtes d’accord pour continuer. Politique de confidentialité