Aller au contenu

petit problème avec un (entmod


DenisHen

Messages recommandés

Bonjour à tous.

 

Pour les besoins d'un membre de CadXP, j'ai développé un petit bout de code qui fonctionne très bien :

(defun c:Ger_AxeTuyau_PROP (/ i etx ss)
 (setq SelAxe (car (entsel "\nSélectionnez l'axe du tuyau :")))
 (command "chprop" SelAxe "" "tl" "Axes tubes" "ep" "0.09" "")
 (princ)
)

Pour parfaire mon niveau, j'ai tenté de faire la même chose avec un (entmod pour jouer avec les codes DXF, et ça donne ça :

(defun c:Ger_AxeTuyau_DXF (/ i etx ss)
 (setq Select (ssget "_:S"))
 (setq n 0)
 (while (setq Ent (ssname Select n))
   (setq elst (entget Ent)
         n    (+ 1 n)
         elst (subst (cons 6 "Axes tubes") (assoc 6 elst) elst) ; type de ligne
         elst (subst (cons 39 9) (assoc 39 elst) elst) ; épaisseur de ligne
   )
   (entmod elst)
 )
 (princ)
)

Mais ce dernier code ne fonctionne pas, quelqu'un peut me dire pourquoi ?

Windows 11 / AutoCAD 2024

Sur terre, il y a 10 types de personnes, celles qui comptent en binaire et les autres (developpez.net).
Davantage d'avantages, avantagent davantage (Bobby Lapointe).
La connaissance s'accroît quand on la partage (Socrate).
Tant va la cruche à l'eau que l'habit n'amasse pas mousse avant de l'avoir tué. (Moi)

Lien vers le commentaire
Partager sur d’autres sites

Bonjour,

Pour certaines propriétés en DXF (couleur, type de ligne, etc...), tu es obligé de vérifier d'abord si elles existent pour substituer une autre valeur car si elles ont la valeur par défaut, elles n'existe pas! Donc le (subst) ne fonctionne pas.Donc en cas ne non-existence, tu dois passer par un (append)

 

	(setq elst (entget Ent)
     	n	(+ 1 n)
     	elst (append elst '((6 . "Axes tubes"))) ; type de ligne
     	elst (append elst '((39 . 9))) ; épaisseur de ligne
)

Ton code fonctionnerait si l'objet avait déjà un type de ligne et une épaisseur affectée avec des valeurs autres.

Choisissez un travail que vous aimez et vous n'aurez pas à travailler un seul jour de votre vie. - Confucius

Lien vers le commentaire
Partager sur d’autres sites

Si tu commence à t’intéresser au code DXF, tu pourrais utiliser ceci, ça pourrait t'aider car plus facilement lisible que le retour d' (entget)

En même temps attention aux entités complexes avec beaucoup de points de définitions, car la liste peut être longue... (beaucoup de clicks sur "OK")

 

(defun c:dxflistdata ( / ent msg l_str nb ch)
 (setq ent 0)
 (while (not (listp ent))
(if user-dxf
 	(setq msg "\n[Entite/Sous-entite]<S> - Choix de l'objet à lister ses codes DXF: ")
 	(setq msg "\n[Entite/Sous-entite]<E> - Choix de l'objet à lister ses codes DXF: ")
)
(initget "Entite Sous-entite")
(if user-dxf
 	(setq ent (nentsel msg))
 	(setq ent (entsel msg))
)
(if (eq ent "Sous-entite") (setq user-dxf T))
(if (eq ent "Entite") (setq user-dxf nil))
 )
 (cond
(ent
 	(setq
   	l_str (cons "\tDATA DXF d'OBJET\n\n" (mapcar '(lambda (x) (strcat x "\n")) (mapcar 'vl-prin1-to-string (entget (car ent)))))
   	nb (length l_str)
   	ch ""
 	)
 	(while (> (length l_str) 31)
   	(repeat 31
     	(setq
       	ch (strcat ch (car l_str))
       	l_str (cdr l_str)
     	)
   	)
   	(alert ch)
   	(setq l_str (cons "suite DATA DXF d'OBJET\n\n" l_str) ch "")
 	)
 	(setq ch (apply 'strcat l_str))
 	(alert ch)
)
 )
 (prin1)
)

 

Choisissez un travail que vous aimez et vous n'aurez pas à travailler un seul jour de votre vie. - Confucius

Lien vers le commentaire
Partager sur d’autres sites

Salut, et merci pour votre aide.

 

En effet, il manquait bien un (append, mais l'épaisseur est le code DXF 370 et non 39 :huh:

 

Encore merci...

Windows 11 / AutoCAD 2024

Sur terre, il y a 10 types de personnes, celles qui comptent en binaire et les autres (developpez.net).
Davantage d'avantages, avantagent davantage (Bobby Lapointe).
La connaissance s'accroît quand on la partage (Socrate).
Tant va la cruche à l'eau que l'habit n'amasse pas mousse avant de l'avoir tué. (Moi)

Lien vers le commentaire
Partager sur d’autres sites

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é