ZCAD Posté(e) le 29 octobre 2020 Posté(e) le 29 octobre 2020 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 Citer
lecrabe Posté(e) le 29 octobre 2020 Posté(e) le 29 octobre 2020 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 + DynamiquesMAIS 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) ) Citer Autodesk Expert Elite Team
Maxime063 Posté(e) le 29 octobre 2020 Posté(e) le 29 octobre 2020 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 1 Citer
ZCAD Posté(e) le 3 novembre 2020 Auteur Posté(e) le 3 novembre 2020 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. Merci beaucoup ça fonctionne à merveille ! Citer
lionelS Posté(e) le 4 février 2021 Posté(e) le 4 février 2021 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. ;) Citer
Steven Posté(e) le 4 février 2021 Posté(e) le 4 février 2021 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. 1 Citer 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.
lionelS Posté(e) le 5 février 2021 Posté(e) le 5 février 2021 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. Citer
Messages recommandés