Aller au contenu

SELETION BLOC DYNAMIC!!!!!!!!


Messages recommandés

Posté(e)

Bonjour à tous,

 

Avant de me lancer dans la création d'un bloc dynamic pour mes différents section de poteau, j'ai quand même voulu savoir si un bloc dynamic était séléctionnable soit par la commande "filter" soit par "_qselect".

 

Bin moi j'y suis pas arrivé. SNIF :casstet:

 

Explication:

 

Dans mon bloc dynamic j'ai un paramêtre de consultation qui affiche les différents section de poteau:20x20,30x30,40x40..............

J'insers mon bloc dynamic dans un plan j'en ai 20 avec le paramêtre de consulatation 20x20 et 10 avec le paramêtre de consultation 40x40.

Comment je fais pour selectionner en une fois tous mes poteaux 40x40 pour les passer en 30x30?

 

Quelqu'un à une idée?

 

MERCI

 

Car là j'ai un gros problème et cela pourrait me faire arréter l'usage des blocs dynamics.

 

A+

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

Meilleurs contributeurs dans ce sujet

Posté(e)

Salut!

Très bonne question!!

 

A part avec un lisp je vois pas trop sinon les mettre sur un calque différent

"Je suis fasciné par l'air. Si on enlevait l'air du ciel, tous les oiseaux tomberaient par terre... Et les avions aussi... En même temps l'air tu peux pas le toucher... Ca existe et ça existe pas... Ca nourrit l'homme sans qu'il ait faim... It's magic ! L'air c'est beau en même temps tu peux pas le voir, c'est doux et tu peux pas le toucher... L'air, c'est un peu comme mon cerveau..."

J-C Van Damme

Posté(e)

Bonjour à toutes et tous,

 

Comment je fais pour selectionner en une fois tous mes poteaux 40x40 pour les passer en 30x30?

 

Je rejoint jalna

 

Très bonne question!!

 

A part une perso, je ne vois vraiment pas non plus et il est vrai que ce serait génial de pouvoir réaliser instantanément une modification sur tous les blocs "filtrés",...

Civil 3D 2025 - COVADIS_18.3b

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

Posté(e)

Salut

 

Avec ce petit lisp par exemple

 

(defun selbl(/ js nom rec sel)
 (vl-load-com)
 (setq js (ssadd))
 (and	(setq nom (getstring T "\nNom du bloc : "))
(tblsearch "block" nom)
(ssget (list (cons 0 "INSERT") (cons 2 (strcat nom ",`*U*"))))
   (progn
     (vlax-for bl (setq sel (vla-get-activeselectionset (vla-get-activedocument (vlax-get-acad-object))))
(setq rec (if (vlax-property-available-p bl 'effectivename)
	    (vla-get-effectivename bl)
	    (vla-get-name bl)
	  )
)
(and (eq (strcase rec) (strcase nom))
  (setq js (ssadd (vlax-vla-object->ename bl) js))
)
     )
     (vla-delete sel)
   )
 )
 js
)

 

Exemple :

Commande: dp

DEPLACER

Choix des objets: (selbl)

 

Nom du bloc : test

 

Choix des objets: Spécifiez le coin opposé: 2 trouvé(s)

 

Choix des objets:

2 trouvé(s)

 

Choix des objets:

 

Spécifiez le point de base ou [Déplacement] : Spécifiez le

deuxième point ou : *Annuler*

 

@+

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)

Ben oui

Un bloc dynamique dans un dessin est nommé comme un bloc anonyme et chaque bloc anonyme est unique.

D'ailleurs, les noms des blocs dynamiques commencent toujours par *U*.

La seul chose en commun est le paramètre EffectiveName qui donne le nom du bloc dynamique qui est le même que celui qui sert par exemple lors de l'insertion.

Donc, pour pouvoir retrouver ses petits, ce bout de lisp que l'on lance lors de la sélection.

 

@+

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)

Tu à r^pondu trop vite , je suis un peu lent.

 

Donc cela signifie qu'on ne peu pas selectionner et faire un tri sur un bloc dynamic en fonction d'un paramêtre de consultation.

 

AIE, AIE.

 

Est ce que AUTODESK à prévu quelque chose pour cela, car pour moi cela annonce la fin des blocs dynamic.

 

A+

Posté(e)

Re,

 

Merci pour ta réponse Patrick_35,

 

AIE, AIE.

 

