Aller au contenu

modif layer entité


uisghe

Messages recommandés

J'ai fait cette commande pour transférer les entités d'un fichiers sur les layers en fonction de la couleur (voir listing à la fin).

Mon problème est que celà ne fonctionne pas avec les entités type ellipse, spline.

 

Si qqun a une explication, je suis preneur, merci

 

la commande :

 

(defun c:m2a ()

(command "tilemode" "1") ; passe en espace objet ;

 

(setq list_layer_base

'("Solid Lines" "Centre Lines"

"Short Hidden Lines" "Hatching"

"Mechanicals" "Phantom Lines"

"Thin Lines" "Dimensionning"

)

)

(setq nb_layer (length list_layer_base))

(setq domaine "")

(setq domaine "MECA")

(setq prefix (strcat domaine " - "))

 

(setq col 1)

(repeat nb_layer

;; sélectionne les obgets de couleur col et les affecte à ss1

(setq ss1

(ssget "x" (list (cons 62 col)))

)

 

(if (/= ss1 nil)

(progn

(print "nb entité")

(print (sslength ss1))

(setq lay (strcat prefix (nth (1- col) list_layer_base)))

(print lay)

;; ct=compteur pour sélection de l'entité à modifier parmi ss1

(setq ct 0)

(if (> (sslength ss1) 0)

(progn

(repeat (sslength ss1)

;; en=nom interne de l'entité modifiée

(setq en (ssname ss1 ct))

;; Sets ed to the entity data for entity name en

(setq ed (entget en))

;; Changes the layer group in ed. to lay

(setq ed (subst (cons 8 lay) (assoc 8 ed) ed))

;; Changes the color in ed. to "du calque" (256)

(setq ed (subst (cons 62 256) (assoc 62 ed) ed))

;; Changes the line style in ed. to "du calque"

(setq ed (subst (cons 6 "DuCalque") (assoc 6 ed) ed))

;; Modifies entity ss1's layer in the drawing.

(entmod ed)

(setq ct (1+ ct))

) ;_ fin (repeat (sslength ss1)

) ;_ fin progn

 

) ;_ fin (if (> (sslength ss1) 0)

) ;_ fin progn

) ;_ fin (if (/= ss1 nil)

(setq col (1+ col))

) ;_ fin (repeat nb_layer

 

(princ)

) ;_ fin m2a

Lien vers le commentaire
Partager sur d’autres sites

Bonjour,

 

(setq nb_layer (length list_layer_base))

 

donc nb_layer vaut toujours 8 et COL varie de 1 à 8 à l'intérieur de la boucle repeat. Si un objet a une couleur plus grande que 8, il n'est jamais sélectionné par le ssget.

 

Mon problème est que celà ne fonctionne pas avec les entités type ellipse, spline.

 

ces entités sont peut-être sur des couleurs > 8 ? Sinon, je ne vois pas.

 

Amicalement

 

Zebulon_

C'est au pied du mur que l'on reconnaît le maçon ! (Anonyme)

C’est en restant au pied du mur qu’on ne voit que le mur (Anonyme aussi)

Lien vers le commentaire
Partager sur d’autres sites

  • 3 semaines après...

J'ai pris la peine d'essayer ton code.

 

Et bien je n'ai rien remarqué, tout a fonctionné, que ce soit pour les ellipses ou les splines.

 

J'ai même essayé de créer des groupes avec celles-ci, ca fonctionne aussi.

 

Ne pouvant reproduire ton cas particulier, je ne peux t'en dire plus.

 

Bonne chance! ;)

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

Merci pour cet essai.

Peut-être un bug dans Autocad, j'utilise Autocad2004 sous windows2000

 

cette macro me sert à récupérer des plans issu de Microstation (version 05.07.00.25 windows x86).

Les plans sont exportés via la commande export DWG.

 

Peut-être aussi une piste de ce côté là ???

 

 

[Edité le 31/1/2006 par uisghe]

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é