rebcao Posté(e) le 24 juillet 2015 Posté(e) le 24 juillet 2015 Bonjour à Toutes et à Tous, Est-ce que la commande TBLSEARCH BLOCK permet de connaître les options de création d'un bloc ? à savoir si l'on autorise la DECOMPOSITION et si le bloc est à échelle uniforme ou non ? Dans la liste retournée par la fonction TBLSEARCH je n'ai pas trouvé ? Merci pour votre aide. Christian Formateur, Consultant Expert AutoCAD, REVIT MEP, INVENTOR, télécharger , des Outils AutoCAD...cad123 @ wanadoo.fr (enlever les espaces de part et d'autre de @)
-Olivier- Posté(e) le 24 juillet 2015 Posté(e) le 24 juillet 2015 Bonjour Christian,Voici une petite ligne en Autolisp. (cdr (assoc 280 (entget (cdr (assoc 330 (entget (cdr (assoc -2 (tblsearch "block" "Nom_de_ton_bloc"))))))))) 0: le bloc ne peut-être explosé1: le bloc peut-être explosé Il y a peut-être plus direct mais je suis pas le plus qualifié (je suis interessé par d'éventuel réponse moins tortueuse. :D Olivier
-Olivier- Posté(e) le 27 juillet 2015 Posté(e) le 27 juillet 2015 Bonjour à tous, Pas mieux ?? Olivier
VDH-Bruno Posté(e) le 27 juillet 2015 Posté(e) le 27 juillet 2015 Bonjour à tous, Pas mieux ?? OlivierEn utilisant tblobjname pour récupérer plus directement le ename.. (cdr (assoc 280 (entget (assoc 330 (entget (tblobjname "block" "Nom_de_ton_bloc")))))) A+ 1 Apprendre => Prendre => Rendre
-Olivier- Posté(e) le 27 juillet 2015 Posté(e) le 27 juillet 2015 Je me disais aussi.Une fois de plus merci Bruno. ;) Olivier
VDH-Bruno Posté(e) le 27 juillet 2015 Posté(e) le 27 juillet 2015 Bonjour rebcao,Pour compléter, la réponse d'Olivier, les options de création du bloc tel que la mise à l'échelle uniforme et la décomposition.Sont respectivement renseigné dans les codes DXF 281 et 280 de la table BLOCK_RECORD, associée à la définition du bloc. La table BLOCK_RECORD est accessible via le code 330 présent dans la définition du bloc. Pour le principe un exemple pour une sélection par pointage sur une référence de bloc ((lambda (dxf_blrecord) (alert (strcat (if (zerop (cdr(assoc 280 dxf_blrecord))) "Décomposition autorisé -> \t\t Non" "Décomposition autorisé -> \t\t Oui" ) "\n" (if (zerop (cdr(assoc 281 dxf_blrecord))) "Echelle non uniforme autorisé -> \t Oui" "Echelle non uniforme autorisé -> \t Non" ) ) ) ) (entget (cdr (assoc 330 (entget (tblobjname "block" (cdr (assoc 2 (entget (car (entsel)))))))))) ) L'équivalent sous AutoCAD visible dans l'éditeur de bloc: A+ Apprendre => Prendre => Rendre
GJulien Posté(e) le 27 juillet 2015 Posté(e) le 27 juillet 2015 Bonjour, Par simple curiosité, quelqu'un peut expliquer pourquoi (tblobjname "BLOCK" "Nom_Du_Bloc") ne renvoie par la même chose que (car (entsel "Selection_Du_Bloc")) ? Je vois aussi que vous utilisez (assoc XXX), est-ce qu'il existe une liste reprenant la correspondance des numéros ? J'ai trouvé CECI mais je ne suis pas sur de ce que j'avance. Sinon j'avais trouvé une fonction nommée (vla-get-explodable object) qui renvoyait vlax-true ou vlax-false en fonction du bloc si il était explosable ou pas, mais je n'arrive malheureusement par à l'utiliser.Voici le lien ou j'ai trouvé la fonction. Cordialement,GJulien
VDH-Bruno Posté(e) le 27 juillet 2015 Posté(e) le 27 juillet 2015 Bonjour,Par simple curiosité, quelqu'un peut expliquer pourquoi (tblobjname "BLOCK" "Nom_Du_Bloc") ne renvoie par la même chose que (car (entsel "Selection_Du_Bloc")) ?Le premier retourne le ename de la définition de bloc (0 . "BLOCK")Le second retourne le ename d'une référence de bloc inserer dans le dessin (0 . "INSERT") Je vois aussi que vous utilisez (assoc XXX), est-ce qu'il existe une liste reprenant la correspondance des numéros ? J'ai trouvé CECI mais je ne suis pas sur de ce que j'avance.Oui, et plus spécifiquement dans l'aide tu as la description des codes par type d'entité. Sinon j'avais trouvé une fonction nommée (vla-get-explodable object) qui renvoyait vlax-true ou vlax-false en fonction du bloc si il était explosable ou pas, mais je n'arrive malheureusement par à l'utiliser.(vla-get-explodable (vla-item (vla-get-blocks (vla-get-ActiveDocument (vlax-get-Acad-Object))) "Nom_de_ton_bloc")) A+ Apprendre => Prendre => Rendre
-Olivier- Posté(e) le 27 juillet 2015 Posté(e) le 27 juillet 2015 Voir le messageGJulien, le 27 juillet 2015 - 12:14 , dit : Je vois aussi que vous utilisez (assoc XXX), est-ce qu'il existe une liste reprenant la correspondance des numéros ? J'ai trouvé CECI mais je ne suis pas sur de ce que j'avance. Oui, et plus spécifiquement dans l'aide tu as la description des codes par type d'entité. Avec la nouvelle aide, fait une recherche avec DXF dans la partie développeur avec Anglais comme langage.Le chapitre "About the DXF Format (DXF)" va te donner accès au différentes parties. OlivierPS : @VDH-Bruno : Toujours en version 2007 ?
VDH-Bruno Posté(e) le 27 juillet 2015 Posté(e) le 27 juillet 2015 Sinon j'avais trouvé une fonction nommée (vla-get-explodable object) qui renvoyait vlax-true ou vlax-falseBien que je préfère la manipulation des listes DXF, on peut effectivement obtenir ces informations en exploitant les propriétés définie dans l'objet BLOCK_RECORD. ((lambda (obj_blrecord) (alert (strcat (if (eq :vlax-true (vla-get-explodable obj_blrecord)) "Décomposition autorisé -> \t\t Oui" "Décomposition autorisé -> \t\t Non" ) "\n" (if (zerop (vla-get-BlockScaling obj_blrecord)) "Echelle non uniforme autorisé -> \t Oui" "Echelle non uniforme autorisé -> \t Non" ) ) ) ) (vla-item (vla-get-blocks (vla-get-ActiveDocument (vlax-get-Acad-Object))) (cdr (assoc 2 (entget (car (entsel))))) ) ) PS : @VDH-Bruno : Toujours en version 2007 ?Oui toujours, je ne te parlerai pas de la taille de l'écran, ni des perf de l'ordi j'en choquerai plus d'un… <_< A+ Apprendre => Prendre => Rendre
GJulien Posté(e) le 27 juillet 2015 Posté(e) le 27 juillet 2015 (vla-get-explodable (vla-item (vla-get-blocks (vla-get-ActiveDocument (vlax-get-Acad-Object))) "Nom_de_ton_bloc")) A+ Bon sang, c'est toujours le "(vla-item ...)" que j'oublie, merci pour cette précision VDH-Bruno.J'espérais une fois pouvoir aider quelqu'un mais apparement ça ne sera pas pour cette fois :) Merci également à -Olivier- pour les listes DXF. Cordialement,GJulien PS: Voici néanmoins le petit bout de code que j'ai pu faire. (defun-q c:BEXPL () (vl-load-com) (setq ACADBLOCK (vla-get-blocks (vla-get-activedocument (vlax-get-acad-object)))) (setq bSel (vla-get-name (vlax-ename->vla-object (car (entsel "Bloc : "))))) (if (= :vlax-true (vla-get-explodable (vla-item ACADBLOCK bSel))) (alert "Bloc explosable") (alert "Bloc non-explosable") ) ) Edit : C'est corrigé, désolé pour la petite erreur.
VDH-Bruno Posté(e) le 27 juillet 2015 Posté(e) le 27 juillet 2015 PS: Voici néanmoins le petit bout de code que j'ai pu faire. Attention aux comparaisons dans ton if, l'égalité que tu utilises ne fonctionne pas_$ (= T :vlax-true) nil _$ (= T :vlax-false) nil Attention également à ton imbrication dans ton if Apprendre => Prendre => Rendre
rebcao Posté(e) le 28 juillet 2015 Auteur Posté(e) le 28 juillet 2015 Bonjour, Merci pour toutes ces infos, ça ne s'invente pas ! Je vais pouvoir m'y mettre... Christian Formateur, Consultant Expert AutoCAD, REVIT MEP, INVENTOR, télécharger , des Outils AutoCAD...cad123 @ wanadoo.fr (enlever les espaces de part et d'autre de @)
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