Aller au contenu

Messages recommandés

Posté(e)

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 repeat

je fait

(command "calque"

"co"

(atoi (cadr a))

nomcalque

"s"

(caddr a)

nomcalque

"o"

""))

quand la description est existante tout va bien

mais 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 !!!!

Posté(e)

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

 

./__\.
(.°=°.)
Posté(e)

avec l'option "etablir" le probleme reste le meme

Remplacer les descriptions existantes? [Oui/Non

et ca bloque

 

Vous fîtes ce que vous pûtes

et vous m'épatâtes !!!!

Posté(e)

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

Posté(e)

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

 

./__\.
(.°=°.)
Posté(e)

Merci Gile

c'est en lispant qu'on devient forgeron

c'est en me voyant dans une impasse avec (command "calque") bien lent

que j'ai complètement changer mon code en utilisant les fonctions VLA-***

je connaissais pas trop

c'est rapide ca écrase sans poser de question

c'est orienté objet

 

vla-get-color

vla-get-description

vla-put-description

 

tres pratique

je vais approfondir

 

merci pour ta methode

j'ai cherché dans les codes DXF

mais 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 !!!!

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é