Aller au contenu

Messages recommandés

Posté(e)

Bonjour

dans 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

 

Posté(e)

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 Patrick

Le but n'est pas toujours placé pour être atteint, mais pour servir de point de mire.

Joseph Joubert, 1754-1824

Posté(e)

je ne veux pas modifier tous les 40 41, mais chaque 40 41

en 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..

Posté(e)

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 Patrick

Le but n'est pas toujours placé pour être atteint, mais pour servir de point de mire.

Joseph Joubert, 1754-1824

Posté(e)

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...

 

 

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 compte

Se connecter

Vous avez déjà un compte ? Connectez-vous ici.

Connectez-vous maintenant
×
×
  • Créer...

Information importante

Nous avons placé des cookies sur votre appareil pour aider à améliorer ce site. Vous pouvez choisir d’ajuster vos paramètres de cookie, sinon nous supposerons que vous êtes d’accord pour continuer. Politique de confidentialité