ahmed1981 Posté(e) le 20 avril 2018 Posté(e) le 20 avril 2018 Bonjour tout le monde, Je suis dessinateur (DAO et CAO) dans une entreprise d'aluminium et j'ai besoin de mesures qui me demandent du temps et des efforts pour avoir un modèle pour ce que je veux que vous m'aidiez. C'est un tableau avec toutes les données et calculs qui facilitent ce travail. Et un ficher dwg avec toutes les informations pour créer un fichier lisp ou visual Lisp pour Autocad Mon lien et merci
bonuscad Posté(e) le 22 avril 2018 Posté(e) le 22 avril 2018 Bonjour, Tu peux essayer ceci, testé sur ton extrait et ça à l'air de fonctionner... (vl-load-com) (defun c:tab_profil ( / js1 js2 AcDoc Space ename1 ename2 ul ur ex_p in_p nw_style oldlay ins_pt_cell h_t w_c ename_cell n_row n_column lst_data) (princ "\nSélectionnez le contour exterieur") (while (null (setq js1 (ssget "_+.:E:S" '((0 . "REGION") (67 . 0)))))) (princ "\nSélectionnez le contour interieur") (while (null (setq js2 (ssget "_+.:E:S" '((0 . "REGION") (67 . 0)))))) (setq AcDoc (vla-get-ActiveDocument (vlax-get-acad-object)) Space (if (= 1 (getvar "CVPORT")) (vla-get-PaperSpace AcDoc) (vla-get-ModelSpace AcDoc) ) ename1 (vlax-ename->vla-object (ssname js1 0)) ename2 (vlax-ename->vla-object (ssname js2 0)) ) (vla-getboundingbox ename1 'ul 'ur) (setq ex_p (vlax-get ename1 'Perimeter) in_p (vlax-get ename2 'Perimeter)) (vla-Boolean ename1 acSubtraction ename2) (cond ((null (tblsearch "LAYER" "Tableaux-Profils")) (vla-add (vla-get-layers AcDoc) "Tableaux-Profils") ) ) (cond ((null (tblsearch "STYLE" "Tab-Profil")) (setq nw_style (vla-add (vla-get-textstyles AcDoc) "Tab-Profil")) (mapcar '(lambda (pr val) (vlax-put nw_style pr val) ) (list 'FontFile 'Height 'ObliqueAngle 'Width 'TextGenerationFlag) (list "romand.shx" 0.0 0.0 1.0 0.0) ) ) ) (setq oldlay (getvar "clayer")) (setvar "clayer" "Tableaux-Profils") (initget 9) (setq ins_pt_cell (getpoint "\nPoint d'insertion haut gauche du tableau: ")) (initget 6) (setq h_t (getdist ins_pt_cell (strcat "\nHauteur du texte <" (rtos (getvar "textsize")) ">: "))) (if (null h_t) (setq h_t (getvar "textsize")) (setvar "textsize" h_t)) (initget 7) (setq w_c (getdist ins_pt_cell "\nLargeur des cellules: ")) (setq ename_cell (vla-addTable Space (vlax-3d-point ins_pt_cell) 20 2 (* h_t 1.6667) w_c)) (setq n_row 0 n_column 2) (vla-put-horzcellmargin ename_cell (* h_t 0.5)) (vla-put-vertcellmargin ename_cell (* h_t 0.5)) (vla-SetRowHeight ename_cell 0 (* h_t 1.25)) (vla-SetText ename_cell 0 0 "DONNEES DE PROFIL") (vla-SetCellTextStyle ename_cell 0 0 "Tab-Profil") (vla-SetCellTextHeight ename_cell 0 0 h_t) (vla-SetCellAlignment ename_cell 0 0 5) (setq lst_data (list (cons "Hauteur" "31.50 mm") (cons "Largeur" "40.00 mm") (cons "Ex.Périmètre" (strcat (rtos ex_p 2 2) " mm")) (cons "In.Périmètre" (strcat (rtos in_p 2 2) " mm")) (cons "total.Périmètre" (strcat (rtos (+ ex_p in_p) 2 2) " mm")) (cons "lx" (strcat (rtos (/ (car (vlax-get ename1 'MomentOfInertia)) 10000) 2 2) " cm4")) (cons "ly" (strcat (rtos (/ (cadr (vlax-get ename1 'MomentOfInertia)) 10000) 2 2) " cm4")) (cons "Wx" (strcat (rtos (/ (/ (car (vlax-get ename1 'MomentOfInertia)) 10000) (* (max (abs (cadr (safearray-value ul))) (abs (cadr (safearray-value ur)))) 0.1)) 2 2) " cm3")) (cons "Wy" (strcat (rtos (/ (/ (cadr (vlax-get ename1 'MomentOfInertia)) 10000) (* (max (abs (car (safearray-value ul))) (abs (car (safearray-value ur)))) 0.1)) 2 2) " cm3")) (cons "Rayon de giration (x)" (strcat (rtos (car (vlax-get ename1 'RadiiOfGyration)) 2 2) " mm")) (cons "Rayon de giration (y)" (strcat (rtos (cadr (vlax-get ename1 'RadiiOfGyration)) 2 2) " mm")) (cons "Aire" (strcat (rtos (vlax-get ename1 'Area) 2 2) " mm2")) (cons "Poids" (strcat (rtos (/ (* (vlax-get ename1 'Area) 2.7) 1000) 2 3) " kg/m")) (cons "Cercle circoncrit" (strcat (rtos (* 2 (cdr (assoc 40 (entget (car (entsel "\nChoix dur cercle circoncrit: ")))))) 2 2) " mm")) (cons "Epaisseur moyenne" (strcat (rtos (/ (* (vlax-get ename1 'Area) 2.0) (+ ex_p in_p)) 2 2) " mm")) (cons "ex1" (strcat (rtos (abs (car (safearray-value ul))) 2 2) " mm")) (cons "ex2" (strcat (rtos (abs (car (safearray-value ur))) 2 2) " mm")) (cons "ey1" (strcat (rtos (abs (cadr (safearray-value ul))) 2 2) " mm")) (cons "ey2" (strcat (rtos (abs (cadr (safearray-value ur))) 2 2) " mm")) ) ) (foreach el lst_data (vla-SetRowHeight ename_cell (setq n_row (1+ n_row)) (* h_t 1.6667)) (vla-SetText ename_cell n_row 0 (car el)) (vla-SetCellTextStyle ename_cell n_row 0 "Tab-Profil") (vla-SetCellTextHeight ename_cell n_row 0 h_t) (vla-SetCellAlignment ename_cell n_row 0 2) (vla-SetText ename_cell n_row 1 (cdr el)) (vla-SetCellTextStyle ename_cell n_row 1 "Tab-Profil") (vla-SetCellTextHeight ename_cell n_row 1 h_t) (vla-SetCellAlignment ename_cell n_row 1 2) ) (vlax-release-object ename_cell) (vlax-release-object Space) (setvar "clayer" oldlay) (prin1) ) 1 Choisissez un travail que vous aimez et vous n'aurez pas à travailler un seul jour de votre vie. - Confucius
ahmed1981 Posté(e) le 24 avril 2018 Auteur Posté(e) le 24 avril 2018 Merci pour votre réponse et pour l'effort que vous avez fait pour moi, mais ça marche pas S'il vous plaît lire le lien suivant pour comprendre ce que je veux plus.Merci beaucoup pour votre aide et merci
bonuscad Posté(e) le 25 avril 2018 Posté(e) le 25 avril 2018 J'ai regardé rapidement ta video.Ce que je peux en déduire, tu cherches à reproduire le résultat d'un programme fait en VBA. (celui ci t'est inaccessible? est protégé? est payant?) dans la video il dessine simplement des lignes, cela pourrait être aussi des polylignes, arcs ou cercles. Je pense que la routine que je t'ai fournie peut fonctionner, il faut simplement que tu transforme manuellement au préalable ton contour extérieur et ton contour intérieur en REGION (ma routine n'accepte que des régions)Donc avec la commande REGION tu transforme ton contour. Faire la commande 2 fois: 1 fois pour le contour externe et une fois pour le contour interne: le programme fera la soustraction par la suite des 2 régions et donnera les résultats dans le tableau.Donc une fois cette transformation effectuée, tu peux utiliser ma routine. Par contre je n'ai pas saisi l'histoire des cercles entre ta première demande (cerle circonscrit dans ton DWG et les cercles de la video qui ont l'air de faire partie simplement des contours) As tu essayé au moins la routine avec le dwg que tu avais mis en exemple au départ?Les profilés en aluminium ne sont pas de ma partie, j'ai simplement appliqué les formules que tu donnais dans ton dwg d'exemple!Je serais incapable d'en faire plus sans explications claires et précises. 1 Choisissez un travail que vous aimez et vous n'aurez pas à travailler un seul jour de votre vie. - Confucius
ahmed1981 Posté(e) le 26 avril 2018 Auteur Posté(e) le 26 avril 2018 Merci pour votre réponse, je sais que ce programme est payé pour moi, je ne peux pas l'obtenir parce que je sais comment ça fonctionne, je veux juste vous aider, je ne peux pas raccourcir le temps de calcul et c'est un autre lien qui explique ce que je veux.
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