Aller au contenu

Modifier la valeur d'un attribut en autolisp (Help)


Messages recommandés

Posté(e)

Bonjour,

 

J'aimerais, en autolisp, que vous m'aidiez à avancer sur ce problème : modifier la valeur d'un attribut sans faire de sélection à l'écran. L'idéal serait d'insérer les remarques à chaque lignes pour que j'y vois clair.

 

Mes données :

 

Nom du bloc : Cart_A3_Hyd

Etiquette de l'attribut : DATE_DE_L'OFFRE

Valeur de l'attribut actuelle : 10 Novembre

Valeur future : 20 décembre

 

Je sais déjà :

 

sélectionner le bloc par : (ssget "_x" '((2 . "Cart_A3_Hyd")))

sélectionner le bloc par la table : (setq ent (cdr(assoc -2 (tblsearch "block" "Cart_A3_Hyd"))))

 

J'ai déjà magouillé un code qui trainait par là :

 

 

(defun c:dede ()
 ;; Récupère la valeur du premier attribut de Cart_A3_Hyd
 (setq	jeusel (ssget "x"

	      (list

		(cons 0 "INSERT")

		(cons 2 "Cart_A3_Hyd")

	      )

       )
 )

 (if (> (sslength jeusel) 1)

   (progn

     (alert
"le Bloc Cart_A3_Hyd n'est pas unique dans le dessin\n Abandon"
     )

     (quit)

   )

   (progn

     (setq valATT (cdr (assoc 1 (entget (entnext (ssname jeusel 0))))))

     (alert (strcat "la valeur de Cart_A3_Hyd est :" valATT))

   )

 )
)

 

Mais je ne suis pas un adepte des copier-coller dogmatiques...

 

Merci à vous !!

 

B' P.

"La ligne droite est le plus court chemin entre deux points, à condition que les deux points soient bien en face l'un de l'autre" P. Desproges.

Posté(e)

Salut

 

Par exemple

 

(defun c:maj(/ att bl js n val)
 (if (setq js (ssget "x" (list (cons 0 "insert") (cons 2 "Cart_A3_Hyd") (cons 66 1))))
   (progn
     (setq n 0)
     (while (setq bl (ssname js n))
(setq att (entget (entnext bl)))
(while (/= (cdr (assoc 0 att)) "SEQEND")
  (if (= (cdr (assoc 2 att)) "DATE_DE_L'OFFRE")
    (progn
      (setq att (subst (cons 1 "Nouvelle Date") (assoc 1 att) att))
      (entmod att) 
      (setq att (list (cons 0 "SEQEND")))
    )
    (setq att (entget (entnext (cdr (assoc -1 att)))))
  )
)
(setq n (1+ n))
     )
   )
   (alert "le Bloc Cart_A3_Hyd n'est pas unique dans le dessin\n Abandon")

 )
)

 

@+

Les Lisps de Patrick

Le but n'est pas toujours placé pour être atteint, mais pour servir de point de mire.

Joseph Joubert, 1754-1824

Posté(e)

Merci P_35, merci Didier,

 

Ha cher Didier, cher péregrin des BE outre-océaniques, je te reconnais bien là ! Tu penses bien que je m'étais bien empressé de copier-coller ton code quand il était encore en mode texte...

 

Allez, je file en salle d'autopsie pour décortiquer vos routines.

 

Bonne journée à vous deux.

"La ligne droite est le plus court chemin entre deux points, à condition que les deux points soient bien en face l'un de l'autre" P. Desproges.

Posté(e)

coucou

 

je me doute que les gens préfèrent copier les lignes

et les retravailler ensuite.

 

je suis convaincu que c'est une fausse bonne idée

 

c'est comme si tu copiais-collais le mode de fonctionnement de la marche à pied

mettre le pied droit devant le pied gauche

mettre le poids du corps sur le pied droit

basculer le poids du corps sur le pied gauche en avançant ce dernier

et recommencer ...

 

est-ce que tu saurais marcher pour autant ?

 

amicalement

 

au fait !, je ne suis plus dans l'océan indien

mais dans le sud de la Corse,

en même temps, c'est toujours une île (hihihi)

Posté(e)

La méditerranée n'est elle pas un océan ? C'est ce qu'aimeraient à croire tous les Marseillais !! Et les hommes ne sont-ils pas chacun une île ?

 

Mais ce n'est pas le bon site pour philosopher ainsi.

 

En fait je faisais fausse route dans ma démarche car je pensais que les attributs étaient eux-même contenus dans une table et qu'il fallait la "scanner" pour attraper le bon en fonction de sont étiquette.

 

Il y a vraiment un fossé entre ton lisp, relativement simple qui a la vertu de clarifier les choses, et celui de P_35 qui, tout en étant aussi clair, fait intervenir des outils plus élaborés qui ne sont pas à la portée des (éternels) débutants.

 

Encore merci et à bientôt.

"La ligne droite est le plus court chemin entre deux points, à condition que les deux points soient bien en face l'un de l'autre" P. Desproges.

Posté(e)

coucou

 

le mien est écrit dans un but didactique

le sien contient plus de contrôle

 

charge pour toi, une fois que tu as compris une méthode

de franchir le pas des contrôles

 

par exemple, j'ai bien spécifié que je savais quel attribut il fallait modifier

en l'occurrence le premier

lui, il regarde TOUS les attributs et quand la bonne étiquette est trouvée

il se met à la modifier.

 

tu comprends la nuance, mais comme ta question portait sur

COMMENT MODIFIER UNE VALEUR D'ATTRIBUT

je me suis concentré dessus et n'ai répondu que dans ce sens.

 

Amicalement

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é