Fraid Posté(e) le 7 décembre 2010 Posté(e) le 7 décembre 2010 Bonjour, Je dois nettoyer des plans de leurs polylignes presque rectangle voir exemple ci-joint http://dl.free.fr/pAvbqqACz J'ai essayer avec ce code (defun c:delpolrec (/ pol ListSom p1 p2 p3 p4 d1 d2 d3 d4) (setq spol (ssget "x" (list (cons 0 "LWPOLYLINE") (cons 90 5))) i 0 ) (if spol (progn (repeat (sslength spol) (setq pol (ssname spol (1+ i)) ListSom (listSomPol pol) p1 (car ListSom) p2 (cadr ListSom) p3 (caddr ListSom) p4 (cadddr ListSom) d1 (fix(distance p1 p2)) d2 (fix(distance p2 p3)) d3 (fix(distance p3 p4)) d4 (fix (distance p4 p1)) ) (if (or(= d1 d3) (= d2 d4))(command "_erase" pol "")) ) ) ) ) ;; Liste les sommets de la LWPOLYLIGNE (code cadxp) (defun listSomPol ( pol / x) (mapcar 'cdr (vl-remove-if-not '(lambda (x) (= (car x) 10)) (entget pol) ) ) ) Malheureusement il ne fonctionne qu'une fois avant de me mettre l'erreur ; erreur: type d'argument incorrect: point 2D/3D: nil :casstet: comprend pas pourquoi ???? (peut etre parcequ'il y a cinq sommets dont 2 egaux) et n'y aurait il pas une autre façon d'y arrivé (sans compter le nombre de sommets) ?car il y a quelques cas ou les presque rectangles on un ou deux sommets supplementaires sur leur grand coté. Merci https://github.com/Fraiddd
zebulon_ Posté(e) le 7 décembre 2010 Posté(e) le 7 décembre 2010 Malheureusement il ne fonctionne qu'une fois avant de me mettre l'erreur c'est normal, puisque la variable I n'évolue pas dans la boucle repeat. Dans cette ligne de code : (setq pol (ssname spol (1+ i)) I vaut toujours 0, donc (ssname spol (1+ i)) pointera toujours sur le 2ème élément du jeu de sélection. S'il ce 2ème élément a été effacé à la première itération par la commande ERASE qu'on trouve un peu plus loin dans le code, ça va forcément se planter puisque (ssname splo (1+ i) pointera vers une entité effacée. Il faut donc écrite (setq pol (ssname spol i) i (+1 i) ... ... ) afin de prendre tour à tour chaque élément de spol AmicalementVincent 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)
Fraid Posté(e) le 7 décembre 2010 Auteur Posté(e) le 7 décembre 2010 pas reveillé aujourd'huis j'aurais du le voir.... merci https://github.com/Fraiddd
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