dfbiagio Posté(e) le 3 septembre 2010 Posté(e) le 3 septembre 2010 Bonjour, comment puis-je faire pour ajouter des éléments à une liste. Je voudrais ajouter, par exemple, (10 . 22) à une liste du type ((-1 . ) (0 . "LINE") (330 . name: 7ee42d18>) (5 . "27292") (100 . "AcDbEntity") (67 . 0) (410 . "Model") (8 . "0") (100 . "AcDbLine") (10 535.791 768.439 0.0) (11 1262.6 1016.54 0.0) (210 0.0 0.0 1.0)) Donc pour obtenir ((-1 . ) (0 . "LINE") (330 . name: 7ee42d18>) (5 . "27292") (100 . "AcDbEntity") (67 . 0) (410 . "Model") (8 . "0") (100 . "AcDbLine") (10 535.791 768.439 0.0) (11 1262.6 1016.54 0.0) (210 0.0 0.0 1.0) ( (10 . 22)) D'avance merci
(gile) Posté(e) le 3 septembre 2010 Posté(e) le 3 septembre 2010 Salut, Pour ajouter un élément à une liste, regarde les fonctions cons et append. cons ajoute l'élément en début de liste :(cons 6 '(1 2 3 4)) retourne (6 1 2 3 4)append fusionne une ou plusieurs liste et peut-être utilisé pour ajouter un élément en fin de liste :(append '(1 2 3 4 5) (list 6)) retourne (1 2 3 4 5 6). Dans l'exemple que tu donnes, la liste est une liste de données DXF.Ces listes sont constituées d'éléments (paire pointées ou liste) qu'on appelle les "groupes DXF", chaque groupe DXF se caractérise par un "code groupe" : le nombre entier qui est le premier élément de chaque groupe.Par exemple, le groupe (0 . "LINE") correspond au type d'entité, (10 535.791 768.439 0.0) au point de départ pour une ligne. La valeur pour le groupe 0 doit être de type chaîne de caractère (STR) et être un type d'entité valide, pour le groupe 10 (quel que soit le type d'entité) la valeur doit être un point 3d. Ton groupe (10 . 22) n'est pas valide et rendra donc ta liste DXF invalide. Regarde dans l'aide aux développeurs d'AutoCAD, la rubrique Reference DXF (en français). PS : inutile de poster plusieurs fois le même message dans le même ou dans dans différents forums. J'ai effacé tous les autres. Gilles Chanteau - gileCAD - GitHub Développements sur mesure pour AutoCAD
dfbiagio Posté(e) le 3 septembre 2010 Auteur Posté(e) le 3 septembre 2010 Slt Gile, le code dxf que j'avais mis , c'était un exemple. Ce que je veux faire, c'est d'ajouter les codes (90 . 3) (63 . 256) (45 . 1.05) (441 .0) à un code de Mtext pour ajouter un background à mon texte.Je viens d'essayer uniquement avec (45 . 1.05) et ça ne marche pas (setq b (entget (car (entsel)))) Select object: ((-1 . ) (0 . "MTEXT") (330 . name: 7ee42d18>) (5 . "272B0") (100 . "AcDbEntity") (67 . 0) (410 . "Model") (8 . "TEXTE018") (100 . "AcDbMText") (10 1133.75 1672.3 0.0) (40 . 10.0) (41 . 0.0) (46 . 0.0) (71 . 1) (72 . 5) (1 . "FSFS") (7 . "TEXTE-18") (210 0.0 0.0 1.0) (11 1.0 0.0 0.0) (42 . 27.3961) (43 . 13.3333) (50 . 0.0) (73 . 2) (44 . 0.75)) (setq a (cons (45 1.05)) (append a b); error: bad list: 1.05 Voilà ce que j'obtiens B à T
Patrick_35 Posté(e) le 3 septembre 2010 Posté(e) le 3 septembre 2010 Salut Une routine qui convertit des attributs en texte.Je la donne comme exemple car elle ajoute aux codes dxf, les codes 0,1 et 73 (defun c:atxt(/ ent js n new) (and (setq n 0 js (ssget "x" (list (cons 0 "ATTDEF"))) ) (while (setq ent (ssname js n)) (setq ent (entget ent) new (append (list (cons 0 "TEXT") (cons 1 (cdr (assoc 2 ent))) (cons 73 (cdr (assoc 74 ent))) ) (vl-remove-if '(lambda(x)(member (car x) '(-1 0 1 2 3 5 70 73 74 100 280 330))) ent) ) ) (setq new (entget (entmakex new))) (and (not (assoc 6 ent)) (assoc 6 new) (setq new (subst (cons 6 "BYLAYER") (assoc 6 new) new)) (entmod new) ) (and (not (assoc 62 ent)) (assoc 62 new) (setq new (subst (cons 62 256) (assoc 62 new) new)) (entmod ent) ) (and (not (assoc 370 ent)) (assoc 370 new) (setq ent (subst (cons 370 -1) (assoc 370 new) new)) (entmod ent) ) (entdel (cdr (assoc -1 ent))) (setq n (1+ n)) ) ) (princ (strcat "\nConvertion de " (itoa n) " attribut(s) en texte(s).")) (princ) ) @+ 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 3 septembre 2010 Posté(e) le 3 septembre 2010 Re, (setq b (entget (car (entsel)))) (setq b (append b '((90 . 3) (63 . 256) (45 . 1.05) (441 . 0)))) (entmod b) Gilles Chanteau - gileCAD - GitHub Développements sur mesure pour AutoCAD
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