lecrabe Posté(e) le 19 novembre 2008 Partager Posté(e) le 19 novembre 2008 Hello J'ai des Polylignes 2D (Splinees ou pas) , Polylignes 3D qui sont "presque" fermées voire même pour certaines d'entre elles le point d'arrivée revient au point de départ MAIS elles ne sont pas closes !!! Comment sélectionner (retrouver) toutes ses polylignes 2D ou 3D pour lesquelles la distance de fermeture serait Je pense qu'il faut une routine Lisp ou plutôt VLisp ! 1) Question sur le parametre : Distance Maximum / Tolerance de fermeture = xx.xx 2) Sélection AutoCAD classique ou bien TOUT le dessin ... Traitement .... et simplement sélection des polylignes (parmi la sélection initiale) pour lesquelles la distance théorique de fermeture est Sachant que cette distance théorique de fermeture peut être égale à ZERO ! Ainsi apres le traitement, on pourra facilement les CLORE ou pas !!! Merci d'avance, Le Decapode Autodesk Expert Elite Team Lien vers le commentaire Partager sur d’autres sites More sharing options...
(gile) Posté(e) le 19 novembre 2008 Partager Posté(e) le 19 novembre 2008 Salut, Un petit truc vite fait, appelé "test" paeceque je n'ai pas d'idée... (defun c:test (/ delta ss result start end) (vl-load-com) (setq fltr (list '(-4 . "[b] '(-4 . "[b] '(0 . "LWPOLYLINE") '(-4 . "[b] '(-4 . "&") '(70 . 1) '(-4 . "NOT>") '(-4 . "AND>") '(-4 . "[b] '(0 . "POLYLINE") '(-4 . "[b] '(-4 . "&") '(70 . 113) '(-4 . "NOT>") '(-4 . "AND>") '(-4 . "OR>") (cons 410 (getvar "CTAB")) ) ) (and (setq delta (getdist "\nDistance Maximum / Tolerance de fermeture: ") ) (princ "\nSélectionnez les polyligne ou [b].") (or (ssget fltr) (ssget "_X" fltr)) (setq result (ssadd)) (vlax-for p (setq ss (vla-get-ActiveSelectionSet (vla-get-ActiveDocument (vlax-get-acad-object) ) ) ) (if ( (vlax-curve-getEndPoint p) ) delta ) (ssadd (vlax-vla-object->ename p) result) T ) ) (not (vla-delete ss)) (sssetfirst nil result) ) (princ) ) Gilles Chanteau - gileCAD - GitHub Développements sur mesure pour AutoCAD Lien vers le commentaire Partager sur d’autres sites More sharing options...
Patrick_35 Posté(e) le 19 novembre 2008 Partager Posté(e) le 19 novembre 2008 Bonjour Je me contente de clore les objets (defun c:clo(/ dis doc ent sel tot) (vl-load-com) (setq doc (vla-get-activedocument (vlax-get-acad-object))) (vla-startundomark doc) (initget 3) (and (setq dis (getreal "\nIndiquez la tolérance : ")) (ssget (list (cons 0 "LWPOLYLINE,POLYLINE") (cons 70 0))) (progn (setq tot 0) (vlax-for ent (setq sel (vla-get-activeselectionset doc)) (and (<= (distance (vlax-curve-getStartPoint ent) (vlax-curve-getEndPoint ent)) dis) (setq tot (1+ tot)) (vla-put-closed ent :vlax-true) ) ) (princ (strcat "\nFermeture de " (itoa tot) " objet(s).")) (vla-delete sel) ) ) (vla-endundomark doc) (princ) ) @+ Les Lisps de PatrickLe but n'est pas toujours placé pour être atteint, mais pour servir de point de mire.Joseph Joubert, 1754-1824 Lien vers le commentaire Partager sur d’autres sites More sharing options...
lecrabe Posté(e) le 19 novembre 2008 Auteur Partager Posté(e) le 19 novembre 2008 Hello Merci les Super Lispeurs ! :) :D :cool: Je vais tester tout ça MAIS petite précision pour Patrick_35 :je ne veux pas les FERMER mais simplement les DETECTER donc une simple sélection des polylignes en sortie est parfaite pour moi ! Ca ressemble à un petit challenge ... :P Le Decapode "détecteur de polylignes presques closes/fermées" Autodesk Expert Elite Team Lien vers le commentaire Partager sur d’autres sites More sharing options...
(gile) Posté(e) le 19 novembre 2008 Partager Posté(e) le 19 novembre 2008 Patrick_35, Je crains que ton filtre de sélection (70 .0) ne permette pas de sélectionner les polylignes 2d splinées ou lissées, ni les polylignes 3d. Gilles Chanteau - gileCAD - GitHub Développements sur mesure pour AutoCAD Lien vers le commentaire Partager sur d’autres sites More sharing options...
lecrabe Posté(e) le 19 novembre 2008 Auteur Partager Posté(e) le 19 novembre 2008 Hello Tests en cours (MAP 2008/2006) avec la routine de Gilles nommée : POL_CLOSE 3 polylignes 2D simples (SCG) pour mon test avec les valeurs de trous suivants :30.4 , 6.4 , 0 (point de départ = point d'arrivée) Avec une tolerance de 10 : aucune polyligne sélectionnéeAvec une tolérance de 20 : idemAvec une tolérance de 30 : idemAvec une tolérance de 31 : 3 polylignes dans la sélection No comprendo Le Decapode "surpris" Autodesk Expert Elite Team Lien vers le commentaire Partager sur d’autres sites More sharing options...
lecrabe Posté(e) le 19 novembre 2008 Auteur Partager Posté(e) le 19 novembre 2008 Hello Par contre la routine CLO de Patrick_35 semble parfaitement fonctionner sur les polylignes 2D simples :) SAUF que je désire simplement une sélection en sortie ! :o et non pas une fermeture automatique ! En effet elle ne traite pas les pollignes 3D et les polylignes D lissées ! :( Le Decapode Autodesk Expert Elite Team Lien vers le commentaire Partager sur d’autres sites More sharing options...
Patrick_35 Posté(e) le 19 novembre 2008 Partager Posté(e) le 19 novembre 2008 Re J'avais pas tout comprisUne version corrigée (defun c:clo(/ dis doc ent js sel) (vl-load-com) (setq doc (vla-get-activedocument (vlax-get-acad-object))) (vla-startundomark doc) (initget 3) (and (setq dis (getreal "\nIndiquez la tolérance : ")) (ssget (list (cons 0 "LWPOLYLINE,POLYLINE") (cons -4 "[b]<[/b]not") (cons 70 1) (cons -4 "not>") ) ) (progn (setq js (ssadd)) (vlax-for ent (setq sel (vla-get-activeselectionset doc)) (and (<= (distance (vlax-curve-getStartPoint ent) (vlax-curve-getEndPoint ent)) dis) (ssadd (vlax-vla-object->ename ent) js) ) ) (vla-delete sel) (sssetfirst nil js) ) ) (vla-endundomark doc) (princ) ) gileC'est exacte pour les poly splinée ou lissée.Je suppose que ton filtre est plus élaboré que le mien, mais je n'ai pas le temps d'approfondir. ps : correction de la balise @+ [Edité le 19/11/2008 par Patrick_35] Les Lisps de PatrickLe but n'est pas toujours placé pour être atteint, mais pour servir de point de mire.Joseph Joubert, 1754-1824 Lien vers le commentaire Partager sur d’autres sites More sharing options...
lecrabe Posté(e) le 19 novembre 2008 Auteur Partager Posté(e) le 19 novembre 2008 Hello Patrick_35 Merci pour ta correction ultra-rapide de la coquille "balise" ! :P Le Decapode "heureux" Autodesk Expert Elite Team Lien vers le commentaire Partager sur d’autres sites More sharing options...
(gile) Posté(e) le 19 novembre 2008 Partager Posté(e) le 19 novembre 2008 Avec une tolerance de 10 : aucune polyligne sélectionnéeAvec une tolérance de 20 : idemAvec une tolérance de 30 : idemAvec une tolérance de 31 : 3 polylignes dans la sélection No comprendo Moi non plus, ça fonctionne chez moi.Le code est semblable à celui de Patrick... Je suppose que ton filtre est plus élaboré que le mien Il est surtout plus long !Tout ça juste pour écarter aussi les maillages. Gilles Chanteau - gileCAD - GitHub Développements sur mesure pour AutoCAD Lien vers le commentaire Partager sur d’autres sites More sharing options...
lecrabe Posté(e) le 20 novembre 2008 Auteur Partager Posté(e) le 20 novembre 2008 Hello J'ai changé de PC, toujours avec un MAP 2008 et avec TON programme, j'ai le MEME probleme ! :o Il ne sélectionne mes polylignes 2D simples QUE SI je choisis une tolérance "grande" !! :( J'ai cru à un moment que le problème dépendait du niveau de ZOOM, mais je n'ai pas pu reproduire ? Je pense avoir trouvé le problème, si je choisis UNE SEULE polyligne, le traitement est OK !!! Tu as une idée ? Le Decapode "enqueteur"' Autodesk Expert Elite Team Lien vers le commentaire Partager sur d’autres sites More sharing options...
(gile) Posté(e) le 20 novembre 2008 Partager Posté(e) le 20 novembre 2008 OK, je pense avoir trouvé, c'est une subtilité dans le groupe (and ...) avec la dernière interprétation dans la boucle (vlax-for ...) qui pouvait retourner nil. J'ai modifié le code. Gilles Chanteau - gileCAD - GitHub Développements sur mesure pour AutoCAD Lien vers le commentaire Partager sur d’autres sites More sharing options...
lecrabe Posté(e) le 20 novembre 2008 Auteur Partager Posté(e) le 20 novembre 2008 Hello Gilles C tout bon :) Ta routine "POL_CLOSE" fonctionne parfaitement ! :D Merci, Le Decapode "Detecteur de Polylignes presque closes" PS: Mon coeur balance entre Patrick & Gilles ... ;) :P Autodesk Expert Elite Team 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