Lisp - Demande d'aide - Anonymous block *U...

Lisp - Demande d'aide - Anonymous block *U...

lewis185
Advocate Advocate
234 Visites
2 Réponses
Message 1 sur 3

Lisp - Demande d'aide - Anonymous block *U...

lewis185
Advocate
Advocate

Bonjour,
J'ai récemment fait la découverte des anonymous blocks dans mon autocad 2021.
Après quelques recherches sur le net, j'ai trouvé un bout de lisp permettant de réattribuer le nom du bloc à tous les *U... que l'on peut retrouver dans certains dwg. (principalement des blocs dynamiques édités)

(setq boucle$ 0)
	(if (setq js$ (ssget "x" '((0 . "INSERT") (2 . "`*U*") (410 . "Model"))))
		(while (setq bloc$ (ssname js$ boucle$))
			(setq dxf$ (entget bloc$)
				nom$ (cdr (assoc 2 dxf$))
			)
			(setq obj$ (vlax-ename->vla-object bloc$))
			(vlax-put obj$ 'Name (vlax-get obj$ 'Effectivename))
			(setq boucle$ (1+ boucle$))
		)
	)

Ça fonctionne très bien, mais j'aimerais, le rendre plus intelligent et j'aimerais votre aide.
J'aimerais en effet appliquer le changement de *U... vers le nom original, uniquement si le nom original est égal à un nom précis (exemple "Cachet Provisoire") sans toucher aux autres *U...

Avez-vous une idée de comment adapter le lisp en conséquence ?

Merci d'avance,
Lewis185

0 J'aime
Solutions acceptées (1)
235 Visites
2 Réponses
Replies (2)
Message 2 sur 3

_gile
Consultant
Consultant
Solution acceptée

Salut,

 

L'expression LISP suivante devrait correspondre à ce que tu demandes, mais réattribuer le nom original aux références de bloc anonymes créés par AutoCAD restaurera automatiquement les valeurs par défaut des propriétés dynamiques.

(if (setq ss (ssget "_X" '((0 . "INSERT") (2 . "`*U*"))))
  (repeat (setq i (sslength ss))
    (setq obj (vlax-ename->vla-object (ssname ss (setq i (1- i)))))
    (if	(= (vla-get-EffectiveName obj) "Cachet Provisoire")
      (vla-put-Name obj "Cachet Provisoire")
    )
  )
)


Gilles Chanteau
Programmation AutoCAD LISP/.NET
GileCAD
GitHub

Message 3 sur 3

lewis185
Advocate
Advocate

Waw une réponse aussi prompte, et le lisp est parfait, ça fonctionne pile-poil comme je voulais.
Merci 😃

0 J'aime