Aller au contenu

Comptabiliser des blocs dynamiques


Messages recommandés

Bonjour,

 

J'ai un bloc dynamique qui contient des blocs des fauteuils de salles de tailles différentes (19'', 20'', 21'') que je cherche à comptabiliser. J'ai fait quelques recherches, essayé la commande _EATTEXT mais pas de résultat probant.

 

Un ancien post parlé d'un fichier Lisp, fourni par _Gile mais le lien ne fonctionne plus.

 

Quelqu'un aurait une autre solution?

 

Merci, bonne fin de journée !!

Lien à poster
Partager sur d’autres sites

Bonsoir Eryk,

 

Le lisp que tu cherches est peut-être celui-ci.

Toutefois, sans avoir besoin de lisp, pour comptabiliser tes bloc imbriqués dans tes blocs dynamiques, tu peux très bien faire une extraction en faisant une table.

 

Commande: Tableau

ou

Commande: _table

 

Bonne soirée.

Steven________________________________________

Pour le taf; Windows (et ses emmerdes) sinon pas d'AutoCAD.

Pour la maison; Linux Mint et pas de problèmes. Mais pas d'AutoCAD.

En rêve; AutoCAD sous Linux.

Lien à poster
Partager sur d’autres sites

Hello

 

Non je pense que le Lisp/VLisp recherche est l'excellent BCNT de Gilles (comme d'habitude)

 

La bonne version de BCNT compte simplement dans l'ecran texte les blocs (classiques+dynamiques)

 

Merci Gilles !

 

Bye, lecrabe

BCNT__Fenetre_Capture_13.zip

Autodesk Expert Elite Team

Lien à poster
Partager sur d’autres sites

Salut,

 

Merci pour vos réponses mais en fait, j'ai trouvé ce dont j'avais besoin et bien sûr, fourni par _Gile. C'est le lisp SSD qui te permet de comptabiliser les blocs dynamiques par sélection suivant la propriété ''Visibilité''.

 

Le lisp Bcount lui ne fonctionne pas avec les blocs dynamiques, il ne les reconnaît pas.

 

Bonne soirée : )

Lien à poster
Partager sur d’autres sites

Hello

 

Tu plaisantes mais je suis "presque" sur que le Lisp BCNT (de Gilles)

- desole pas d'AutoCAD pour verifier -

traite parfaitement les blocs dynamiques : Comptage simple dans l'ecran texte

 

Par contre la routine BCOUNT des Express Tools ne les reconnait pas !!

 

Bonne Nuit, Bye, lecrabe

Autodesk Expert Elite Team

Lien à poster
Partager sur d’autres sites
  • 1 mois après...

Bonjour a tous,

 

J'utilise depuis bien longtps la commande Bcount, mais m'etant mis au bloc Dynamique, la commande BCNT de Gile est indispensable...

 

Par contre peut on "l'améliorer" en prenant en compte les bloc imbriqué?

Je m'explique, j'ai un bloc dynamique constitué de 3 bloc avec 1 Ventilo-Conv, 1 Grille Extraction et 1 Grille de Soufflage.

Quand je lance BCNT, j'ai bien le nombre de Bloc Dyn mais pas mon nombre de Griles ..??

 

Ya t'il un moyen de palier a mon probleme ?

Lien à poster
Partager sur d’autres sites

Bonjour a tous, Je sais pas si ma question précedente est tres compréhensible au vue de vos nombreuses réponse (rires forts) ...

 

J'ai une autre question qui se rapproche de ma précedente : Est til possible de Compter les blocs dynamiques selon leur parametres ?

Je m'explique : J'ai un porte dynamique avec 3 Tailles possible. Serait-il possible de faire un comptage en differentient les tailles.

Ex: Avoir 3 tailles 0.84 et 2 tailles 0.74 plutot que d'avoir 5 portes étirables ?

Lien à poster
Partager sur d’autres sites
  • 2 semaines après...

Salut

 

Je pense que l'on va boire un coup à ma santé ;)

 

(defun c:cnd(/ js lst n tbl)
 (setq doc (vla-get-activedocument (vlax-get-acad-object)))
 (vla-startundomark doc)
 (and (ssget (list (cons 0 "insert")))
   (progn
     (vlax-for ent (setq sel (vla-get-activeselectionset doc))
(and (eq (vla-get-isdynamicblock ent) :vlax-true)
  (setq tbl (cons (cons (vla-get-effectivename ent)
			(vlax-get (car (vlax-invoke ent 'getdynamicblockproperties)) 'value)
		  )
		  tbl
	    )
  )
)
     )
     (vla-delete sel)
     (while tbl	
(setq n   (length tbl)
	  js  (car tbl)
	  tbl (vl-remove js tbl)
	  lst (cons (cons (- n (length tbl)) js) lst)
)
     )
     (mapcar '(lambda(x)
	(princ "\n")
	(repeat (- 4 (strlen (itoa (car x))))
	  (princ " ")
	)
	(princ (car x))
	(princ (strcat " " (cadr x) "..." ))
	(princ (cddr x))
      )
      (vl-sort lst '(lambda(a B)(if (eq (cadr a) (cadr B))
				  (< (cddr a) (cddr B))
				  (< (cadr a) (cadr B))
				)
		    )
      )
     )
   )
 )
 (vla-endundomark doc)
 (princ)
)

 

