defrai Posté(e) le 20 juin 2011 Posté(e) le 20 juin 2011 Bonjour tous d'abord, un grand merci a tous les pros du lisp et a ce forum, pour tout ce qu'ils apportent. Je suis cherche à savoir si il était possible d'intégré les blocs dynamiques, dans ce merveilleux lisp TABLOBLO de Mr Tramber. Merci par avance.
(gile) Posté(e) le 20 juin 2011 Posté(e) le 20 juin 2011 Salut, Cette version compte aussi les blocs dynamiques sous le nom du bloc d'origine. Gilles Chanteau - gileCAD - GitHub Développements sur mesure pour AutoCAD
Tramber Posté(e) le 20 juin 2011 Posté(e) le 20 juin 2011 Sympa pour le compliment mais il n'est pas tant mérité.C'est une routine facile que, j'ai v à l'époque, de nombreux lispeurs ont modifié X fois pour répondre à des besoins.Le seul mérite que j'ai eu est d'avoir codé pour la première fois une table mais c'est somme toute assez facile. Tu veux intégrer des blocs dynamiques(il doit déjà le faire) ou uniquement des blocs dynamiques ? Bureau d'études dessin. Spécialiste Escaliers Développement - Formation ./__\. (.°=°.)
defrai Posté(e) le 20 juin 2011 Auteur Posté(e) le 20 juin 2011 Voila, il me compte bien les blocs dynamiques mais le problème est qu'il me les associe par leur nom d'origine. J’aimerais qu'il me dissocie les blocs avec les différentes visibilités . Par exemple, j’ai un bloc nommé interrupteur qui peut avoir comme visibilité : inter simple, va et vient ou bouton poussoir. Il me mais tous dans la même ligne car il s’appelle interrupteur. J’aurais aimer qu’il me face comme l’extraction d’attribut que J’utilise de plus en plus mais elle n’insère pas les symboles .
(gile) Posté(e) le 20 juin 2011 Posté(e) le 20 juin 2011 J'ai fait ce petit truc parce que j'avais un peu de temps et d'intérêt.Je ne l'ai pas testé en profondeur, mais ça semble marcher. ;; TABLDYNBLOC ;; Crée un tableau qui liste les blocs sélectionnés (defun c:tabldynbloc (/ ss refs lst ele ins tbl row) (vl-load-com) (or *acad* (setq *acad* (vlax-get-acad-object))) (or *acdoc* (setq *acdoc* (vla-get-ActiveDocument *acad*))) (or *blocks* (setq *blocks* (vla-get-Blocks *acdoc*))) (prompt "\nSélectionnez les blocs à lister ou ") (or (setq ss (ssget '((0 . "INSERT")))) (setq ss (ssget "_X" '((0 . "INSERT")))) ) (if ss (progn (vlax-for x (setq ss (vla-get-ActiveSelectionSet *acdoc*)) (or (vlax-property-available-p x 'Path) (setq refs (cons (cons (vla-get-EffectiveName x) (gc:GetVisibilityState x) ) refs ) ) ) ) (vla-delete ss) ) ) (foreach n refs (setq lst (if (setq ele (assoc n lst)) (subst (cons (car ele) (1+ (cdr ele))) ele lst) (cons (cons n 1) lst) ) ) ) (initget 1) (setq ins (trans (getpoint "\nPoint d'insertion: ") 1 0)) (setq tbl (vla-addtable (vla-get-modelspace (vla-get-activedocument (vlax-get-acad-object)) ) (vlax-3d-point ins) (+ 2 (length lst)) 3 20 ; Hauteur cellule 80 ; Largeur cellule ) ) (vla-put-VertCellMargin tbl 4.0) ; Marge verticale (vla-put-TitleSuppressed tbl :vlax-false) (vla-put-HeaderSuppressed tbl :vlax-false) (vla-setText tbl 0 0 "Blocs") ; Titre (vla-setText tbl 1 0 "Nom") ; Titre colonne 1 (vla-setText tbl 1 1 "Nombre") ; Titre colonne 2 (vla-setText tbl 1 2 "Symbole") ; Titre colonne 3 (setq row 2) (foreach b lst (vla-SetText tbl row 0 (if (cdar b) (strcat (caar b) " (" (cdar b) ")") (caar b) ) ) (vla-SetText tbl row 1 (cdr b)) (vla-SetBlockTableRecordId tbl row 2 (vla-get-ObjectId (vla-Item *blocks* (caar b))) :vlax-true) (vla-setcellalignment tbl row 0 5) (vla-setcellalignment tbl row 1 5) (setq row (1+ row)) ) (princ) ) ;; gc:GetVisibilityState ;; Retourne l'état de visibilité d'un bloc dynamique ou nil (defun gc:GetVisibilityState (blk / state) (if (= (vla-get-IsDynamicblock blk) :vlax-true) (foreach p (vlax-invoke blk 'GetDynamicBlockProperties) (if (= (type (car (vlax-get p 'AllowedValues))) 'STR) (setq state (vlax-get p 'Value)) ) ) ) state ) Gilles Chanteau - gileCAD - GitHub Développements sur mesure pour AutoCAD
defrai Posté(e) le 21 juin 2011 Auteur Posté(e) le 21 juin 2011 Super ça semble marcher.Seul le symbole reste dans sa forme d’origine.Mais je ne veux pas t’embêter pas ce détail.Ca me va bien. Merci bien pour ta réactivité.Respect.
Tramber Posté(e) le 21 juin 2011 Posté(e) le 21 juin 2011 J'ai bien essayé de régler la propriété de choix car ce sont des blocs à vues multiples et j'aurais donc voulu compléter la routine de (gile). MAIS :Je ne suis pas arrivé à remplacer (vla-SetBlockTableRecordId tbl row 2 (vla-get-ObjectId (vla-Item *blocks*(caar b))) :vlax-true) Par une formule qui permette de choisir la vue du bloc par programmation.Pas de solution pour le moment. Je suis assez occupé par ailleurs. On dirait qu'il est difficile voire impossible d'accéder à ta demande defrai. Je donne ma langue au chat pour le moment. S'il y a un chat ? :cool: Bureau d'études dessin. Spécialiste Escaliers Développement - Formation ./__\. (.°=°.)
(gile) Posté(e) le 21 juin 2011 Posté(e) le 21 juin 2011 Salut, On peut le faire en récupérant l'ObjectId du bloc anonyme.Mais comme on veut regrouper les blocs par état de visibilité, on ne peut conserver qu'un bloc anonyme pour différents blocs ayant le même état. Le symbole reflètera donc le bloc anonyme qui a été conservé avec toutes ses autres modifications dynamiques (étirement, rotation, etc.). ;; TABLDYNBLOC ;; Crée un tableau qui liste les blocs sélectionnés (defun c:tabldynbloc (/ ss refs lst ele ins tbl row) (vl-load-com) (or *acad* (setq *acad* (vlax-get-acad-object))) (or *acdoc* (setq *acdoc* (vla-get-ActiveDocument *acad*))) (or *blocks* (setq *blocks* (vla-get-Blocks *acdoc*))) (prompt "\nSélectionnez les blocs à lister ou ") (or (setq ss (ssget '((0 . "INSERT")))) (setq ss (ssget "_X" '((0 . "INSERT")))) ) (if ss (progn (vlax-for x (setq ss (vla-get-ActiveSelectionSet *acdoc*)) (or (vlax-property-available-p x 'Path) (setq refs (cons (list (cons (vla-get-EffectiveName x) (gc:GetVisibilityState x) ) (vla-get-Name x) ) refs ) ) ) ) (vla-delete ss) ) ) (foreach n refs (setq lst (if (setq ele (assoc (car n) lst)) (subst (list (car ele) (cadr ele) (1+ (caddr ele))) ele lst) (cons (list (car n) (cadr n) 1) lst) ) ) ) (initget 1) (setq ins (trans (getpoint "\nPoint d'insertion: ") 1 0)) (setq tbl (vla-addtable (vla-get-modelspace (vla-get-activedocument (vlax-get-acad-object)) ) (vlax-3d-point ins) (+ 2 (length lst)) 3 20 ; Hauteur cellule 80 ; Largeur cellule ) ) (vla-put-VertCellMargin tbl 4.0) ; Marge verticale (vla-put-TitleSuppressed tbl :vlax-false) (vla-put-HeaderSuppressed tbl :vlax-false) (vla-setText tbl 0 0 "Blocs") ; Titre (vla-setText tbl 1 0 "Nom") ; Titre colonne 1 (vla-setText tbl 1 1 "Nombre") ; Titre colonne 2 (vla-setText tbl 1 2 "Symbole") ; Titre colonne 3 (setq row 2) (foreach b lst (vla-SetText tbl row 0 (if (cdar b) (strcat (caar b) " (" (cdar b) ")") (caar b) ) ) (vla-SetText tbl row 1 (caddr b)) (vla-SetBlockTableRecordId tbl row 2 (vla-get-ObjectId (vla-Item *blocks* (cadr b))) :vlax-true) (vla-setcellalignment tbl row 0 5) (vla-setcellalignment tbl row 1 5) (setq row (1+ row)) ) (princ) ) ;; gc:GetVisibilityState ;; Retourne l'état de visibilité d'un bloc dynamique ou nil (defun gc:GetVisibilityState (blk / state) (if (= (vla-get-IsDynamicblock blk) :vlax-true) (foreach p (vlax-invoke blk 'GetDynamicBlockProperties) (if (= (type (car (vlax-get p 'AllowedValues))) 'STR) (setq state (vlax-get p 'Value)) ) ) ) state ) Gilles Chanteau - gileCAD - GitHub Développements sur mesure pour AutoCAD
defrai Posté(e) le 22 juin 2011 Auteur Posté(e) le 22 juin 2011 Ok super, ca me dépanne bien. Merci encore
Messages recommandés
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 compteSe connecter
Vous avez déjà un compte ? Connectez-vous ici.
Connectez-vous maintenant