zebulon_ Posté(e) le 19 décembre 2006 Posté(e) le 19 décembre 2006 Bonjour, J'ai essayé de faire une routine qui fait des "coupures au point" à toutes les intersections entre des bords de coupe et des objets à couper. Cela fonctionne un peu comme la commande ajuster mais ça conserve tous les segments. Là où je sèche, c'est quand les objets à couper sont des cercles, des ellipses, des splines fermées parce qu'avec ces objets, la commande coupure au point ne fonctionne pas. Un arc de 360°, ça ne lui plait pas. (defun Lintersect (E1 E2 / RES LPOINT) (setq E1 (vlax-ename->vla-object E1)) (setq E2 (vlax-ename->vla-object E2)) (setq RES (vlax-invoke E1 'IntersectWith E2 acExtendNone)) (setq LPOINT nil) (While RES (setq LPOINT (cons (list (car RES) (cadr RES) (caddr RES)) LPOINT)) (repeat 3 (setq RES (cdr RES)) ) ) LPOINT ) (defun mbreak_main () (setq LPOINTTOT nil) (setq I 0) (while (< I (sslength ssb)) (setq e1 (ssname ssb I)) (setq J 0) (while (< J (sslength ssc)) (setq e2 (ssname ssc J)) (if (setq LPOINT (lintersect E1 E2)) (setq LPOINTTOT (append LPOINTTOT LPOINT)) ) (setq J (+ J 1)) ) (setq I (+ I 1)) ) (While LPOINTTOT (setq CURPOINT (car LPOINTTOT)) (setq LPOINTTOT (cdr LPOINTTOT)) (setq J 0) (while (< J (sslength ssc)) (setq E2 (ssname ssc J)) (setq PROCHEPT (vlax-curve-getClosestPointTo (vlax-ename->vla-object E2) CURPOINT)) (if (< (distance CURPOINT PROCHEPT) 0.00001) ;; le point est sur l'objet (progn (setq CURPOINT (trans CURPOINT 0 1)) (command "_break" E2 "_non" CURPOINT "_non" CURPOINT) (setq ssc (ssadd (entlast) ssc)) ;; je rajoute l'objet créé par _break au jeu de sélection ) ) (setq J (+ J 1)) ) ) ) (defun c:mbreak () (command "_.undo" "_group") (prompt "\nSélectionner les bords de coupe : ") (setq ssb (ssget)) (if ssb (progn (prompt "\nSélectionner les objets à couper : ") (setq ssc (ssget)) (if ssc (mbreak_main) ) ) ) (command "_.undo" "_end") (princ) ) Si vous avez une idée pour saucissonner aussi les cercles et les ellipses ? Je ne sais pas si ça répond à la question de Christian ici ? 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)
Patrick_35 Posté(e) le 19 décembre 2006 Posté(e) le 19 décembre 2006 SalutTu es allé voir Qbrick ? @+ [Edité le 19/12/2006 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
(gile) Posté(e) le 19 décembre 2006 Posté(e) le 19 décembre 2006 Salut _Zebulon, Je ne me suis pas penché sur ton LISP, mais ça m'a fait penser à Qbrick de Kamal. Je viens de voir le message de Patrick_35. :cool: Gilles Chanteau - gileCAD - GitHub Développements sur mesure pour AutoCAD
zebulon_ Posté(e) le 19 décembre 2006 Auteur Posté(e) le 19 décembre 2006 C'est exactement ça. Je ne connaissais pas. Pff, quand je pense au nombre de coupure au point, ajuster et autre prolonger que j'ai fait dans ma longue et douloureuse carrière... pour rien... Mais comme on dit en alsacien :Un wan so ald worsch wi a kühLehrsch emmer noch dezü Ce qui veut dire quelque chose comme : on en apprend tous les jours (si quelqu'un a une meilleure traduction, je suis preneur) Mais bon, je suis quand même content de mon petit lisp de 20 lignes. Amicalement Zebulon_ [Edité le 19/12/2006 par 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)
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