usegomme Posté(e) le 6 février 2007 Posté(e) le 6 février 2007 Je vous propose un lisp que je me suis fais pour tracer du TUYAU 3D avec Autocad 2007 seulement, car la commande "balayage" est utilisée. Il comprend 2 commandes : "TU" pour générer un tube suivant un axe qui peut être : ligne, arc, cercle, hélice etc. et polylign 3d, pratique avec "polyfillet" de Gilles.Et "TUY" qui permet de tracer directement un tuyau en 3d avec ses coudes. Pour les 2 : si épaisseur différente de 0, le tube est creux, (ce qui est plutôt normal pour un tube), sinon il est tracé en forme de barre pleine. (Ce qui est plutôt normal pour une barre) L'inconvénient de "TUY" c'est que les coudes et les longueurs droites du tuyau tracé ne sont pas liés. Son avantage, c'est qu' il corrige les distances trop courtes pour placer un coude ,on peut démarrer ou finir avec un coude ,ou encore faire un coude seul et aussi une succession de coudes, pour cela il suffit que l'espacement entre points d'épures soit plus court que le ou les coudes , avant ou après ou les 2.Et c'est facile à modifier et à refaire depuis l'axe avec "TU". Je dois avouer que j'ai galéré avec la correction automatique car j'ai cumulé les erreurs. Ben ouais que voulez-vous, avec une pincée de neurones lispeurs ankylosés par l'inaction, l'accouchement a été pénible, mais je suis assez content du résultat, même s'il reste des imperfections. Pour finir j'espère qu'il vous sera utile et que vous l'adapterez à vos besoins ou que ça vous amusera de faire des tuyaux dans tous les sens, surtout en couleurs, c'est très jolie. PS: le choix des "DN" est dispo dans le menu contextuel, ainsi que l'option "Epaisseur",et le DN21 est en réalité du DN15 rayon 38. ;; TUY.LSP usegomme le 06-02-2007 corrigé le 19-08-08 ;; Tuyau 3d à partir d' autocad 2007 ;;; (defun diam-t3d (/ diam dn) (cond ((and (/= tuy:dn "Autre") (/= tuy:dn " ") (/= tuy:dn nil)) (setq dn tuy:dn) (initget "Autre") (setq dn (getreal (strcat "\nDiametre en DN [8/10/15/21/20/25/32/40/50/65/80/100/125/150/200/250/300/350/400/450/500/600/Autre en mm] DN<" (rtos dn 2 0) ">: "))) ) (T (initget "Autre") (setq dn (getreal (strcat "\nDiametre en DN [8/10/15/21/20/25/32/40/50/65/80/100/125/150/200/250/300/350/400/450/500/600/Autre en mm] : "))) ) ) (cond ((and (/= dn "A") (/= dn nil))(setq tuy:dn dn)) ((= dn nil) (if tuy:dn (setq dn tuy:dn))) ((= dn "A") (setq dn nil)) ) (cond ((= dn 8) (setq diam 13.5 rayo 20 )) ((= dn 10) (setq diam 17.2 rayo 25 )) ((= dn 15) (setq diam 21.3 rayo 27.5 )) ((= dn 21) (setq diam 21.3 rayo 38 )) ; dn15 inox ((= dn 20) (setq diam 26.9 rayo 28.5)) ((= dn 25) (setq diam 33.7 rayo 38)) ((= dn 32) (setq diam 42.4 rayo 47.5)) ((= dn 40) (setq diam 48.3 rayo 57)) ((= dn 50) (setq diam 60.3 rayo 76)) ((= dn 65) (setq diam 76.1 rayo 95)) ((= dn 80) (setq diam 88.9 rayo 114.5)) ((= dn 100) (setq diam 114.3 rayo 152.5)) ((= dn 125) (setq diam 139.7 rayo 190.5)) ((= dn 150) (setq diam 168.3 rayo 228.5)) ((= dn 200) (setq diam 219.1 rayo 305)) ((= dn 250) (setq diam 273 rayo 381)) ((= dn 300) (setq diam 323.9 rayo 457)) ((= dn 350) (setq diam 355.6 rayo 533.5)) ((= dn 400) (setq diam 406.4 rayo 609.5)) ((= dn 450) (setq diam 458 rayo 686)) ((= dn 500) (setq diam 508 rayo 762)) ((= dn 600) (setq diam 610 rayo 914)) ( T (cond ((and tuy:dia tuy:ray) (setq diam (getdist (strcat "\nDiametre Exterieur Tuyauterie ou 2 pts <" (rtos tuy:dia 2 4) ">: "))) (setq rayo (getdist (strcat "\nRayon coude ou 2 pts <" (rtos tuy:ray 2 4) ">: "))) (if diam (setq tuy:dia diam) (setq diam tuy:dia)) (if rayo (setq tuy:ray rayo) (setq rayo tuy:ray)) ) (T (setq diam (getdist "\nDiametre Exterieur Tuyauterie ou 2 pts : ")) (setq rayo (getdist "\nRayon coude , 2 pts ou <>: ")) (if (= rayo nil) (setq rayo (* diam 1.1))) (setq tuy:dia diam tuy:ray rayo) ) ) ) ) (setq ddia (/ diam 2)) (if (not (> rayo ddia)) (setq rayo (* ddia 1.1))) ) (defun tubage (ent pt / lent ) ;change proprietes de l'axe (setq lent (entget ent)) ;; si le code 62 pour la couleur est présent ... ;; Salut Gilles (if (assoc 62 lent) ;; ... le remplacer par un nouveau (setq lent (subst (cons 62 6) ;;Nouvelle couleur magenta (assoc 62 lent) lent) ) ;; sinon, en ajouter un (setq lent (append lent (list (cons 62 6)))) ;; magenta ) ;; idem pour type de ligne (if (assoc 6 lent) (setq lent (subst (cons 6 "AXES2") (assoc 62 lent) lent) ) (setq lent (append lent (list (cons 6 "AXES2")))) ) (entmod lent) (generetube ent pt) ) (defun generetube (ent pt / circonftuy) (if (or (= tuy:ep nil) (= tuy:ep 0.0)) (progn (command "_circle" "_none" pt ddia ) (if (= 0 (getvar "delobj"))(setq circonftuy (entlast))(setq circonftuy nil)) (command "_sweep" "_L" "" ent) ;; balayage (if circonftuy (entdel circonftuy)) ) (progn (command "_circle" "_none" pt ddia) (if (= 0 (getvar "delobj"))(setq circonftuy (entlast))(setq circonftuy nil)) (command "_sweep" "_L" "" ent) (if (= 2 (getvar "delobj"))(entdel ent)) (if circonftuy (entdel circonftuy)) (setq tubext (entlast)) (command "_circle" "_none" pt (- ddia tuy:ep)) (if (= 0 (getvar "delobj"))(setq circonftuy (entlast))(setq circonftuy nil)) (command "_sweep" "_L" "" ent) (if circonftuy (entdel circonftuy)) (command "_subtract" tubext "" "_L" "") ) ) ) (defun descoude ( L1 L2 pt long) (command "_fillet" L1 L2) ;; raccord (setq coude (entlast)) (if (or del1 (if dminp (= (- long dminp) dmin) (= long dmin))) (entdel L1) (tubage L1 pt) ; efface axe si longueur nulle ou tube ) (setq del1 nil) (tubage coude pt) ) (defun deterdmin ( / a a90 p) ;; determine la distance mini pour placer un coude (if dmin (setq dminp dmin)) ;;; dminp = dmin du coude precedent (if (= b (+ d01 d10)) (setq a180 t) (setq a180 nil)) ;; si angle 180 pas de coude mais prolongement (if (or (= d01 (+ b d10)) (= d10 (+ b d01))) (setq a0 t) (setq a0 nil) ;; si angle 0 pas possible alors arret ) (if (= (* b b) (+ (* d01 d01) (* d10 d10))) ;; si angle 90 dmin = rayon (setq a90 t dmin rayo) (setq a90 nil) ) (if (and (not a0) (not a90)(not a180)) ;;; si autre alors calcul (progn (setq p (/ (+ d01 d10 b) 2)) ;;; p=1/2 perimetre (setq a (abs (atan (sqrt (/ (* (- p d01)(- p d10)) (* p (- p b))))))) ;; 1/2 angle (setq dmin (* (cos a) (/ rayo (sin a)))) ) ) ) (defun onfekoi (L1 L2 pt1 pt2 pt3 d1 d2) (cond (a180 (tubage L1 pt2)) ;; angle 180 pas de coude mais continu (a0 (tubage L1 pt2) (entdel L2) (setq p0 nil p1 nil)) ;; angle 0 conserve 1er segment ; efface 2eme et arret ((and (not a0) (not a180)) (if (> rayo 0) (cond ((and (if dminp (>= (- d1 dminp) dmin) (>= d1 dmin)) (>= d2 dmin) ) (descoude L1 L2 pt2 d1) ;; ok longueur ) ((or (if dminp (< (- d1 dminp) dmin) (< d1 dmin)) (< d2 dmin) ) (correction L1 L2 pt1 pt2 pt3 d1 d2) ;;;; trop court donc correction ) ) (tubage L1 pt2) ;;; si rayon 0 pas de raccordement ;; ne devrait plus etre utile ) ) ) ) (defun correction (L1 L2 pt1 pt2 pt3 d1 d2) (setq lg (if dminp (+ dmin dminp) dmin)) (if (< d1 lg) (progn (setq pt1 (trans (cdr (assoc 10 (entget L1))) 0 1)) ;; retrouve 1er sommet (redefsommet pt1 pt2 d1 dmin) ;; redefini 2eme (entdel L1) ;; efface segment (command "_line" "_none" pt1 "_none" sbn "") ;; le redessine ; sbn = nouv sommet (setq L1 (entlast) ) (command "_move" L2 "" "_none" pt2 "_none" sbn) ;; deplace 2eme segment (setq pt2 sbn del1 t) ) ;;; progn ) ;;; if (cond ((> d2 dmin) (setq pt3 (trans (cdr (assoc 11 (entget L2))) 0 1)) ;;; retrouve 3eme sommet (if (= dp t) (setq p1 pt3 p0 pt2) (setq p0 pt3 p1 pt2) ) (descoude L1 L2 pt2 lg) ;; pas modif ok ) ((= d2 dmin) (descoude L1 L2 pt2 lg) (entdel L2) (setq p0 nil p1 nil) ;;; arret sur coude ) ((< d2 dmin) ;; modification L2 (if (< d1 lg) (progn (setq pt2 sbn) (setq pt3 (trans (cdr (assoc 11 (entget L2))) 0 1)) (setq d1 lg) ) ) (redefsommet pt2 pt3 d2 dmin) (command "_move" L2 "" "_none" pt3 "_none" sbn) (descoude L1 L2 pt2 d1) (entdel L2) (setq p0 nil p1 nil) ;;; arret sur coude ) ) ) (defun redefsommet (sa sb ab dist / h a za zb z y x b bn hn ap psbn) (setq h (- (caddr sb)(caddr sa))) ;;; hauteur triangle (if (= h 0.0) ;; si parallele plan xy (progn (setq a (angle sa sb)) (setq sbn (polar sa a dist)) ) ;; si vertical suivant axe Z (if (and (= (rtos (car sa) 2 1) (rtos (car sb) 2 1)) ;; probleme de precision avec deplacement ligne (= (rtos (cadr sa) 2 1) (rtos (cadr sb) 2 1)) ) (progn (setq za (caddr sa) zb (caddr sb)) (if (> za zb) (setq z (- za dist)) (setq z (+ za dist)) ) (setq x (car sa) y (cadr sa)) (setq sbn (list x y z)) ;;; nouv sommet b ) ;; orientation quelconque (progn (setq b (sqrt (- (* ab ab) (* h h)))) ;;; base triangle (setq hn (/ (* h dist) ab)) ;;; nouvelle hauteur (setq bn (/ (* b dist) ab)) ;;; nouvelle base (setq ap (angle sa sb)) ;;; angle projeté de ab (setq psbn (polar sa ap bn)) ;;; projection nouv sommet b (setq z (+ (caddr sa) hn)) ;;; z nouv pb (setq x (car psbn)) (setq y (cadr psbn)) (setq sbn (list x y z)) ;;; nouv sommet b ) ) ) ) (defun c:TUY (/ p0 p1 L01 L10 coude mtrim ent eptub ) (diam-t3d) (setq p1 nil dmin nil dminp nil L10 nil del1 nil) (if (not (tblsearch "ltype" "axes2")) (command "_-linetype" "_l" "AXES2" "" "")) (setvar "FILLETRAD" rayo) (setq mtrim (getvar "trimmode"))(setvar "trimmode" 1) (if (not tuy:ep) (setq tuy:ep 0)) (setq p0 "Epaisseur") (while (= p0 "Epaisseur") (initget "Epaisseur") (setq p0 (getpoint (strcat "\nPOINT DE DEPART ,[Epaisseur] = "(rtos tuy:ep 2 4)" :"))) (if (= p0 "Epaisseur") (progn (setq eptub (getdist (strcat "\nEpaisseur tube ou 2 pts <" (rtos tuy:ep 2 4) ">: "))) (if eptub (setq tuy:ep eptub)) ) ) ) (while p0 (if p1 (setq pd p1)) ;;; pd point de depart (setq p1 (getpoint p0 "\nPoint suivant : ")) (if p1 (progn (command "_line" "_none" p0 "_none" p1 "") (setq L01 (entlast) d01 (distance p0 p1) dp t) ;;; dp = dernier point p1 (if l10 ;;; si plusieurs boucles ;;;;;;; (progn (setq b (distance p1 pd)) ;;; b base triangle (deterdmin) (onfekoi L10 L01 pd p0 p1 d10 d01) ) ) (if p0 (setq pd p0)) (if p1 (setq p0 (getpoint p1 "\nPoint suivant : "))) (if p0 (progn (command "_line" "_none" p1 "_none" p0 "") (setq l10 (entlast) d10 (distance p1 p0) dp nil) (setq b (distance p0 pd)) (deterdmin) (onfekoi L01 L10 pd p1 p0 d01 d10) ) ) ) ;;; si p1 nil (progn (if (and l10 p0 ) (tubage l10 p0)) ;; si plusieurs boucles ;;;;;;; (setq p0 nil) ) ) ;;;; fin if p1 ) ;;; fin while (if (and l01 p1)(tubage l01 p1)) ;;;; termine dernier tronçon (setvar "trimmode" mtrim) (princ) ) (defun c:TU (/ sel typent ent pt eptub ) (diam-t3d) (if (not tuy:ep) (setq tuy:ep 0)) (initget "Epaisseur") (while (setq sel (entsel (strcat "\nSélectionner l'AXE du TUBE ,[Epaisseur] = "(rtos tuy:ep 2 4)" :"))) (if (= sel "Epaisseur") (progn (setq eptub (getdist (strcat "\nEpaisseur tube ou 2 pts <" (rtos tuy:ep 2 4) ">: "))) (if eptub (setq tuy:ep eptub)) ) (progn (setq typent (cdr (assoc 0 (entget (setq ent(car sel)))))) (cond ((or (= typent "LINE")(= typent "ARC")(= typent "POLYLINE")(= typent "LWPOLYLINE") (= typent "ELLIPSE")(= typent "CIRCLE")(= typent "SPLINE")(= typent "HELIX") ) (setq pt (cadr sel)) (generetube ent pt) ) ) ) ) ;; if ) (princ) ) (prompt "\n Taper : TUY pour tuyau 3D ou : TU pour tube 3D suivant un axe") (princ) [Edité le 19/8/2008 par usegomme]
(gile) Posté(e) le 6 février 2007 Posté(e) le 6 février 2007 Super ! En faisant des raccords avec 3dPolyFillet, sur une polyligne 3D, on peut ensuite utiliser la commande EXTRUSION (_EXTRUDE) qui fonctionne sur les versions antérieures à 2007. Gilles Chanteau - gileCAD - GitHub Développements sur mesure pour AutoCAD
cdi Posté(e) le 8 février 2007 Posté(e) le 8 février 2007 super, super............. chapeau bas ...........................merci
usegomme Posté(e) le 19 août 2008 Auteur Posté(e) le 19 août 2008 Salut, pour que lisp fonctionne correctement quelque soit la valeur de la variable DELOBJ 0 , 1 ou 2 , j'ai corrigé la fonction "generetube" et la commande " TU ".(avec -2 ce n'est pas correct). (defun generetube (ent pt / circonftuy) (if (or (= tuy:ep nil) (= tuy:ep 0.0)) (progn (command "_circle" "_none" pt ddia ) (if (= 0 (getvar "delobj"))(setq circonftuy (entlast))(setq circonftuy nil)) (command "_sweep" "_L" "" ent) ;; balayage (if circonftuy (entdel circonftuy)) ) (progn (command "_circle" "_none" pt ddia) (if (= 0 (getvar "delobj"))(setq circonftuy (entlast))(setq circonftuy nil)) (command "_sweep" "_L" "" ent) (if (= 2 (getvar "delobj"))(entdel ent)) (if circonftuy (entdel circonftuy)) (setq tubext (entlast)) (command "_circle" "_none" pt (- ddia tuy:ep)) (if (= 0 (getvar "delobj"))(setq circonftuy (entlast))(setq circonftuy nil)) (command "_sweep" "_L" "" ent) (if circonftuy (entdel circonftuy)) (command "_subtract" tubext "" "_L" "") ) ) ) (defun c:TU (/ sel typent ent pt eptub ) (diam-t3d) (if (not tuy:ep) (setq tuy:ep 0)) (initget "Epaisseur") (while (setq sel (entsel (strcat "\nSélectionner l'AXE du TUBE ,[Epaisseur] = "(rtos tuy:ep 2 4)" :"))) (if (= sel "Epaisseur") (progn (setq eptub (getdist (strcat "\nEpaisseur tube ou 2 pts <" (rtos tuy:ep 2 4) ">: "))) (if eptub (setq tuy:ep eptub)) ) (progn (setq typent (cdr (assoc 0 (entget (setq ent(car sel)))))) (cond ((or (= typent "LINE")(= typent "ARC")(= typent "POLYLINE")(= typent "LWPOLYLINE") (= typent "ELLIPSE")(= typent "CIRCLE")(= typent "SPLINE")(= typent "HELIX") ) (setq pt (cadr sel)) (generetube ent pt) ) ) ) ) ;; if ) (princ) )
thry0 Posté(e) le 27 août 2008 Posté(e) le 27 août 2008 Bjr, Super boulot chapeau bas :) Ces Lisps vont bien me servir. Juste une petite chose, une boite de dialogue ne serait pas de refus pour la convivialité et la facilité d'utilisation ...Sans doute plus facile à dire qu'à faire ... :cool: Quoiqu'il en soit merçi encore [Edité le 27/8/2008 par thry0]
usegomme Posté(e) le 28 août 2008 Auteur Posté(e) le 28 août 2008 Salut , j'ai un peu du mal à faire des cases de dialogue , je ne suis qu'un médiocre lispeur.Ceci dit , les diametres et options sont disponibles au bouton droit , ça me semble suffisant.Il est vrai que si tu utilises les épaisseurs de tube , il faut à chaque changement de diametre redéfinir l'épaisseur.Perso je préfère pas ,c'est bien plus simple à mettre en oeuvre , mais je sais qu'ils y en a qui ont besoin de connaitre le poids de la ferraille. Si necessaire , j'ai déjà fait une version qui permet d'avoir des dimensions suivant une norme, mais c'est juste au niveau de la structure du lisp , car je ne me suis pas amusé à rentrer des normes qui ne me servent pas.
thry0 Posté(e) le 28 août 2008 Posté(e) le 28 août 2008 Re, Ben oui le bouton droit ... j' l'avais pas vu !!!J'en prends bonne note :)
thry0 Posté(e) le 28 août 2008 Posté(e) le 28 août 2008 je ne suis qu'un médiocre lispeur. Impayable ce usegomme, j'y crois pas une seconde ... ;)
usegomme Posté(e) le 28 août 2008 Auteur Posté(e) le 28 août 2008 Et pourtant c'est vrai, si tu étais connaisseur tu verrais que je suis à des années-lumières de nos ténors de Cadxp . Je ne suis que dans le registre lispeur-bricoleur , mais c'est tout de même bien pratique. A+
kohen.g Posté(e) le 5 septembre 2008 Posté(e) le 5 septembre 2008 Bonjour,ton lisp tuy est pas mal, mais est ce possible que tu y integre l'ep des tuyaux? et si possible la possibilité de ajouter un calo ou non avec son ep avec ton pgm c'est possible d'extraire le nombre de coude et de donner une nuance et tout ca , merci
usegomme Posté(e) le 7 septembre 2008 Auteur Posté(e) le 7 septembre 2008 Salut , je vois que tes demandes son toujours dans le même état d'esprit. Tu as du mal à comprendre qu'on ne peut pas te faire un logiciel de tuyauterie et comme je l'ai dit juste au dessus , je suis bricoleur, pas programmeur. Dans le lisp ,il y a l'option épaisseur , mais il faut la redéfinir pour chaque changement de diamètre.Sinon il faudra en passer par les normes et définir une épaisseur par diamètre , ça c'est possible.Intégré le calo au lisp serait compliqué , mais il est possible de faire qlq chose à part.A voir selon quelle méthode.Quant au comptage ,il ne faut pas y penser, je ne sais d'ailleurs pas comment faire.
thry0 Posté(e) le 8 septembre 2008 Posté(e) le 8 septembre 2008 Bjr, Sinon il faudra en passer par les normes et définir une épaisseur par diamètre Pour ma part, j'utilise des tubes en pieds pouces etpour un diamètre de tube donné, il peut exister plus d'une cinquantaine d'épaisseur possible ... Bon courage ! ;)
usegomme Posté(e) le 10 décembre 2008 Auteur Posté(e) le 10 décembre 2008 Salut , bon pour répondre à la demande d' etude0 j'ai intégré l' option calorifuge au lisp ,et c'est par son épaisseur que l'on définit sa présence ou non (épaisseur >0 = oui). On peut aussi dessiner le calo seul pour le rajouter sur une tuyauterie soit en sélectionnant un axe ou par 2 points. commande : CALOS Nota: un calque de couleur 9 est créer automatiquement pour le calo. Si le calque courant est "VAPEUR" le calque du calo sera "VAPEUR-CALO". J'ai aussi rajouté l'option : Norme , pour l'instant iln'y en a que 2. Il y a toujours la cde : TU pour dessiner le tuyau en sélectionnant des axes et qui est complétée par la cde : CDT qui joint 2 axes et place un coude. Il ya aussi TSA pour ceux qui ne veulent pas d'axe dans leurs tuyaux .bof! Rappel c'est l'épaisseur donnée au tube qui définie si le tuyau et le calo sont dessinés en creux ou en plein. (une épaisseur négative de tube donne un tube plein et un calo creux). Rappel également, un tuyau dessiné plein s'étire avec les poignées (trés pratique). J'ai été long , aussi j'espère qu'etude0 n'a pas changé de métier entre temps . ;; usegomme 5-2-2007 8-4-2009 version 2.02 ;; Tuyau 3d pour autocad à partir de version 2007 ;; et avec ou sans calorifuge (defun choixnorme () (initget 1 "ISO3D ISO5D") ;;;; bit refus reponse nulle (setq norme (getkword "\nChoisir une Norme [iSO3D/ISO5D] : ") ) ) (Defun getDNtuy( a b d e f g / c) ;(setq c (strcat a d g "<" b ">" e f " ")) (setq c (strcat a d g "<" b ">" " ")) (setq c (getreal c)) ) (defun diam-t3d (/ dn diam) (setq dn "Norme") (if (not norme) (setq norme "ISO3D")) ;; par defaut (if (not epcalo)(setq epcalo 0)) ;; par defaut ;(setq msgdn " DN:") (while (or(= dn "Norme")(= dn "Calo")) (if (> epcalo 0) (setq msgcalo "CALO ep" msgecalo (rtos epcalo 2 0)) (setq msgcalo " Sans" msgecalo " calo") ) (cond ((= norme "ISO3D") (setq msgdn " DN:") (if (and (/= iso3d:dn "Autre")(/= iso3d:dn nil)) (setq dn (rtos iso3d:dn 2 0)) (setq dn "Autre") ) (setq choixdn (strcat "\n" msgcalo msgecalo " " norme " DN[8/10/15/21/20/25/32/40/50/65/80/100/125/150/200/250/300/350/400/450/500/600/Autre/Calo/Norme]") ) ) ((= norme "ISO5D") (setq msgdn " DN:") (if (and (/= iso5d:dn "Autre")(/= iso5d:dn nil)) (setq dn (rtos iso5d:dn 2 0))(setq dn "Autre") ) (setq choixdn (strcat "\n" msgcalo msgecalo " " norme " DN[20/25/32/40/50/65/80/100/125/150/200/250/300/350/Autre/Calo/Norme]") ) ) ) ;; fin cond (initget "Autre Norme Calo") (setq dn (getDNtuy choixdn dn norme msgcalo msgecalo msgdn )) (if (= dn "Norme") (choixnorme)) (if (= dn "Calo") (if (setq epc (getdist (strcat "\nEpaisseur calo ou 2 pts <" (rtos epcalo 2 0) ">: "))) (setq epcalo epc epc nil) ) ) ) ;; while dn= norme (cond ((= norme "ISO3D")(setq surep 0) (cond ((and (/= dn "A") (/= dn nil))(setq iso3d:dn dn)) ((= dn nil) (if iso3d:dn (setq dn iso3d:dn))) ) (cond ((= dn 8) (setq diam 13.5 rayo 20 )) ((= dn 10) (setq diam 17.2 rayo 25 )) ((= dn 15) (setq diam 21.3 rayo 28 )) ;27 ((= dn 21) (setq diam 21.3 rayo 38 )) ; dn15 inox ((= dn 20) (setq diam 26.9 rayo 28.5)) ((= dn 25) (setq diam 33.7 rayo 38)) ((= dn 32) (setq diam 42.4 rayo 47.5)) ((= dn 40) (setq diam 48.3 rayo 57)) ((= dn 50) (setq diam 60.3 rayo 76)) ((= dn 65) (setq diam 76.1 rayo 95)) ((= dn 80) (setq diam 88.9 rayo 114.5)) ((= dn 100)(setq diam 114.3 rayo 152.5)) ((= dn 125) (setq diam 139.7 rayo 190.5)) ((= dn 150) (setq diam 168.3 rayo 228.5)) ((= dn 200) (setq diam 219.1 rayo 305)) ((= dn 250) (setq diam 273 rayo 381)) ((= dn 300) (setq diam 323.9 rayo 457)) ((= dn 350) (setq diam 355.6 rayo 533.5)) ((= dn 400) (setq diam 406.4 rayo 609.5)) ((= dn 450) (setq diam 458 rayo 686)) ((= dn 500) (setq diam 508 rayo 762)) ((= dn 600) (setq diam 610 rayo 914)) (t (autrediametre) ) ) ) ((= norme "ISO5D")(setq surep 0) (cond ((and (/= dn "A") (/= dn nil))(setq iso5d:dn dn)) ((= dn nil) (if iso5d:dn (setq dn iso5d:dn))) ) (cond ((= dn 20) (setq diam 26.9 rayo 57.5)) ((= dn 25) (setq diam 33.7 rayo 72.5)) ((= dn 32) (setq diam 42.4 rayo 92.5)) ((= dn 40) (setq diam 48.3 rayo 109.5)) ((= dn 50) (setq diam 60.3 rayo 137.5)) ((= dn 65) (setq diam 76.1 rayo 175)) ((= dn 80) (setq diam 88.9 rayo 207.5)) ((= dn 100) (setq diam 114.3 rayo 270)) ((= dn 125) (setq diam 139.7 rayo 330)) ((= dn 150) (setq diam 168.3 rayo 390)) ((= dn 200) (setq diam 219.1 rayo 515)) ((= dn 250) (setq diam 273 rayo 650)) ((= dn 300) (setq diam 323.9 rayo 770)) ((= dn 350) (setq diam 355.6 rayo 850)) (t (autrediametre) ) ) ) ) ; fin cond dn suivant norme (setq ddia (/ diam 2)) (if (not (> rayo (+ ddia surep))) (setq rayo (* (+ ddia surep) 1.01))) ) (defun autrediametre () (setq surep 0) (if (not tuy:dia)(if ddia (setq tuy:dia (* ddia 2))(setq tuy:dia 8))) (setq diam (getdist (strcat "\nDiametre Exterieur Tuyauterie ou 2 pts <" (rtos tuy:dia 2 4) ">: "))) (if diam (setq tuy:dia diam) (setq diam tuy:dia)) (if (not tuy:ray)(setq tuy:ray (* diam 1.01))) (setq rayo (getdist (strcat "\nRayon coude ou 2 pts <" (rtos tuy:ray 2 4) ">: "))) (if rayo (setq tuy:ray rayo) (setq rayo tuy:ray)) ) (defun tubage (ent typ / lent) ;change proprietes de l'axe (setq lent (entget ent)) ;; si le code 62 pour la couleur est présent ... (if (assoc 62 lent) ;; ... le remplacer par un nouveau (setq lent (subst (cons 62 6) ;;Nouvelle couleur magenta (assoc 62 lent) lent) ) ;; sinon, en ajouter un (setq lent (append lent (list (cons 62 6)))) ;; magenta ) ;; idem pour type de ligne (if (assoc 6 lent) (setq lent (subst (cons 6 "AXES2") (assoc 62 lent) lent) ) (setq lent (append lent (list (cons 6 "AXES2")))) ) (entmod lent) (setq pt (trans (cdr (assoc 10 (entget ent))) 0 1)) (generetube ent pt typ) ) (defun generetube (ent pt typ / circonftuy) (if (or (= tuy:ep nil) (<= tuy:ep 0.0)) (progn (command "_circle" "_none" pt) (if (= typ 1) (command (+ ddia surep)) (command ddia)) (if (= 0 (getvar "delobj"))(setq circonftuy (entlast))(setq circonftuy nil)) (command "_sweep" "_L" "" ent) ;; balayage (if circonftuy (entdel circonftuy)) (if (> epcalo 0) (progn (if (= 2 (getvar "delobj"))(entdel ent)) (if (= (cdr (assoc 0 (setq lent (entget ent)))) "ARC") (if (> (cdr (assoc 40 lent)) (+ ddia epcalo)) (if (< tuy:ep 0.0)(calocreux ent pt)(caloplein ent pt)) ) (if (< tuy:ep 0.0)(calocreux ent pt)(caloplein ent pt)) ) ) ) ) (progn (command "_circle" "_none" pt) (if (= typ 1) (command (+ ddia surep)) (command ddia)) (if (= 0 (getvar "delobj"))(setq circonftuy (entlast))(setq circonftuy nil)) (command "_sweep" "_L" "" ent) (if (= 2 (getvar "delobj"))(entdel ent)) (if circonftuy (entdel circonftuy)) (setq tubext (entlast)) (command "_circle" "_none" pt (- ddia tuy:ep)) (if (= 0 (getvar "delobj"))(setq circonftuy (entlast))(setq circonftuy nil)) (command "_sweep" "_L" "" ent) (if circonftuy (entdel circonftuy)) (command "_subtract" tubext "" "_L" "") (if (> epcalo 0) (progn (if (= 2 (getvar "delobj"))(entdel ent)) (if (= (cdr (assoc 0 (setq lent (entget ent)))) "ARC") (if (> (cdr (assoc 40 lent)) (+ ddia epcalo))(calocreux ent pt)) (calocreux ent pt) ) ) ) ) ) ) (defun caloplein (ent pt / circonftuy calo) (command "_circle" "_none" pt(+ ddia epcalo)) (if (= 0 (getvar "delobj"))(setq circonftuy (entlast))(setq circonftuy nil)) (command "_sweep" "_L" "" ent) ;; balayage (setq calo (entlast)) (if circonftuy (entdel circonftuy)) (command "_change" calo "" "_p" "_layer" calqcalo "") ) (defun calocreux (ent pt / circonftuy calo) (command "_circle" "_none" pt(+ ddia epcalo)) (if (= 0 (getvar "delobj"))(setq circonftuy (entlast))(setq circonftuy nil)) (command "_sweep" "_L" "" ent) ;; balayage (if (= 2 (getvar "delobj"))(entdel ent)) (if circonftuy (entdel circonftuy)) (setq tubext (entlast)) (command "_circle" "_none" pt ddia) (if (= 0 (getvar "delobj"))(setq circonftuy (entlast))(setq circonftuy nil)) (command "_sweep" "_L" "" ent) (if circonftuy (entdel circonftuy)) (command "_subtract" tubext "" "_L" "") (setq calo (entlast)) (command "_change" calo "" "_p" "_layer" calqcalo "") ) (defun descoude ( L1 L2 pt long) (command "_fillet" L1 L2) (setq coude (entlast)) (if (or del1 (if dminp (= (- long dminp) dmin) (= long dmin))) (entdel L1) (tubage L1 lg) ) (setq del1 nil) (tubage coude cd) ) (defun deterdmin ( / a a90 p) ;; determine la distance mini pour placer un coude (if dmin (setq dminp dmin)) ;;; dminp = dmin du coude precedent (if (= b (+ d01 d10)) (setq a180 t) (setq a180 nil)) ;; si angle 180 pas de coude mais prolongement (if (or (= d01 (+ b d10)) (= d10 (+ b d01))) (setq a0 t) (setq a0 nil) ;; si angle 0 pas possible alors arret ) (if (= (* b b) (+ (* d01 d01) (* d10 d10))) ;; si angle 90 dmin = rayon (setq a90 t dmin rayo) (setq a90 nil) ) (if (and (not a0) (not a90)(not a180)) ;;; si autre alors calcul (progn (setq p (/ (+ d01 d10 b) 2)) ;;; p=1/2 perimetre (setq a (abs (atan (sqrt (/ (* (- p d01)(- p d10)) (* p (- p b))))))) ;; 1/2 angle (setq dmin (* (cos a) (/ rayo (sin a)))) ) ) ) (defun onfekoi (L1 L2 pt1 pt2 pt3 d1 d2) (cond (a180 (tubage L1 lg)) (a0 (tubage L1 lg) (entdel L2) (setq p0 nil p1 nil)) ((and (not a0) (not a180)) (if (> rayo 0) (cond ((and (if dminp (>= (- d1 dminp) dmin) (>= d1 dmin)) (>= d2 dmin) ) (descoude L1 L2 pt2 d1) ) ((or (if dminp (< (- d1 dminp) dmin) (< d1 dmin)) (< d2 dmin) ) (correction L1 L2 pt1 pt2 pt3 d1 d2) ) ) (tubage L1 lg) ;;; si rayon 0 pas de raccordement ) ) ) ) (defun correction (L1 L2 pt1 pt2 pt3 d1 d2) (setq lg (if dminp (+ dmin dminp) dmin)) (if (< d1 lg) (progn (setq pt1 (trans (cdr (assoc 10 (entget L1))) 0 1)) (redefsommet pt1 pt2 d1 dmin) (entdel L1) (command "_line" "_none" pt1 "_none" sbn "") (setq L1 (entlast) ) (command "_move" L2 "" "_none" pt2 "_none" sbn) (setq pt2 sbn del1 t) ) ;;; progn ) ;;; if (cond ((> d2 dmin) (setq pt3 (trans (cdr (assoc 11 (entget L2))) 0 1)) (if (= dp t) (setq p1 pt3 p0 pt2) (setq p0 pt3 p1 pt2) ) (descoude L1 L2 pt2 lg) ;; pas modif ok ) ((= d2 dmin) (descoude L1 L2 pt2 lg) (entdel L2) (setq p0 nil p1 nil) ;;; arret sur coude ) ((< d2 dmin) ;; modification L2 (if (< d1 lg) (progn (setq pt2 sbn) (setq pt3 (trans (cdr (assoc 11 (entget L2))) 0 1)) (setq d1 lg) ) ) (redefsommet pt2 pt3 d2 dmin) (command "_move" L2 "" "_none" pt3 "_none" sbn) (descoude L1 L2 pt2 d1) (entdel L2) (setq p0 nil p1 nil) ;;; arret sur coude ) ) ) (defun redefsommet (sa sb ab dist / h a za zb z y x b bn hn ap psbn) (setq h (- (caddr sb)(caddr sa))) ;;; hauteur triangle (if (= h 0.0) ;; si parallele plan xy (progn (setq a (angle sa sb)) (setq sbn (polar sa a dist)) ) ;; si vertical suivant axe Z (if (and (= (rtos (car sa) 2 1) (rtos (car sb) 2 1)) ;; probleme de precision avec deplacement ligne (= (rtos (cadr sa) 2 1) (rtos (cadr sb) 2 1)) ) (progn (setq za (caddr sa) zb (caddr sb)) (if (> za zb) (setq z (- za dist)) (setq z (+ za dist)) ) (setq x (car sa) y (cadr sa)) (setq sbn (list x y z)) ;;; nouv sommet b ) ;; orientation quelconque (progn (setq b (sqrt (- (* ab ab) (* h h)))) ;;; base triangle (setq hn (/ (* h dist) ab)) ;;; nouvelle hauteur (setq bn (/ (* b dist) ab)) ;;; nouvelle base (setq ap (angle sa sb)) ;;; angle projeté de ab (setq psbn (polar sa ap bn)) ;;; projection nouv sommet b (setq z (+ (caddr sa) hn)) ;;; z nouv pb (setq x (car psbn)) (setq y (cadr psbn)) (setq sbn (list x y z)) ;;; nouv sommet b ) ) ) ) (defun creercalqueCALO ();creer calque pour calorifuge (setq calqcalo (strcat (getvar "clayer") "-CALO")) (if (not (tblsearch "layer" calqcalo)) ; s'il n'existe pas le calque est créé avec la couleur 9 (command "_-layer" "_n" calqcalo "_co" "9" calqcalo "") ) ) (defun c:TUY (/ p0 p1 L01 L10 coude mtrim ent eptub) (diam-t3d) (setq p1 nil dmin nil dminp nil L10 nil del1 nil cd 1 lg 0) (if (not (tblsearch "ltype" "axes2")) (command "_-linetype" "_l" "AXES2" "" "")) (if (> epcalo 0)(creercalquecalo)) (setvar "FILLETRAD" rayo) (setq mtrim (getvar "trimmode"))(setvar "trimmode" 1) (if (not tuy:ep) (setq tuy:ep 0)) (setq p0 "Epaisseur") (while (= p0 "Epaisseur") (initget "Epaisseur") (setq p0 (getpoint (strcat "\nPOINT DE DEPART ou = "(rtos tuy:ep 2 4)" :"))) (if (not p0) (setq p0 "Epaisseur")) (if (= p0 "Epaisseur") (progn (setq eptub (getdist (strcat "\nEpaisseur tube ou 2 pts <" (rtos tuy:ep 2 4) ">: "))) (if eptub (if (< eptub ddia)(setq tuy:ep eptub))) ) ) ) (while p0 (if p1 (setq pd p1)) ;;; pd point de depart (setq p1 (getpoint p0 "\nPoint suivant : ")) (if p1 (progn (command "_line" "_none" p0 "_none" p1 "") (setq L01 (entlast) d01 (distance p0 p1) dp t) ;;; dp = dernier point p1 (if l10 ;;; si plusieurs boucles ;;;;;;; (progn (setq b (distance p1 pd)) ;;; b base triangle (deterdmin) (onfekoi L10 L01 pd p0 p1 d10 d01) ) ) (if p0 (setq pd p0)) (if p1 (setq p0 (getpoint p1 "\nPoint suivant : "))) (if p0 (progn (command "_line" "_none" p1 "_none" p0 "") (setq l10 (entlast) d10 (distance p1 p0) dp nil) (setq b (distance p0 pd)) (deterdmin) (onfekoi L01 L10 pd p1 p0 d01 d10) ) ) ) ;;; si p1 nil (progn (if (and l10 p0 ) (tubage l10 lg)) ;; si plusieurs boucles ;;;;;;; (setq p0 nil) ) ) ;;;; fin if p1 ) ;;; fin while (if (and l01 p1)(tubage l01 lg)) ;;;; termine dernier tronçon (setvar "trimmode" mtrim) (princ) ) ;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;; (defun c:cdt (/ lo ) ;; pour raccorder 2 axes et tracer un coude de tuy. (diam-t3d) (if (> epcalo 0)(creercalquecalo)) (setq mtrim (getvar "trimmode")) (setvar "FILLETRAD" rayo) (setvar "trimmode" 1) (setq lo (entlast)) (command "_fillet") (while (not (zerop (getvar "cmdactive")))(command pause)) (cond ((not (equal lo (setq coude (entlast)))) (setq pt (trans (cdr (assoc 10 (entget coude))) 0 1)) (generetube coude pt 1) ) ) (while (not (equal coude (setq lo (entlast)))) (command "_fillet") (while (not (zerop (getvar "cmdactive")))(command pause)) (cond ((not (equal lo (setq coude (entlast)))) (setq pt (trans (cdr (assoc 10 (entget coude))) 0 1)) (generetube coude pt 1) ) ) ) (setvar "trimmode" mtrim) (princ) ) ;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;; ;; calo seul ;; Pour ne tracer que le calorige par sélection de l'axe ou par deux points (defun c:calos (/ sel typent ent pt eptub axetemp rep) (diam-t3d) (while (or (>= 0 epcalo)(not epcalo)) (setq epcalo (getdist "\nEpaisseur calorifuge ou 2 pts : ")) ) (creercalquecalo) (if(= tuy:ep nil) ; si utilisation avant lisp tuy (progn (initget "Creux Plein") (setq rep (getstring "\n Calo dessiné [/Creux]:")) (if (or (= rep "")(= rep "Plein")) (setq tuy:ep 0.0) (setq tuy:ep -1)) ) ) (setq sel t) (while sel (setq sel (entsel "\nSélectionner l'AXE du TUBE ou par < 2 Points> :")) (if (not sel) (progn (setq sel t) (setq p1 (getpoint "\nPoint de départ : ")) (if p1 (setq p2 (getpoint p1 "\nPoint final : "))) (if (and p1 p2) (progn (command "_line" "_none" p1 "_none" p2 "") (setq axetemp (entlast))(setq pt (trans (cdr (assoc 10 (entget axetemp))) 0 1)) (if (or (= tuy:ep nil) (= tuy:ep 0.0)) (caloplein axetemp pt ) (calocreux axetemp pt ) ) (if (/= 2 (getvar "delobj"))(entdel axetemp)) ) (setq sel nil) ) ) (progn (setq typent (cdr (assoc 0 (entget (setq ent(car sel)))))) (cond ((or (= typent "LINE")(= typent "ARC")(= typent "POLYLINE")(= typent "LWPOLYLINE") (= typent "ELLIPSE")(= typent "CIRCLE")(= typent "SPLINE")(= typent "HELIX") ) (setq pt (cadr sel)) (if (or (= tuy:ep nil) (= tuy:ep 0.0)) (progn (if (> epcalo 0) (progn (if (= (cdr (assoc 0 (setq lent (entget ent)))) "ARC") (if (> (cdr (assoc 40 lent)) (+ ddia epcalo))(caloplein ent pt)) (caloplein ent pt) ) ) ) ) (progn (if (> epcalo 0) (progn (if (= (cdr (assoc 0 (setq lent (entget ent)))) "ARC") (if (> (cdr (assoc 40 lent)) (+ ddia epcalo))(calocreux ent pt)) (calocreux ent pt) ) ) ) ) ) ) ) ) ) ;; if ) (princ) ) ;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;; ;;; génère le tuyau à partir de l'axe sélectionné (defun c:TU (/ sel typent ent pt eptub ) (diam-t3d) (if (> epcalo 0)(creercalquecalo)) (if (not tuy:ep) (setq tuy:ep 0)) (initget "Epaisseur") (while (setq sel (entsel (strcat "\nSélectionner l'AXE du TUBE ou E,[Epaisseur] = "(rtos tuy:ep 2 4)" :"))) (if (= sel "Epaisseur") (progn (setq eptub (getdist (strcat "\nEpaisseur tube ou 2 pts <" (rtos tuy:ep 2 4) ">: "))) (if eptub (if (< eptub ddia)(setq tuy:ep eptub))) ) (progn (setq typent (cdr (assoc 0 (entget (setq ent(car sel)))))) (cond ((or (= typent "LINE")(= typent "ARC")(= typent "POLYLINE")(= typent "LWPOLYLINE") (= typent "ELLIPSE")(= typent "CIRCLE")(= typent "SPLINE")(= typent "HELIX") ) (setq pt (cadr sel)) (generetube ent pt nil) ) ) ) ) ;; if ) (princ) ) ;;;;;;;;;;;;;;;;;;;;;;; TSA tuyau sans axe (defun erreurtsa (msg) (setvar "delobj" delobjet) (setq *error* m:err m:err nil) (princ) ) (defun c:tsa () (setq m:err *error* *error* erreurtsa) (setq delobjet (getvar "delobj")) (setvar "delobj" 2) (c:tuy) (setvar "delobj" delobjet) (setq *error* m:err m:err nil) (princ) ) ;;;;;;;;;;;;;;;;;;;;;;;;;;;;; (prompt "\nCommandes dispo: TUY tuyau 3D,TSA sans axe,TU depuis axe,CDT coude,CALOS seul") (princ) [Edité le 12/1/2009 par usegomme] [Edité le 8/4/2009 par usegomme]
kohen.g Posté(e) le 10 décembre 2008 Posté(e) le 10 décembre 2008 bonsoir , Franchement Usergomme tu te dit que t'es bricoleur eh ben, chapeau bas mon grand Pour info sur le forum tu as mis plusieurs Lisp?
kohen.g Posté(e) le 10 décembre 2008 Posté(e) le 10 décembre 2008 Petite info est ce possible que lorsque tu étires ton tube ton axe suit ton tuyau?Avec ton Lisp ce n'est pas possible de faire des réduction pense tu que tu serais capable? pour rendre ton lisp encore plus intelligent il serait sympa d'intégrer des attributs modifiableNuance Norme Ect:Ex si tu traces une polyligne avec 2 coudes qu'il te dise par ex coude type 3D90° Qté 2x Nuance AE250B et qu'il te sorte le débit matière tube - 2 rayons de coude Et la tu sera digne d'elaborer ton Pgm de tuyauterie Tout ce que je peux faire pour t'aider c'est de te donner des élements en 3D Bloc avec atribut Et sinon encore un grand Merci tout fonctionne tres bien
Patrick_35 Posté(e) le 11 décembre 2008 Posté(e) le 11 décembre 2008 Bonjour Je pense que ce sujet devrait vous intéresser. @+ Les Lisps de PatrickLe but n'est pas toujours placé pour être atteint, mais pour servir de point de mire.Joseph Joubert, 1754-1824
kohen.g Posté(e) le 11 décembre 2008 Posté(e) le 11 décembre 2008 Merci , c'est pas mal sauf est ce possible de le faire en 3D et surtout esst ce que c'est fiable tout ceci et comment peux t'on le télécharger
Patrick_35 Posté(e) le 11 décembre 2008 Posté(e) le 11 décembre 2008 Re Tu as le lien pour le lisp à coté du trombone en bas du message, ou les autres en bleu dans le corps dudit message.J'ai juste donné l'info car je pense qu'elle pourrait vous être utile. Pour ce qui concerne son utilisation, étant incompétent dans la matière, le plus simple est de s'adresser à son auteur, ou de continuer sur le post du lien que j'ai indiqué. @+ Les Lisps de PatrickLe but n'est pas toujours placé pour être atteint, mais pour servir de point de mire.Joseph Joubert, 1754-1824
usegomme Posté(e) le 11 décembre 2008 Auteur Posté(e) le 11 décembre 2008 Pas de doute , ils sont fort les programmeurs, il me faudrait pouvoir télécharger un peu de leurs méninges pour faire tout ce que tu veux , etude0. Pour l'instant j' avance à petits pas de bricoleur et je ne sais pas ce que je peux arriver à faire . D'autre part mon lisp n'utilise pas de bloc et je ne connais absoluement rien aux informationsintelligentes pouvant être liées aux entités. Pour étirer manuellement axe et tube en même temps ,il faut le faire avec les poignées mais à condition que le tube soit dessiné plein. D'autre part j'ai peu de lisp sur cadxp , car c'est déjà trés bien fourni par nos excellents lispeurs comme Patrick_35 par exemple, et que j'ai bien du mal à amener qlq chose d'intéressant, d'autant que je n'ai pas leur niveau et qu' ayant arrêté le lisp pendant plusieurs années mes lisps sont devenus + ou - obsolete avec l'évolution d'autocad , ou souvent ils sont liés au menu et spécifiques et donc difficile à partager sans un travail d'adaptation qui prend beaucoup de temps.
kohen.g Posté(e) le 8 janvier 2009 Posté(e) le 8 janvier 2009 Bonjour,dite moi est ce possible de faire le meme lisp que usegomme mais à la place de coude 3D90° ou 5D 90° de mettre des coude à souder type SW pour ce qui ne save pas ce que c'est ci joint le lien:http://www.tracepartsonline.net/(S(iij03or4e5miihzild2mhm45))/global/part.aspx?PartID=10-05112008-078955 Nota seul les coudes à 90° et 45° existe merci @+
TECNO_arte Posté(e) le 9 janvier 2009 Posté(e) le 9 janvier 2009 Bonjour et bravo à Usegomme pour son application sur le tracé de tuyauterie en 3D. C'est clair, bien écrit et surtout, ça marche.Moi-même étant bricoleur lisp depuis assez longtemps, je me propose de compléter le programme en y ajoutant des boîtes de dialogue.Si cela interesse qqun de faire évoluer cette belle application, je suis partant.Bien cordialement, TECNO arte
kohen.g Posté(e) le 9 janvier 2009 Posté(e) le 9 janvier 2009 Bonjour,Quel genre de boite de dialogue?
usegomme Posté(e) le 10 janvier 2009 Auteur Posté(e) le 10 janvier 2009 Salut TECNO_arte Pourquoi pas la boite de dialogue ! Si tu peux faire qlq chose de pratique . Comme je maitrise mal la question, c'est à toi de voir , mais ça peut être très intéressant.A+
TECNO_arte Posté(e) le 16 janvier 2009 Posté(e) le 16 janvier 2009 Une boite de dialogue qui permet de cocher des cases, de choisir dans une liste avec sa souris plutôt que de se servir de son clavier pour écrire des options. Améliorer l'ergonomie comme on dit. Je m'y mets dès que j'ai un peit moment. A+.
TECNO_arte Posté(e) le 2 février 2009 Posté(e) le 2 février 2009 Bonjour, Pour un exemple de boites de dialogue, tu peux aller voir sur mon site ici: http://sites.google.com/site/tecnoarte69/ A+
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