Aller au contenu

Quantitatif bloc


ZCAD

Messages recommandés

Bonjour,

 

Je souhaite quantifier le nombre d'appareil que j'ai dans mon dwg.

 

Le problème est que j'ai des bloc dynamique et des blocs normaux.

J'ai un Lisp qui vient de Patrick 35, un excellent lisp mais elle prendre en compte uniquement les blocs dynamiques.

 

Est-ce qu'il existe une fonction dans AutoCAD ou un Lisp qui prend en compte tous les blocs pour le quantitatif ?

 

Merci d'avance.

LISP.lsp

Lien vers le commentaire
Partager sur d’autres sites

Hello

 

Depuis longtemps la commande _DATAEXTRACTION ou EXTRACTDONNEES fait le boulot !

 

Autre solution Sympa pour avoir seulement un tableau AutoCAD avec le quantitatif des Blocs Classiques + Dynamiques

MAIS NON INCLUS les Blocs dans les Reseaux associatfs ( ou alors il faut Decomposer / Exploser le Reseau Associatif )

L excellente routine Lisp "ListBlock" (avec le graphisme du Bloc) de notre grand maitre Gilles ! ... Voir ci-apres ...

 

Routine tiree de mon stock de 3001 routines ... MERCI Gilles !

 

LA SANTE, Bye, lecrabe ... En retraite J29 ...

 


;; 
;; https://forums.autodesk.com/t5/visual-lisp-autolisp-and-general/lisp-table/m-p/7822698#M365879
;; 
;; Routine: ListBlock par GC
;; 
;; Table des Blocs : Nom , Nombre , Graphisme du Bloc
;; 
;; 
;; Voir aussi ce sujet par GC :
;; https://forums.autodesk.com/t5/visual-lisp-autolisp-and-general/block-in-table/m-p/7827274#M366031
;; 
;; To be clearer, you can set the text height bay row type:
;; Only data rows (bit 1)
;; (vla-SetTextHeight table 1 height)
;; Only title row (bit 2)
;; (vla-SetTextHeight table 2 height)
;; Only header row (bit 4)
;; (vla-SetTextHeight table 1 height)
;; You can also combinate this, e.g. for the entire table (+ 1 2 4):
;; (vla-SetTextHeight table 7 height)
;; 

;;;;; 
;;;;;  Hauteur des Textes dans la Table = 5.0 ;;;;; 
;;;;;  (vla-SetTextHeight table 7 5.0)
;;;;; 


