Dilack33 Posté(e) le 8 février 2023 Partager Posté(e) le 8 février 2023 Bonjour à tous, Je cherche à calculer le périmètre et section mouillé d'un cadre en prenant en compte les goussets (chanfreins) suivant la figure suivante, dans un tableau Excel. En section pleine pas de problème, par contre avec un taux de remplissage correspondant au fil rouge j'ai beau tourné les formules dans tous les sens j'ai rien probant. Même en décomposant ... Les élément connus sont: la longueur L la hauteur h les goussets a Merci d'avance pour vos lumières Lien vers le commentaire Partager sur d’autres sites More sharing options...
lili2006 Posté(e) le 8 février 2023 Partager Posté(e) le 8 février 2023 Bonjour à toutes et tous, Et pourquoi ne pas passer par les règles de trois ? à 100 % => tel périmétre et volume => (a) à 90 % => 0.9 x (a) Civil 3D 2025 - COVADIS_18.3b https://www.linkedin...3%ABt-95313341/ Lien vers le commentaire Partager sur d’autres sites More sharing options...
Dilack33 Posté(e) le 8 février 2023 Auteur Partager Posté(e) le 8 février 2023 Salut Lilian, ce qui me pose problème c'est les goussets (chanfrein) suivant les dimension des cadre ils sont variables Lien vers le commentaire Partager sur d’autres sites More sharing options...
je56 Posté(e) le 8 février 2023 Partager Posté(e) le 8 février 2023 pour ma part, je serais passé par une fonction si. pour déterminer si le gousset supérieur est impacté par le taux de remplissage. je m'explique: si le niveau est inferieur à h-a alors c'est facile. par contre, si % est superieur à h-a alors il faut calculer les surfaces et perimetre en fonction du gousset (pas compliqué non plus). cela fait donc 2 formules 😉 Eric Lien vers le commentaire Partager sur d’autres sites More sharing options...
Dilack33 Posté(e) le 8 février 2023 Auteur Partager Posté(e) le 8 février 2023 .... Lien vers le commentaire Partager sur d’autres sites More sharing options...
bonuscad Posté(e) le 8 février 2023 Partager Posté(e) le 8 février 2023 Bonjour, Je suis pas de la partie, mais une fois (en 2010) j'avais répondu à une question similaire, mais je n'avais jamais eu de retour... Est ce que cela pourrait te servir? Cela fonctionne avec des LWPOLYLINE,SPLINE,ELLIPSE,CIRCLE,ARC et cela retourne: Demande : Coefficient de Manning et la pente Périmètre mouillé Surface mouillée Rayon hydraulique Débit hydraulique en m3/s (vl-load-com) (defun l-coor2l-pt (lst flag / ) (if lst (cons (list (car lst) (cadr lst) (if flag (caddr lst) 0.0)) (l-coor2l-pt (if flag (cdddr lst) (cddr lst)) flag) ) ) ) (defun c:perim_mouille ( / js ename obj l_dxf coeff_manning percent key pth hand_lin dxf_ent lst_pt first_pt secnd_pt lst_pt perim_wet area_wet hydraulic_ray q_deb_Manning) (setq key nil pth nil hand_lin nil) (princ "\nSélectionner le périmètre de la canalisation.") (while (null (setq js (ssget "_+.:E:S" '((0 . "LWPOLYLINE,SPLINE,ELLIPSE,CIRCLE,ARC"))))) (princ "\nCe n'est pas un objet valable!") ) (setq ename (ssname js 0) obj (vlax-ename->vla-object ename) l_dxf (entget ename) ) (foreach n l_dxf (if (member (car n) '(-1 -2 5 330)) (setq l_dxf (vl-remove n l_dxf)) ) ) (initget 6) (setq coeff_manning (getreal "\Coefficient de Manning? <0.015>: ")) (if (not coeff_manning) (setq coeff_manning 0.015)) (setq percent (getreal "\nEntrer la valeur de la pente en % ?<3%>: ")) (if (not percent) (setq percent 3.0)) (setq percent (/ (abs percent) 100.0)) (princ "\nSpécifiez un point de hauteur d'eau à l'intérieur de la canalisation: ") (while (and (setq key (grread T 4 0)) (/= (car key) 3)) (cond ((eq (car key) 5) (if hand_lin (entdel (handent hand_lin))) (setq pth (trans (cadr key) 1 0)) (entmake (append '( (0 . "LINE") (100 . "AcDbEntity") ) (if (eq (getvar "CTAB") "Model") '((67 . 0)) '((67 . 1))) (list (cons 410 (getvar "CTAB"))) (list (cons 8 (getvar "CLAYER"))) '( (62 . 256) (6 . "ByLayer") (370 . -2) (100 . "AcDbLine") ) (list (cons 10 pth)) (list (cons 11 (polar pth 0.0 1.0))) '((210 0.0 0.0 1.0)) ) ) (setq dxf_ent (entget (entlast)) hand_lin (cdr (assoc 5 dxf_ent))) (if (and (setq lst_pt (l-coor2l-pt (vlax-invoke (vlax-ename->vla-object (entlast)) 'IntersectWith obj acExtendThisEntity ) T ) ) (eq (length lst_pt) 2) ) (progn (entmod (setq dxf_ent (subst (cons 11 (cadr lst_pt)) (assoc 11 dxf_ent) (setq dxf_ent (subst (cons 10 (car lst_pt)) (assoc 10 dxf_ent) dxf_ent)) ) ) ) (setq first_pt (vlax-curve-getparamatpoint obj (car lst_pt)) secnd_pt (vlax-curve-getparamatpoint obj (cadr lst_pt))) (if (> (cadr (vlax-curve-getpointatparam obj (vlax-curve-getEndParam obj))) (cadr pth)) (setq perim_wet (abs (- (vlax-curve-getDistAtParam obj first_pt) (vlax-curve-getDistAtParam obj secnd_pt)))) (setq perim_wet (+ (- (vlax-curve-getDistAtParam obj (vlax-curve-getEndParam obj)) (vlax-curve-getDistAtParam obj (max first_pt secnd_pt))) (vlax-curve-getDistAtParam obj (min first_pt secnd_pt)) ) ) ) (grtext -1 (strcat "Périmètre mouillé = " (rtos perim_wet 2 2))) ) (progn (setq perim_wet nil) (grtext)) ) ) (T (grtext "")) ) ) (grtext) (if perim_wet (progn (cond ((eq (vla-get-objectname obj) "AcDbEllipse") (entmake l_dxf) (if (> (cadr pth) (caddr (assoc 10 l_dxf))) (progn (vla-put-EndParameter obj (- secnd_pt (* 2 pi))) (vla-put-StartParameter obj first_pt) ) (progn (vla-put-EndParameter obj first_pt) (vla-put-StartParameter obj secnd_pt) ) ) ) ((eq (vla-get-objectname obj) "AcDbArc") (entmake l_dxf) (if (> (cadr pth) (caddr (assoc 10 l_dxf))) (progn (vla-put-StartAngle obj (angle (cdr (assoc 10 l_dxf)) (vlax-curve-getpointatparam obj first_pt))) (vla-put-EndAngle obj (angle (cdr (assoc 10 l_dxf)) (vlax-curve-getpointatparam obj secnd_pt))) ) (progn (vla-put-StartAngle obj (angle (cdr (assoc 10 l_dxf)) (vlax-curve-getpointatparam obj secnd_pt))) (vla-put-EndAngle obj (angle (cdr (assoc 10 l_dxf)) (vlax-curve-getpointatparam obj first_pt))) ) ) ) ((eq (vla-get-objectname obj) "AcDbCircle") (setq l_dxf (append (subst '(0 . "ARC") (assoc 0 l_dxf) l_dxf) (if (> (cadr pth) (caddr (assoc 10 l_dxf))) (list (cons 100 "AcDbArc") (cons 50 (angle (cdr (assoc 10 l_dxf)) (vlax-curve-getpointatparam obj first_pt))) (cons 51 (angle (cdr (assoc 10 l_dxf)) (vlax-curve-getpointatparam obj secnd_pt))) ) (list (cons 100 "AcDbArc") (cons 50 (angle (cdr (assoc 10 l_dxf)) (vlax-curve-getpointatparam obj secnd_pt))) (cons 51 (angle (cdr (assoc 10 l_dxf)) (vlax-curve-getpointatparam obj first_pt))) ) ) ) ) (entmake l_dxf) (setq obj (vlax-ename->vla-object (entlast))) ) ((eq (vla-get-objectname obj) "AcDbPolyline") (setq lst_pt (l-coor2l-pt (vlax-get obj 'Coordinates) nil)) ; (setq lst_pt (l-coor2l-pt (vlax-safearray->list (vlax-variant-value (vla-get-Coordinates obj))) nil)) (vla-addVertex obj (1+ (fix first_pt)) (vlax-make-variant (vlax-safearray-fill (vlax-make-safearray vlax-vbdouble (cons 0 1)) (list (car (trans (vlax-curve-getpointatparam obj first_pt) 0 ename)) (cadr (trans (vlax-curve-getpointatparam obj first_pt) 0 ename)) ) ) ) ) (setq bulg (vla-GetBulge obj (fix first_pt))) (vla-SetBulge obj (fix first_pt) (/ (sin (/ (* 4 (atan bulg) (- first_pt (fix first_pt))) 4)) (cos (/ (* 4 (atan bulg) (- first_pt (fix first_pt))) 4)) ) ) (vla-SetBulge obj (1+ (fix first_pt)) (/ (sin (/ (* 4 (atan bulg) (- (1+ (fix first_pt)) first_pt)) 4)) (cos (/ (* 4 (atan bulg) (- (1+ (fix first_pt)) first_pt)) 4)) ) ) ; (vla-update obj) (vla-addVertex obj (1+ (1+ (fix secnd_pt))) (vlax-make-variant (vlax-safearray-fill (vlax-make-safearray vlax-vbdouble (cons 0 1)) (list (car (trans (vlax-curve-getpointatparam obj (1+ secnd_pt)) 0 ename)) (cadr (trans (vlax-curve-getpointatparam obj (1+ secnd_pt)) 0 ename)) ) ) ) ) (setq bulg (vla-GetBulge obj (1+ (fix secnd_pt)))) (vla-SetBulge obj (1+ (fix secnd_pt)) (/ (sin (/ (* 4 (atan bulg) (- secnd_pt (fix secnd_pt))) 4)) (cos (/ (* 4 (atan bulg) (- secnd_pt (fix secnd_pt))) 4)) ) ) (vla-SetBulge obj (1+ (1+ (fix secnd_pt))) (/ (sin (/ (* 4 (atan bulg) (- (1+ (fix secnd_pt)) secnd_pt)) 4)) (cos (/ (* 4 (atan bulg) (- (1+ (fix secnd_pt)) secnd_pt)) 4)) ) ) (vla-update obj) ) ) (setq area_wet (vla-get-Area obj) hydraulic_ray (/ area_wet perim_wet) q_deb_Manning (* area_wet (expt hydraulic_ray (/ 2 3.0)) (sqrt percent) (/ 1 coeff_manning)) ) (princ "\nPérimètre mouillé = ") (princ perim_wet) (princ "\nSurface mouillée = ") (princ area_wet) (princ "\nRayon hydraulique = ") (princ hydraulic_ray) (princ "\nDébit hydraulique en m3/s = ") (princ q_deb_Manning) ) (entdel (entlast)) ) (prin1) ) Choisissez un travail que vous aimez et vous n'aurez pas à travailler un seul jour de votre vie. - Confucius Lien vers le commentaire Partager sur d’autres sites More sharing options...
Dilack33 Posté(e) le 8 février 2023 Auteur Partager Posté(e) le 8 février 2023 Salut Bonuscad, les résultats semblent juste, d'après ma feuille de calcul mais c'est plus au niveau de formulation des cadres sur excel ou j'ai un soucis. petit soucis dans le lisp au moment de sélectionner le point intérieur de la conduite on perd les accroches objets et si on les réactivent on sort du programme. certains diront que les goussets sont négligeables ... un delta de 2 3 cm sur le rayon hydraulique Voilà ce que je suis entrain de monter à mes temps perdus ... une base excel qui va servir de base au xml de covadis Lien vers le commentaire Partager sur d’autres sites More sharing options...
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