Pareil pour moi,...

 

Autant les blocs dyns c'est génial car on peut faire vraiment énorméméent de choses (surtout en les associants à du language DIESEL) mais la limite est celle que tu énonces ludo07, et ça ça me fait penser à un travail non aboutit !

 

Mr Autodesk, si tu nous lis, (mais j'ai de gros doutes,...)

Civil 3D 2025 - COVADIS_18.3b

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

Posté(e)

Re,

 

Peut-être un tord.

 

Tu en as peut-être pas vu l'intérêt car tu sais déjà faire plein de trucs dans d'autres languages,.... :P

 

Personnellemnt, je m'attaque à ce qui me semble le plus abordable en premier, plus par "manque de temps" que d'envie,...

 

Et les blocs dyns, faut reconnaître que c'est une révolution dans la façon de travailler, et ça, y'a pas photo pour moi !

 

car pour moi cela annonce la fin des blocs dynamic.

 

N'éxagérons rien !

Civil 3D 2025 - COVADIS_18.3b

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

Posté(e)

Bonsoir tout le monde.

 

LILI2006, peut tu nous en dire plus!

 

on peut faire vraiment énorméméent de choses (surtout en les associants à du language DIESEL)

 

Etant un utilisateur archarné de blocs dynamiques, cela pourrait m'interesser... :P

 

A+

Posté(e)

Re,

 

Par exemple pour retrouver dans une nomenclature la longueur développée d'un acier après étirement =>

 

Exemple ici sur un casque de pieu => les cotes du cadre (Acier repérés 1) se mettent à jour en fonction de l'étirement de ces différentes caractéristiques.

 

http://images4.hiboox.com/images/2808/76ea049d898a56954abb5736bb9a103a.jpg

 

 

Exemple d'écriture pour récupérer la longueur développée (Longueur totale Lt = 209 cm dans notre exemple) =>

 

800x600http://images4.hiboox.com/images/2808/d4ba73287d6552fab30cd6bf12516209.jpg"[/img]

 

Je ne peux pas mettre le fichier en ligne car développé conjointement avec un BE de structure qui compte faire des définitions de tous les ouvrages élémentaires de construction bâtiment. A ce jour, sur le même principe, environ 10 éléments (tout ce qui touche de prés et de loin aux fondations de tous types, et ça marche du feu de dieu,...)

 

Je pars pour 15 jours testé ça grandeur nature en production !

 

J'estime à un gain d'efficacité de l'ordre de 1 pou 4 !!! Bref, la révolution lorsque l'on à que AutoCAD ! Je pense (du moins j'espère) qu'il n'y aura aucun soucis de lecture sur des lights, mais je suis confiant,...

 

Je t'en dirais alors plus à mon retour,...

Civil 3D 2025 - COVADIS_18.3b

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

Posté(e)

Salut,

 

Donc cela signifie qu'on ne peu pas selectionner et faire un tri sur un bloc dynamic en fonction d'un paramêtre de consultation.

 

Non, on peut avec de la programmation.

Vite fait en reprenant le LISP de Patrick_35, en plus du nom du bloc, il faut donner le nom du paramètre de consultation et sa valeur.

 

(defun selbl (/ js nom cns val rec sel prop)
 (vl-load-com)
 (setq js (ssadd))
 (and (setq nom (getstring T "\nNom du bloc : "))
      (tblsearch "block" nom)
      (setq cns (strcase (getstring T "\nNom du paramètre de consultation : ")))
      (setq val (getstring T "\nValeur de la consultation : "))
      (ssget
 (list (cons 0 "INSERT") (cons 2 (strcat nom ",`*U*")))
      )
      (progn
 (vlax-for bl (setq sel
		     (vla-get-activeselectionset
		       (vla-get-activedocument (vlax-get-acad-object))
		     )
	      )
   (setq rec (if (vlax-property-available-p bl 'effectivename)
	       (vla-get-effectivename bl)
	       (vla-get-name bl)
	     )
   )
   (and	(eq (strcase rec) (strcase nom))
	(eq (vla-get-IsDynamicBlock bl) :vlax-true)
	(eq val
	    (cdr
	      (assoc
		cns
		(mapcar
		  '(lambda (x)
		     (cons (strcase (vla-get-PropertyName x))
			   (vlax-variant-value (vla-get-value x))
		     )
		   )
		  (vlax-invoke bl 'getDynamicBlockProperties)
		)
	      )
	    )
	)
	(setq prop (vlax-invoke bl 'getdynamicblockproperties))
	(setq js (ssadd (vlax-vla-object->ename bl) js))
   )
 )
 (vla-delete sel)
      )
 )
 js
) 

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

Posté(e)

Re,

 

Désolé (gile) , mais je n'arrive à aucun résultats !

 

Mais je sais que je m'y prend mal =>

 

Commande: selbl

 

Nom du bloc : MASSIF COFFRAGE DYN

 

Nom du paramètre de consultation : linéaire

 

Valeur de la consultation : 140

 

Choix des objets: Spécifiez le coin opposé: 1 trouvé(s)

 

Choix des objets:

 

Que faut-il répondre aux questions ?

Nom du paramètre de consultation :

Valeur de la consultation

 

Un fichier test , éventuellement,

 

Il faut absolument associer un paramètre de consultation je suppose ?

Il faut que je reprenne ce bloc pour pouvoir tester ton lisp je pense.

 

Jeu de valeurs de l'étirement =>

 

http://images4.hiboox.com/images/2808/b3827a5acb5f495048fa23e00f92230b.jpg

 

Merci d'avance,

Civil 3D 2025 - COVADIS_18.3b

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

Posté(e)
Re,

 

Désolé (gile) , mais je n'arrive à aucun résultats !

 

Mais je sais que je m'y prend mal =>

 

Commande: selbl

 

Nom du bloc : MASSIF COFFRAGE DYN

 

Nom du paramètre de consultation : linéaire

 

Valeur de la consultation : 140

 

Choix des objets: Spécifiez le coin opposé: 1 trouvé(s)

 

[surligneur]Choix des objets:

[/surligneur]

 

Si tu as un résultat : un jeu de sélection.

 

Relis attentivement l'exemple d'utilisation donné par Patrick_35 ou essaye :

 

(sssetfirst nil (selbl)) 

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

Posté(e)

Salut,

 

Dans le même esprit que les petites routines de Spécial_sélections, un routine pour sélectionner tous les blocs dynamiques qui ont la même valeur (pour le même paramètre) que ceux spécifiés dans la boite de dialogue.

 

Je le laisse quelques temps en test pour corriger les bugs ou apporter des améliorations, je le rajouterais à Spécial_sélections ensuite.

 

EDIT : suppression du fichier DCL temporaire.

 

;;; SSD (gile)
;;; Sélection de blocs dynamiques par un paramètre et sa valeur

(defun c:ssd (/ ss blk name val res)
 (vl-load-com)
 (and
   (or
     (and
(setq ss (cadr (ssgetfirst)))
(= 1 (sslength ss))
(setq blk (vlax-ename->vla-object (ssname ss 0)))
     )
     (and
(sssetfirst nil nil)
(setq blk (car (entsel)))
(setq blk (vlax-ename->vla-object blk))
     )
   )
   (= (vla-get-ObjectName blk) "AcDbBlockReference")
   (= (vla-get-IsDynamicBlock blk) :vlax-true)
   (setq name (vla-get-EffectiveName blk))
   (setq val (DynBlkPropValue
	(vl-remove-if
	  (function
	    (lambda (x) (= x "Origin"))
	  )
	  (mapcar
	    'vla-get-PropertyName
	    (vlax-invoke blk 'getDynamicBlockProperties)
	  )
	)
      )
   )
   (ssget "_X"
   (list '(0 . "INSERT") (cons 2 (strcat name ",`*U*")))
   )
   (setq res (ssadd))
   (vlax-for b	(setq ss (vla-get-ActiveSelectionSet
		   (vla-get-activeDocument
		     (vlax-get-acad-object)
		   )
		 )
	)
     (if
(and
  (= (vla-get-EffectiveName b) name)
  (equal
    val
    (assoc
      (car val)
      (mapcar
	'(lambda (x)
	   (cons
	     (vla-get-PropertyName x)
	     ((lambda (v)
		(if (= (type v) 'STR)
		  (strcase v)
		  v
		)
	      )
	       (vlax-get x 'Value)
	     )
	   )
	 )
	(vlax-invoke b 'getDynamicBlockProperties)
      )
    )
  )
)
 (ssadd (vlax-vla-object->ename b) res)
     )
   )
   (vla-delete ss)
 )
 (sssetfirst nil res)
 (princ)
)

;;; DynBlkPropValue (gile)
;;; Boite de dialogue pour choisir un paramètre dynamique et sa valeur
;;;
;;; Argument : la liste des paramètres dynamiques

(defun DynBlkPropValue (lst / tmp file dcl_id val ret)
 (setq	tmp  (vl-filename-mktemp "Tmp.dcl")
file (open tmp "w")
 )
 (write-line
   "DynBlkProp:dialog{label=\"Propriétés dynamiques\";
   :popup_list{label=\"Paramètre\";key=\"lst\";edit_width=25;allow_accept=true;}
   :edit_box{label=\"Valeur\";key=\"val\";edit_width=25;allow_accept=true;}
   spacer;ok_cancel;}"
   file
 )
 (close file)
 (setq dcl_id (load_dialog tmp))
 (if (not (new_dialog "DynBlkProp" dcl_id))
   (exit)
 )
 (start_list "lst")
 (mapcar 'add_list lst)
 (end_list)
 (action_tile "val" "(setq val $value)")
 (action_tile
   "accept"
   "(setq ret (cons (nth (atoi (get_tile \"lst\")) lst)
   (cond
   ((numberp (read val)) (read val))
   ((listp (read val)) (read val))
   (T (strcase val)))))
   (done_dialog)"
 )
 (start_dialog)
 (unload_dialog dcl_id)
 (vl-file-delete tmp)
 ret
)

[Edité le 12/7/2008 par (gile)]

 

[Edité le 12/7/2008 par (gile)]

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

Posté(e)

Bonjour à tous,

 

Merci (gile) tu es un dieu.

 

Ou un 1/2 dieu,

 

enfin bref c'est exacrement ce que je rechercher.

 

Et je pense que Mr AUTODESK devrait incorporer ce genre de programme pour completer la commande "_QSELECT".

 

Merci (gile)

 

A+

Posté(e)

Salut lili2006,

 

Tu peux ré-essayer SSB, il y avait une faute de frappe dans un nom de variable, c'est réparé.

 

Si (sssetfirst nil (selbl)) retourne (nil ), c'est donc que ça fonctionne, le jeu de sélection devrait être mis en surbrillance (à moins qu'il soit vide)

 

[Edité le 12/7/2008 par (gile)]

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

Posté(e)

Re,

 

J'ai à nouveau modifié le code, j'avais oublié de supprimer le fichier DCL temporaire créé à chaque appel.

Ces fichiers sont enregistrés dans le dossier dont le chemin est donné dans Options > onglet Fichiers > Emplacement du fichier d'enregistrement automatique.

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

Posté(e)

Re,

 

(gile) ça marche du tonnerre de dieu !!!

 

Un grand merci ! Un outil qui va vite devenir indispensable !!

 

Que dois-je rajouter au lisp "sel" pour avoir également SSD ?

 

Si c'est la dernière ligne, un truc du genre =>

 

 

":radio_button{"

"label=\"Sel Paramètre Blocdyn\";key=\"(c:ssd)\";}}"

"ok_cancel;}"

 

Pour que le bouton radio fonctionne, il faut rajouter le lisp "ssd" dans "Spécial_sélections", ou il peut rester indépendant si charger ?

 

J'avoue que je te pose la question avant de tester,...

 

Merci encore,

 

Civil 3D 2025 - COVADIS_18.3b

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

Posté(e)

Le LISP peut rester indépendant, j'attends un peu de voir si d'aucun décèle des bugs avant de l'ajouter à Spécial_sélections.

 

Tu peux rajouter les lignes de code que tu donnes, juste avant "ok_cancel;}" dans SEL.

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

Posté(e)

Re,

 

Merci (gile) , tout fonctionne,

 

j'attends un peu de voir si d'aucun décèle des bugs avant de l'ajouter à Spécial_sélections.

 

Oui oui, bien sûr ! Je profite de cet exercice pour tenter de comprendre comment marche les boutons faisant appel aux lisps.

 

Et comme le début de "sel" appelle (du moins, je suppose !!) "spécial selection" (Rappel => "IncrInputbox:dialog{label=\"Spécial sélections\";"), je me demandais si cela posait un pb pour "ssd", sachant qu'il est également chargé !

 

Merci encore, je reteste sur des blocs plus complet (au niveau des paramètres) et revient si je découvre des bugs,...

Civil 3D 2025 - COVADIS_18.3b

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

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é