Aller au contenu

Chassis dynamiques


gile

Messages recommandés

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

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 compte

Se connecter

Vous avez déjà un compte ? Connectez-vous ici.

Connectez-vous maintenant
×
×
  • Créer...

Information importante

Nous avons placé des cookies sur votre appareil pour aider à améliorer ce site. Vous pouvez choisir d’ajuster vos paramètres de cookie, sinon nous supposerons que vous êtes d’accord pour continuer. Politique de confidentialité