Aller au contenu

Messages recommandés

Posté(e)

Bonjour,

 

Jeune lispeur, j'essaie de construire une procédure pour nettoyer les fichiers qui me sont envoyer pour les intégrer dans mes dessins. Je décompose les blocs avec BURST, je renomme les calques avec un préfixe et je vide le calque 0. j'ai encore des dessins qui arrivent avec le type de ligne CONTINU, je veux le remplacer par CONTINUOUS dans tous les objets puis supprimer l'entité dans la table de type de ligne. j'ai donc essayé plusieurs versions qui ressemblaient à ca :

 


defun c:ztest ( / indice jeusel elst ltypemodif  )

;  jeusel  indice   elst   layermodif  *error* 
;je dois selectionner toutes les entités qui ont un type de ligne CONTINU et modifier ce type de ligne
;puis supprimer l'entrée CONTINU dans la table des calques
;test sur le type de ligne "BATI"

(setq 	indice 	0
jeusel	(ssadd)
)
 
(while 	(setq 	jeusel 		(ssget "_X" '((6 . "bati"))))			;tant que la liste_totale ne retourne pas nil
   	(setq 	elst	 	(entget (ssname jeusel indice)) 		; liste DXF de l'objet
  	indice 		(+ 1 indice))					; incrémentation de l'indice
   	(entmod (subst (cons 6 "continuous") (assoc 6 elst) elst)) 		; modification type de ligne en continuous de tous les objets
);while

(setq	ltypemodif 	(entget (tblobjname "LTYPE" "bati")))
(entmod (subst 	'( 2 . "continuous") (assoc  2   ltypemodif ) ltypemodif))


(princ)

);defun

 

Alors j'ai un message d'erreur lors de la première exécution (; erreur: type d'argument incorrect: lentityp nil) et autant ca modifie les objets mais le type de ligne ne disparait pas, y a t il une autre approche?

 

Merci d'avance,

Geometre - Autocad 2016 - Covadis v17.0

Posté(e)

Coucou,

 

Pour commencer, ton dessin ne possède plus aucun bloc et l'ensemble des définitions de blocs ont été bien purgées ? Car parfois le soucis vient simplement du fait qu'un objet possède cette propriété mais apparaît en tant que sous objet et donc non sélectionnable par un (ssget)...

 

Ensuite le fait de modifier sa définition ne signifie pas qu'il va disparaître, Olivier à raison, il faudrait ajouter une (command "_-PURGE") à la fin pour purger ce type de ligne (à condition que aucun objet n'y fasse référence).

 

A quel moment obtiens-tu ce message d'erreur ?

Alors j'ai un message d'erreur lors de la première exécution (; erreur: type d'argument incorrect: lentityp nil) et autant ca modifie les objets mais le type de ligne ne disparait pas, y a t il une autre approche?

 

Bisous,

Luna

Posté(e)

Salut.

 

Il y a aussi l'option de passer par un DXF et de l'éditer tel un fichier ASCII, pour renommer CONTINU par CONTINUOUS...

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)

Posté(e)

Bonjour,

 

J'ai changé de boucle et j'ai compris que le nom des types de ligne étaient sensibles à la casse, puis j'ai utilisé un PURGER au lieu de la table des calques ce qui m'a fait modifier en :

 


(setq   n 0
*error* err
jeusel (ssget "_X" '((6 . "CACHE"))))

(if (/= nil jeusel)
(repeat (sslength jeusel) 	                   
       	(entmod (subst 	'(6 . "Continuous") '(6 . "CACHE" ) (entget (ssname jeusel n))))
 		(setq n (+ 1 n))
);repeat
);if

(command "-PURGER" "TO" "*" "n")

(setq *error* nil)

 

ca fonctionne sur CACHE. Merci pour vos conseils, ca m'a fait avancer. La suite au prochain épisode.

Geometre - Autocad 2016 - Covadis v17.0

Posté(e)

Salut.

 

Il y a aussi l'option de passer par un DXF et de l'éditer tel un fichier ASCII, pour renommer CONTINU par CONTINUOUS...

 

Bonsoir,

 

je voulais faire ca dans le dessin directement pour enchainer plusieurs traitements, je ne voulais pas passer par DXF.

Geometre - Autocad 2016 - Covadis v17.0

Posté(e)

 

A quel moment obtiens-tu ce message d'erreur ?

 

 

 

J'avais ce message d'erreur avec la boucle while, j'avais 6 lignes, il en traitait 3 et s'arrêtait sur le message d'erreur, je n'ai pas compris d'ou ca venait mais ca fonctionna avec REPEAT, du coup tant pis.

Geometre - Autocad 2016 - Covadis v17.0

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é