Aller au contenu

Blocs dynamique avec mise en réseau ... particulière


Messages recommandés

Posté(e)

Bonjour,

 

Je souhaite créer un bloc dynamique un peu particulier et j'aurais besoin de votre aide...

 

Il s'agit de créer un bloc dynamique, composé de plusieurs autres blocs ayant chacun une longueur fixe (40, 60, 90, 120 et 240).

 

J'aimerai que mon bloc dynamique contienne un paramètre de distance. En fonction de cette distance, j'aimerai associer une action de mise en réseau mais dépendant de la distance.

 

Exemples :

 

_Paramètre de distance = 100

>> Mise en réseau aboutissant à : 1 bloc de 40 + 1 bloc de 60

 

_Paramètre de distance = 300

>> Mise en réseau aboutissant à : 1 bloc de 240 + 1 bloc de 60

 

_Paramètre de distance = 760

>> Mise en réseau aboutissant à : 3 blocs de 240 + 1 bloc de 40

 

Etc.. Le principe est de commencer par les grands blocs et de compléter avec les petits.

 

Je ne sais pas si cela est possible avec un bloc dynamique. Peut-etre faut-il programmer quelque chose je ne sais pas..

 

Toute suggestion sera évidemment la bienvenue..

 

 

Merci

 

  • Réponses 75
  • Créé
  • Dernière réponse

Meilleurs contributeurs dans ce sujet

Meilleurs contributeurs dans ce sujet

Posté(e)

Bonjour à toutes et tous,

 

Je ne suis pas un super spécialiste des BD avec réseaux mais je pense que ce que tu demandes n'est pas possible !

 

Même avec les outils paramétriques !

 

Eventuellement sous inventor ou je ne sais quel autre logiciel avec du paramétrique plus évolué que AutoCAD,..

 

Mais je peux me tromper,... ;)

 

Ou alors, solution loufoque, envisager tous les cas de figure possible avec les états de visibilité des blocs dyns ,...et même comme ça, je ne pense pas que tu puisses arriver à quoi que ce soit,...

 

D'autres avis ?

Civil 3D 2025 - COVADIS_18.3b

https://www.linkedin...3%ABt-95313341/

Posté(e)
Oh c'est jouable en associant les consultations et les visibilités.

 

Bonjour Eric, lili2006,

 

Merci à vous deux de vous intéresser à mon problème !

 

> Eric : si j'ai bien compris la seule solution serait de créer une liste de tous les assemblages possibles et de jouer avec l'état de visibilité de chacun ?? Waouh... Et une solution par programmation serait elle facilement envisageable ? (je ne maitrise pas du tout la programmation Lisp)

Posté(e)

Bonjour à toutes et tous,

 

Ben tu utilises juste la poignée de visibilitée.

 

Oui Eric je voulais dire lorsque tu as une série d'éléments sur 50 m par exemple,...

 

C'est comme ça que j'ai interprété la demande :

 

J'aimerai que mon bloc dynamique contienne un paramètre de distance. En fonction de cette distance, j'aimerai associer une action de mise en réseau mais dépendant de la distance.

 

Ainsi que le nota sur l'image,...

Civil 3D 2025 - COVADIS_18.3b

https://www.linkedin...3%ABt-95313341/

Posté(e)

Bonjour à vous deux,

 

Alors voici les précision demandées :

 

1. L'assemblage peut aller jusqu'à 40-50m > avec un pas tous les 20 ou 30cm ... j'aimerai éviter de me farcir 150 états de visiblité !!!

 

2. "Qu'il reste le moins de "vide" possible, je suppose,..." > C'est bien ça, on commence par placer les blocs de 240 (les plus grands), puis quand ca rentre plus on met des 120, puis quand ça rentre plus on essaye des 90, puis des 60 etc...

 

 

Encore merci de vous intéresser à mon problème. En espérant arriver à une solution...

Posté(e)

Re,

 

erso je ne vois pas comment automatiser cela avec les blocs dyn.

 

Ben moins non plus !

 

 

j'aimerai éviter de me farcir 150 états de visiblité !!!

 

Ce que je comprend, mais,...

 

A moins de voir les possibilités sur d'autres logiciels compatible,...Inventor ? (Je connais très mal donc je dis peut-être une bêtise,...)

 

Bon courage,

Civil 3D 2025 - COVADIS_18.3b

https://www.linkedin...3%ABt-95313341/

Posté(e)

hello

 

peut etre qu'il faudrait connaitre le but ultime final de l'operation

 

car des blocs de 24cm pour aller j'usqua 50 metres ca fait bcp

 

c'est pour de l'electrique ? mecanique ?

 

 

est ce que ca doit rester en blocs de 50 metres ?

ou tu dois ensuite decomposer pour n'avoir que des blocs de 24cm ,20,12,...

 

le plus facile semble un LISP

 

point d'insertion de l'ensemble

point final ou direction de l'ensemble

calcul de la longueur

 

calcul du nombre d'elements pour cette longueur

 

et implantation des blocs

 

x bloc de 240

x de 200 .....

 

les grouper tous au final

ou en refaire un bloc pour une meilleur exploitations

 

mais tu risques de te retrouver avec une multitude de nom de blocs par fichier

ou des noms different representant la meme chose mais dans des fichiers dessin differents

un "BORd.." quoi

 

rien ne t'empechera dans un futur d'implanter un bloc qui ne fait que 50 ou autre

