LElemurien Posté(e) le 22 mai 2020 Posté(e) le 22 mai 2020 Bonjour, Serait-il possible d'avoir un exemple de LISP pour la création d'un tableau? Je comprends apparemment que cela est possible qu'avec du VisualLisp est-ce vraiment le cas? Est-il possible d'avoir par exemple la création d'un tableau avec 3 colonnes et 2 lignes et l'intégration de la variable "a" dans la 1ère colonne de la 1ère ligne? Cela permettrai d'avoir un exemple en plus des explications de la fonction vlax-make-safearray. Bon week-end à tous
lecrabe Posté(e) le 22 mai 2020 Posté(e) le 22 mai 2020 Hello Et voici un SUPERBE Exemple de notre Grand Maitre Gilles ! Routine: LISTBLOCK qui genere un Tableau des Blocs avec : le Nom, le Nombre Total par Bloc et la Representation graphique ! Je l'utilise pour des Quantitatifs et aussi en supprimant la colonne du Nombre Total pour avoir une simple legende !! BIEN SUR le tableau genere (contrairement a l 'extraction de donnees AutoCAD) est STATIQUE mais cela ne me gene pas du tout ... ------------------------------------------------------------------------------------------ SVP si qq'un pouvait faire une petite amelioration : Traiter AUSSI les Blocs INCLUS dans les Reseaux associatifs ... MERCI d'avance !------------------------------------------------------------------------------------------ Routine extraite de "mon" stock de 3000 routines ... LA SANTE (Stay Safe), Bye, lecrabe "triste"Automne 2020, la retraite ;; ;; Routine: ListBlock par GC ;; ;; Table des Blocs : Nom , Nombre , Graphisme du Bloc ;; ;; 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
LElemurien Posté(e) le 22 mai 2020 Auteur Posté(e) le 22 mai 2020 Cela va me donner un exemple pour la construction! En fait il n'y a pas besoin de vlax-make-safearray? Bon il faut que je retourne relire tout ça. Merci
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