KSJ77 Posté(e) le 20 mai 2015 Posté(e) le 20 mai 2015 Bonjour,Lorsqu'un xref est présent plusieurs fois dans l'espace objet est-il possible de convertir l'un d'entre eux en bloc Je m'explique, sur un plan j'ai X chambres identiques dont chacune renvoi à un même Xref. Problème, je ne trouve pas la solution pour modifier une chambre spécifique (peut-être via un lisp), sachant que je ne veux pas passer par le gestionnaire de référence car cela va me transformer toute les chambres en bloc. Existe t-il un lisp inverse de "blocktoxref"? Merci d'avance pour votre aide :)
lili2006 Posté(e) le 20 mai 2015 Posté(e) le 20 mai 2015 Bonjour à toutes et tous, Au lieu d'insérer la XREF en question(pour modifier une chambre spécifique), tu l'insère en bloc au même coordonnées aprés avoir fait tes modifs sur la copie de ton XREF,... Suis je clair ?:huh: Civil 3D 2025 - COVADIS_18.3b https://www.linkedin...3%ABt-95313341/
philsogood Posté(e) le 20 mai 2015 Posté(e) le 20 mai 2015 Philpour faire simpleva sur ton XrefCTL+CCTL+V sur ton fichier où est inséré l'XrefPhil Projeteur Revit Indépendant - traitement des eaux/CVC
nosset Posté(e) le 21 mai 2015 Posté(e) le 21 mai 2015 Bonjour, Tu peux aussi renommer dans la liste des Xref ton Xref de la chambre en "chambre courante"Ensuite tu réinsères ta chambre en xref en lui donnant un nom "chambre spécifique".Tu as ainsi 2 instances différentes d'un même fichier en xref.Pour finir "Casse" ton xref spécifique en l'insérant par le gestionnaire d'xref.Tu as donc pour finir tes chambres en Xef et un bloc de chambre que tu peux modifié. C'est pas les solutions qui manquent. Autodesk Expert Elite Member
KSJ77 Posté(e) le 21 mai 2015 Auteur Posté(e) le 21 mai 2015 Merci pour vos suggestions :) J'ai quand même cherché une solution lisp et j'en ai trouvé un que j'ai légèrement modifié afin de l'adapter à mes besoinsVoici le code (defun c:Xref2Block (/ ActDoc BlkCol LayCol Sel EntData BlkName BlkRefObj LayList NewBlk FullPath dbxApp ObjList Message NewBlkName) (setq ActDoc (vla-get-ActiveDocument (vlax-get-Acad-Object))) (setq BlkCol (vla-get-Blocks ActDoc)) (setq LayCol (vla-get-Layers ActDoc)) (setq Message "\n Enter block name: ") (if (and (while (or (not NewBlkName) (not (vl-catch-all-error-p (vl-catch-all-apply 'vla-Item (list BlkCol NewBlkName)))) ) (not (while (= (setq NewBlkName (getstring T Message)) ""))) (setq Message "\n Block name already exist, please type another: ") ) (setq Sel (entsel "\n Select Xref to turn into block: ")) (setq EntData (entget (car Sel))) (= (cdr (assoc 0 EntData)) "INSERT") (setq BlkName (cdr (assoc 2 EntData))) (setq BlkRefObj (vla-item BlkCol BlkName)) (= (vla-get-IsXref BlkRefObj) :vlax-true) ) (progn (vlax-for i LayCol (if (and (wcmatch (setq LayName (vla-get-Name i)) (strcat BlkName "|*")) (= (vla-get-LayerOn i) :vlax-true) (= (vla-get-Freeze i) :vlax-false) ) (setq LayList (cons (substr LayName (+ 2 (strlen BlkName))) LayList)) ) ) (setq NewBlk (vla-Add BlkCol (vla-get-Origin BlkRefObj) (strcat NewBlkName))) (if (setq FullPath (findfile (vla-get-Path (vlax-ename->vla-object (car Sel))))) (progn (setq dbxApp (if (< (atoi (setq oVer (substr (getvar "acadver") 1 2))) 16) (vla-GetInterfaceObject (vlax-get-acad-object) "ObjectDBX.AxDbDocument") (vla-GetInterfaceObject (vlax-get-acad-object) (strcat "ObjectDBX.AxDbDocument." oVer)) ) ) (vla-Open dbxApp FullPath) (vlax-for i (vla-get-ModelSpace dbxApp) (if (vl-position (vla-get-Layer i) LayList) (setq ObjList (cons i ObjList)) ) ) (vlax-invoke dbxApp 'CopyObjects ObjList NewBlk) (prompt (strcat "\n New block created name \"" NewBlkName "\".")) ) (progn (prompt "\n Can not find darwing to open.") (vla-Delete NewBlk) ) ) (vlax-release-object dbxApp) (setq dbxApp nil) ) ) (command "_erase" Sel "" "") (command "-inserer" NewBlkName (getpoint) 1 1 0 ) (princ) ) Il faut maintenant que je cherche à rajouter une alerte ou un filtre car lorsque l'on sélectionne autre chose qu'une Xref cela provoque une erreur (sélection d'un bloc par exemple).
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