DenisHen Posté(e) le 16 octobre 2017 Posté(e) le 16 octobre 2017 Bonjour à tous. Voilà, je cherche, via un Lisp, à ne sélectionner que les références externes via un (ssget, mais v'là ti pô que le code DXF 0 d'une XRef est... "INSERT" ? ? ? Donc, comment faire ? ? ? Si quelqu'un a une astuce, un conseil... je suis preneur... Windows 11 / AutoCAD 2024 Sur terre, il y a 10 types de personnes, celles qui comptent en binaire et les autres (developpez.net). Davantage d'avantages, avantagent davantage (Bobby Lapointe). La connaissance s'accroît quand on la partage (Socrate). Tant va la cruche à l'eau que l'habit n'amasse pas mousse avant de l'avoir tué. (Moi)
didier Posté(e) le 16 octobre 2017 Posté(e) le 16 octobre 2017 Coucou Étonnant ! je viens de vérifier avant de répondre car je n'aime pas dire des bêtises et :En vérifiant dans un dessin les codes 70 d'un bloc et d'une XREF j'obtiens dans les deux cas 0 (zéro)Alors qu'il me semblait que l'XREF était décrite par la valeur 4 dans le code 70 Chez toi c'est pareil ? Amicalement Éternel débutant... Mon site perso : Programmer dans AutoCAD
didier Posté(e) le 16 octobre 2017 Posté(e) le 16 octobre 2017 Coucou On va pas s'avouer vaincu pour autant mais je vais creuser ça dès que je peux pour l'AutoLispEssaie ça: (setq AcDoc (vla-get-ActiveDocument (vlax-get-acad-object))) (if (= (vla-get-isXref (vla-item (vla-get-Blocks AcDoc) (vla-get-Name (vlax-ename->vla-object (car (entsel "\choix Objet\n")) ) ;_ Fin de vlax-ename->vla-object ) ;_ Fin de vla-get-Name ) ;_ Fin de vla-item ) ;_ Fin de vla-get-isXref :vlax-true ) ;_ Fin de = (alert "XREF") (alert "pas Xref") ) ;_ Fin de if Amicalement Éternel débutant... Mon site perso : Programmer dans AutoCAD
DenisHen Posté(e) le 16 octobre 2017 Auteur Posté(e) le 16 octobre 2017 Bonjour didier, et merci pour cette réponse, qui fonctionne parfaitement... Je n'ai plus qu'à la coder dans mon Lisp... Encore merci... Windows 11 / AutoCAD 2024 Sur terre, il y a 10 types de personnes, celles qui comptent en binaire et les autres (developpez.net). Davantage d'avantages, avantagent davantage (Bobby Lapointe). La connaissance s'accroît quand on la partage (Socrate). Tant va la cruche à l'eau que l'habit n'amasse pas mousse avant de l'avoir tué. (Moi)
bonuscad Posté(e) le 16 octobre 2017 Posté(e) le 16 octobre 2017 (modifié) Coucou Étonnant ! je viens de vérifier avant de répondre car je n'aime pas dire des bêtises et :En vérifiant dans un dessin les codes 70 d'un bloc et d'une XREF j'obtiens dans les deux cas 0 (zéro)Alors qu'il me semblait que l'XREF était décrite par la valeur 4 dans le code 70 Chez toi c'est pareil ? Amicalement Didier, j'ai été aussi surpris que toi!D'après l'aide DXF 2018 le bit des xrefs est dans le code 70 des APPID ???Alors que le code 70 de la table des blocs est devenue les unités d'insertion (0=sans unité) Confusion avec la table des BLOCK_RECORD qui affiche le code 70 avec les unités d'insertions. Pour DenisHen, avec le vla tu peux obtenir facilement ce que tu désire (vlax-for i (vla-get-Blocks (vla-get-ActiveDocument (vlax-get-Acad-Object))) (if (= (vla-get-IsXref i) :vlax-true) (print (vla-get-name i)) ) ) Modifié le 18 octobre 2017 par bonuscad Choisissez un travail que vous aimez et vous n'aurez pas à travailler un seul jour de votre vie. - Confucius
didier Posté(e) le 16 octobre 2017 Posté(e) le 16 octobre 2017 Coucou faute de frappe : Je n'ai plus qu'à la coder copier dans mon Lisp...allez !! sans rancune aucune, sinon je n'aurais pas répondu Éternel débutant... Mon site perso : Programmer dans AutoCAD
DenisHen Posté(e) le 16 octobre 2017 Auteur Posté(e) le 16 octobre 2017 Merci à vous pour votre aide. @Bonuscad : je n'arrive pas à faire fonctionner ton lisp :(defun c:TestXref ( / i) (vlax-for i (vla-get-Blocks (vla-get-ActiveDocument (vlax-get-Acad-Object))) (if (= (vla-get-IsXref i) :vlax-true) (print (vla-get-name i)) ) ;_ Fin de if ) ;_ Fin de vlax-for ) ;_ Fin de defun AutoLisp me dit qu'il y a une parenthèse fermante absente ou mal placée... @didier : j'ai écris "coder" car je dois modifier ce code pour l'adapter à mes besoins. Mais effectivement, j'ai commencé par le copier... ;) Windows 11 / AutoCAD 2024 Sur terre, il y a 10 types de personnes, celles qui comptent en binaire et les autres (developpez.net). Davantage d'avantages, avantagent davantage (Bobby Lapointe). La connaissance s'accroît quand on la partage (Socrate). Tant va la cruche à l'eau que l'habit n'amasse pas mousse avant de l'avoir tué. (Moi)
didier Posté(e) le 17 octobre 2017 Posté(e) le 17 octobre 2017 Coucou Ah le copier-coller ! ce n'est DÉFINITIVEMENT pas une bonne ;méthode d’apprentissageCe qui t'a été donné est un extrait, et toi tu en fais un defun c:xxxJe te laisse te dépatouiller pour comprendre, ton niveau est assez avancé pour ça.Au fait : je ne vous pas de souci de parenthèses. Allez !! je ne suis pas un bourreau : regarde du côté de la variable et pose toi la question du defun c:xxxAmicalement Éternel débutant... Mon site perso : Programmer dans AutoCAD
didier Posté(e) le 17 octobre 2017 Posté(e) le 17 octobre 2017 Coucou Il va falloir que je fasse attention et remette en cause ce que je pense savoir pour ne pas dire de bêtises sur mon siteJe vais regarder de plus près mais je ne comprends pas le truc du groupe 70 qui a sautéComment assure-t'-on la compatibilité avec les nouvelles versions s'ils nous changent les valeurs de groupe ? Amicalement Éternel débutant... Mon site perso : Programmer dans AutoCAD
didier Posté(e) le 17 octobre 2017 Posté(e) le 17 octobre 2017 Coucou Au risque de passer pour un demeuré voici l'extrait de l'aide 2018 :regardez le numéro 4 70 Drapeaux par type de bloc (valeurs binaires pouvant être combinées) : 0 = Indique qu'aucun des drapeaux suivants ne s'applique 1 = Ce bloc anonyme est généré par une opération de hachage, de cotation associative ou tout autre type d'opération, ou par une application 2 = Ce bloc a des définitions d'attribut non constantes (ce bit n'est pas défini si le bloc comporte des définitions d'attribut constantes ou s'il n'a aucune définition d'attribut) 4 = Ce bloc est une référence externe (xréf) 8 = Ce bloc est une superposition de xréf 6 = Ce bloc est dépendant en externe 32 = Il s'agit d'une référence externe non résolue ou d'un élément dépendant d'une référence externe (ignorée lors de la saisie) 64 = Cette définition est une référence externe référencée (ignoréelors de la saisie) Amicalement Éternel débutant... Mon site perso : Programmer dans AutoCAD
Olivier Eckmann Posté(e) le 17 octobre 2017 Posté(e) le 17 octobre 2017 Bonjour, ce code 70 se rapporte à la définition du bloc obtenu par un :(tblsearch "block" "NOM_DE_MA_XREF") le "NOM_DE_MA_XREF" étant le nom obtenu par le code 2 sur mon insertion de Xref (bloc). Olivier
DenisHen Posté(e) le 17 octobre 2017 Auteur Posté(e) le 17 octobre 2017 C'est très curieux comme comportement, voici la liste des codes DXF d'une XRef :(-1 . <Nom d'entité: 204670bad00>)(0 . "INSERT")(330 . <Nom d'entité: 20457b7fe80>)(5 . "16A08")(100 . "AcDbEntity")(67 . 0)(410 . "Model")(8 . "_XRef")(100 . "AcDbBlockReference")(2 . "ST-Denis-EU")(10 0.0 0.0 0.0)(41 . 1.0)(42 . 1.0)(43 . 1.0)(50 . 0.0)(70 . 0) <= Curieux, non ? ***************(71 . 0)(44 . 0.0)(45 . 0.0)(210 0.0 0.0 1.0) Windows 11 / AutoCAD 2024 Sur terre, il y a 10 types de personnes, celles qui comptent en binaire et les autres (developpez.net). Davantage d'avantages, avantagent davantage (Bobby Lapointe). La connaissance s'accroît quand on la partage (Socrate). Tant va la cruche à l'eau que l'habit n'amasse pas mousse avant de l'avoir tué. (Moi)
didier Posté(e) le 17 octobre 2017 Posté(e) le 17 octobre 2017 Coucou Merci beaucoup Olivier Je faisais le test du groupe 70 suite à un appel en ENTGETCe qui explique la confusion DenisHEN tu poses la même question que je posais en message #2 sur le groupe 70...Et sans doute tu fais la même confusion qui a été solutionnée et m'a donné l'occasion de remercier Olivier à l'instant. Amicalement Éternel débutant... Mon site perso : Programmer dans AutoCAD
DenisHen Posté(e) le 17 octobre 2017 Auteur Posté(e) le 17 octobre 2017 Re. @didier : je n'ai pas compris la solution, raison du #12. Je ne sais toujours pas faire la différence. Peut-être en comparant le code 2 de la Xref à la liste des blocs inclus dans le dessin ? ? ? Windows 11 / AutoCAD 2024 Sur terre, il y a 10 types de personnes, celles qui comptent en binaire et les autres (developpez.net). Davantage d'avantages, avantagent davantage (Bobby Lapointe). La connaissance s'accroît quand on la partage (Socrate). Tant va la cruche à l'eau que l'habit n'amasse pas mousse avant de l'avoir tué. (Moi)
DenisHen Posté(e) le 17 octobre 2017 Auteur Posté(e) le 17 octobre 2017 Bon, j'ai écris ça : ;;;******************************************************** ;;; Place toutes les références externes en arrière plan ;;;******************************************************** (defun c:XrefDessous (/ Select) (if (setq Select (ssget "_X" '((0 . "INSERT")))) (progn (setq i 0) (while (setq ent (ssname Select i)) (setq NomXref (cdr (assoc 2 (entget ent)))) (if (not (tblsearch "block" NomXref)) (progn (command "ordretrace" ent "" "ar") ; (princ "\nNomXref=") ; (princ NomXref) ) ;_ Fin de progn ) ;_ Fin de while (setq i (+ i 1)) ) ;_ Fin de while ) ;_ Fin de progn ) ;_ Fin de if (princ) ) ;_ Fin de defun Mais les noms des références externes sont incluses dans la table des blocs... Windows 11 / AutoCAD 2024 Sur terre, il y a 10 types de personnes, celles qui comptent en binaire et les autres (developpez.net). Davantage d'avantages, avantagent davantage (Bobby Lapointe). La connaissance s'accroît quand on la partage (Socrate). Tant va la cruche à l'eau que l'habit n'amasse pas mousse avant de l'avoir tué. (Moi)
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