nG! Hebus Posté(e) le 18 août 2016 Posté(e) le 18 août 2016 Bonjour, Je cherche quelqu'un qui aurait un peu de temps ou même carrément ce genre de chose sous la main. Mes blocs sont des blocs 3D avec pas mal d'infos, je cherche un LISP pour extraire l'attribut appelé "REPERE" vers une flèche équivalente à une flèche de repère multiple. J'ai vu que dans les express on pouvais faire sortir tous les attributs mais cela ne convient pas car je fait des extractions de données. Je veux juste l'attribut REPERE qui pointe mon bloc et je veux garder mon attribut dans mon bloc aussi. Je sais pas si c'est très clair. Au pire je mettrais des images si cela peut être plus explicite. "98% des soucis informatiques sont assis entre la chaise et le bureau !" "C'est parce que la vitesse de la lumière est supérieure à celle du son que tant de gens paraissent brillants avant d'avoir l'air con."
lecrabe Posté(e) le 18 août 2016 Posté(e) le 18 août 2016 Hello 1) Si j'ai bien compris tu desires "selectionner" UN attribut nomme "REPERE" puis on traite TOUS les attributs "REPERE" ou que celui "selectionne" ? 2) Et on cree un Leader ou un MLeader dont le contenu = le contenu de "REPERE" ? 3) Ensuite on place CELA OU ? ... A droite ? En haut ? par rapport au Bloc et a quelle distance ? Bye, lecrabe Autodesk Expert Elite Team
nG! Hebus Posté(e) le 19 août 2016 Auteur Posté(e) le 19 août 2016 Salut Lecrabe, merci pour la réponse. 1) Si j'ai bien compris tu desires "selectionner" UN attribut nomme "REPERE" puis on traite TOUS les attributs "REPERE" ou que celui "selectionne" ? Le but c'est faire un peu ce que fait solidworks ou revit avec leur flèche de repère de pièces. Donc une par une. 2) Et on cree un Leader ou un MLeader dont le contenu = le contenu de "REPERE" ? Si Leader veut dire text ou Mtext alors oui c'est ça, avec pour valeur l'attribut "REPERE" 3) Ensuite on place CELA OU ? ... A droite ? En haut ? par rapport au Bloc et a quelle distance ?Si on pars sur le principe du Mtext, peut on définir un point qui sers de point d'insertion du Mtext? Je fait un screen cast en speed et je met ça en lien EDIT : https://knowledge.autodesk.com/community/screencast/085ca8af-2afd-4d0e-b568-a803c409df26 Ce que je cherche à faire mais sans passer par 50 manipulations. PS : Je viens de voir que sur screencast il appel les repères multilignes des Mleader :) donc oui je cherche à faire un Mleader sur un bloc avec comme texte la valeur de l'attribut REPERE. "98% des soucis informatiques sont assis entre la chaise et le bureau !" "C'est parce que la vitesse de la lumière est supérieure à celle du son que tant de gens paraissent brillants avant d'avoir l'air con."
lecrabe Posté(e) le 19 août 2016 Posté(e) le 19 août 2016 Hello 1) BON j'ai regarde mes stocks (environ 2000 routines) et je dispose d'une routine interessante ATT2MT qui convertit TOUS les Attributs des Blocs selectionnes en un "magnifique" MText horizontal ! 2) Je sais : ce n'est pas tout a fait ce que tu veux ! 3) Mais je ne suis pas developpeur Lisp/VLisp ! 41) Mais par contre a partir de cette routine, qq'un pourra facilement ajouter une question du genre :Quel Attribut traite ou Tous ?Ainsi tu pourrais signaler que tu ne veux traiter que l'attribut REPERE ... 42) Et meme creer un Leader ou MLeader et non pas un MText !? Desole de ne pas pouvoir faire plus ! Bon WE, Bye, lecrabe ;; ;; https://autocadtips1.com/2011/04/26/autolisp-attribute-to-text-mtext/ ;; ;; Routine: ATT2MT - Convert Attribute to MText ... ;; ;; The routine ATT2MT asks for text height ... ;; Then you can select MANY Blocks with Attributes ;; ALL Attributes will be written as a MText of N Lines ;; ;;;;;; :;;;; Written by Smirnoff ;;;;; ;;;;; Found @ http://www.cadtutor.net/forum/showthread.php?56833-Display-ATTRIBUTES-as-Text-from-multiple-blocks&highlight=attmt ;;;;; (defun c:Att2MT(/ aDoc aSp oSiz bSet aLst cLst tStr nTxt bCtr Tags TextInsert) ; ***************************************************************************** ; ADJUSTMENTS ; ; (Modify it to adjust for your own requirements) ; ; ***************************************************************************** (setq Tags T) ; - if T add tags to MText if Nil not (setq TextInsert T) ; - Text insertion point. If T center of Bounding Box ; of block, if Nil Block insertion point. ; ******************************* END ADJUSTMENTS ***************************** (vl-load-com) (defun GetBoundingCenter (vlaObj / blPt trPt cnPt) (vla-GetBoundingBox vlaObj 'minPt 'maxPt) (setq blPt(vlax-safearray->list minPt) trPt(vlax-safearray->list maxPt) cnPt(vlax-3D-point (list (+(car blPt)(/(-(car trPt)(car blPt))2)) (+(cadr blPt)(/(-(cadr trPt)(cadr blPt))2)) 0.0 ); end list ); end vlax-3D-point ); end setq ); end of GetBoundingCenter (if(not attmt:Size)(setq attmt:Size(getvar "TEXTSIZE"))) (setq oSiz attmt:Size attmt:Size(getreal(strcat "\nText size <"(rtos attmt:Size)">: "))) (if(null attmt:Size)(setq attmt:Size oSiz)) (setq aDoc(vla-get-ActiveDocument(vlax-get-acad-object))) (if(= 1(vla-get-ActiveSpace aDoc)) (setq aSp(vla-get-ModelSpace aDoc)) (setq aSp(vla-get-PaperSpace aDoc)) ); end if (princ "\n<<< Select Text to extract Attributes to MText >>> ") (if(setq bSet(ssget '((0 . "INSERT")))) (progn (foreach b(mapcar 'vlax-ename->vla-object (vl-remove-if 'listp (mapcar 'cadr(ssnamex bSet)))) (setq aLst '() tStr "") ; end setq (if TextInsert (setq bCtr(GetBoundingCenter B)) (setq bCtr(vla-get-InsertionPoint B)) ); end if (if(= :vlax-true(vla-get-HasAttributes B)) (progn (setq aLst (mapcar '(lambda (a) (list (vla-get-TagString a) (vla-get-TextString a))) (vlax-safearray->list (vlax-variant-value(vla-GetAttributes B))))) (foreach i(reverse aLst) (setq tStr(strcat tStr(if Tags(strcat(car i) ": ")"")(last i)"\\P")) ); end foreach (if(/= "" tStr) (progn (setq nTxt(vla-AddMText aSp bCtr (* attmt:Size 30.0) tStr)) (vla-put-Height nTxt attmt:Size) ); end progn ); end if ); end progn ); end if ); end foreach (vla-EndUndoMark aDoc) ); end progn ); end if (princ) ); end of c:att2mt Autodesk Expert Elite Team
nG! Hebus Posté(e) le 22 août 2016 Auteur Posté(e) le 22 août 2016 Bonjour Lecrabe, Merci c'est déjà ça, je vais aller ennuyer nos lispers pour voir si quelqu'un aurait un peu de temps à m'accorder pour faire ça :) "98% des soucis informatiques sont assis entre la chaise et le bureau !" "C'est parce que la vitesse de la lumière est supérieure à celle du son que tant de gens paraissent brillants avant d'avoir l'air con."
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