Aller au contenu

surface étirable mias qui reste toujours à 60m2


Messages recommandés

Posté(e)

Voilà je cherche un moyen de créer un bloc dynamique ou autre chose, ce bloc doit être un carré ou rectangle avec une trame qui représente une surface de 60m2 et j'aurai aimé que si l'on étire un côté l'autre se redimensionne automatiquement pour avec toujours la même surface de 60m2.

Est ce que quel qu'un aurait la solution, avec mon ancien logiciel Logocad c'était possible mais sur autocad je ne sais pas comment dans un bloc dynamique on peut lui dire qu'une cote et égale à 60 divisé par l'autre cote.

 

Posté(e)

Bonjour :-(

 

Désolé de ne pas avoir mis bonjour, je sais que c'était la moindre des choses mais j'avais juste oublié par ce que je cherche depuis un bon bout de temps comment faire et j'étais tout content d'avoir trouvé ce forum que je me suis empressé d'écrire ce que j'aurais aimé avoir de l'oublier à nouveau.

 

La raison pourquoi je cherche ce lisp c'est que j'ai des détecteurs incendie à placer et la couverture doit toujours être de 60m2 donc ça me permet de savoir ou placer la rangée suivante quand je lui donne la distance entre deux détecteurs.

 

Si quel qu'un pourrait m'aider ça me ferait gagner beaucoup de temp et éviter des zones non surveillées.

 

Salutations

 

Posté(e)

Pour l'instant j'ai bricoler ceci mais ça me trace 4 traits qui vont représenter 60m2 mais moi j'airais aimé avoir un bloc de rectangle tramé qui se positionne depuis son centre et que l'on puisse étirer de sorte que la largeur se modifie automatiquement par rapport à la longueur

 

(vl-load-com)

(if (not CadApplication) (setq CadApplication (vlax-get-acad-object)))

(if (not CadDessin) (setq CadDessin (vla-get-ActiveDocument CadApplication)))

(if (not Espace_Obj) (setq Espace_Obj (vla-get-ModelSpace CadDessin)))

(if (not CadUtil) (setq CadUtil (vla-get-Utility CadDessin)))

(defun C:DET()

(vla-InitializeUserInput CadUtil 1)

(setq P_Deb_Axe (vlax-3D-point (getpoint "\nPoint d'insertion :")))

(vla-InitializeUserInput CadUtil (+ 1 2 4))

(setq Longueur_PA (vla-getdistance CadUtil P_Deb_Axe "\nLongueur (ou 2 points):"))

(setq Largeur (/ 600000 Longueur_PA))

(setq Longueur (+ Longueur_PA))

(setq P_Fin_Axe (vla-polarpoint CadUtil P_Deb_Axe 0 Longueur))

(setq P0 (vla-polarpoint CadUtil P_Deb_Axe (/ PI 2) (/ Largeur 2)))

(setq Ligne1 (vla-AddLine Espace_Obj P0 (vla-polarpoint CadUtil P0 0 Longueur)))

(setq Ligne2 (vla-mirror Ligne1 P_Deb_Axe P_Fin_Axe))

(setq Ligne3 (vla-AddLine Espace_Obj (vla-get-endpoint Ligne1) (vla-get-endpoint Ligne2)))

(setq Ligne4 (vla-copy Ligne3))

(vla-move Ligne4 (vla-get-startpoint Ligne4) P0)

 

(princ))

(prompt "\nPour dessiner la surface admissible, tapez DET.")

(princ)

 

c'est pas terrible mais c'est un petit début

Posté(e)

Re

 

la couverture doit toujours être de 60m2

Faux, le Amax dépend du type de détecteur, de la hauteur, du type de local (coefficient k) et de l'inclinaison du plafond.

De plus, tu as aussi la distance car ce qui compte, c'est le rayon du détecteur.

Des cercles suffisent pour visualiser ton domaine de surveillance.

 

@+

Les Lisps de Patrick

Le but n'est pas toujours placé pour être atteint, mais pour servir de point de mire.

Joseph Joubert, 1754-1824

Posté(e)

Non désolé mais je suis en Suisse et nous n'avons plus le droit d'utiliser le rayon pour déterminer la surface.

La surface de détection pour des locaux de moins de 6m de hauteur est déterminé par la distance séparant les détecteurs des parois, elle se calcule pour une surface de 60m2

Donc la distance entre détecteur et paroi est mesurée horizontalement et perpendiculairement à celle-ci (pas dans un angle) elle est égale à la moitié de la distance entre détecteur et la distance qui sépare les détecteurs et justement le résultat des 60m2 divisé par la distance entre les détecteurs posés horizontalement

Posté(e)

en Suisse et nous n'avons plus le droit d'utiliser le rayon pour déterminer la surface

C'est du rayon de détection d'un détecteur dont je parle.

Par exemple pour un couloir de 60m de long et d'un mètre de large. Tu as un seul détecteur ?

Je connais pas la réglementation suisse, mais vous ne faites pas de distinctions entre optique de fumée, optique de flamme, thermovélocimétrique, thermostatique ?

 

@+

Les Lisps de Patrick

Le but n'est pas toujours placé pour être atteint, mais pour servir de point de mire.

Joseph Joubert, 1754-1824

Posté(e)

Je parlais de détecteur de fumée, pour les détecteur de flamme c'est différent, pour les couloirs de moins de 3mètre de large la norme est différente, c'est un détecteur tous les 15m pour des couloirs de moins de 3m donc le premier détecteur doit se trouver au maximum à 7,5m du bord du mur, par contre dans un local ou il y a plusieurs rangée de détecteur la distance séparent le détecteur des murs est égale à la moitié de la distance entre les détecteurs, et l'espace entre les détecteurs c'est justement une courbe qui représente 60m2 divisé par la distance entre deux détecteurs alignés.

 

----x--------x--------x--------x----

 

----x--------x--------x--------x----

 

----x--------x--------x--------x----

 

etc..

Ceci c'est pour une installation dont le plafond est est pat et à moins de 6m de hauteur, et la distance minimale entre un obstacle ou cloison est de 50cm.

Posté(e)

Re

 

Ne soit pas impatient :exclam:

 

Un premier jet

(defun c:mre(/ dix diy ent pt1 pt2 pt3 pt4 ptn)
 (if (setq pt1 (getpoint "\nIndiquez le premier point : "))
   (progn
     (setq pt1 (trans pt1 1 0))
     (while (and (setq gr (grread T 12 0))
	  (/= (car gr) 3)
     )
(setq pt2 (trans (cadr gr) 1 0)
      dix (distance (list (car pt1)  0.0) (list (car pt2)  0.0))
      diy (distance (list (cadr pt1) 0.0) (list (cadr pt2) 0.0))
)
(if (and (/= dix 0.0)
	 (<= dix 60.0)
	 (/= diy 0.0)
	 (<= diy 60.0)
	 (/= pt2 ptn)
    )
  (progn
    (cond
      ((> (car pt2) (car pt1))
	(setq pt3 (polar pt1 (* pi (/ 0 180.0)) dix))
	(if (> (cadr pt2) (cadr pt1))
	  (setq pt4 (polar pt3 (* pi (/ 90 180.0)) (/ 60.0 dix)))
	  (setq pt4 (polar pt3 (* pi (/ 270 180.0)) (/ 60.0 dix)))
	)
      )
      ((< (car pt2) (car pt1))
	(setq pt3 (polar pt1 (* pi (/ 180 180.0)) dix))
	(if (> (cadr pt2) (cadr pt1))
	  (setq pt4 (polar pt3 (* pi (/ 90 180.0)) (/ 60.0 dix)))
	  (setq pt4 (polar pt3 (* pi (/ 270 180.0)) (/ 60.0 dix)))
	)
      )
    )
    (and ent
      (entdel ent)
    )
    (entmake (list (cons 0  "LWPOLYLINE")
		   (cons 100 "AcDbEntity")
		   (cons 100 "AcDbPolyline")
		   (cons  90 4)
		   (cons  70 1)
		   (cons 10 pt1)
		   (cons 10 (list (car pt3) (cadr pt1)))
		   (cons 10 (list (car pt3) (cadr pt4)))
		   (cons 10 (list (car pt1) (cadr pt4)))
	     )
    )
    (setq ent (entlast)
	  ptn pt2
    )
  )
)
     )
   )
 )
)

 

@+

Les Lisps de Patrick

Le but n'est pas toujours placé pour être atteint, mais pour servir de point de mire.

Joseph Joubert, 1754-1824

Posté(e)

Alors là bravo c'est presque parfait :-)

 

serait'il possible que le carré commence par son centre et que le second point qu'on entre puisse être entrée en chiffre ou s'accrocher à un élément, et comment faire si le dessin est en cm, mais autrement c'est vraiment top c'est ça que je cherchais depuis bien longtemps.

merci :P

Posté(e)

Patrick_35 m'a devancé

 

Ma contribution

(defun C:DET ( / t_aerea ptx key dlt_x dlt_y d_x pt_sup pt_inf)
(initget 7)
(setq t_aerea (getreal "\nSurface du carré ?:"))
(initget 9)
(setq ptx (getpoint "\nSpécifiez le centre: "))
(princ "\nSpécifiez un coin: \n")
(while (and (not (member (setq key (grread T 4 0)) '((2 13) (2 32)))) (/= (car key) 3))
	(cond
		((eq (car key) 5)
			(redraw)
			(setq dlt_x (* (abs (- (caadr key) (car ptx))) 2.0))
			(cond
				((not (zerop dlt_x))
					(setq
						dlt_y (/ t_aerea dlt_x)
					  d_x (* (sqrt (+ (* dlt_x dlt_x) (* dlt_y dlt_y))) 0.5)
					  pt_sup (polar ptx (atan (/ dlt_x dlt_y)) d_x)
						pt_inf (polar ptx (+ (angle ptx pt_sup) pi) (distance ptx pt_sup))
					)
					(grvecs
						(list
							ptx pt_sup
							pt_inf (list (car pt_sup) (cadr pt_inf) (caddr ptx))
							(list (car pt_sup) (cadr pt_inf) (caddr ptx)) pt_sup
							pt_sup (list (car pt_inf) (cadr pt_sup) (caddr ptx))
							(list (car pt_inf) (cadr pt_sup) (caddr ptx)) pt_inf
						)
					)
				)
			)
		)
		(T (setq pt_inf nil pt_sup nil))
	)
)
(redraw)
(if (and pt_inf pt_sup)
	(command "_.pline" "_none" pt_inf "_none" (list (car pt_sup) (cadr pt_inf) (caddr ptx)) "_none" pt_sup "_none" (list (car pt_inf) (cadr pt_sup) (caddr ptx)) "_close")
)
(prin1)
)

Choisissez un travail que vous aimez et vous n'aurez pas à travailler un seul jour de votre vie. - Confucius

Posté(e)

Voili voilou

 

(defun c:mre(/ dis dix diy ent pt1 pt2 pt3 pt4 ptd ptf ptn rect)
 (defun rect(gr)
   (setq pt2 (trans gr 1 0)
  dix (distance (list (car pt1)  0.0) (list (car pt2)  0.0))
  diy (distance (list (cadr pt1) 0.0) (list (cadr pt2) 0.0))
   )
   (if (and (/= dix 0.0)
     (<= dix dis)
     (/= diy 0.0)
     (<= diy dis)
     (/= pt2 ptn)
)
     (progn
(cond
  ((> (car pt2) (car pt1))
    (setq pt3 (polar pt1 0.0 dix))
    (if (> (cadr pt2) (cadr pt1))
      (setq pt4 (polar pt3 (* pi 0.5) (/ dis dix)))
      (setq pt4 (polar pt3 (* pi 1.5) (/ dis dix)))
    )
  )
  ((< (car pt2) (car pt1))
    (setq pt3 (polar pt1 pi dix))
    (if (> (cadr pt2) (cadr pt1))
      (setq pt4 (polar pt3 (* pi 0.5) (/ dis dix)))
      (setq pt4 (polar pt3 (* pi 1.5) (/ dis dix)))
    )
  )
)
(and ent
  (entdel ent)
)
(setq ptf (list (car pt3) (cadr pt4))
      ptd (polar pt1 (angle ptf pt1) (distance ptf pt1))
)
(entmake (list	(cons 0  "LWPOLYLINE")
		(cons 100 "AcDbEntity")
		(cons 100 "AcDbPolyline")
		(cons  90 4)
		(cons  70 1)
		(cons 10 ptd)
		(cons 10 (list (car ptd) (cadr ptf)))
		(cons 10 ptf)
		(cons 10 (list (car ptf) (cadr ptd)))
	 )
)
(setq ent (entlast)
      ptn pt2
)
     )
   )
 )

 (setq dis 15.0)
 (if (setq pt1 (getpoint "\nIndiquez le centre : "))
   (progn
     (setq pt1 (trans pt1 1 0))
     (if (setq pt2 (getpoint pt1 "\nIndiquez le second point (ou entrée pour visualiser) : "))
(rect pt2)
       (while (and (setq gr (grread T 12 0))
	    (/= (car gr) 3)
       )
  (and (eq (car gr) 5)
    (rect (cadr gr))
  )
)
     )
   )
 )
 (princ)
)

 

c'est vraiment top c'est ça que je cherchais depuis bien longtemps

Cela vaut bien une boîte de chocolat

La montre, peut-être pour un autre lisp. ;)

 

Je viens de remarquer que je n'ai pas une ligne de vlisp :o

Je me rattraperai pour la prochaine, bien que je doute de l'utilité pour cette appli ;)

 

Patrick_35 m'a devancé

Tes formules sont surement plus académique que les miennes

 

 

@+

Les Lisps de Patrick

Le but n'est pas toujours placé pour être atteint, mais pour servir de point de mire.

Joseph Joubert, 1754-1824

Posté(e)

Un grand merci à Bonuscad et à Patrick_35 pour votre recherche, quand je lis vos lips c'est vraiment un casse tête mais ça doit être chouette de savoir les créer mais Patrick_35 ton dernier lisp il n'y a rien qui se passe, il me demande d'indiquer le centre puis Indiquez le second point (ou entrée pour visualiser) mais la rien ne se passe.

Maintenant je sais que je vais être pénible mais le must serait dans votre lisp quand on déplace le curseur qui affiche le rectangle de 60m2 ce qui est super serait il possible que l'étirement ne se fasse pas dans un coin mais horizontalement ou verticalement par rapport au point de départ et si le curseur pourrait s'accrocher à une ligne.

Vos lisp me rende un grand service, et me facilite grandement le travaille et je vous en remercie milles fois c'est super sympa.

Posté(e)

Non je suis sur un nouveau dessin dans l'espace objet dans le calque 0.

Quand j'exécute la commande MRE il me demande d'indiquer le centre puis indiquez le second point et là quand je déplace le curseur une ligne s'affiche mais dès que je clique tout disparait

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é