Aller au contenu

Bloc avec étirement et réseaux


jeremy69

Messages recommandés

Bonjour à tous !

 

Je suis métallier et je voudrai éviter d'avoir à chaque fois tracer le même type de garde corps (voir fichier ci dessous).

 

http://www.casimages.com/img.php?i=17022402393122360114872141.jpg

 

Ce que j'aimerai se serait de crée un bloc qui me permet d'étier mon garde corps et en même temps que mon espacement entre barreaux ne dépasse pas 110 mm (norme des gardes-corps).

 

Toutefois, tout mes espacements entre barreaux doivent être égales (donc il faudrait que sa s'adapte en fonction de l'étirement).

et donc vue que l'espacement entre barreau ne doit pas dépasser 110 mm, si jamais sa devait arriver il faudrait rajouter des barreaux pour que l'espacement soit inférieur à 110 mm.

 

Du coup j'ai donc crée un bloc avec une fonction d'étirement pour modifier la longueurs des garde corps (jusque la tout vas bien.)

Ensuite je pense qu'il faudrait insérer une fonction réseaux mais c'est la que je bloque.

 

Des idées ?

 

Cordialement

Tout ce que nous avons à décider c'est que faire du temps qui nous à été impartie.

Lien vers le commentaire
Partager sur d’autres sites

Voila un petit exemple de bloc avec un réseau.

caniveaugrille.dwg

 

par contre l'écart entre les éléments reste fixe dans la longueur de l'étirement est un étiré de la longueur totale.

Pour avoir une longueur d'étirement comme tu le souhaite, je suis pas sur qu'il y ait moyen sans programmation et j'ai même du mal a trouver une expression litérale pour trouver N en ft de la longueur totale pour un écart au plus proche de 11cm max

Lien vers le commentaire
Partager sur d’autres sites

Très intéressant ce sujet.

 

Merci beaucoup x_all pour le caniveau. Ca fait un moment que je me dis faut que je m'en fasse un.

 

Par ailleurs, je profite de ce sujet pour demander des informations à propos des normes garde-corps.

 

A quelle norme fais-tu référence ?

 

A partir de quelle hauteur de chute le garde-corps est-il nécessaire ?

Autocad Map 3D 2019

Covadis version 17.0b

Lien vers le commentaire
Partager sur d’autres sites

J'ai réussi à reproduire ton principe sur mon garde corps jusque la tout vas bien.

 

Maintenant le souci c'est de faire en sorte que mon espacement entre barreaux soit toujours identique.

 

On pourrait pas le faire avec une contrainte ou quelque chose dans ce genre ?

Tout ce que nous avons à décider c'est que faire du temps qui nous à été impartie.

Lien vers le commentaire
Partager sur d’autres sites

oui... c'est là out le pb...

sans programmation je suis pas sur qu'on puisse le faire.

car dans l'action "mise en réseau le pas est fixée. on ne peu pas le renseigner avec un champ (par exemple) pour faire varier la valeur.

 

La solution, la plus simple c'est de faire le bloc étirable sans les barreaux, puis un bloc de barreaux que tu recopies n fois

 

Voici un lisp qui copie les objet n fois avec 2 clic pour définir le pas et la direction

 

(defun c:mc (/ mcopy_err v1 v2 ss pt1 pt2 nb)

 (defun mcopy_err (msg)
   (if	(= msg "Fonction annulée")
     (princ)
     (princ (strcat "\nErreur: " msg))
   )
   (setvar "cmdecho" v1)
   (setvar "osmode" v2)
   (setq *error* m:err
 	m:err	nil
   )
   (princ)
 )

 (setq	m:err	*error*
*error*	erreur
v1	(getvar "cmdecho")
v2	(getvar "osmode")
 )
 (setq ss (ssget))
 (initget 1)
 (setq pt1 (getpoint "\nSpécifiez le décalage, premier point: "))
 (initget 1)
 (setq pt2 (getpoint pt1 "\nDeuxième point: "))
 (initget 1)
 (setq nb (getint "\nNombre d'éléments: "))
 (setvar "cmdecho" 0)
 (setvar "osmode" 0)
 (repeat (1- nb)
   (command "_copy" ss "" '(0 0) '(0 0))
   (command "_move" ss "" pt1 pt2)
 )
 (setvar "cmdecho" v1)
 (setvar "osmode" v2)
 (setq	*error*	m:err
m:err nil
 )
 (princ)
)

Lien vers le commentaire
Partager sur d’autres sites

Bonjour, je fais comme ça.

Il doit avoir moyen d'améliorer en centrant le barreaudage, mais je sèche...

 

https://www.youtube....h?v=OgkvaV8r-ls

 

Bas mois j'en suis à ce stade la justement, J'ai réussie à faire sa sauf que le dernier espacement est pas bon !

 

oui... c'est là out le pb...

sans programmation je suis pas sur qu'on puisse le faire.

car dans l'action "mise en réseau le pas est fixée. on ne peu pas le renseigner avec un champ (par exemple) pour faire varier la valeur.

 

La solution, la plus simple c'est de faire le bloc étirable sans les barreaux, puis un bloc de barreaux que tu recopies n fois

 

