brunomu Posté(e) le 20 juillet 2010 Posté(e) le 20 juillet 2010 Tout est dans le titre : j'essaie de définir un attribut qui affiche automatiquement la valeur en Z du point d'insertion, mais j'ai beau essayer, je n'y arrive pas.Quelqu'un pourrait-il m'aider ? (ça existe d'ailleurs sûrement déjà) Merci !
thry0 Posté(e) le 20 juillet 2010 Posté(e) le 20 juillet 2010 Bjr à tous, Essayes de voir du coté des champs si tu connais ...Tu crées ton bloc puis tu lui affectes un attribut qui aura pour valeur la position en Z de ton bloc.Si pas suffisamment clair, revenir à la charge ... ;)
brunomu Posté(e) le 20 juillet 2010 Auteur Posté(e) le 20 juillet 2010 Merci pour ta réponse. J'ai essayé avec un champ. J'y arrive très bien pour ce qui est de récupérer sous forme d'un texte la surface d'une polyligne, mais pas pour récupérer en texte la valeur en Z du point d'insertion....
thry0 Posté(e) le 20 juillet 2010 Posté(e) le 20 juillet 2010 De mémoire, INSERTION - CHAMP - OBJET (click sur ton bloc) - POSITION et ne cocher que la valeur en Z et ça doit suffire je crois ...
Patrick_35 Posté(e) le 20 juillet 2010 Posté(e) le 20 juillet 2010 Salut Un lisp vite fait qui créé un champ Z de tous les blocs depuis l'attribut sélectionné. (defun c:altz(/ att blo doc loc nom obj pos nombl) (defun nombl(bl) (if (vlax-property-available-p bl 'effectivename) (vla-get-effectivename bl) (vla-get-name bl) ) ) (vl-load-com) (setq doc (vla-get-activedocument (vlax-get-acad-object))) (vla-startundomark doc) (and (setq att (nentsel)) (setq att (vlax-ename->vla-object (car att))) (eq (vla-get-objectname att) "AcDbAttribute") (progn (setq nom (nombl (setq blo (vla-objectidtoobject (vla-get-database att) (vla-get-ownerid att)))) pos 0 ) (while (setq obj (nth pos (vlax-invoke blo 'getattributes))) (and (eq (vla-get-objectid obj) (vla-get-objectid att)) (setq loc pos) ) (setq pos (1+ pos)) ) (ssget "x" (list (cons 0 "insert") (cons 2 (strcat "`**," nom)))) (vlax-for blo (setq sel (vla-get-activeselectionset doc)) (and (eq nom (nombl blo)) (vla-put-textstring (nth loc (vlax-invoke blo 'getattributes)) (strcat "%<\\AcObjProp Object(%<\\_ObjId " (itoa (vla-get-objectid blo)) ">%).InsertionPoint \\f \"%lu6%pt4\">%" ) ) ) ) (vla-delete sel) (vla-regen doc acallviewports) ) ) (vla-endundomark doc) (princ) ) @+ [Edité le 20/7/2010 par Patrick_35] Les Lisps de PatrickLe but n'est pas toujours placé pour être atteint, mais pour servir de point de mire.Joseph Joubert, 1754-1824
brunomu Posté(e) le 20 juillet 2010 Auteur Posté(e) le 20 juillet 2010 De mémoire, INSERTION - CHAMP - OBJET (click sur ton bloc) - POSITION et ne cocher que la valeur en Z et ça doit suffire je crois ... ...malheureusement, ça marche pô chez moi...?Mystère.
brunomu Posté(e) le 20 juillet 2010 Auteur Posté(e) le 20 juillet 2010 @ Patrick_35 Merci pour ton LISP. Malheureusement, je retombe sur un autre problème que je recontre avec certains LISP et certaines commandes : j'obtiens un message d'erreur " error: no function definition: VLAX-GET-ACAD-OBJECT " Y aurait pas moyen d'adapter ton LISP pour qu'il n'emploie pas ces bidules-machin à base de VLAX-truc que mon ordi n'aime pas ?
Patrick_35 Posté(e) le 20 juillet 2010 Posté(e) le 20 juillet 2010 Malheureusement, je retombe sur un autre problème que je recontre avec certains LISP et certaines commandes : j'obtiens un message d'erreur " error: no function definition: VLAX-GET-ACAD-OBJECT " J'ai encore oublié le (vl-load-com) :(C'est corrigée dans le lisp Y aurait pas moyen d'adapter ton LISP pour qu'il n'emploie pas ces bidules-machin à base de VLAX-truc que mon ordi n'aime pas ? Avoir par exemple dans ton AutoCAD.LSP (chargé avec chaque dessin) une ligne contenant l'expression (vl-load-com) C'est ce que j'ai fais sur mon poste, et c'est pour cela qu'il m'arrive trop régulièrement de l'oublier dans les lisps que je diffuse. @+ Les Lisps de PatrickLe but n'est pas toujours placé pour être atteint, mais pour servir de point de mire.Joseph Joubert, 1754-1824
SupportCova Posté(e) le 20 juillet 2010 Posté(e) le 20 juillet 2010 Bonjour, pour le champ, dans l'éditeur de bloc, créer l'attribut, puis dans la valeur par défaut, cliquer sur le bouton au bout de la ligne (Insert field).Dans le dialogue suivant, choisir la catégorie OBJETS, puis pour le noms de champs choisir ESPACERESERVEBLOC et dans la prorpiété, sélectionner POSITION et ne cocher que Z Olivier Support Technique Covadis
llefevre Posté(e) le 21 juillet 2010 Posté(e) le 21 juillet 2010 Bonjour à tous, Lorsque l'on a récupéré la valeur Z, peut on la formatée pour qu'elle s'affiche en mètre dans le bloc dyn sachant que le dessin est en millimètre. Peut-être un formule mais quelle est la syntaxe? Merci d'avance
brunomu Posté(e) le 21 juillet 2010 Auteur Posté(e) le 21 juillet 2010 Merci pour toutes vos contributions.Je n'ai pas eu le temps de les exploiter à fond (d'autant que je travaille sur une version en anglais, donc il faut que je trouve l'équivalent des commandes en anglais).Si quelqu'un a réussi à créer un attribut qui marche, peut-il le mettre en ligne ? Merci !
thry0 Posté(e) le 21 juillet 2010 Posté(e) le 21 juillet 2010 Bjr à tous, Pour llefevre , regarde du coté des formules à l'intérieur des champs.C'est possible en affectant un facteur de conversion de 0.001 pour ton cas précis.Même manip, bloc à attribut, champ en lieu et place de l'attribut puis choisir formuleet insérer un champ avec le coef modificateur voulu.
llefevre Posté(e) le 21 juillet 2010 Posté(e) le 21 juillet 2010 Merci Thry0, j'avais pas percuté cette possibilité.
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