x_all Posté(e) le 6 juin 2018 Posté(e) le 6 juin 2018 Bonjourdans la liste dxf d'une polyligne, on trouve entre autre les séries (10 . ...) (40 ...) (41 . ...) pour chaque point.Je suis en train de la parcourir avec un compteur et donc pour un point donné, je connais la position P dans la liste dxf du point. donc à P+1 j'ai le code 40 et à P+2 le code 41 qu'il faut que je modifie.Dans une autre routine je modifiai la liste avec un (set q lstdxf (subst nouvelle-paire paire-initiale lstdxf))Mais initialement, toutes mes valeurs pour chaque point sont à (40.0) et (41.0). Donc subst n'est a priori pas la commande adéquate puisque pour chaque point elle va être modifiée.est il possible de sen sortir sans défaire puis refaire toute la liste?merci quelques trucs sur autocad
Patrick_35 Posté(e) le 6 juin 2018 Posté(e) le 6 juin 2018 Salut Un exemple qui modifie tous les codes 40 et 41 d'une poly(mapcar '(lambda(x) (cond ((eq (car x) 40) (cons 40 0.0) ) ((eq (car x) 41) (cons 41 0.0) ) (T x ) ) ) (entget (car (entsel))) ) Sinon, il reste la commande _.pedit @+ Les Lisps de PatrickLe but n'est pas toujours placé pour être atteint, mais pour servir de point de mire.Joseph Joubert, 1754-1824
x_all Posté(e) le 6 juin 2018 Auteur Posté(e) le 6 juin 2018 je ne veux pas modifier tous les 40 41, mais chaque 40 41en fait je veux définir l'épaisseur en fonction d'un paramètre segment par segment.Je vais regarder, mais je suis pas sur qu'on puisse faire ça avec _.pedit je me demandais s'il existait un truc comme ( nth mais pour l'écriture.. quelques trucs sur autocad
Patrick_35 Posté(e) le 6 juin 2018 Posté(e) le 6 juin 2018 Les codes 40 et 41 suivent le code 10. Donc tu dois pouvoir t'y retrouver. Sinon, en vlisp sur une poly ouverte(setq poly (vlax-ename->vla-object (car (entsel)))) (setq segs (/ (length (vlax-get poly 'coordinates)) 2)) (setq seg 0) (repeat segs (vla-getwidth poly seg 'deb 'fin) (princ (strcat "\nSegment " (itoa (1+ seg)) " - Début : " (rtos deb) " - Fin : " (rtos fin))) (setq seg (1+ seg)) ) @+ Les Lisps de PatrickLe but n'est pas toujours placé pour être atteint, mais pour servir de point de mire.Joseph Joubert, 1754-1824
x_all Posté(e) le 6 juin 2018 Auteur Posté(e) le 6 juin 2018 oui j'ai bien compris que les 40 et 41 suivent les 10. Mais je demandais si il y a une fonction type nth mais pour l'écriture.Apparemment non, merci pour la forme en Vlisp, mais comme je dois tester l’existence d'un bloc sur le point pour vérifier si je change l'épaisseur du segment qui suis, pas sur que je m'en sorte avec ça bon ben on va recréer la liste à mesure que je l'extrait avec un if pour les (10. et les 2 doublets qui suivent.. pour une fois que je cherchais à pas être trop lourd... quelques trucs sur 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