Aller au contenu

Coupure multiple


zebulon_

Messages recommandés

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)

Lien vers le commentaire
Partager sur d’autres sites

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üh

Lehrsch 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)

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é