alala Posté(e) le 12 décembre 2012 Posté(e) le 12 décembre 2012 Bonjour, Je souhaite automatiser quelques fonctions sur les blocs et je voulais passer par du Vlisp. Afin de lister mes blocs je fait donc un :(vlax-for MesBlocs(vla-get-blocks (vla-get-activedocument (vlax-get-acad-object))) Et je pensait pourvoir ensuite faire un simple "vla-get-layer" pour chaque objet de la collection de blocs. Hors ce n'est pas possible (et un vlax-dump-object me le confirme malheureusement) car la propriété n'existe pas. Dans un même temps si je sélectionne un bloc et que je fait un "vla-get-layer" dessus j'ai bien mon info. Avez vous une méthode pour atteindre chaque bloc en Vlisp de manière a obtenir son calque (et mieux si possible, les calques des éléments qui le compose)? merci d'avance. C'est en forgeant que l'on devient forgerons.Et c'est en sciant que Léonard DeVinci!
VDH-Bruno Posté(e) le 12 décembre 2012 Posté(e) le 12 décembre 2012 Bonjour,, Il me semble que tu fait une petite confusion, que ce soit en Vlisp ou en AutoLisp, il ne faut pas confondre une définition de bloc et une référence de bloc.Afin de lister mes blocs je fait donc un :(vlax-for MesBlocs(vla-get-blocks (vla-get-activedocument (vlax-get-acad-object)))Dans ton exemple tu pointes la table des blocs AcadBlock (BLOCK en dxf). si je sélectionne un bloc et que je fait un "vla-get-layer" dessus j'ai bien mon info.Normal la tu interroges une référence de bloc AcadBlockReference(INSERTen dxf)... La tu obtiendra le calque d'insertion. A+ Apprendre => Prendre => Rendre
alala Posté(e) le 12 décembre 2012 Auteur Posté(e) le 12 décembre 2012 Il n'y a donc pas de collections des références de bloc insérés dans le plan? :huh: Il ne me reste plus qu'a faire du ssget si je ne me trompe pas!? C'est en forgeant que l'on devient forgerons.Et c'est en sciant que Léonard DeVinci!
Patrick_35 Posté(e) le 12 décembre 2012 Posté(e) le 12 décembre 2012 Salut Si tu veux pousser la compréhension plus loin, l'espace objet est un bloc dans autocad(vlax-dump-object (vla-item (vla-get-blocks (vla-get-activedocument (vlax-get-acad-object))) 0))Tu peux parcourir ce bloc avec une boucle vlax-for pour y trouver les blocs.C'est long et fastidieux et rien ne vaut un bon vieux ssget avec le filtre qui va bien pour optimiser ta recherche, mais cette méthode est utile quand on utilise ObjectDbx (ou tout autre document ouvert dans autocad, mais qui n'est pas le document actif), car le ssget ne fonctionne pas dans ce cas. @+ Les Lisps de PatrickLe but n'est pas toujours placé pour être atteint, mais pour servir de point de mire.Joseph Joubert, 1754-1824
(gile) Posté(e) le 12 décembre 2012 Posté(e) le 12 décembre 2012 Salut, C'est long et fastidieux et rien ne vaut un bon vieux ssget avec le filtre qui va bien pour optimiser ta rechercheJe n'en suis pas si sûr, en interne, un (ssget "_x" ...) fait bien la même chose en parcourant les espaces objet et papier (à moins d'avoir filtré avec le groupe 410) et en appliquant le filtre à toutes les entités... Il faudrait faire des tests. En tout cas, en .NET parcourir un espace en testant les entités n'est pas plus long qu'utiliser une sélection et permet souvent de faire des choses que les filtres classiques ne permettent pas. Gilles Chanteau - gileCAD - GitHub Développements sur mesure pour AutoCAD
alala Posté(e) le 12 décembre 2012 Auteur Posté(e) le 12 décembre 2012 Et bien merci à tous pour toutes ces informations.Je ne sait pas pourquoi mais j'était persuadé que l'on avait accés à la collection des reférences de bloc inséré dans le plan quelque part. Donc ici "en gros" on tape dans les même tables que lorsque que l'on fait un tblsearch!? C'est en forgeant que l'on devient forgerons.Et c'est en sciant que Léonard DeVinci!
(gile) Posté(e) le 12 décembre 2012 Posté(e) le 12 décembre 2012 Re, À ma connaissance, le plus rapide pour trouver les références d'un (ou plusieurs) bloc(s) est de passer par la définition du bloc, plus précisément l'objet "BLOCK_RECORD" correspondant à la définition de bloc dans lequel sont enregistrées toutes les références pour ce bloc.Voir ce sujet. Gilles Chanteau - gileCAD - GitHub Développements sur mesure pour AutoCAD
alala Posté(e) le 13 décembre 2012 Auteur Posté(e) le 13 décembre 2012 Et bien, vraiement très instructif tout ça!Encore merci j'ai découvert de nouvelles fonction et méthodes grâce à tout cela! C'est en forgeant que l'on devient forgerons.Et c'est en sciant que Léonard DeVinci!
Messages recommandés
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 compteSe connecter
Vous avez déjà un compte ? Connectez-vous ici.
Connectez-vous maintenant