Voici un lisp qui copie les objet n fois avec 2 clic pour définir le pas et la direction

 

Malheureusement je n’utilise pas le LISP (faut que je mi mette !) Sa consiste en quoi ce que tu ma envoyé ?

Tout ce que nous avons à décider c'est que faire du temps qui nous à été impartie.

Lien vers le commentaire
Partager sur d’autres sites

c'est une copie multiple suivant un vecteur

 

tu définies une copie de N élément suivant 2 points

par exemple pour dessiner le profil d'un escalier, tu dessine la 1er marche et tu la copie 17 fois pour aller jusqu'à l'étage du dessus.

c'est une petite commande pratique qui évite les fastidieuse recopie régulièrement espacées. Les lisp sont des macro qui pallient aux manques d'Autocad. Il y a pourtant énormément de fonctions dans ce soft, mais il en manque pas mal de super utiles toutes simple, mais pas implémentées

 

 

Dans ton cas, avec cette fonction tu trace ton 1er barreau et tu le copie N fois pour aller au bout de ton GC

Mais pour trouver l'écartement il te faudra le calculer.

 

Mais si c'est simple à énoncer, c'est pas super facile à traduire mathématiquement, on cherche E pour que E< 11cm et ExN=longueur totale, mais E doit être le plus proche possible de 11, bref c'est sans doute jouable, mais c'est un peu galère à mettre en équation.

 

Malheureusement je n’utilise pas le LISP (faut que je mi mette !)

le lisp, c'est pas un gros mot c'est une possibilité d'autocad. Ne pas en écrite ok, il faut s'y mettre, bosser pas mal pour comprendre comment ça marche, et pondre son code c'est passionnant si tu es passionné, mais super casse bonbon si tu y es hermetique. Mais pour les utiliser c'est franchement trivial et si tu fait le choix de ne pas t'en servir, passe sur autocad LT tu gagnera des sous...

je te renvoie vers la prose du maître pour un rappel de comment on charge un lisp

 

Lien vers le commentaire
Partager sur d’autres sites

Une tentative d'épure, le barreaudage c'est pas mon rayon.

 

Si d'autres veulent creuser...

 

NB: C'est en millimètre, ça peut se changer.

 