@+

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

Lien à poster
Partager sur d’autres sites

Heuuuu Merci, mais je sais pas quoi en faire .....

Je l'ai coller dans un Bloc note, renommer en LSP, mais des que je veut le passer sous autocad il me dit : Erreur : Placement incorect d'un point d'entrée

Tu as surement fait un mauvais copier/coller.

Refais le directement sur autocad pour voir

 

@+

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

Lien à poster
Partager sur d’autres sites

Hello Mr P35

 

MERCI et RESPECT pour cet excellente routine qui comptabilise les Blocs dynamiques

dans l'ecran texte en fonction d'UN etat de visibilite !

 

Au fait que se passe t-il si on a N etats de visibilite sur UN bloc ?

CND traite seulement le 1er etat ou TOUS les etats ??

 

MERCI, Meilleurs Voeux et surtout LA SANTE, Bye, lecrabe

Autodesk Expert Elite Team

Lien à poster
Partager sur d’autres sites

Salut et tous mes voeux de bonheur et de santé pour cette nouvelle année.

 

J'avais fait au plus simple mais comme tu le demandes

(defun c:cnd(/ js lst n tbl)
 (setq doc (vla-get-activedocument (vlax-get-acad-object)))
 (vla-startundomark doc)
 (and (ssget (list (cons 0 "insert")))
   (progn
     (vlax-for ent (setq sel (vla-get-activeselectionset doc))
(and (eq (vla-get-isdynamicblock ent) :vlax-true)
  (setq tbl (cons (cons (vla-get-effectivename ent)
			(mapcar '(lambda(x)(list (vlax-get x 'propertyname) (vlax-get x 'value)))
				(vl-remove-if '(lambda(x)(eq (vla-get-show x) :vlax-false))
					      (vlax-invoke ent 'getdynamicblockproperties)
				)
			)
		  )
		  tbl
	    )
  )
)
     )
     (vla-delete sel)
     (while tbl	
(setq n   (length tbl)
      js  (car tbl)
      tbl (vl-remove js tbl)
      lst (cons (cons (- n (length tbl)) js) lst)
)
     )
     (mapcar '(lambda(x)
	(princ "\n")
	(repeat (- 6 (strlen (itoa (car x))))
	  (princ " ")
	)
	(princ (car x))
	(princ (strcat " " (cadr x)))
	(mapcar '(lambda(x)
		  (princ (strcat " ... \"" (car x) " : "))
		  (princ (cadr x))
		  (princ "\"")
		)
		(cddr x)
	)
	
      )
      (vl-sort lst '(lambda(a B)(< (cadr a) (cadr B))))
     )
   )
 )
 (vla-endundomark doc)
 (princ)
)

 

@+

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

Lien à poster
Partager sur d’autres sites

Merci, ca marche nikel... Dailleurs ya bcp trop d'information du coup (rires forts) !!

 

A la tienne Patrick !!!

 

Par contre, ca ne prend pas en compte les Bloc imbriqué apparement ??

 

J'utilise depuis bien longtps la commande Bcount, mais m'etant mis au bloc Dynamique, la commande BCNT de Gile est indispensable...

 

Par contre peut on "l'améliorer" en prenant en compte les bloc imbriqué?

Je m'explique, j'ai un bloc dynamique constitué de 3 bloc avec 1 Ventilo-Conv, 1 Grille Extraction et 1 Grille de Soufflage.

Quand je lance BCNT, j'ai bien le nombre de Bloc Dyn mais pas mon nombre de Griles ..??

 

Ya t'il un moyen de palier a mon probleme ?

0

 

+

-

 

Lien à poster
Partager sur d’autres sites

L'avantage de l'extraction de données qui est peut-être fastidieuse, quoique... est qu'on peut se faire un tableau dans AutoCAD avec le quantitatif de blocs, blocs dynamiques et blocs imbriqués et que lorsqu'on copie ou supprime des blocs, un clic droite suffit à mettre la table à jour et les paramètres des blocs dynamiques sont pris en compte.

Steven________________________________________

Pour le taf; Windows (et ses emmerdes) sinon pas d'AutoCAD.

Pour la maison; Linux Mint et pas de problèmes. Mais pas d'AutoCAD.

En rêve; AutoCAD sous Linux.

Lien à poster
Partager sur d’autres sites