(defun c:ListBlock (/ ss name block blocks insPt table row)
 (vl-load-com)
 (or *acdoc*
     (setq *acdoc* (vla-get-ActiveDocument (vlax-get-acad-object)))
 )
 (or *blocks*
     (setq *blocks* (vla-get-Blocks *acdoc*))
 )

 ;; Select blocks
 (prompt "\nSelect blocks to list or <All>")
 (or (setq ss (ssget '((0 . "INSERT"))))
     (setq ss (ssget "_X" '((0 . "INSERT")))
     )
 )
 (if ss
   (progn

     ;; Build a list of dotted pairs (blockName . numberOfReferences) from the selection set
     (vlax-for	x (setq ss (vla-get-ActiveSelectionSet *acdoc*))
(if (not (vlax-property-available-p x 'Path))
  (setq	name   (vla-get-EffectiveName x)
	blocks (if (setq block (assoc name blocks))
		 (subst (cons name (1+ (cdr block))) block blocks)
		 (cons (cons name 1) blocks)
	       )
  )
)
     )
     (vla-delete ss)

     ;; Prompt for insertion point
     (initget 1)
     (setq insPt (trans (getpoint "\nInsertion point: ") 1 0))

     ;; Create the table
     (setq table (vla-addtable
	    (vla-get-modelspace *acdoc*)
	    (vlax-3d-point insPt)
	    (+ 2 (length blocks)) ; number of rows (including title and header)
	    3			; number of colums
	    20			; cell height
	    80			; row width
	  )
     )
     (vla-put-VertCellMargin table 4.0)
     (vla-put-TitleSuppressed table :vlax-false)
     (vla-put-HeaderSuppressed table :vlax-false)

     ;; Fill the titel and the header
;     (vla-setText table 0 0 "Blocks")
;     (vla-setText table 1 0 "Name")
;     (vla-setText table 1 1 "Count")
;     (vla-setText table 1 2 "Symbol") 

     ;; Textes version Francaise
     (vla-setText table 0 0 "Quantitatif des Blocs")
     (vla-setText table 1 0 "Nom")
     (vla-setText table 1 1 "Nombre")
     (vla-setText table 1 2 "Symbole") 

;;;;; Hauteur des Textes dans la Table = 5.0 ;;;;; 
(vla-SetTextHeight table 7 5.0)
;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;; 

     ;; fill the following rows from the list contents
     (setq row 2)
     (foreach item blocks
(vla-settext table row 0 (car item)) ; block name
(vla-settext table row 1 (cdr item)) ; references count
(vla-SetBlockTableRecordId	; block symbol
  table
  row
  2
  (vla-get-ObjectId (vla-Item *blocks* (car item)))
  :vlax-true
)
(setq row (1+ row))
     )
   )
 )
 (princ)
)

Autodesk Expert Elite Team

Lien vers le commentaire
Partager sur d’autres sites

Bonjour,

 

Je souhaite quantifier le nombre d'appareil que j'ai dans mon dwg.

 

Le problème est que j'ai des bloc dynamique et des blocs normaux.

J'ai un Lisp qui vient de Patrick 35, un excellent lisp mais elle prendre en compte uniquement les blocs dynamiques.

 

Est-ce qu'il existe une fonction dans AutoCAD ou un Lisp qui prend en compte tous les blocs pour le quantitatif ?

 

Merci d'avance.

 

J'ai cette routine dans mon stock qui prends en comtpe les blocs dynamiques et normaux sélectionnés et te fait un tableur dans autocad avec le compte de chaque blocs individuellement.

Compteur de blocs.lsp

  • Upvote 1
Lien vers le commentaire
Partager sur d’autres sites

  • 3 mois après...

Bonjour à tous,

 

Je me permet une question complémentaire :

Pour le comptage de blocs j'utilise l'excellent programme DbCount.lsp.

Malheureusement J'ai un nouveau blocs qui utilise en plus des paramètres de visibilité, une table de consultation.

Quelqu'un connait il un programme équivalenent qui gère les tables de consultations, ou qui sait adapter DBCount?

 

Merci d'avance pour le coup de main. ;)

Lien vers le commentaire
Partager sur d’autres sites

Salut,

 

Perso, j'utilise l'extraction de données intégrée à AutoCAD.

 

Soit, le paramétrage peut paraître un peu long au début mais lorsqu'on s'est créé des gabarits .dxe, c'est facile et rapide.

De plus, avec les extractions de données, on peut quantifier les blocs imbriqués, les blocs dynamique

avec les paramètres qui vont bien et même les blocs dans un réseau associatif.

 

Aussi, lorsque les blocs dynamiques ont des attributs, avec ATTIN / ATTOUT de Bryce,

on peut piloter les paramètres des blocs dynamiques depuis Excel comme les consultations, par exemple,

c'est-à-dire modifier la consultation dans Excel, réimporter les données dans AutoCAD de manière à modifier les blocs dans AutoCAD

et mettre à jour la table de l'extraction de données en un clic droite.

 

Cependant, on ne peut pas faire d'ATTIN / ATTOUT avec les blocs dynamiques qui sont dans un réseau associatif.

 

Je parle bien d'un réseau associatif et non pas une action d'un réseau dynamique.

  • Upvote 1

Steven________________________________________

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

Pour le perso Linux Mint et pas de problèmes. Mais pas d'AutoCAD.

En rêve; AutoCAD sous Linux.

Lien vers le commentaire
Partager sur d’autres sites

Merci Steven pour la piste de l'extraction de données.

 

Je n'avais jamais creusé de ce coté comme les lisp faisaient le job.

C'est pas mal effectivement, et dans mon cas précis ca me permet de compter mes blocs avec table de consultation, et finalement c'est pas si long que ca à configurer.

Lien vers le commentaire
Partager sur d’autres sites

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.

×
×
  • 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é