defrai Posté(e) le 18 juillet 2008 Posté(e) le 18 juillet 2008 bonjour,Voila j’utilise un lisp pour faire mes légendes Mais depuis que je suis passé en 2008,J’ai un problème sur la première ligne elle n'est pas comptabiliser.Je suis juste utilisateur et pas programmeur. Merci d’avance pour votre aide voici le lisp que j'utilise (if col(vlax-for i (vla-get-Blocks(vla-get-activedocument (vlax-get-acad-object)))(if (and (/= (substr (vla-get-name i) 1 1) "*")(= :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(vla-get-activedocument(vlax-get-acad-object)))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)(length libloc)320100))(vla-put-TitleSuppressed tableVL :vlax-true)(setq cont -1)(repeat (vla-get-Rows tableVL)(vla-settexttableVL(setq cont (1+ cont))0(nth cont libloc))(vla-settexttableVLcont1(length (vl-remove-if-not'(lambda (n) (= n (nth cont libloc)))liref)))(vla-SetBlockTableRecordIdtableVLcont2(nth cont liidbloc):vlax-true)(vla-setcellalignment tableVL cont 0 5)(vla-setcellalignment tableVL cont 1 5))(princ)) ;;; REMOVE_DOUBLES - Suprime tous les doublons d'une liste (defun REMOVE_DOUBLES (lst)(cond((atom lst) lst)(T(cons (car lst) (REMOVE_DOUBLES (vl-remove (car lst) lst)))))) [Edité le 18/7/2008 par defrai]
Patrick_35 Posté(e) le 18 juillet 2008 Posté(e) le 18 juillet 2008 Salut Ton lisp n'est pas complet @+ Les Lisps de PatrickLe but n'est pas toujours placé pour être atteint, mais pour servir de point de mire.Joseph Joubert, 1754-1824
defrai Posté(e) le 18 juillet 2008 Auteur Posté(e) le 18 juillet 2008 ok (if col(vlax-for i (vla-get-Blocks(vla-get-activedocument (vlax-get-acad-object)))(if (and (/= (substr (vla-get-name i) 1 1) "*")(= :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(vla-get-activedocument(vlax-get-acad-object)))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)(length libloc)320100))(vla-put-TitleSuppressed tableVL :vlax-true)(setq cont -1)(repeat (vla-get-Rows tableVL)(vla-settexttableVL(setq cont (1+ cont))0(nth cont libloc))(vla-settexttableVLcont1(length (vl-remove-if-not'(lambda (n) (= n (nth cont libloc)))liref)))(vla-SetBlockTableRecordIdtableVLcont2(nth cont liidbloc):vlax-true)(vla-setcellalignment tableVL cont 0 5)(vla-setcellalignment tableVL cont 1 5))(princ)) ;;; REMOVE_DOUBLES - Suprime tous les doublons d'une liste (defun REMOVE_DOUBLES (lst)(cond((atom lst) lst)(T(cons (car lst) (REMOVE_DOUBLES (vl-remove (car lst) lst))))))
defrai Posté(e) le 18 juillet 2008 Auteur Posté(e) le 18 juillet 2008 Pour plus de précision la première ligne du tableau comprend qu’une colonne. Je ne comprends pas car avec la 2007 ca fonctionnais très bien. [Edité le 18/7/2008 par defrai]
Patrick_35 Posté(e) le 18 juillet 2008 Posté(e) le 18 juillet 2008 Re, Après quelques recherches, car cette fois-ci, il manque le début du lisp, tu as pris le lisp de (gile) ici Sauf si quelqu'un répond car je n'ai qu'une 2006 actuellement sous la main, je regarde cela ce soir. @+ Les Lisps de PatrickLe but n'est pas toujours placé pour être atteint, mais pour servir de point de mire.Joseph Joubert, 1754-1824
Oli553 Posté(e) le 18 juillet 2008 Posté(e) le 18 juillet 2008 Oui, il y a un souci avec les v2008 et 2009, en fait, le premier bloc apparait Sur la 1ere ligne, celle où est indiqué...légende :casstet: L'urgent est fait, l'impossible est en cours. Pour les miracles, prévoir un délai. "Il vaut mieux mobiliser son intelligence sur des conneries, que sa connerie sur des choses intelligentes" - Devise Shadok. "ceux qui ne se souviennent pas du passé sont condamnés à le revivre" George Santayana Ma bibliothèque de blocs électrique :symbole elec.dwg
(gile) Posté(e) le 19 juillet 2008 Posté(e) le 19 juillet 2008 Salut, Je ne peux pas vraiment tester, je n'ai qu'une 2007. Il y a eu plusieurs versions de Tabloblo (LISP de Tramber que je n'ai fait qu'adapter). Une première, dans sa version la plus aboutie ici, qui est sensée supprimer la ligne de titre.Une seconde ici, qui fait suite à une demande "ducrabe" pour avoir la ligne de titre, la ligne de sous-titres et la taille des symboles un peu réduite par rapport à la cellule. Est-ce qu'aucune de ces versions ne fonctionne sur les désormais "fameuses" versions 2008/2009 ? Si aucune ne fonctionne, serait-il possible d'entrer à la ligne de commande l'expression LISP suivante, de sélectionner un tableau et de poster le résultat ? (vlax-dump-object (vlax-ename->vla-object (car (entsel)))) [Edité le 19/7/2008 par (gile)] Gilles Chanteau - gileCAD - GitHub Développements sur mesure pour AutoCAD
Patrick_35 Posté(e) le 20 juillet 2008 Posté(e) le 20 juillet 2008 Salut Appararement, on ne peux plus supprimer le titre sur les A2008 et A2009 Pour contourner le problème, il suffit de changer (vlax-3d-point ptins) (length libloc) 3 20 100 ) ) ;(vla-put-TitleSuppressed tableVL :vlax-true) (setq cont -1) (repeat (vla-get-Rows tableVL) (vla-settext tableVL (setq cont (1+ cont)) 0 (nth cont libloc) ) (vla-settext tableVL cont 1 (length (vl-remove-if-not '(lambda (n) (= n (nth cont libloc))) liref ) ) ) (vla-SetBlockTableRecordId tableVL cont 2 (nth cont liidbloc) :vlax-true )par(vlax-3d-point ptins) (1+ (length libloc)) 3 20 100 ) ) ;(vla-put-TitleSuppressed tableVL :vlax-true) (setq cont -1) (repeat (vla-get-Rows tableVL) (vla-settext tableVL (1+ (setq cont (1+ cont))) 0 (nth cont libloc) ) (vla-settext tableVL (1+ cont) 1 (length (vl-remove-if-not '(lambda (n) (= n (nth cont libloc))) liref ) ) ) (vla-SetBlockTableRecordId tableVL (1+ cont) 2 (nth cont liidbloc) :vlax-true ) @+ Les Lisps de PatrickLe but n'est pas toujours placé pour être atteint, mais pour servir de point de mire.Joseph Joubert, 1754-1824
(gile) Posté(e) le 20 juillet 2008 Posté(e) le 20 juillet 2008 Appararement, on ne peux plus supprimer le titre sur les A2008 et A2009 Alors, avec la seconde version, ça devrait fonctionner ? Gilles Chanteau - gileCAD - GitHub Développements sur mesure pour AutoCAD
(gile) Posté(e) le 20 juillet 2008 Posté(e) le 20 juillet 2008 Merci PHILPHIL, mais c'était sur un tableau que j'aurais aimé avoir la liste. ou encore, toujours sur un tableau : (vlax-property-available-p (vlax-ename->vla-object (car (entsel))) 'TitleSuppressed T) et (vlax-property-available-p (vlax-ename->vla-object (car (entsel))) 'HeaderSuppressed T) Mais Patrick_35 semble avoir trouvé une solution et je suggérais d'utiliser la seconde version. Gilles Chanteau - gileCAD - GitHub Développements sur mesure pour AutoCAD
Patrick_35 Posté(e) le 20 juillet 2008 Posté(e) le 20 juillet 2008 Re (gile) Je n'avais pas vu la seconder version.Elle fonctionne parfaitement avec une A2009. La propriété TitleSuppressed existe sur A2009, mais ne semble pas fonctionner.J'ai essayé en vla-..., vlax-... et aussi avec 0,-1 et vlax-false, vlax-true, que nenni :casstet: C'est comme si Autodesk avait oublié cette fonction :o Je viens aussi de tomber deux truc :Le premier est qu' on dirait qu'Autocad ne sait pas gérer une sélection de plus de 256 éléments d'une liste (la variable d'un multiple_select d'une BD)Le second est qu'autocad se sait pas traduire en vlisp le bit 131072 du code dxf 90 d'un viewport. Arriverait-on aux limites d'autocad ;) @+ Les Lisps de PatrickLe but n'est pas toujours placé pour être atteint, mais pour servir de point de mire.Joseph Joubert, 1754-1824
PHILPHIL Posté(e) le 20 juillet 2008 Posté(e) le 20 juillet 2008 hello patrick_35, gile et les autres sur une version AA2009voila la réponse gile sur un tableau Commande: (vlax-property-available-p (vlax-ename->vla-object (car (entsel))) 'TitleSuppressed T) Choix de l'objet: T Commande: (vlax-property-available-p (vlax-ename->vla-object (car (entsel))) 'HeaderSuppressed T) Choix de l'objet: T bon a force de test et manip sur autocad mes réponses arrivent apres la bataille si on selectionne des objets les deux LISp fonctionnent premiere version :la case 1 A/B/C est bien vide deuxieme version :la case 1 A/B/C est bien remplit par "block" a toi de remplacer dans le LISp block par autre chose " case 1/a "Nom"case 1/b "Nombre"case 1/c "Symbole" (VLA-SETTEXT TABLEVL 0 0 "LEGENDE DES BLOCKS") ; 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 par contre si on fait ca sur les deux versions , ca bug Commande: tabloblo Sélectionnez les blocs à lister ou < Tous > Choix des objets: [surligneur] tout[/surligneur] 686 trouvé(s) Choix des objets: *Annuler* Erreur Automation Identificateur d’objet nul phil [Edité le 20/7/2008 par PHILPHIL] FREELANCE Autodesk Architecture 2025 sous windows 11 64 REVIT 24 pouces vertical + 30 pouces horizontal + 27 pouces horizontal
(gile) Posté(e) le 20 juillet 2008 Posté(e) le 20 juillet 2008 Elle fonctionne parfaitement avec une A2009. Je m'en doutais, c'était une demande du crabe qui n'aurait pas manqué de me le signaler si ça ne fonctionnait pas. Gilles Chanteau - gileCAD - GitHub Développements sur mesure pour AutoCAD
(gile) Posté(e) le 20 juillet 2008 Posté(e) le 20 juillet 2008 par contre si on fait ca sur les deux versions , ca bug Commande: tabloblo Sélectionnez les blocs à lister ou Choix des objets: [surligneur] tout[/surligneur] 686 trouvé(s) Choix des objets: *Annuler* Erreur Automation Identificateur d’objet nul phil C'est normal, j'essaye de respecter la syntaxe des invites de commandes d'AutoCAD : "Sélectionnez les blocs à lister ou : " Tous est la valeur par défaut qu'on valide en faisant Entrée, Espace ou clic droit. Quand c'est une option à entrer au clavier elle est placée entre crochets :"Sélectionnez les blocs à lister ou [Tous] : " Gilles Chanteau - gileCAD - GitHub Développements sur mesure pour AutoCAD
PHILPHIL Posté(e) le 20 juillet 2008 Posté(e) le 20 juillet 2008 hello gile sur aa2009 si tu valides en appuyant sur "Entrée" par défault ca bug Commande: tabloblo2 Sélectionnez les blocs à lister ou < Tous > Choix des objets: *Annuler* Erreur Automation Identificateur d’objet nul si je selectionne des objets en ecrivant "tout" Commande: TABLOBLO Sélectionnez les blocs à lister ou < Tous > Choix des objets: tout 686 trouvé(s) Choix des objets: *Annuler* Erreur Automation Identificateur d’objet nul tabloblo ==> premiere version du lisptabloblo2 ==> deuxieme version du lisp phil FREELANCE Autodesk Architecture 2025 sous windows 11 64 REVIT 24 pouces vertical + 30 pouces horizontal + 27 pouces horizontal
(gile) Posté(e) le 20 juillet 2008 Posté(e) le 20 juillet 2008 PHILPHIL, Au vu de réponse données par Patrick_35, c'est la seconde version qu'il faut utiliser avec 2008/2009. Je ne comprends pas le pourquoi du *Annuler* dans tes messages. Petite précision : - l'option "Tous" validée par Entrée, Espace ou clic droit liste toute la collection de blocs du dessin.- Entrer "Tout" à la ligne de commande revient à sélectionner tous les blocs insérés dans le dessin. Gilles Chanteau - gileCAD - GitHub Développements sur mesure pour AutoCAD
PHILPHIL Posté(e) le 20 juillet 2008 Posté(e) le 20 juillet 2008 hello ok ca marche ca demandait un "CONTROL" de mes fichiers test pour eradiquer les erreurs et une régénérations des fichiers FAS phil FREELANCE Autodesk Architecture 2025 sous windows 11 64 REVIT 24 pouces vertical + 30 pouces horizontal + 27 pouces horizontal
defrai Posté(e) le 21 juillet 2008 Auteur Posté(e) le 21 juillet 2008 Merci beaucoup La seconde version de tabloblo fonctionne impeccable avec autocad 2008 :)
Oli553 Posté(e) le 21 juillet 2008 Posté(e) le 21 juillet 2008 Cela fonctionne également sur 2009Merci bicoup... :P L'urgent est fait, l'impossible est en cours. Pour les miracles, prévoir un délai. "Il vaut mieux mobiliser son intelligence sur des conneries, que sa connerie sur des choses intelligentes" - Devise Shadok. "ceux qui ne se souviennent pas du passé sont condamnés à le revivre" George Santayana Ma bibliothèque de blocs électrique :symbole elec.dwg
(gile) Posté(e) le 22 juillet 2008 Posté(e) le 22 juillet 2008 Vu le succès que semble avoir cette version, j'y apporte quelque amélioration :Les xrefs et les blocs qu'elles peuvent contenir ne sont pas pris en compte quelque soit l'option retenue. ;; TABLOBLO (Tramber) ;; 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 [b]") (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))) ) ) [Edité le 22/7/2008 par (gile)] Gilles Chanteau - gileCAD - GitHub Développements sur mesure pour AutoCAD
lecrabe Posté(e) le 22 juillet 2008 Posté(e) le 22 juillet 2008 Hello Un petit grain de sel ! Cette version sera t-elle fonctionnelle depuis "disons" AutoCAD 2004 jusqu'à AutoCAD 2009 ? Le Decapode "chiant" Autodesk Expert Elite Team
Oli553 Posté(e) le 22 juillet 2008 Posté(e) le 22 juillet 2008 Encore mieux, merci Ô grand maitre... :P ;) Fonctionne sur V2009 :D [Edité le 22/7/2008 par Oli553] L'urgent est fait, l'impossible est en cours. Pour les miracles, prévoir un délai. "Il vaut mieux mobiliser son intelligence sur des conneries, que sa connerie sur des choses intelligentes" - Devise Shadok. "ceux qui ne se souviennent pas du passé sont condamnés à le revivre" George Santayana Ma bibliothèque de blocs électrique :symbole elec.dwg
davidcad01 Posté(e) le 12 janvier 2010 Posté(e) le 12 janvier 2010 Merci pour ce LISP !Une aide précieuse... je vais avoir encore plus de temps pour aller fouiner sur CADxp. poser une question c'est prendre le risque de paraitre bete 5 minutes. ne pas en poser c'est prendre le risque de le rester toute sa vie.
kkwet Posté(e) le 26 janvier 2010 Posté(e) le 26 janvier 2010 Salut tout le monde!!sur 2004 j'ai : no function definition: VLA-ADDTABLEcela se passe juste apres la demande du point d'insertion...comment définir cette fonction?
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