Aller au contenu

Nombre d\'entités dans l\'espace objet suite


Messages recommandés

Posté(e)

Bonjour,

 

Je souhaite conaitre le nombre d'entités qu'un utilisateur vient de créer quelquesoit la commande utilisé.

(copier, mirroir, ajuster, inserer ...)

 

J'utilise les réacteurs suivant : (je n'y connais rien en réacteur...)

 

(vlr-editor-reactor nil '((:vlr-commandWillStart

(vlr-editor-reactor nil '((:vlr-commandEnded

 

Je repere le nombre d'entités existantes dans les 2 réacteurs ci-dessus puis par une simple soustraction je récupere le nombre d'entites nouvellement créées.

 

Mais j'aimerai une liste de noms d'entités et pas seulement leur nombre.

Alors je boucle avec la commande (endel et (entlast puis je boucle dans l'autre sens pour faire revenir mes entités.

 

Cela fonctionne !

 

Mais je suis sur qu'il y a une maniere plus rapide et plus élegante de le faire.

 

Si quelqu'un peut m'aider ...

 

Posté(e)

Salut,

 

je n'y connais rien en réacteurs non plus, mais pour avoir la liste des n dernières entités créées :

 

(setq AcDoc (vla-get-ActiveDocument (vlax-get-acad-object))
     ModSp (vla-get-ModelSpace AcDoc)
     )
(setq cnt (vla-get-Count ModSp))
(repeat	n
 (setq
   lst	(cons (vla-get-ObjectName (vla-Item ModSp (setq cnt (1- cnt))))
      lst
)
 )
) 

Gilles Chanteau - gileCAD - GitHub
Développements sur mesure pour AutoCAD

Posté(e)

Merci Gile,

 

Je recupère bien une liste des derniers éléments créés mais elle est du type ("AcDbText" "AcDbPolyline"),

j'aurai préféré une liste du type ("Nom d'entité: 7e0b8160>" "Nom d'entité: 7e0b8160>").

 

A partir de ce que tu m'as donné, j'ai cherché mais je n'ai pas trouvé.

:yltype:

 

 

Posté(e)

Salut

J'aurai fait par une autre méthode et sans réacteur

A l'ouverture du dessin, je fais pas exemple (setq dernier_ent (entlast)) et quand je veux regarder ce qui a été créé après

(setq ent dernier_ent)
(while ent
 (setq ent (entnext ent))
 ....
)

 

@+

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)

Excuse moi je pensais que tu voulais le type d'entité.

 

si tu remplaces : (cons (vla-get-ObjectName (vla-Item ModSp (setq cnt (1- cnt)))) lst)

 

par : (cons (vla-Item ModSp (setq cnt (1- cnt))) lst), tu auras la liste des VLA-objects

 

ou par (cons (vlax-vla-object->ename (vla-Item ModSp (setq cnt (1- cnt)))) lst) pour avoir celle des noms d'entités (ename).

Gilles Chanteau - gileCAD - GitHub
Développements sur mesure pour AutoCAD

Posté(e)

C'est bon ! ça marche !

Merci encore.

 

Merci aussi à Patrick_35 pour cette suggestion.

(je vais comparer les deux methodes)

 

Je n'ai pas l'habitude de me balader et d'utiliser les forums, mais je m'apercois qu'il y a des gens competents et sympas.

 

a+

Laurent

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é