gile Posté(e) le 24 août 2005 Partager Posté(e) le 24 août 2005 Salut, Patick a mis en téléchargement une petite bibliothèque de chassis dynamiques Il s'agit de chassis (menuiserie ou serrurerie) qui conservent un maillage régulier quand on les redimensionne. Pour ces blocs, j'ai fait un petit LISP : ;;; Affiche dans la fenêtre de texte les dimensions du chassis dynamique sélectionné (defun c:dim_chassis (/ obj prop_lst count haut larg ep_mt ep_tv maille m_ver m_hor) (sssetfirst nil) (while (or (not obj) (/= (cdr (assoc 0 (entget obj))) "INSERT") (not (member (vla-get-effectivename (setq obj (vlax-ename->vla-object obj)) ) '("Chassis1X1" "Chassis2X1" "Chassis3X1" "Chassis4X1") ) ) ) (setq obj (car (entsel))) ) (setq prop_lst (vlax-safearray->list (vlax-variant-value (vla-getdynamicblockproperties obj) ) ) count 0 ) (while (< count (length prop_lst)) (cond ((and haut larg ep_mt ep_tv maille) (setq count (length prop_lst)) ) ((= (vla-get-propertyname (nth count prop_lst)) "Hauteur" ) (setq haut (vla-get-value (nth count prop_lst)) count (+ count 1) ) ) ((= (vla-get-propertyname (nth count prop_lst)) "Largeur" ) (setq larg (vla-get-value (nth count prop_lst)) count (+ count 1) ) ) ((= (vla-get-propertyname (nth count prop_lst)) "Épaisseur Mt" ) (setq ep_mt (vla-get-value (nth count prop_lst)) count (+ count 1) ) ) ((= (vla-get-propertyname (nth count prop_lst)) "Épaisseur Tv" ) (setq ep_tv (vla-get-value (nth count prop_lst)) count (+ count 1) ) ) ((= (vla-get-propertyname (nth count prop_lst)) "Visibilité" ) (setq maille (vla-get-value (nth count prop_lst)) count (+ count 1) ) ) (T (setq count (+ count 1))) ) ) (foreach n '(haut larg ep_mt ep_tv maille) (set n (vlax-variant-value (eval n))) ) (setq m_ver (read (substr maille 8 1)) m_hor (read (substr maille 10 1)) ) (textscr) (princ (strcat "\n\n " maille "\n\n Hauteur totale : " (rtos haut 2 0) " mm\n Largeur totale : " (rtos larg 2 0) " mm\n Épaisseur des montants : " (rtos ep_mt 2 0) " mm\n Épaisseur des traverses : " (rtos ep_tv 2 0) " mm\n Dimensions intérieures du maillage :\n X : " (rtos (/ (- larg (* (1+ m_ver) ep_mt)) m_ver) 2 1) " mm\n Y : " (rtos (/ (- haut (* (1+ m_hor) ep_tv)) m_hor) 2 1) " mm\n Débit :\n - 2 Montants de : " (rtos haut 2 0) " mm\n - " (itoa (1+ m_hor)) " Traverses de : " (rtos (- larg (* 2 ep_mt)) 2 0) (if (< 1 m_ver) (strcat " mm\n - " (itoa (* (1- m_ver) m_hor)) " Entretoises de : " (rtos (/ (- haut (* (1+ m_hor) ep_tv)) m_hor) 2 0) ) "" ) " mm\n Total linéaire : " (rtos (* (+ (* 2 haut) (* (1+ m_hor) (- larg (* 2 ep_mt))) (* (1- m_ver) (- haut (* (1+ m_hor) ep_tv))) ) 1e-3 ) 2 3 ) " m\n Surface totale : " (rtos (/ (* haut larg) 1e6) 2 2) " m2" ) ) (princ) ) Ce LISP ne marche évidemment que pour ces chassis dynamiques et devra être modifié en cas de modification des unités des blocs. Toute remarque ou suggestion est bienvenue. 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