Par contre, ca ne prend pas en compte les Bloc imbriqué apparement ??

Je rejoins Lecrabe, d'autant qu'un bloc dynamique imbriqué dans un autre bloc n'est plus dynamique.

 

L'avantage de l'extraction de données qui est peut-être fastidieuse, quoique... est qu'on peut se faire un tableau dans AutoCAD avec le quantitatif de blocs, blocs dynamiques et blocs imbriqués et que lorsqu'on copie ou supprime des blocs, un clic droite suffit à mettre la table à jour et les paramètres des blocs dynamiques sont pris en compte.

Et avec des blocs imbriqués qui s'affiche ou pas selon les visibilités ?

 

@+

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

Lien à poster
Partager sur d’autres sites

C'est bien ce qu'il me semblait, il faut compter des blocs en fonction des états de visibilité.

Le problème avec les blocs dynamiques, c'est que l'on peut faire plusieurs choses comme les paramètres d'étirement.

Dans le cas présent, programmer un décompte avec les blocs imbriqués n'est pas simple et alourdi considérablement le temps de traitement.

 

Le présent lisp indique et fait un trie sur les états de visibilités et comme tu sais à quoi ils correspondent, un petit tout sur Excel et le tour est joué.

 

ps : le lisp actuel est passe-partout. On peut même faire des métrés comme pour les chemins de câbles (ou gaines) avec un paramètre de longueur et de largeur.

pps : rien ne t'interdit de reprendre la suite

 

@+

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

Lien à poster
Partager sur d’autres sites

Et avec des blocs imbriqués qui s'affiche ou pas selon les visibilités ?

@+

 

Non, ça ne comptabilise pas les blocs qui ne sont pas visible?

 

Si j'ai une table avec 6 chaises imbriquées et que je mets un état de visibilité de 2 chaises, le tableau ne comptabilisera que 2 chaises. Les 4 chaises restantes qui ne sont pas visibles ne sont pas comptabilisées.

si je mets l'état de visibilité de 6 chaises, le tableau comptabilisera les 6 chaises.

Steven________________________________________

Pour le taf; Windows (et ses emmerdes) sinon pas d'AutoCAD.

Pour la maison; Linux Mint et pas de problèmes. Mais pas d'AutoCAD.

En rêve; AutoCAD sous Linux.

Lien à poster
Partager sur d’autres sites

J'ai du mal m'exprimer....

 

J'ai un Bloc Dynamique nommé "Gainable" dans lequel j'ai 5 bloc "Normaux" :

 

- 1 Ventilo-convecteur

- 2 Grilles d'extraction

- 2 Grilles de soufflage

 

C'est ca que je voulais compter.

 

Ton bloc "Gainable" doit donc avoir 3 états de visibilités, je suppose.

1 état 1 ventilo-convecteur

1 état 2 grilles d'extaction

1 état 2 grilles de soufflage

 

Suivant l'état de visibilité du bloc, l'extraction de données comptabilisera les bloc imbriqués qui sont visibles.

Par exemple, dans un dessin vierge, tu insères le bloc "Gainable". Tu mets l'é"tat de visibilité 2 grilles d'extraction, dans ton tableau tu pourras avoir:

1 Gainable

2 grilles d'extractions.

Si tu copies le bloc "Gainable" avec le même état de visibilité, en mettant la table à jour, tu auras

2 Gainable

4 grilles d'extractions.

Si tu copies le bloc "Gainable" une troisième fois et que tu mets, à cette troisième copie, l'état de visibilité 2 grilles de soufflage, tu auras

3 Gainable

4 grilles d'extraction

2 grilles de soufflage

Et ainsi de suite.

Toutefois, tu n'es pas obligé d'indiquer dans ton tableau le nombre de bloc "Gainable". Tu peux juste avoir le nombre de grilles ou de ventilo-convecteurs visibles.

Steven________________________________________

Pour le taf; Windows (et ses emmerdes) sinon pas d'AutoCAD.

Pour la maison; Linux Mint et pas de problèmes. Mais pas d'AutoCAD.

En rêve; AutoCAD sous Linux.

Lien à poster
Partager sur d’autres sites

Rejoindre la conversation

Vous pouvez publier maintenant et vous inscrire plus tard. Si vous avez un compte, connectez-vous maintenant pour publier avec votre compte.

Invité
Répondre à ce sujet…

×   Collé en tant que texte enrichi.   Coller en tant que texte brut à la place

  Seulement 75 émoticônes maximum sont autorisées.

×   Votre lien a été automatiquement intégré.   Afficher plutôt comme un lien

×   Votre contenu précédent a été rétabli.   Vider l’éditeur

×   Vous ne pouvez pas directement coller des images. Envoyez-les depuis votre ordinateur ou insérez-les depuis une URL.

Chargement
×
×
  • Créer...