Aller au contenu

Modification attribut lisp impossible


Aligol

Messages recommandés

Bonjour,

 

J'ai récupéré et modifié un lisp qui permet d'insérer aux sommets d'une polyligne un bloc avec un numéro de point qui s'incrémente à chaque sommet. J'ai utilisé ce lisp des dizaines de fois, sans aucun soucis. Dernièrement, je l'ai utilisé comme d'habitude, sauf que là, au lieu de mettre le numéro du point dans l'attribut, je n'obtiens que l'attribut avec sa valeur par défaut (il ne la change plus).

 

J'ai essayé ce lisp sur un ancien dessin où il avait fonctionné, même problème, il n'indique plus que la valeur par défaut de l'attribut.

 

En essayant le lisp sur un autre poste, cette fois-ci l'attribut du numéro de point se rempli correctement.

 

Pour insérer les blocs, j'utilise une méthode pas très jolie, mais qui avait fait ses preuves jusque là :

(command "_insert"
      bloc
      pt
      (* coef 1.0)
      (* coef 1.0)
      0
      att
)

 

Lorsque je tape "_-insert" directement dans Autocad pour insérer un bloc, sur un poste où le lisp fonctionne j'ai bien la question de l'attribut qui apparait à la fin (après l'angle de rotation). Mais sur le poste où le lisp ne fonctionne pas, la question de l'attribut n'est pas posée et je ne peux donc pas l'indiquer.

 

Je tenté de contourner le problème à l'aide d'une fonction que j'ai trouvé sur ce forum :

;*** Fonction pour Remplacer valeur d'un attribut
(defun rem_att (n_ent etiq valeur / ent1 test test1)
 (while (/= test "SEQEND")
   (if (/= test1 etiq)
     (progn
       (setq test (cdr (assoc 0 (entget n_ent))))
       (setq test1 (cdr (assoc 2 (entget n_ent))))
	(setq n_ent (entnext n_ent))
     )
     (progn
       (setq test "SEQEND")
       (setq ent1 (entget n_ent))
       (setq ent1 (subst (cons 1 valeur) (assoc 1 ent1) ent1))
       (entmod ent1)
     )
   )
 )
)
[...]
(command "_insert"
      bloc
      pt
      (* coef 1.0)
      (* coef 1.0)
      0
)
(rem_att (entlast) "LETTRE" att)

 

Mais même résultat...

 

Quelqu'un a-t-il une idée de ce qui pourrait bloquer les attributs dans Autocad ?

Je pense qu'il doit s'agir d'une variable d'environnement que j'ai dû modifier, mais laquelle ?

 

Merci d'avance.

Lien vers le commentaire
Partager sur d’autres sites

Coucou

 

Je ne vais sans doute pas te faire plaisir : IL NE FAUT PAS COPIER COLLER POUR APPRENDRE, cette phrase par contre tu peux la copier ! puisque tu te présentes sur un autre message comme voulant "progresser".

 

Que contient la variable bloc ? le nom de bloc sous forme de chaîne de caractères ?

 

À tout hasard, regarde tes cases à cocher dans la case de dialogue "insérer un bloc"

Ton bloc est toujours le même ? pas de modifications ? pas de mode "constant" dans l'attribut ?

 

Essaie de faire passer ton bloc en pièce jointe sur le forum

 

Amicalement

Lien vers le commentaire
Partager sur d’autres sites

Merci de ta réponse. Oui la variable bloc est définie par :

 (or 		(tblsearch "BLOCK" (setq bloc "num")) 		(findfile (setq bloc "num.dwg")) ) 

Sachant que le bloc existe dans le dessin au préalable, donc il s'agit bien de la chaîne de caractère désignant le bloc. A priori pas de modification dans le bloc puisque après la découverte du bug, j'ai relancé le lisp dans mon prototype et le bloc est déjà présent dans le dessin (il ne va pas chercher justement un bloc commun dans "num.dwg"). Donc les deux dessins, et les deux blocs étaient a priori indépendants. Là depuis mon poste, je lance le même lisp dans le même prototype (donc le même bloc) et ça fonctionne bien. L'idée de l'attribut en constant est une bonne idée, mais lorsque je passe exprès mon attribut en constant et que je lance mon lisp après, le chiffre se décale et ne se trouve plus encerclé, hors je n'avais pas ce problème. Le bloc : https://www.dropbox..../num.dwg?dl=0 (l'ajout du fichier joint directement n'a pas fonctionné)

Lien vers le commentaire
Partager sur d’autres sites

Lorsque je tape "_-insert" directement dans Autocad pour insérer un bloc, sur un poste où le lisp fonctionne j'ai bien la question de l'attribut qui apparait à la fin (après l'angle de rotation). Mais sur le poste où le lisp ne fonctionne pas, la question de l'attribut n'est pas posée et je ne peux donc pas l'indiquer.

 

Regarde du côté de la variable système ATTREQ.

  • Upvote 1

Gilles Chanteau - gileCAD -
Développements sur mesure pour AutoCAD
ADSK_Expert_Elite_Icon_S_Color_Blk_125.png

Lien vers le commentaire
Partager sur d’autres sites

Coucou

 

Je ne comprends pas ton souci, ça fonctionne avec le fichier que tu as donné

Tel que tu as expliqué je ne sais pas par où chercher

Est-ce que att est aussi une chaîne de caractères ?

ATTDIA ? ça change quelque chose ?

 

 

 

 

Lien vers le commentaire
Partager sur d’autres sites

Regarde du côté de la variable système ATTREQ.

 

Super, je pense que c'est ça !

Sur mon poste actuel, où je n'ai pas le problème, j'avais ATTREQ à 1. Quand je mets ATTREQ à 0 cela reproduit exactement le problème que j'avais. Et cette variable est bien indépendante du dessin (lorsque j'ouvre un autre dessin ATTREQ reste à 0).

Pourtant j'avais vu ce post lors de mes recherches : http://cadxp.com/top...avec-attributs/ , j'avais bien fais attention à ATTDIA mais je n'avais pas pensé que ATTREQ pouvait donner ce genre de comportement...

Je vérifierai la semaine prochaine sur l'ordinateur en question à savoir si c'était bien ça, mais je pense que oui, je viendrai confirmer.

 

Merci beaucoup !

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é