Invité jojo78 Posté(e) le 29 mars 2011 Posté(e) le 29 mars 2011 Bonjour, Je travail avec autocad 2011 version complète. J'ai dessiné un réseau de chauffage en 3D sur 3 niveaux. Je ne suis pas experte en 3D, j'ai découvert un peu au fur et à mesure. Voilà comment j'ai procédé, j'ai 1 fichier par niveau où j'ai dessiné mes réseau en 2D. J'ai ouvert un nouveau fichier pour créer ma 3D. J'y ai inséré chaque fichiers des niveaux en Xref que j'ai positionner avec le z différent pour qu'ils se superpose. J'ai créer mes tuyau en dessinant un cercle et en utilisant la commande balayage pour obtenir un cylindre. Seulement le raccord entre un cylindre horizontal et verticale n'est pas très jolie. Je n'arrive pas à trouver la commande qui permet de faire un raccord en angle droit ou en arrondi? J'ai fait beaucoup d'essai et je me suis vraiment casser la tête, j'espère trouver quelqu'un qui puisse m'aider. Merci :(
(gile) Posté(e) le 29 mars 2011 Posté(e) le 29 mars 2011 Salut, Tu peux essayer le LISP 3dPolyFillet sur cette page Gilles Chanteau - gileCAD - GitHub Développements sur mesure pour AutoCAD
Invité jojo78 Posté(e) le 29 mars 2011 Posté(e) le 29 mars 2011 tu vas peut être me traiter de blonde, mais je ne sais pas ce que c'est le LISP
bryce Posté(e) le 29 mars 2011 Posté(e) le 29 mars 2011 Bonjour, J'ai créer mes tuyau en dessinant un cercle et en utilisant la commande balayage pour obtenir un cylindreSi tu obtiens un cylindre, ça voudrait dire que la trajectoire de balayage est une ligne ? Je pense que tu devrais commencer par dessiner l'axe de ton tuyau sous la forme d'une polyligne 3D.Tu pourras ensuite:- faire un balayage d'un cercle suivant cette trajectoire pour obtenir un tuyau avec des angles droits "propres"- ou utiliser le LISP de (gile) pour créer des coudes sur la polylige 3d avant de faire le balayage. Brice, formateur AutoCAD - Inventor - SolidWorks - ZWCad - DraftSight - SketchUp indépendant
(gile) Posté(e) le 29 mars 2011 Posté(e) le 29 mars 2011 tu vas peut être me traiter de blonde, mais je ne sais pas ce que c'est le LISP AutoLISP est un langage de programmation intégré à AutoCAD qui permet donc d'écrire des programmes pour automatiser certaines taches. Pour utiliser un programme LISP, il faut le charger dans le dessin et lancer la commande qui y est définie.De plus amples explications dans ce sujet. Dans ton cas, tu copies tout le code dans le bloc-note, tu l'enregistres sous 3dPolyFillet.lsp (bien mettre l'extension .lsp), tu le charges dans AutoCAD et tu lances la commande : 3dpolyfillet. Gilles Chanteau - gileCAD - GitHub Développements sur mesure pour AutoCAD
Invité jojo78 Posté(e) le 29 mars 2011 Posté(e) le 29 mars 2011 c'est quoi le code à copier dans le bloc-note et ou faut il l'enregistrer pour pouvoir le charger dans Autocad
(gile) Posté(e) le 29 mars 2011 Posté(e) le 29 mars 2011 Quand tu cliques sur le lien 3dPolyFillet sur cette page, suivant comment est paramétré ton navigateur, soit il te propose directement d'enregistrer le fichier, soit il t'affiche le code dans un nouvel onglet. Tu peux enregistrer le fichier où tu veux sur ton poste, mais l'enregistrer dans un répertoire des chemins de support d'AutoCAD peut simplifier certaines choses par la suite. C'est quand tu le chargeras dans le dessin (avec APPLOAD par exemple) qu'il faudra parcourir ton poste jusqu'au fichier. Encore une fois, de larges explications sont données dans ce sujet. Gilles Chanteau - gileCAD - GitHub Développements sur mesure pour AutoCAD
Invité jojo78 Posté(e) le 29 mars 2011 Posté(e) le 29 mars 2011 OKJe rencontre un autre problème, je suis au travail et la page qui devrait s'afficher lorsque je vais sur le lien 3dPolyFillet est verrouiller. Aïe aïe restriction informatique de la boite sont dur avec moi.Va falloir que je leurs demande de me débloquer cela. En tout cas merci de ta patience
bryce Posté(e) le 29 mars 2011 Posté(e) le 29 mars 2011 Essaie avec ce lien :http://www.creao.fr/uploads/lisp/3dPolyFillet.lsp Brice, formateur AutoCAD - Inventor - SolidWorks - ZWCad - DraftSight - SketchUp indépendant
Invité jojo78 Posté(e) le 29 mars 2011 Posté(e) le 29 mars 2011 Bloquer aussi Font chi.. l'informatique :mad:
bryce Posté(e) le 29 mars 2011 Posté(e) le 29 mars 2011 Ça passera peut-être sur Google Docs...https://docs.google.com/leaf?id=0B-BEpwFJYTL5NzAyMzFjM2ItN2RkNi00NTU0LWJmMWMtYjliZjFiZWJjMDhj&hl=en&authkey=CIf5rv8O Brice, formateur AutoCAD - Inventor - SolidWorks - ZWCad - DraftSight - SketchUp indépendant
(gile) Posté(e) le 29 mars 2011 Posté(e) le 29 mars 2011 On va faire simple, copie tout ce qui est sur fond de papier perforé (sans oublier une parenthèse), colle le dans le bloc-note et enregistre le sous 3dPolyFillet.lsp. ;;; 3dPolyFillet -Gilles Chanteau- 21/01/07 -Version 1.5- ;;; Crée un "raccord" sur les polylignes 3D (succession de segments) (defun c:3dPolyFillet (/ 3dPolyFillet_err closest_vertices MakeFillet ModSp cnt prec rad ent1 ent2 vxlst plst param obj ) (vl-load-com) (or *acad* (setq *acad* (vlax-get-acad-object))) (or *acdoc* (setq *acdoc* (vla-get-ActiveDocument *acad*))) ;;;*************************************************************;;; (defun 3dPolyFillet_err (msg) (if (= msg "Fonction annulée") (princ) (princ (strcat "\nErreur: " msg)) ) (vla-EndUndoMark *acdoc*) (setq *error* m:err m:err nil ) (princ) ) ;;;*************************************************************;;; (defun closest_vertices (obj pt / par) (if (setq par (vlax-curve-getParamAtPoint obj pt)) (list (vlax-curve-getPointAtParam obj (fix par)) (vlax-curve-getPointAtParam obj (1+ (fix par))) ) ) ) ;;;*************************************************************;;; (defun MakeFillet (obj par1 par2 / pts1 pts2 som p1 p2 ptlst norm pt0 pt1 pt2 pt3 pt4 cen ang inc n vlst nb1 nb2 ) (if (and (setq pts1 (closest_vertices obj par1)) (setq pts2 (closest_vertices obj par2)) ) (progn (setq som (inters (car pts1) (cadr pts1) (car pts2) (cadr pts2) nil)) (if som (if (or (equal (car pts1) som 1e-9) (equal (cadr pts1) som 1e-9) (and ( (vlax-curve-getParamAtPoint obj (car pts2)) ) (equal (vec1 (car pts1) (cadr pts1)) (vec1 (car pts1) som) 1e-9 ) ) (and ( (vlax-curve-getParamAtPoint obj (car pts1)) ) (equal (vec1 (cadr pts1) (car pts1)) (vec1 (cadr pts1) som) 1e-9 ) ) ) (progn (if ( (setq p1 (cadr pts1) p2 (car pts2) ) (setq p1 (car pts1) p2 (cadr pts2) ) ) (if (= rad 0) (setq ptlst (list som)) (progn (setq norm (norm_3pts som p2 p1) pt0 (trans som 0 norm) pt1 (trans p1 0 norm) pt2 (trans p2 0 norm) cen (inters (polar pt0 (- (angle pt0 pt1) (/ pi 2)) rad) (polar pt1 (- (angle pt0 pt1) (/ pi 2)) rad) (polar pt0 (+ (angle pt0 pt2) (/ pi 2)) rad) (polar pt2 (+ (angle pt0 pt2) (/ pi 2)) rad) nil ) pt3 (polar cen (- (angle pt1 pt0) (/ pi 2)) rad) pt4 (polar cen (+ (angle pt2 pt0) (/ pi 2)) rad) ang (- (angle cen pt4) (angle cen pt3)) ) (if (and (inters pt0 pt1 cen pt3 T) (inters pt0 pt2 cen pt4 T)) (progn (if (minusp ang) (setq ang (+ (* 2 pi) ang)) ) (setq inc (/ ang prec) n 0 ) (repeat (1+ prec) (setq ptlst (cons (polar cen (- (angle cen pt4) (* inc n)) rad) ptlst ) n (1+ n) ) ) (setq ptlst (mapcar (function (lambda (p) (trans p norm 0))) ptlst ) ) ) ) ) ) (setq vlst (3d-coord->pt-lst (vlax-get obj 'Coordinates))) (if ptlst (progn (setq nb1 (vl-position p1 vlst) nb2 (vl-position p2 vlst) ) (if (= (vla-get-closed obj) :vlax-true) (cond ((and (equal p1 (car vlst)) (equal p2 (cadr (reverse vlst))) ) (setq vlst (append (sublist vlst 0 (1+ nb2)) (reverse ptlst)) ) ) ((and (equal p1 (cadr (reverse vlst))) (equal p2 (car vlst)) ) (setq vlst (append (sublist vlst 0 (1+ nb1)) ptlst)) ) ((and (equal p1 (cadr vlst)) (equal p2 (last vlst)) ) (setq vlst (append (reverse ptlst) (sublist vlst nb1 nil)) ) ) ((and (equal p1 (last vlst)) (equal p2 (cadr vlst)) ) (setq vlst (append ptlst (sublist vlst nb2 nil)) ) ) (T (if ( (setq vlst (append (sublist vlst 0 (1+ nb1)) ptlst (sublist vlst nb2 nil) ) ) (setq vlst (append (sublist vlst 0 (1+ nb2)) (reverse ptlst) (sublist vlst nb1 nil) ) ) ) ) ) (if (equal (car vlst) (last vlst) 1e-9) (cond ((and (equal p1 (cadr vlst)) (equal p2 (cadr (reverse vlst))) ) (setq vlst (append (sublist vlst 1 nb2) (reverse ptlst) (list (cadr vlst)) ) ) ) ((and (equal p1 (cadr (reverse vlst))) (equal p2 (cadr vlst)) ) (setq vlst (append (sublist vlst 1 nb1) ptlst (list (cadr vlst)) ) ) ) ) (if ( (setq vlst (append (sublist vlst 0 (1+ nb1)) ptlst (sublist vlst nb2 nil) ) ) (setq vlst (append (sublist vlst 0 (1+ nb2)) (reverse ptlst) (sublist vlst nb1 nil) ) ) ) ) ) (vlax-put obj 'Coordinates (apply 'append vlst)) ) (prompt "\nLe rayon spécifié est trop grand.") ) ) (prompt "\nLes segments sont divergents.") ) (prompt "\nLes segments ne sont pas concourants.") ) ) (prompt "\nLe rayon spécifié est trop grand.") ) ) ;;;*************************************************************;;; (setq ModSp (vla-get-ModelSpace *acdoc*)) (setq m:err *error* *error* 3dPolyFillet_err ) (vla-StartUndoMark *acdoc*) ;; Saisie des données (if (not (vlax-ldata-get "3dFillet" "Prec")) (vlax-ldata-put "3dFillet" "Prec" 20) ) (if (not (vlax-ldata-get "3dFillet" "Rad")) (vlax-ldata-put "3dFillet" "Rad" 10.0) ) (prompt (strcat "\nParamètres courants.\tSegments: " (itoa (vlax-ldata-get "3dFillet" "Prec")) "\tRayon: " (rtos (vlax-ldata-get "3dFillet" "Rad")) ) ) (setq cnt 1) (while (= 1 cnt) (initget 1 "Segments Rayon") (setq ent1 (entsel "\nSélectionnez le premier segment ou [segments/Rayon]: " ) ) (cond ((not ent1) (prompt "\nAucun objet sélectionné.") ) ((= ent1 "Segments") (initget 6) (if (setq prec (getint (strcat "\nSpécifiez le nombre de segments pour les arcs (itoa (vlax-ldata-get "3dFillet" "Prec")) ">: " ) ) ) (vlax-ldata-put "3dFillet" "Prec" prec) ) ) ((= ent1 "Rayon") (initget 4) (if (setq rad (getdist (strcat "\nSpécifiez le rayon (rtos (vlax-ldata-get "3dFillet" "Rad")) ">: " ) ) ) (vlax-ldata-put "3dFillet" "Rad" rad) ) ) ((and (= (cdr (assoc 0 (entget (car ent1)))) "POLYLINE") (= (logand 8 (cdr (assoc 70 (entget (car ent1))))) 8) ) (setq cnt 0) ) (T (prompt "\nL'objet sélectionné n'est pas une polyligne 3D.") ) ) ) (setq prec (vlax-ldata-get "3dFillet" "Prec") rad (vlax-ldata-get "3dFillet" "Rad") ) (while (not ent2) (initget 1 "Tous") (setq ent2 (entsel "\nSélectionnez le deuxième segment ou [Tous]: ")) (if (not (or (= ent2 "Tous") (eq (car ent1) (car ent2)))) (progn (prompt "\nLe segment sélectionné n'est pas sur le même objet" ) (setq ent2 nil) ) ) ) (setq obj (vlax-ename->vla-object (car ent1))) (if (= ent2 "Tous") (progn (setq vxlst (3d-coord->pt-lst (vlax-get obj 'Coordinates)) param 0.5 ) (repeat (if (= (vla-get-closed obj) :vlax-true) (length vxlst) (1- (length vxlst)) ) (setq plst (append plst (list (vlax-curve-getPointAtParam obj param))) param (1+ param) ) ) (if (or (= (vla-get-closed obj) :vlax-true) (equal (car vxlst) (last vxlst) 1e-9) ) (setq plst (cons (last plst) plst)) ) (setq cnt 0) (repeat (1- (length plst)) (MakeFillet obj (nth cnt plst) (nth (setq cnt (1+ cnt)) plst) ) ) ) (MakeFillet obj (trans (osnap (cadr ent1) "_nea") 1 0) (trans (osnap (cadr ent2) "_nea") 1 0) ) ) (vla-EndUndoMark *acdoc*) (setq *error* m:err m:err nil ) (princ) ) ;;;*************************************************************;;; ;;;*********************** SOUS ROUTINES ***********************;;; ;;;*************************************************************;;; ;;; VEC1 Retourne le vecteur normé (1 unité) de p1 à p2 (defun vec1 (p1 p2) ((lambda (d) (if (not (zerop d)) (mapcar (function (lambda (x1 x2) (/ (- x2 x1) d))) p1 p2) ) ) (distance p1 p2) ) ) ;; 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) ) ) ;; V^V ;; Retourne le produit vectoriel (vecteur) de deux vecteurs ;; ;; Arguments : deux vecteurs (defun v^v (v1 v2) (list (- (* (cadr v1) (caddr v2)) (* (caddr v1) (cadr v2))) (- (* (caddr v1) (car v2)) (* (car v1) (caddr v2))) (- (* (car v1) (cadr v2)) (* (cadr v1) (car v2))) ) ) ;;;*************************************************************;;; ;;;*************************************************************;;; ;; NORM_3PTS ;; Retourne le vecteur normal du plan défini par 3 points ;; ;; Arguments : trois points (defun norm_3pts (p0 p1 p2) (vunit (v^v (mapcar '- p1 p0) (mapcar '- p2 p0))) ) ;;;*************************************************************;;; ;;; 3d-coord->pt-lst Convertit une liste de coordonnées 3D en liste de points ;;; (3d-coord->pt-lst '(1.0 2.0 3.0 4.0 5.0 6.0)) -> ((1.0 2.0 3.0) (4.0 5.0 6.0)) (defun 3d-coord->pt-lst (lst) (if lst (cons (list (car lst) (cadr lst) (caddr lst)) (3d-coord->pt-lst (cdddr lst)) ) ) ) ;;;*************************************************************;;; ;;; SUBLIST Retourne une sous-liste ;;; ;;; Arguments ;;; lst : une liste ;;; start : l'index de départ de la sous liste (premier élément = 0) ;;; leng : la longueur (nombre d'éléments) de la sous-liste (ou nil) ;;; ;;; Exemples : ;;; (sublist '(1 2 3 4 5 6) 2 2) -> (3 4) ;;; (sublist '(1 2 3 4 5 6) 2 nil) -> (3 4 5 6) (defun sublist (lst start leng / n r) (if (or (not leng) ( (setq leng (- (length lst) start)) ) (setq n (+ start leng)) (repeat leng (setq r (cons (nth (setq n (1- n)) lst) r)) ) ) ;;;*************************************************************;;; ;;; BUTLAST Liste sans le dernier élément (defun butlast (lst) (reverse (cdr (reverse lst))) ) Gilles Chanteau - gileCAD - GitHub Développements sur mesure pour AutoCAD
Invité jojo78 Posté(e) le 29 mars 2011 Posté(e) le 29 mars 2011 Le lien google de bryce a fonctinner, j'ai enregistrer le fichier .lsp dans le dossier SUPPORT de Autodesck.J'ai chargé dans Autocad, mais je n'arrive pas à m'en servir sur mon dessin. Je dessine deux polyligne 3D, une horizontal et une verticale, j'applique la commande 3dPolyFillet, mais quand je sélectionne le deuxième segment, il me répond :" le segment sélectionné n'est pas sur le même objet" Je ne comprend pas ce que ça veut dire
bryce Posté(e) le 29 mars 2011 Posté(e) le 29 mars 2011 Ça veut tout simplement dire que pour que ça fonctionne, les 2 segments sélectionnés doivent appartenir à la même polyligne.Pourquoi en as-tu fait 2 ? :casstet: Tu peux utiliser la commande JOINDRE pour joindre tes 2 polylignes en une seule. Brice, formateur AutoCAD - Inventor - SolidWorks - ZWCad - DraftSight - SketchUp indépendant
(gile) Posté(e) le 29 mars 2011 Posté(e) le 29 mars 2011 Ça veut dire que le second segment sélectionné n'est pas sur la même polyligne 3d que le premier. Il faut que tu dessines une seule polyligne 3d par tuyau.Ensuite, tu lances la commande, puis tu peux modifier les les paramètres courants (rayon et nombre de segments par arc) et sélectionner les segments 2 par 2 (ou tous). Gilles Chanteau - gileCAD - GitHub Développements sur mesure pour AutoCAD
Invité jojo78 Posté(e) le 29 mars 2011 Posté(e) le 29 mars 2011 Ok j'ai 1 polyligne en 3d.Comment détermine t on le rayon du raccord?? Maintenant j'ai fait mes réseau de tuyau avec des cylindre, puis je les joindre pour faire des raccord??
(gile) Posté(e) le 29 mars 2011 Posté(e) le 29 mars 2011 Comme toutes les commandes AutoCAD, il faut que tu lises les invites en ligne de commande (ou saisie dynamique).Si au lieu de sélectionner le premier segment tu entre R, tu pourras changer le rayon, si tu entes S tu pourras changer le nombre de segments par arc et si au lieu de sélectionner le second segment, tu entre T, un 'raccord' est créé à chaque sommet. http://gile.pagesperso-orange.fr/3pf_noir.gif Gilles Chanteau - gileCAD - GitHub Développements sur mesure pour AutoCAD
Invité jojo78 Posté(e) le 29 mars 2011 Posté(e) le 29 mars 2011 :laugh: :laugh: :laugh: :laugh: :laugh: Génial, j'ai un jolie tuyau qui ressemble à une paille. Mais mon curseur a disparu dans mon espace objet, je peux aller sur les icones, mais sur l'espace de travaille je n'ai plus rien. C'est normale?????? Moi j'avais fais tous les réseaux en cylindres, peut on les joindres les un au autre ou dois je tout redessiner???????
(gile) Posté(e) le 29 mars 2011 Posté(e) le 29 mars 2011 Mais mon curseur a disparu dans mon espace objet, je peux aller sur les icones, mais sur l'espace de travaille je n'ai plus rien. C'est normale?????? Non, ce n'est pas normal. Moi j'avais fais tous les réseaux en cylindres, peut on les joindres les un au autre ou dois je tout redessiner??????? 3dPolyFillet ne fonctionne que sur les polylignes 3d. La procédure est, dans l'ordre :- dessiner la polyligne 3d- faire les raccords- extruder ou balayer le profil suivant le chemin de la polyligne Gilles Chanteau - gileCAD - GitHub Développements sur mesure pour AutoCAD
Invité jojo78 Posté(e) le 29 mars 2011 Posté(e) le 29 mars 2011 Bon ben je suis bonne pour tout redessiner :mad2: Ca me fera de l'entraînnement Et encore merci d'avoir aussi bien expliqué
rebcao Posté(e) le 29 mars 2011 Posté(e) le 29 mars 2011 Bonsoir, j'ai remarqué ce BUG, de temps en temps AutoCAD se prend le pied dans le tapis entre la couleur NOIR/BLANC !!!!! J'ai pris l'habitude de mettre la couleur de mon curseur en MAGENTA.... Tiens est-ce que la 2012 permet de manière natif de créer des RACCORDS sur une polyligne 3D ?! Il serait temps... Christian Formateur, Consultant Expert AutoCAD, REVIT MEP, INVENTOR, télécharger , des Outils AutoCAD...cad123 @ wanadoo.fr (enlever les espaces de part et d'autre de @)
dardene Posté(e) le 12 juillet 2011 Posté(e) le 12 juillet 2011 Bonjour Voila j'essaye d'utiliser le raccord 3D mais sa m'affiche l'erreur suivante: Erreur: impossible de trouver l'ID de l'objet: # Se qui m'énerve le plus c'est que sur l'ordi de mon collègues de travail sa marche parfaitement on peut même s'en servir pour les coudes des tubes 3d et il me nargues en permanence. Bref un petit coup de main ne serait pas de refus merci d'avance!
(gile) Posté(e) le 12 juillet 2011 Posté(e) le 12 juillet 2011 Salut, Difficile de répondre avec aussi peu d'informations. Essaye toujours de télécharger ou copier le LISP à nouveau et de le recharger, mais vu le type d'erreur, je pencherais plus pour un problème venant d'AutoCAD que du LISP. Gilles Chanteau - gileCAD - GitHub Développements sur mesure pour AutoCAD
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