(gile) Posté(e) le 31 mars 2007 Posté(e) le 31 mars 2007 Ayant répondu à une demande sur le forum Autodesk, je tenais à en faire aussi profiter les membres de CADxp. Le LISP extrude un "anneau" (région) dont les diamètres extérieurs et intérieurs sont spécifiés par l'utilisateur sur tous les chemins (arc, cercle, ellipse, ligne, polyligne 2D 3D ou lw, spline plane) sélectionnés. Les chemins sont supprimé si la variable DELOBJ est supérieure à 0. Curve2Pipe peut être utilisé sur des polylignes 3d avec des "raccords" (faits avec 3dPolyFillet), le processus peut être un peu long si les nombres de "raccords" et de segments par arcs sont importants. ;;; CURVE2PIPE -Gilles Chanteau- (gile) 07/04/07 ;;; Extrude un anneau (région) suivant le(s) chemin(s) spécifié(s). ;;; (arc, cercle, ellipse, ligne, polyligne 2D 3D ou lw, spline plane) ;;; Spécifier les diamètres extérieurs et intérieurs et sélectionner le(s) chemin(s) ;;; Si la variable DELOBJ est supérieure à 0 les chemins sont supprimés. ;;; ;;; Révision 20/12/07 ;;; conservation des dernières valeurs entrées dans le dessin ;;; ajout d'un raccourci : C2P (defun c:curve2pipe (/ Space ext_rad int_rad ss obj start ext_circ int_circ ext_reg int_reg norm ) (vl-load-com) (or *acdoc* (setq *acdoc* (vla-get-ActiveDocument (vlax-get-acad-object))) ) (or (vlax-ldata-get "Curve2Pipe" "dia") (vlax-ldata-put "Curve2Pipe" "dia" 50.0) ) (or (vlax-ldata-get "Curve2Pipe" "ep") (vlax-ldata-put "Curve2Pipe" "ep" 2.0) ) (setq Space (if (= 1 (getvar "CVPORT")) (vla-get-PaperSpace *acdoc*) (vla-get-ModelSpace *acdoc*) ) ) (if (setq ext_rad (getdist (strcat "\nDiamètre extérieur (rtos (vlax-ldata-get "Curve2Pipe" "dia")) ">: " ) ) ) (vlax-ldata-put "Curve2Pipe" "dia" ext-rad) (setq ext_rad (vlax-ldata-get "Curve2Pipe" "dia")) ) (setq ext_rad (/ ext_rad 2.0) int_rad ext_rad ) (while ( (if (setq int_rad (getdist (strcat "\nÉpaisseur (rtos (vlax-ldata-get "Curve2Pipe" "ep")) ">: " ) ) ) (vlax-ldata-put "Curve2Pipe" "ep" int_rad) (setq int_rad (vlax-ldata-get "Curve2Pipe" "ep")) ) ) (if (setq ss (ssget '((-4 . "[b] (0 . "ARC,CIRCLE,ELLIPSE,LINE,LWPOLYLINE") (-4 . "[b] (0 . "POLYLINE") (-4 . "[b] (-4 . "&") (70 . 112) (-4 . "NOT>") (-4 . "AND>") (-4 . "[b] (0 . "SPLINE") (-4 . "&") (70 . 8) (-4 . "AND>") (-4 . "OR>") ) ) ) (progn (vla-StartUndoMark *acdoc*) (foreach path (vl-remove-if 'listp (mapcar 'cadr (ssnamex ss))) (setq obj (vlax-ename->vla-object path)) (setq start (vlax-curve-getPointAtParam obj (vlax-curve-getStartParam obj) ) ) (setq ext_circ (vla-addCircle Space (vlax-3d-Point start) ext_rad ) ) (setq int_circ (vla-addCircle Space (vlax-3d-Point start) (- ext_rad int_rad) ) ) (setq norm (vunit (vlax-curve-getFirstDeriv obj (vlax-curve-getStartParam obj) ) ) ) (vla-put-Normal ext_circ (vlax-3d-point norm)) (vla-put-Normal int_circ (vlax-3d-point norm)) (setq ext_reg (car (vlax-invoke Space 'addRegion (list ext_circ))) ) (setq int_reg (car (vlax-invoke Space 'addRegion (list int_circ))) ) (vla-Boolean ext_reg acSubtraction int_reg) (vla-addExtrudedSolidAlongPath Space ext_reg obj) (mapcar 'vla-delete (list ext_circ int_circ ext_reg)) (if ( (vla-delete obj) ) ) (vla-EndUndoMark *acdoc*) ) (princ "\nEntrée non valide.") ) (princ) ) ;; VUNIT ;; Retourne le vecteur unitaire d'un vecteur ;; ;; Argument : un vecteur (defun vunit (v) ((lambda (l) (if (/= 0 l) (mapcar (function (lambda (x) (/ x l))) v) ) ) (distance '(0 0 0) v) ) ) (defun c:c2p () (c:curve2pipe)) [Edité le 3/4/2007 par (gile)][Edité le 1/7/2008 par (gile)] [Edité le 9/7/2008 par (gile)] Gilles Chanteau - gileCAD - GitHub Développements sur mesure pour AutoCAD
(gile) Posté(e) le 1 avril 2007 Auteur Posté(e) le 1 avril 2007 Exemple en images. Soient 3 polylignes optimisées jointives construites sur 3 plans (SCU) différents. Les arcs sont faits avec l'option arc ou la commande raccord : http://img20.imageshack.us/img20/5061/c2p1ln0.png Lancer la commande, spécifier les diamètres et sélectionner les polylignes : Commande: c2p Diamètre extérieur: 300 Diamètre intérieur: 200 Choix des objets: Spécifiez le coin opposé: 3 trouvé(s) On pourra ensuite unir les 3 solides. http://img367.imageshack.us/img367/1046/c2p2oh9.png On peut préférer travailler avec des polylignes 3D http://img50.imageshack.us/img50/448/c2p3vd3.png Les polylignes 3D ne sont constituées que de segments droit, le LISP 3dPolyFillet permet de faire des "raccords" sur les polylignes 3D.Commande:3DPOLYFILLETParamètres courants. Segments: 10 Rayon: 0.0000Sélectionnez le premier segment ou [segments/Rayon]: r Spécifiez le rayon : 500 Sélectionnez le premier segment ou [segments/Rayon]: s Spécifiez le nombre de segments pour les arcs : 10 Sélectionnez le premier segment ou [segments/Rayon]:Sélectionnez le deuxième segment ou [Tous]: t http://img238.imageshack.us/img238/8786/c2p4gj8.png Exécuter Curve2Pipe : http://img380.imageshack.us/img380/189/c2p5dz0.png [Edité le 1/4/2007 par (gile)] [Edité le 1/7/2008 par (gile)] Gilles Chanteau - gileCAD - GitHub Développements sur mesure pour AutoCAD
lili2006 Posté(e) le 1 juillet 2008 Posté(e) le 1 juillet 2008 Bonsoir à toutes et tous, Dommage, il n'y a plus les images,... Civil 3D 2025 - COVADIS_18.3b https://www.linkedin...3%ABt-95313341/
(gile) Posté(e) le 1 juillet 2008 Auteur Posté(e) le 1 juillet 2008 J'ai remis des images et changé la version du code. [Edité le 1/7/2008 par (gile)] Gilles Chanteau - gileCAD - GitHub Développements sur mesure pour AutoCAD
bonuscad Posté(e) le 1 juillet 2008 Posté(e) le 1 juillet 2008 J'ai découvert il y a peu un site pour les images avec hébergement gratuit soit disant à vie... Si cela est vrai, cela peut être intéressant pour le sujet que l'on aimerai gardé illustré dans le temps. Je ne l'ai pas encore essayé! le site: http://mabul.org/ Choisissez un travail que vous aimez et vous n'aurez pas à travailler un seul jour de votre vie. - Confucius
thry0 Posté(e) le 9 juillet 2008 Posté(e) le 9 juillet 2008 Ne marche pas chez moi (V2007)Choisi la 1ère méthode polylignes 2D Message renvoyé :Commande: c2pDiamètre extérieur <50>:Épaisseur <3>:Choix des objets: Spécifiez le coin opposé: 2 trouvé(s)Choix des objets: ; erreur: no function definition: VUNIT J'ai loupé quelque chose c'est sûr ... mais quoi ???
(gile) Posté(e) le 9 juillet 2008 Auteur Posté(e) le 9 juillet 2008 Oupss !!!J'avais oublié de joindre la routine VUNIT, c'est réparé. :calim: Gilles Chanteau - gileCAD - GitHub Développements sur mesure pour AutoCAD
thry0 Posté(e) le 9 juillet 2008 Posté(e) le 9 juillet 2008 Effectivement c'est tout de suite mieux ... Bonne soirée et encore merçi
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