evolution de norme ??

 

a+

 

phil

 

[Edité le 4/6/2010 par PHILPHIL]

FREELANCE

Autodesk Architecture 2025 sous windows 11 64

REVIT

24 pouces vertical + 30 pouces horizontal + 27 pouces horizontal

Posté(e)

Salut,

 

Un petit LISP qui semble répondre à ta demande.

 

L'utilisateur spécifie le point d'insertion et le point final.

S'il n'existe pas, un bloc de la longueur est créé. Il est nommé par une succession de A, B, C, D, et E correspondants aux blocs de 240, 120, 90, 60 et 40 qui le composent, un bloc nommé "AABDE" sera composé de 2 blocs de 240, 1 bloc de 120, 1 bloc de 60 et un bloc de 40.

 

Il faut juste que tu remplaces dans la liste des noms de blocs les numéros (240, 120, 90, 60 et 40) par les noms des blocs correspondants.

 

(defun c:toto (/ foo GetItem ins pt len lst name rot)
 (vl-load-com)
 (or *acad* (setq *acad* (vlax-get-acad-object)))
 (or *acdoc* (setq *acdoc* (vla-get-ActiveDocument *acad*)))
 (or *Blocks* (setq *Blocks* (vla-get-Blocks *acdoc*)))

 (defun foo (len)
   (cond
     ((      ((      ((      ((      ((      ((      ((      ((      ((      ((      ((      ((      (T (cons '(240 . "A") (foo (- len 240))))
   )
 )

 (defun GetItem (col name / obj)
   (vl-catch-all-apply
     (function (lambda () (setq obj (vla-item col name))))
   )
   obj
 )

 (setq	bNames
 '([surligneur]("A" . "240") ;_ remplacer 240 par le nom du bloc de 240
   ("B" . "120") ;_ remplacer 120 par le nom du bloc de 120
   ("C" . "90") ;_ remplacer 90 par le nom du bloc de 90
   ("D" . "60") ;_ remplacer 60 par le nom du bloc de 60
   ("E" . "40") ;_ remplacer 40 par le nom du bloc de 40[/surligneur]
  )
 )

 (if
   (and
     (setq ins (getpoint "\nPoint d'insertion: "))
     (setq pt (getpoint ins "\nFin du bloc: "))
     (    )
    (progn
      (setq lst  (foo len)
     name (apply 'strcat (mapcar 'cdr lst))
     ins  (trans ins 1 0)
     pt	  (trans pt 1 0)
     rot  (angle ins pt)
      )
      (if (not (GetItem *blocks* name))
 (progn
   (setq pt  '(0. 0. 0.)
	 blk (vla-Add *blocks* (vlax-3d-point pt) name)
   )
   (while lst
     (vla-InsertBlock
       blk
       (vlax-3d-point pt)
       (cdr (assoc (cdar lst) bNames))
       1.
       1.
       1.
       0.
     )
     (setq pt  (list (+ (car pt) (caar lst)) (cadr pt) (caddr pt))
	   lst (cdr lst)
     )
   )
 )
      )
      (vla-InsertBlock
 (vla-get-ModelSpace *acdoc*)
 (vlax-3d-point ins)
 name
 1.
 1.
 1.
 rot
      )
    )
 )
 (princ)
)

Gilles Chanteau - gileCAD - GitHub
Développements sur mesure pour AutoCAD

Posté(e)

Je reviens donner des précisions :

 

Je travaille dans une entreprise de bâtiment, je planifie et organise les chantiers.

Pour réaliser les murs en béton armé, nous utilisons des "banches", dont les modules mesurent 240 cm, 120, 90, 60 et 40.

 

Afin d'optimiser et homogénéïser le travail sur chantier, je réalise des rotations de banches. Il s'agit en fait de dire que tel jour nous faisons tel mur, en plaçant les modules de telle façon. Je produis donc des carnets de rotation pour la chantier.

 

Mon travaille se décompose en 2 temps :

1. Je trace des polylignes à l'axe des murs, en les plancant dans le calque du jour concerné.

2. Une fois toutes mes polylignes tracées et affectées à un calque, je place les modules qui vont bien afin de représenter le matériel utilisé jour par jour.

 

 

Je vous joins ce fichier AutoCAD pour parfaire mon explication. http://dl.free.fr/gMk5r4kyp/Rotation.dwg

 

Je n'ai aucune idée du travail que cela représente en Lisp, je ne sais pas programmer dans ce langage...

 

Merci d'avance à ceux qui sauront m'aiguiller...

 

EDIT : Bonjour Gille, merci je vais regarder ça et je vous tiens informé

 

[Edité le 4/6/2010 par masterdisco]

Posté(e)

ERREUR DANS MON FICHIER D'ILLUSTRATION,

 

En bas à droite, lire "Cas d'un mu BLOQUE" pour le cas de gauche et "Cas d'un mur libre" pour celui de droite. (inverser)

Posté(e)

Je vais peut être dire encore une bêtise.

 

Si ton mur fait 50 m de long et que sur pratiquement la totalité tu mets des 240, pourquoi ne pas déjà utiliser la commande Mesurer avec ton bloc de 240 pour les positionner sur la polyligne.

 

Ensuite pour le final tu utilise un bloc dyn avec paramètre de visibilité qui contient les 240+120, 240+90, 240+60 etc.

 

 

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é