Aller au contenu

légende BLOC automatique - Lisp LG


Messages recommandés

Posté(e)

Bonjour,

 

Je souhaiterais obtenir une légende automatique de mes blocs dans mon fichier AUTOCAD.

Avec les blocs qui s'insérent dans la première colonne puis avec la colonne de quantité.

 

Je sais que autocad propose une extraction des entités me permettant de créér un tableau avec nom des blocs et quantité (+ d'autre colonne). Mais il insére le nom et pas le dessin des blocs.

 

En faisant une recherche sur les forums j'ai trouver le lisp de patrick _35 : LG, c'est exactement ce que je souhaite.

NOTA: j'utilise des blocs dynamiques.

 

En utilisant le lisp LG il y a possibilité de selectionner un gabarit de légende soit xls soit dwg.

Mon souhait serais d'utiliser le gabarit dwg mais il faudrait que le programme ajoute la dernière colonne des quantités.

 

Comment je fais?

 

Merci

 

 

Posté(e)

Bonsoir à toutes et tous,

 

Il y a aussi TABLOBLO,....

 

;; TABLOBLO (Tramber), revu par (gile)
;; Crée un tableau qui liste les blocs insérés (sélectionnés ou toute la collection)

(defun c:tabloblo
(/ libloc liidbloc ss col liref ptins tableVL cont row)
(vl-load-com)
(or *acdoc*
(setq *acdoc* (vla-get-ActiveDocument (vlax-get-acad-object)))
)
(prompt "\nSélectionnez les blocs à lister ou ")
(or (setq ss (ssget '((0 . "INSERT"))))
(setq ss (ssget "_X" '((0 . "INSERT")))
col T
)
)
(if ss
(progn
(vlax-for x
(setq
ss (vla-get-ActiveSelectionSet *acdoc*)
)
(or (vlax-property-available-p x 'Path)
(setq liref
(cons
(if (vlax-property-available-p x 'EffectiveName)
(vla-get-EffectiveName x)
(vla-get-Name x)
)
liref
)
)
)
)
(vla-delete ss)
)
)
(if col
(vlax-for i (vla-get-Blocks *acdoc*)
(if (and (not (wcmatch (setq name (vla-get-Name i)) "`**,*|*"))
(= :vlax-false (vla-get-IsXref i))
)
(setq libloc (append libloc (list (vla-get-name i)))
liidbloc (append liidbloc (list (vla-get-ObjectID i)))
)
)
)
(setq libloc (remove_doubles liref)
liidbloc (mapcar
'(lambda (x)
(vla-get-ObjectID
(vla-item
(vla-get-Blocks *acdoc*)
x
)
)
)
libloc
)
)
)
(initget 1)
(setq ptins (trans (getpoint "\nPoint d'insertion: ") 1 0))
(setq tableVL (vla-addtable
(vla-get-modelspace
(vla-get-activedocument (vlax-get-acad-object))
)
(vlax-3d-point ptins)
(+ 2 (length libloc))
3
20 ; Hauteur cellule
80 ; Largeur cellule
)
)
(vla-put-VertCellMargin tableVL 4.0) ; Marge verticale
(vla-put-TitleSuppressed tableVL :vlax-false)
(vla-put-HeaderSuppressed tableVL :vlax-false)
(vla-setText tableVL 0 0 "Blocs") ; Titre
(vla-setText tableVL 1 0 "Nom") ; Titre colonne 1
(vla-setText tableVL 1 1 "Nombre") ; Titre colonne 2
(vla-setText tableVL 1 2 "Symbole") ; Titre colonne 3
(setq cont -1
row 1
)
(repeat (- (vla-get-Rows tableVL) 2)
(vla-settext
tableVL
(setq row (1+ row))
0
(nth (setq cont (1+ cont)) libloc)
)
(vla-settext
tableVL
row
1
(length (vl-remove-if-not
'(lambda (n) (= n (nth cont libloc)))
liref
)
)
)
(vla-SetBlockTableRecordId
tableVL
row
2
(nth cont liidbloc)
:vlax-true
)
(vla-setcellalignment tableVL row 0 5)
(vla-setcellalignment tableVL row 1 5)
)
(princ)
)

;;; REMOVE_DOUBLES - Suprime tous les doublons d'une liste

(defun REMOVE_DOUBLES (lst)
(if lst
(cons (car lst) (REMOVE_DOUBLES (vl-remove (car lst) lst)))
)
)  

Civil 3D 2025 - COVADIS_18.3b

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

Posté(e)

Bonjour,

 

je viens de tester la lisp "tabloblo", mais chez moi cela ne semble pas fonctionner, je précise que je suis sous Autocad 2006.

je lance la commande, sélectionne les objets comme demandé, puis clic un point d'insertion, mais rien ne se passe ensuite, une idée?

 

Cordialement

Posté(e)

Bonjour à tous,

 

lili2006 je viens de tester le lisp, chez moi il fonctionne.

Seulement je ferais deux remarques:

1) J'utilise des blocs dynamique, la légende que j'obtiens crée une ligne par nom de bloc et nom par état de visibilité de bloc. Peut on l'améliorer pour différencier l'ensemble des états de visibilité?

 

2) Malgrés le principe de ce lisp (trés utile et impressionnant), je souhaiterais tout de même pouvoir utiliser le lisp LG de patrick. Afin de composer moi même mon propre fichier DWG servant de gabarit pour mes légendes.

 

Si patrick passe par là, peut il étudier la possibilitée de compléter son lisp avec l'ajout de la colonne des quantitées des blocs.

 

Merci

A+

Posté(e)

Bon finalement le lisp fonctionne, je n'avais pas regardé au bon endroit, en fait j'ai lancé la commande en EP et le tableau s'est créé en EO aux coordonnées 0,0.

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é