bonjour Usegomme Serait it possible de faire une version modifiée des lisps de creation de reductions Inox et Acier en 2D au lieu de 3D ??? Vu que Cadxp est une mine d'or d'informations et d'outils ... J'en profite pour apporter ma contribution en fournissant un lisp de creation de tuyauterie 2D qui fonctionne parfaitement. Ci-joint, également, les bouts de code à ajouter au fichier MNU.
(defun ertuyau (ch)
(setvar "snapang" res)
(setq res nil pt nil pd nil pti nil ang nil sommets nil lang nil
i1 nil i2 nil point1 nil rayo nil ddia nil ent1 nil angp90 nil
angm90 nil pd1 nil pd2 nil dn nil pa nil pb nil pc nil paa nil
pbb nil pcc nil ang2 nil ang1 nil
)
(setvar "cmdecho" 1)
(setq *error* m:err m:err nil)
(princ)
)
(defun soudure ()
(setq i2 1)
(repeat (- (length sommets) 2)
(setq pt0 (nth i2 sommets))
(setq ang1 (nth i2 lang))
(setq ang1 (- ang1 pi))
(setq ang2 (nth (1+ i2) lang))
(if (> ang1 ang2) (progn (setq angt (- ang1 ang2)))
(progn (setq angt (- ang2 ang1)))
)
(if (> angt pi) (progn (setq angt (- (* 2 pi) angt))))
(if (= (abs angt) pi) (setq long rayo)
(progn
(setq dang (/ (abs angt) 2 ))
(setq long (* (cos dang) (/ rayo (sin dang))))
)
)
(setq pa (polar pt0 ang1 long))
(setq pb (polar pa (+ ang1 (/ pi 2)) ddia))
(setq pc (polar pb (- ang1 (/ pi 2)) (* ddia 2)))
(setq paa (polar pt0 ang2 long))
(setq pbb (polar paa (+ ang2 (/ pi 2)) ddia))
(setq pcc (polar pbb (- ang2 (/ pi 2)) (* ddia 2)))
(command "ligne" pb pc "" )
(command "ligne" pbb pcc "")
(setq i2 (1+ i2))
)
)
(defun diametre ()
(menucmd "p13=GEN_PIPING.p13Tuyau")
(menucmd "P13=*")
(prompt "\n ")
(prompt "\n ")
(setq dn (getint "\n CHOISISSEZ UN DIAMETRE A L'ECRAN :"))
(prompt "\n ")
(prompt "\n ")
(cond
( (= dn 15) (progn (setq ddia 10.65 rayo 28)))
( (= dn 20) (progn (setq ddia 13.35 rayo 28)))
( (= dn 25) (progn (setq ddia 16.7 rayo 38)))
( (= dn 32) (progn (setq ddia 21.1 rayo 47)))
( (= dn 40) (progn (setq ddia 24.15 rayo 57)))
( (= dn 50) (progn (setq ddia 30.15 rayo 76)))
( (= dn 65) (progn (setq ddia 36.5 rayo 95)))
( (= dn 80) (progn (setq ddia 44.45 rayo 114)))
( (= dn 100) (progn (setq ddia 57.15 rayo 152)))
( (= dn 125) (progn (setq ddia 70.65 rayo 190)))
( (= dn 150) (progn (setq ddia 84.15 rayo 228)))
( (= dn 200) (progn (setq ddia 109.55 rayo 305)))
( (= dn 250) (progn (setq ddia 136.5 rayo 381)))
( (= dn 300) (progn (setq ddia 161.9 rayo 457)))
( (= dn 350) (progn (setq ddia 177.8 rayo 533)))
( (= dn 400) (progn (setq ddia 203.2 rayo 609)))
( (= dn 450) (progn (setq ddia 228.5 rayo 686)))
( (= dn 500) (progn (setq ddia 254 rayo 762)))
( (= dn 600) (progn (setq ddia 304.8 rayo 914)))
( T (progn
(setq dn (getdist "\n Diametre Exterieur Tuyauterie ou 2 pts : "))
(setq dia dn)
(setq ddia (/ dia 2))
(setq rayo (getdist "\n Rayon coude ou 2 pts : "))
)
)
)
)
(defun c:TUYAU ()
(setq m:err *error*)
(setq *error* ertuyau)
(setvar "cmdecho" 0)
(setq res (getvar "snapang"))
(diametre)
(while
(setq
pt (getpoint "\n POINT DE DEPART DE LA TUYAUTERIE : ")
pd pt
pti pt
ang 0
sommets (list pt)
lang (list ang)
)
(while (setq pt (getpoint pti "\n POINT SUIVANT : "))
(grdraw pti pt 2)
(setq ang (angle pti pt))
(setq sommets (append sommets (list pt)))
(setq lang (append lang (list ang)))
(setq pti pt )
)
(command "polylign" pd "LA" 0 0)
(setq i1 1)
(repeat (- (length sommets) 1)
(setq point1 (nth i1 sommets))
(command point1)
(setq i1 (1+ i1))
)
(command )
(setq ent1 (entlast))
(command "raccord" "r" rayo)
(command "raccord" "p" ent1)
(setq angp90 (+ ang (/ pi 2)))
(setq angm90 (- ang (/ pi 2)))
(setq pd1 (polar pti angp90 ddia))
(setq pd2 (polar pti angm90 ddia))
(command "decaler" "p" pti pd1 "")
(setq ent2 (entlast))
(command "decaler" "p" pti pd2 "")
(setq ent3 (entlast))
(command "changer" ent1 "" "pr" "t" "axes" "")
(command "changer" ent1 "" "pr" "t" "axes" "co" "7" "")
(command "decompos" ent1)
(command "decompos" ent2)
(command "decompos" ent3)
(soudure)
(command "REDESS")
)
(ertuyau)
)
(prompt "\nLancement du programme, taper : TUYAU \n")
(prin1)
et voici les lignes à ajouter au fichier MNU
***MENUGROUP=PIPING
***pop13
**p13tuyau
[ =Tubes ACIER/INOX= ]
[~--]
[DN 15 - 1/2" ]15
[DN 20 - 3/4" ]20
[DN 25 - 1" ]25
[DN 32 - 1"1/4 ]32
[DN 40 - 1"1/2 ]40
[DN 50 - 2" ]50
[DN 65 - 2"1/2 ]65
[DN 80 - 3" ]80
[DN 100 - 4" ]100
[DN 125 - 5" ]125
[DN 150 - 6" ]150
[DN 200 - 8" ]200
[DN 250 - 10" ]250
[DN 300 - 12" ]300
[DN 350 - 14" ]350
[DN 400 - 16" ]400
[DN 450 - 18" ]450
[DN 500 - 20" ]500
[DN 600 - 24" ]600
[--]
***TOOLBARS
**TUYAUTERIE
[_Toolbar("Tuyauterie", _Right, _Show, 1, 1, 1)]
ID_ [_Button("LISP TUYAU", "tuyau.bmp", "ICON_32_BLANK")]^C^C(load "tuyau") Tuyau
Pour info, il vaut mieux désactiver l'accrochage aux objets avant d'utiliser le lisp. Bonne continuation !