(defun z_dir (p1 p2 / )
 (trans
   '(0.0 1.0 0.0)
   (mapcar
     '(lambda (k)
       (/ k
         (sqrt
           (apply '+
             (mapcar
               '(lambda (x) (* x x))
               (mapcar '- p2 p1)
             )
           )
         )
       )
     )
     (mapcar '- p2 p1)
   )
   0
 )
)
(defun c:barreaudage ( / sect d_tub h_bar x_sect y_sect dlt js ent dxf_ent vlaobj lg_obj div inc_dist partial_dist pt_start pt_end lst_pt ang dxf_210)
 (setq sect (getpoint "\nSection de votre barreaudage (ou <18,0> pour diamètre tube)? <18,18>: "))
 (if (not sect) (setq sect '(18.0 18.0 0.0)))
 (if (zerop (cadr sect))
   (setq d_tub (car sect) x_sect (car sect) sect nil)
   (setq d_tub nil x_sect (car sect) y_sect (cadr sect) dlt (* 0.5 (sqrt (+ (* x_sect x_sect) (* y_sect y_sect)))))
 )
 (setq h_bar (getdist "\nHauteur du barreaudage? <900.0>: "))
 (if (not h_bar) (setq h_bar 900.0))
 (princ "\nChoix de l'objet à mesurer: ")
 (while
   (not
     (setq js
       (ssget "_+.:E:S"
         (list
           (cons 0 "*POLYLINE,LINE,ARC")
           (cons -4 "<NOT")
             (cons -4 "&") (cons 70 112)
           (cons -4 "NOT>")
         )
       )
     )
   )
 )
 (setq
   ent (ssname js 0)
   dxf_ent (entget ent)
   vlaobj (vlax-ename->vla-object ent)
 )
 (redraw ent 3)
 (if (vlax-property-available-p vlaobj 'Length)
   (setq lg_obj (vlax-get vlaobj 'Length))
   (setq lg_obj (vlax-get vlaobj 'ArcLength))
 )
 (setq
   div (1+ (fix (/ lg_obj (+ 110.0 x_sect))))
   inc_dist (/ lg_obj div)
   partial_dist inc_dist
   pt_start (vlax-curve-getStartPoint vlaobj)
   pt_end (vlax-curve-getEndPoint vlaobj)
   lst_pt (list pt_start)
 )
 (while (< partial_dist lg_obj)
   (setq
     lst_pt (cons (vlax-curve-getPointAtDist vlaobj partial_dist) lst_pt)
     partial_dist (+ partial_dist inc_dist)
   )
 )
 (setq lst_pt (reverse (cons pt_end lst_pt)))
 (foreach n lst_pt
   (setq
     ang (angle '(0.0 0.0 0.0) (vlax-curve-getFirstDeriv vlaobj (vlax-curve-getParamAtPoint vlaobj n)))
     dxf_210 (z_dir n (polar n ang inc_dist))
   )
   (if d_tub
     (entmake
       (list
         '(0 . "CIRCLE")
         '(100 . "AcDbEntity")
         (assoc 67 dxf_ent)
         (assoc 410 dxf_ent)
         (cons 8 (getvar "CLAYER"))
         '(100 . "AcDbCircle")
         (cons 39 h_bar)
         (cons 10 n)
         (cons 40 (* d_tub 0.5))
         (cons 210 dxf_210)
       )
     )
     (entmake
       (list
         '(0 . "LWPOLYLINE")
         '(100 . "AcDbEntity")
         (assoc 67 dxf_ent)
         (assoc 410 dxf_ent)
         (cons 8 (getvar "CLAYER"))
         '(100 . "AcDbPolyline")
         '(90 . 4)
         '(70 . 1)
         '(43 . 0.0)
         (cons 38 (caddr n))
         (cons 39 h_bar)
         (cons 10 (polar n (+ ang (- (* 1.5 pi) (atan (/ x_sect y_sect)))) dlt))
         '(40 . 0.0)
         '(41 . 0.0)
         '(42 . 0.0)
         '(91 . 0)
         (cons 10 (polar n (+ ang (* 1.5 pi) (atan (/ x_sect y_sect))) dlt))
         '(40 . 0.0)
         '(41 . 0.0)
         '(42 . 0.0)
         '(91 . 0)
         (cons 10 (polar n (+ ang (- (* 0.5 pi) (atan (/ x_sect y_sect)))) dlt))
         '(40 . 0.0)
         '(41 . 0.0)
         '(42 . 0.0)
         '(91 . 0)
         (cons 10 (polar n (+ ang (* 0.5 pi) (atan (/ x_sect y_sect))) dlt))
         '(40 . 0.0)
         '(41 . 0.0)
         '(42 . 0.0)
         '(91 . 0)
         (cons 210 dxf_210)
       )
     )
   )
 )
 (redraw ent 4)
 (prin1)
)

 

Modifications apportées:

* Possibilité de section carré ou tube.

* Mise en hauteur des barreaux générés

* Correction pour optimisation distance inter-barreaux (< 110 mm)

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

  • 7 mois après...

Bonjour.

 

Je cherche à faire un bloc dynamique de calepinage de bardage.

Dans un sens le bloc s'étire et dans l'autre le bloc fonctionne en réseau.

Sa c’était la partie facile. Maintenant je voudrais qu'il y ai une cote en diagonale dans ce bloc ou serait renseigné la valeur de mes 2 contraintes longueur et nombre. Comment j'attache cette cote?

 

lien du bloc:

 

https://we.tl/eVEXv9a6L4

 

Merci d'avance.

Lien vers le commentaire
Partager sur d’autres sites

Salut.

 

 

Voila ton bloc modifié : Mon lien

 

J'ais pus ajouter la diagonale et deux attributs, par contre là tout de suite je me souviens plus comment faire pour les remplir automatiquement avec les données des paramètres, donc il faudra voir avec quelqu'un d'autre.

 

Les explications : On peut lier plusieurs actions à un même paramètre. En occurrence, j'ais juste ajouté deux action d'étirement au paramètre horizontal, et modifié ceux du vertical.

 

J'ais ensuit lié les deux attributs à un paramètre de point avec action de déplacement, qu'il faudra déplacer manuellement au milieu de la diagonale.

 

Petite astuce en plus : il est possible de déplacer les poignée des paramètres sans déplacer leur point de base. Comme ça, on peut avoir des paramètres avec des points de base en commun, mais dont les poignées ne se superposent pas.

 

NOTA : En l'occurrence il aurais mieux valu créer un autre fil de discussion.

 

N'hésite pas si tu a d'autres questions, mais ouvre un autres sujet pour ne pas polluer celui-ci.

 

Cordialy.

Je suis dysorthographique alors lâchez-moi les basques avec ça, je fait déjà de mon mieux.
Membre d'Extinction Rebellion, car pour sauver le monde il n'est jamais trop tard, amour et rage !
Pour écrire un vraie point médian (e·x·e·m·p·l·e) [Alt + 0183] ou ajout d'un raccourci clavier personnalisé (ex. [AltGr + ;])

Utilisateur d'AutoCAD 2021 sous Windows 10

Lien vers le commentaire
Partager sur d’autres sites

Ouvre un nouveau sujet avec un titre du genre "Attribut automatique de valeur de paramètre de bloc".

 

Si ça existe, tu devrait avoir une réponse, fut-ce par LISP. Ça n'a de toute façon plus grand chose à voir avec le titre du présent sujet.

Je suis dysorthographique alors lâchez-moi les basques avec ça, je fait déjà de mon mieux.
Membre d'Extinction Rebellion, car pour sauver le monde il n'est jamais trop tard, amour et rage !
Pour écrire un vraie point médian (e·x·e·m·p·l·e) [Alt + 0183] ou ajout d'un raccourci clavier personnalisé (ex. [AltGr + ;])

Utilisateur d'AutoCAD 2021 sous Windows 10

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é