capde06 Posté(e) le 29 novembre 2010 Posté(e) le 29 novembre 2010 je fait une routine pour mettre a jour la couleur et la description des calques j'ai une liste (nomcalque couleur description)dans un bouche repeatje fait(command "calque" "co" (atoi (cadr a)) nomcalque "s" (caddr a) nomcalque "o" ""))quand la description est existante tout va bienmais quand il ny a pas de description le prog bloque sur "o" comment puis je faire ??..merci Vous fîtes ce que vous pûtes et vous m'épatâtes !!!!
Tramber Posté(e) le 29 novembre 2010 Posté(e) le 29 novembre 2010 Dans la commande -CALQUE (à préférer à CALQUE), il y a l'option "Etablir". Tu donnes un nom de calque, créé qu'il existe ou non.Un préalable sans soucis :cool: Bureau d'études dessin. Spécialiste Escaliers Développement - Formation ./__\. (.°=°.)
capde06 Posté(e) le 29 novembre 2010 Auteur Posté(e) le 29 novembre 2010 avec l'option "etablir" le probleme reste le memeRemplacer les descriptions existantes? [Oui/Nonet ca bloque Vous fîtes ce que vous pûtes et vous m'épatâtes !!!!
capde06 Posté(e) le 29 novembre 2010 Auteur Posté(e) le 29 novembre 2010 résoluen utilisant les fonctionsvla-put-xxxtout va bien. Vous fîtes ce que vous pûtes et vous m'épatâtes !!!!
(gile) Posté(e) le 29 novembre 2010 Posté(e) le 29 novembre 2010 Salut, Tu postes dans "Aller plus loin en LISP", alors oublie les (command ...). Tu peux utiliser entmod avec las liste DXF complète du calque pour modifier ses propriétés. La couleur est contenue dans le groupe 62, la description dans les données étendues (application : "AcAecLayerStandard"). On obtient la liste DXF complète d'un calque en passant par tblobjname, et les données étendues en ajoutant une liste des applications enregistrées à l'expression entget ;; récupérer la liste DXF du calque + les xdat (description) (setq elst (entget (tblobjname "layer" [color=#FF0000]nomcalque[/color]) '("AcAecLayerStandard"))) ;; faire une nouvelle liste de xdata pour la nouvelle description (setq xdata (list -3 (list "AcAecLayerStandard" '(1000 . "") (cons 1000 [color=#FF0000](caddr a)[/color])))) ;; modifier la couleur dans la liste DXF (setq elst (subst (cons 62[color=#FF0000] (atoi (cadr a))[/color]) (assoc 62 elst))) ;; modifier les xdata ou les ajouter (if (setq descr (assoc -3 elst)) (setq elst (subst xdata descr elst)) (setq elst (append elst xdata)) ) ;; modifier le calque (entmod elst) la commande -CALQUE (à préférer à CALQUE) Il n'est pas nécessaire d'utiliser le tiret (-) quand on appelle une commande avec command pour éviter d'avoir la boite de dialogue. C'est la commande en ligne de commande qui est appelée par défaut : il faut faire (initdia) pour forcer la boite de dialogue. Ce qui est préférable à (command "calque" ...) c'est : (command "_layer" ...) Gilles Chanteau - gileCAD - GitHub Développements sur mesure pour AutoCAD
Tramber Posté(e) le 29 novembre 2010 Posté(e) le 29 novembre 2010 Salut, oui, c'est sur, c'était juste un conseil pour le débuggage. Désolé capde06, j'avais pas vu le coup de la description.Je confirme que la variable EXPERT n'y fait rien, on n'échappe pas au message. Pas de solution en ligne de commande si ce n'est donc une recherche complexe dans les tables pour prévoir les 2 réponses en ligne de commande. Bureau d'études dessin. Spécialiste Escaliers Développement - Formation ./__\. (.°=°.)
capde06 Posté(e) le 29 novembre 2010 Auteur Posté(e) le 29 novembre 2010 Merci Gilec'est en lispant qu'on devient forgeron c'est en me voyant dans une impasse avec (command "calque") bien lentque j'ai complètement changer mon code en utilisant les fonctions VLA-***je connaissais pas trop c'est rapide ca écrase sans poser de questionc'est orienté objet vla-get-colorvla-get-description vla-put-description tres pratique je vais approfondir merci pour ta methodej'ai cherché dans les codes DXFmais ca (setq elst (entget (tblobjname "layer" nomcalque) '("AcAecLayerStandard"))) fallait le trouver !Bravo Vous fîtes ce que vous pûtes et vous m'épatâtes !!!!
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